This commit is contained in:
2026-01-02 20:43:09 +01:00
commit 96a1f8a395
124 changed files with 2833 additions and 0 deletions

21
home/alacritty.nix Normal file
View File

@@ -0,0 +1,21 @@
{ config, pkgs, ... }:
{
programs.alacritty = {
enable = true;
settings = {
general.import = [ "${config.home.homeDirectory}/.config/alacritty/colors.toml" ];
env.TERM = "xterm-256color";
window = {
opacity = 0.9;
padding = { x = 10; y = 10; };
};
font.size = 12;
terminal.shell = {
program = "${pkgs.zellij}/bin/zellij";
};
};
};
}

48
home/helix.nix Normal file
View File

@@ -0,0 +1,48 @@
{ pkgs, ... }:
{
programs.helix = {
enable = true;
defaultEditor = true;
settings = {
theme = "transparent";
editor = {
line-number = "relative";
bufferline = "multiple";
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
statusline.left = ["mode" "spinner" "file-name"];
};
keys.normal = {
X = "extend_line_above";
};
};
themes = {
transparent = {
inherits = "base16_transparent";
"ui.background" = { };
"ui.linenr" = { fg = "#666666"; };
"ui.linenr.selected" = {
fg = "#ffffff";
modifiers = ["bold"];
};
"ui.cursor" = { bg = "#ffffff"; fg = "#000000"; };
"ui.cursor.primary" = { bg = "#ffffff"; fg = "#000000"; };
"ui.selection" = {
bg = "#585b70";
fg = "#ffffff";
};
"ui.selection.primary" = {
bg = "#b4befe";
fg = "#11111b";
};
};
};
};
}

39
home/home.nix Normal file
View File

@@ -0,0 +1,39 @@
{ config, pkgs, inputs, lib, username, ... }:
{
imports = [
./alacritty.nix
./helix.nix
./hypridle.nix
./hyprland.nix
./hyprlock.nix
./swww.nix
./mime-apps.nix
./packages.nix
./rofi.nix
./shell.nix
./swaync.nix
./theming.nix
./waybar.nix
./waypaper.nix
./wlogout.nix
./swayosd.nix
./yazi.nix
./zathura.nix
];
home.username = username;
home.homeDirectory = "/home/${username}";
home.stateVersion = "25.11";
home.sessionVariables = {
XDG_MENU_PREFIX = "plasma-";
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
QT_QPA_PLATFORM = "wayland;xcb";
LIBVA_DRIVER_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
WLR_NO_HARDWARE_CURSORS = "1";
};
}

28
home/hypridle.nix Normal file
View File

@@ -0,0 +1,28 @@
{ pkgs, ... }: {
services.hypridle = {
enable = true;
settings = {
general = {
lock_cmd = "pidof hyprlock || hyprlock";
before_sleep_cmd = "loginctl lock-session";
after_sleep_cmd = "hyprctl dispatch dpms on";
};
listener = [
{
timeout = 180;
on-timeout = "loginctl lock-session";
}
# {
# timeout = 330;
# on-timeout = "hyprctl dispatch dpms off";
# on-resume = "hyprctl dispatch dpms on";
# }
{
timeout = 300;
on-timeout = "systemctl suspend-then-hibernate";
}
];
};
};
}

263
home/hyprland.nix Normal file
View File

@@ -0,0 +1,263 @@
{ config, pkgs, ... }:
{
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
settings = {
source = "~/.config/hypr/colors.conf";
monitor = [
"DP-6, 5120x1440@239.761, 0x1440, 1"
"DP-5, 2560x1440@164.958, 1280x0, 1"
];
workspace = [
"1, monitor:DP-6, default:true"
];
"$mainMod" = "SUPER";
"$terminal" = "alacritty";
"$filemanager" = "yazi";
"$applauncher" = "rofi -show drun -no-custom";
animations = {
enabled = true;
bezier = [
"overshot, 0.13, 0.99, 0.29, 1.1"
"smooth, 0.25, 1, 0.5, 1"
"snappy, 0.1, 1, 0.1, 1"
];
animation = [
"windowsIn, 1, 4, overshot, slide"
"windowsOut, 1, 5, default, popin 80%"
"border, 1, 5, default"
"workspacesIn, 1, 6, snappy, slide"
"workspacesOut, 1, 6, snappy, slidefade 80%"
"specialWorkspace, 1, 6, snappy, slidevert"
];
};
input = {
kb_layout = "de";
kb_options = "caps:escape";
follow_mouse = 1;
touchpad = {
natural_scroll = true;
tap-to-click = true;
clickfinger_behavior = true;
};
};
decoration = {
blur = {
enabled = true;
size = 8;
passes = 3;
new_optimizations = true;
ignore_opacity = true;
};
};
general = {
gaps_in = 3;
gaps_out = 5;
border_size = 3;
"col.active_border" = "$primary";
"col.inactive_border" = "$surface_variant";
layout = "dwindle";
};
dwindle = {
pseudotile = true;
preserve_split = true;
};
bind = [
"$mainMod, T, exec, $terminal"
"$mainMod, E, exec, $terminal -e $filemanager" # Terminal -e wegen yazi
"$mainMod, Q, killactive"
"$mainMod, V, exec, copyq show"
"$mainMod, D, exec, $applauncher"
"$mainMod, Tab, exec, rofi -show window"
"$mainMod SHIFT, D, exec, bash -c 'FILE=${config.home.homeDirectory}/nixos/templates/bookmarks.txt; sel=$(sed \"s/ :: .*//\" \"$FILE\" | rofi -dmenu -i -p \"Web: \"); [ -z \"$sel\" ] && exit; match=$(grep -F \"$sel :: \" \"$FILE\"); if [ -n \"$match\" ]; then url=\"\${match##* :: }\"; else url=\"$sel\"; fi; if [[ \"$url\" == http* ]] || ([[ \"$url\" != *\" \"* && \"$url\" == *\".\"* ]]); then firefox \"$url\"; else firefox \"https://duckduckgo.com/?q=$url\"; fi'"
"$mainMod, Y, layoutmsg, togglesplit"
"$mainMod, C, exec, hyprpicker -a"
"$mainMod, N, exec, wayscriber -a"
"$mainMod SHIFT, N, exec, wayscriber -a --freeze"
"$mainMod, G, exec, woomer"
"$mainMod, F, fullscreen"
"$mainMod, Escape, exec, wlogout"
"$mainMod, Z, togglefloating"
"$mainMod, H, movefocus, l"
"$mainMod, J, movefocus, d"
"$mainMod, K, movefocus, u"
"$mainMod, L, movefocus, r"
"$mainMod CTRL, H, swapwindow, l"
"$mainMod CTRL, J, swapwindow, d"
"$mainMod CTRL, K, swapwindow, u"
"$mainMod CTRL, L, swapwindow, r"
"$mainMod SHIFT, H, movewindow, l"
"$mainMod SHIFT, J, movewindow, d"
"$mainMod SHIFT, K, movewindow, u"
"$mainMod SHIFT, L, movewindow, r"
"$mainMod, S, togglespecialworkspace, special"
"$mainMod CTRL, S, movetoworkspace, special"
"$mainMod SHIFT, S, movetoworkspace, e+0"
"$mainMod, left, focusmonitor, l"
"$mainMod, right, focusmonitor, r"
"$mainMod, up, focusmonitor, u"
"$mainMod, down, focusmonitor, d"
"$mainMod SHIFT, left, movewindow, l"
"$mainMod SHIFT, right, movewindow, r"
"$mainMod SHIFT, up, movewindow, u"
"$mainMod SHIFT, down, movewindow, d"
# Submap
"$mainMod, R, submap, resize"
# Screenshot eines Bereichs (Selection) -> Speichern + Clipboard
", Print, exec, bash -c 'mkdir -p ${config.home.homeDirectory}/Bilder/Bildschirmfotos && FILE=${config.home.homeDirectory}/Bilder/Bildschirmfotos/Screenshot_$(date +%Y%m%d_%H%M%S).png && grim -g \"$(slurp)\" $FILE && wl-copy < $FILE'"
# Screenshot des gesamten Bildschirms (Full Monitor) -> Speichern + Clipboard
"SHIFT, Print, exec, bash -c 'mkdir -p ${config.home.homeDirectory}/Bilder/Bildschirmfotos && FILE=${config.home.homeDirectory}/Bilder/Bildschirmfotos/Fullscreen_$(date +%Y%m%d_%H%M%S).png && grim $FILE && wl-copy < $FILE'"
] ++ (
builtins.concatLists (builtins.genList (x:
let ws = builtins.toString (x + 1);
in [
"$mainMod, ${ws}, workspace, ${ws}"
"$mainMod CTRL, ${ws}, movetoworkspace, ${ws}"
"$mainMod SHIFT, ${ws}, movetoworkspacesilent, ${ws}"
]
) 9)
);
binde = [
# Lautstärke Audio (Sink)
", XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise"
", XF86AudioLowerVolume, exec, swayosd-client --output-volume lower"
# Helligkeit
", XF86MonBrightnessUp, exec, swayosd-client --brightness raise"
", XF86MonBrightnessDown, exec, swayosd-client --brightness lower"
];
bindl = [
# Stummschaltung (Toggle)
", XF86AudioMute, exec, swayosd-client --output-volume mute-toggle"
", XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle"
# Mediensteuerung
", XF86AudioPlay, exec, swayosd-client --playerctl play-pause"
", XF86AudioNext, exec, swayosd-client --playerctl next"
", XF86AudioPrev, exec, swayosd-client --playerctl previous"
];
bindr = [
"CAPS, Caps_Lock, exec, swayosd-client --caps-lock"
];
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
windowrulev2 = [
"opacity 0.9 0.8, class:^(Alacritty)$"
"noanim, title:^(woomer)$"
"noanim, class:^(ueberzugpp_.*)$"
"noinitialfocus, class:^(ueberzugpp_.*)$"
"noblur, class:^(ueberzugpp_.*)$"
"noshadow, class:^(ueberzugpp_.*)$"
"noborder, class:^(ueberzugpp_.*)$"
"float, class:^(ueberzugpp_.*)$"
"float, class:^(com.github.casperdcl.ripdrag)$"
"float, size 800 600, center, class:^(org.pulseaudio.pavucontrol)$"
"float, class:^(waypaper)$"
"size 800 600, class:^(waypaper)$"
"center, class:^(waypaper)$"
"float, class:^(com.github.hluk.copyq)$"
"center, class:^(com.github.hluk.copyq)$"
"size 800 600, class:^(com.github.hluk.copyq)$"
"opacity 0.9 0.9, class:^(com.github.hluk.copyq)$"
];
layerrule = [
"blur, rofi"
"ignorealpha 0.1, rofi"
"blur, logout_dialog"
"ignorealpha 0.1, logout_dialog"
"ignorezero, logout_dialog"
"blur, swaync-control-center"
"blur, swaync-notification-window"
"ignorealpha 0.5, swaync-control-center"
"ignorealpha 0.5, swaync-notification-window"
];
exec-once = [
"sway-audio-idle-inhibit"
"hyprctl dispatch focusmonitor DP-6"
"waybar"
"swaync"
"pgrep copyq || copyq --start-server && copyq hide"
"nextcloud --background"
"${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1"
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland"
"${pkgs.kdePackages.kwallet-pam}/libexec/pam_kwallet_init"
"wayscriber --daemon"
"waypaper --restore"
];
device = [
{
name = "wacom-intuos-pro-m-pen";
output = "DP-6";
active_area_size = "224 63";
active_area_position = "0 38.5";
transform = 0;
}
];
};
# Extra Config
extraConfig = ''
submap = resize
binde = , l, resizeactive, 30 0
binde = , h, resizeactive, -30 0
binde = , j, resizeactive, 0 30
binde = , k, resizeactive, 0 -30
binde = SHIFT, l, resizeactive, -30 0
binde = SHIFT, h, resizeactive, 30 0
binde = SHIFT, j, resizeactive, 0 -30
binde = SHIFT, k, resizeactive, 0 30
binde = , plus, resizeactive, 20 20
binde = , minus, resizeactive, -20 -20
binde = SHIFT, plus, resizeactive, 0 20
binde = SHIFT, minus, resizeactive, 0 -20
bind = , escape, submap, reset
bind = , catchall, submap, reset
submap = reset
'';
};
}

83
home/hyprlock.nix Normal file
View File

@@ -0,0 +1,83 @@
{ config, pkgs, ... }:
{
programs.hyprlock = {
enable = true;
settings = {
source = "~/.config/hypr/hyprlock-colors.conf";
general = {
immediate_render = true;
hide_cursor = true;
no_fade_in = false;
};
background = [{
monitor = "";
path = "${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper";
color = "$background";
blur_passes = 3;
blur_size = 8;
noise = 0.0117;
contrast = 0.8916;
brightness = 0.8172;
vibrancy = 0.1696;
}];
input-field = [{
monitor = "";
size = "300, 30";
outline_thickness = 0;
dots_size = 0.25;
dots_spacing = 0.55;
dots_center = true;
outer_color = "rgba(0, 0, 0, 0)";
inner_color = "rgba(0, 0, 0, 0.2)";
font_color = "$foreground";
fade_on_empty = false;
placeholder_text = "Enter Password";
hide_input = false;
position = "0, -468";
halign = "center";
valign = "center";
}];
label = [
{
monitor = "";
text = "$TIME";
color = "$primary";
font_size = 93;
font_family = "JetBrainsMono Nerd Font Bold";
position = "0, 310";
halign = "center";
valign = "center";
}
{
monitor = "";
text = "cmd[update:1000] echo \"$(date +'%A, %B %d')\"";
color = "$foreground";
font_size = 20;
font_family = "JetBrainsMono Nerd Font";
position = "0, 405";
halign = "center";
valign = "center";
}
{
monitor = "";
text = "Nils";
color = "$foreground";
font_size = 12;
font_family = "JetBrainsMono Nerd Font Bold";
position = "0, -407";
halign = "center";
valign = "center";
}
];
};
};
}

65
home/mime-apps.nix Normal file
View File

@@ -0,0 +1,65 @@
{ ... }: {
xdg.mimeApps = {
enable = true;
defaultApplications = {
# --- Text ---
"text/plain" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"text/markdown" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"text/rust" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"application/json" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"application/x-yaml" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"application/x-docbook+xml" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"application/x-zerosize" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"text/x-cmake" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"text/x-objcsrc" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
"text/x-typst" = [ "Helix.desktop" "org.kde.kwrite.desktop" ];
# --- Audio ---
"audio/mpeg" = [ "org.kde.elisa.desktop" ];
"audio/x-wav" = [ "org.kde.elisa.desktop" ];
"audio/x-vorbis+ogg" = [ "org.kde.elisa.desktop" ];
"audio/flac" = [ "org.kde.elisa.desktop" ];
"audio/mp4" = [ "org.kde.elisa.desktop" ];
"audio/aac" = [ "org.kde.elisa.desktop" ];
"audio/ogg" = [ "org.kde.elisa.desktop" ];
# --- Video ---
"video/mp4" = [ "org.kde.haruna.desktop" ];
"video/x-matroska" = [ "org.kde.haruna.desktop" ];
"video/webm" = [ "org.kde.haruna.desktop" ];
"video/quicktime" = [ "org.kde.haruna.desktop" ];
"video/x-msvideo" = [ "org.kde.haruna.desktop" ];
"video/mpeg" = [ "org.kde.haruna.desktop" ];
"video/x-flv" = [ "org.kde.haruna.desktop" ];
"application/x-matroska" = [ "org.kde.haruna.desktop" ];
# --- Dokumente & Archive ---
"application/pdf" = [ "org.pwmt.zathura.desktop" "org.kde.okular.desktop" ];
"application/zip" = [ "org.kde.ark.desktop" ];
"application/x-tar" = [ "org.kde.ark.desktop" ];
"application/x-compressed-tar" = [ "org.kde.ark.desktop" ];
"image/svg+xml" = [ "org.kde.gwenview.desktop" "org.inkscape.Inkscape.desktop" ];
"image/png" = [ "org.kde.gwenview.desktop" ];
"image/jpeg" = [ "org.kde.gwenview.desktop" ];
# --- Ordner ---
"inode/directory" = [ "org.kde.dolphin.desktop" ];
# --- Mail & Kalender ---
"x-scheme-handler/mailto" = [ "thunderbird.desktop" ];
"message/rfc822" = [ "thunderbird.desktop" ];
"text/calendar" = [ "thunderbird.desktop" ];
"x-scheme-handler/webcal" = [ "thunderbird.desktop" ];
"x-scheme-handler/webcals" = [ "thunderbird.desktop" ];
"application/x-extension-ics" = [ "thunderbird.desktop" ];
# --- Messenger ---
"x-scheme-handler/sgnl" = [ "signal.desktop" ];
"x-scheme-handler/signalcaptcha" = [ "signal.desktop" ];
# --- Terminal ---
"x-scheme-handler/terminal" = [ "Alacritty.desktop" ];
"application/x-terminal-emulator" = [ "Alacritty.desktop" ];
};
};
}

101
home/packages.nix Normal file
View File

@@ -0,0 +1,101 @@
{ pkgs, inputs, lib, ... }: {
xdg.configFile."copyq/copyq.conf".text = lib.mkAfter ''
[Options]
disable_tray=true
minimize_on_close=true
hide_main_window_startup=true
close_on_unfocus=true
'';
programs.btop = {
enable = true;
settings = {
color_theme = "matugen.theme";
theme_background = false;
preset = 0;
vim_keys = true;
};
};
programs.firefox = {
enable = true;
nativeMessagingHosts = [
pkgs.kdePackages.plasma-browser-integration
];
};
services.wlsunset = {
enable = true;
latitude = "49.32";
longitude = "8.43";
temperature = {
day = 6500;
night = 4000;
};
gamma = "1.0";
};
home.packages = with pkgs; [
inputs.matugen.packages.${pkgs.stdenv.hostPlatform.system}.default
hypridle
swww
waypaper
sway-audio-idle-inhibit
libnotify
ripdrag
woomer
hyprpicker
wayscriber
wl-clipboard
avizo
mediainfo
exiftool
deezer-enhanced
kdePackages.elisa
kdePackages.dolphin
kdePackages.kate
kdePackages.spectacle
kdePackages.ark
kdePackages.konsole
kdePackages.francis
kdePackages.gwenview
kdePackages.breeze-icons
ffmpeg
p7zip
jq
poppler-utils
zoxide
resvg
imagemagick
ueberzugpp
chafa
# Multimedia
bluetui obs-studio haruna discord signal-desktop spotify pavucontrol playerctl
# Games
prismlauncher
# Office & Utilities
anki libreoffice-qt6 kdePackages.okular kdePackages.svgpart krusader
keepassxc bitwarden-desktop filezilla zotero nextcloud-client
inkscape pympress xournalpp obsidian nicotine-plus thunderbird masterpdfeditor
pandoc qalculate-qt
kdePackages.skanlite kdePackages.kwave kdePackages.kbackup kdePackages.kget
kdePackages.kamoso kdePackages.filelight kdePackages.isoimagewriter
kdePackages.kcalc kdePackages.kompare kdePackages.kolourpaint kdePackages.kdenlive
# Grafik & Code
krita
# Tools
fastfetch fzf ripgrep fd unzip grim slurp cava
];
}

113
home/rofi.nix Normal file
View File

@@ -0,0 +1,113 @@
{ config, pkgs, ... }:
{
programs.rofi = {
enable = true;
package = pkgs.rofi;
extraConfig = {
modes = "window,run,ssh,drun";
show-icons = true;
drun-display-format = "{name}";
display-drun = "Apps:";
terminal = "alacritty";
};
theme = "${config.home.homeDirectory}/.config/rofi/main-theme.rasi";
};
xdg.configFile."rofi/main-theme.rasi".text = ''
/* Importiert die von Matugen generierten Farben */
@import "${config.home.homeDirectory}/.config/rofi/matugen-colors.rasi"
configuration {
wayland-layer: "overlay";
//display-drun: "";
//display-run: "";
//display-window: "";
//display-ssh: "";
show-icons: true;
}
* {
background-color: @bg0;
border-color: @fg0;
text-color: @fg0;
font: "JetBrainsMono Nerd Font 11";
}
window {
width: 100% ;
padding: 4px ;
anchor: north;
location: north;
y-offset: -30px;
children: [ "horibox" ];
background-color: @bg0;
}
horibox {
orientation: horizontal;
children: [ "container-left", "container-right" ];
background-color: transparent;
}
container-left {
orientation: horizontal;
expand: true;
children: [ "dummy", "inputbar" ];
background-color: transparent;
}
container-right {
orientation: horizontal;
expand: true;
children: [ "listview", "dummy" ];
background-color: transparent;
}
listview {
layout: horizontal;
horizontal-align: 0.5;
spacing: 15px ;
lines: 100;
background-color: transparent;
}
entry {
enabled: true;
width: 5em ;
expand: false;
background-color: transparent;
text-color: @fg0;
placeholder: "Suche...";
placeholder-color: @fg1;
}
prompt {
background-color: transparent;
text-color: @blue;
margin: 0 10px 0 0;
}
element {
padding: 0px 5px;
border-radius: 4px;
background-color: transparent;
text-color: @fg0;
}
element selected {
background-color: @bg2;
text-color: @fg0;
}
element-text {
background-color: transparent;
text-color: inherit;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 1.0em;
}
'';
}

73
home/rofi_alternative.nix Normal file
View File

@@ -0,0 +1,73 @@
{ config, pkgs, ... }:
{
programs.rofi = {
enable = true;
package = pkgs.rofi;
extraConfig = {
modes = "window,run,ssh,drun";
show-icons = true;
display-drun = "Apps:";
terminal = "alacritty";
};
theme = "${config.home.homeDirectory}/.config/rofi/main-theme.rasi";
};
xdg.configFile."rofi/main-theme.rasi".text = ''
@import "${config.home.homeDirectory}/.config/rofi/matugen-colors.rasi"
* {
font: "JetBrainsMono Nerd Font 12";
background-color: transparent;
text-color: @fg0;
margin: 0px;
padding: 0px;
spacing: 0px;
}
window {
location: center;
width: 680;
border-radius: 20px;
border: 2px;
border-color: @blue; /* Hier wird jetzt die Matugen-Farbe genutzt */
background-color: @bg0;
}
mainbox { padding: 12px; }
inputbar {
background-color: @bg1;
border-color: @bg3;
border-radius: 12px;
border: 2px;
padding: 8px 16px;
spacing: 8px;
children: [ prompt, entry ];
}
prompt { text-color: @blue; }
entry { placeholder: "Search..."; placeholder-color: @fg2; text-color: @fg0; }
listview {
margin: 12px 0 0;
lines: 8;
columns: 1;
fixed-height: false;
}
element {
padding: 8px 16px;
spacing: 12px;
border-radius: 10px;
}
element selected normal {
background-color: @bg2;
text-color: @blue;
}
element-icon { size: 1.5em; }
element-text { text-color: inherit; vertical-align: 0.5; }
'';
}

77
home/shell.nix Normal file
View File

@@ -0,0 +1,77 @@
{ pkgs, ... }: {
programs.fish = {
enable = true;
shellAbbrs = {
# nix develop -c $SHELL
nd = "nix develop -c fish";
lg = "lazygit";
};
interactiveShellInit = ''
set fish_greeting
set -g fish_color_param brcyan
set -gx LG_CONFIG_FILE "$HOME/.config/lazygit/config.yml,$HOME/.config/lazygit/theme.yml"
'';
};
programs.zellij = {
enable = true;
enableFishIntegration = false;
settings = {
default_shell = "fish";
theme = "matugen";
default_layout = "compact";
show_startup_tips = false;
keybinds = {
normal = {
"bind \"Alt h\"" = { MoveFocus = "Left"; };
"bind \"Alt l\"" = { MoveFocus = "Right"; };
"bind \"Alt j\"" = { MoveFocus = "Down"; };
"bind \"Alt k\"" = { MoveFocus = "Up"; };
};
move = {
"bind \"h\"" = { MovePane = "Left"; };
"bind \"l\"" = { MovePane = "Right"; };
"bind \"j\"" = { MovePane = "Down"; };
"bind \"k\"" = { MovePane = "Up"; };
};
resize = {
"bind \"h\"" = { Resize = "Increase Left"; };
"bind \"l\"" = { Resize = "Increase Right"; };
"bind \"j\"" = { Resize = "Increase Down"; };
"bind \"k\"" = { Resize = "Increase Up"; };
};
};
};
};
programs.zoxide = {
enable = true;
enableFishIntegration = true;
};
programs.starship = {
enable = true;
};
programs.git = {
enable = true;
settings.user = { name = "Nils Walther"; email = "mail@nils-walther.de"; };
};
programs.yt-dlp = {
enable = true;
};
programs.lazygit = {
enable = true;
};
}

37
home/swaync.nix Normal file
View File

@@ -0,0 +1,37 @@
{ config, pkgs, ... }:
{
services.swaync = {
enable = true;
settings = {
positionX = "right";
positionY = "top";
control-center-margin-top = 10;
control-center-margin-right = 10;
fit-to-screen = false;
};
style = ''
@import "${config.home.homeDirectory}/.config/swaync/colors.css";
* { font-family: "JetBrainsMono Nerd Font"; }
.control-center {
background: @background;
border: 2px solid @primary;
border-radius: 0px;
}
.notification {
background: @surface_container;
border-radius: 0px;
margin: 6px;
border: 1px solid @secondary;
}
.summary { color: @primary; font-weight: bold; }
.body { color: @foreground; }
.critical { background: @urgent; color: @background; }
'';
};
}

8
home/swayosd.nix Normal file
View File

@@ -0,0 +1,8 @@
{ pkgs, ... }:
{
services.swayosd = {
enable = true;
topMargin = 0.5;
};
}

24
home/swww.nix Normal file
View File

@@ -0,0 +1,24 @@
{ pkgs, config, ... }:
{
home.packages = [
pkgs.swww
];
systemd.user.services.swww = {
Unit = {
Description = "swww wallpaper daemon";
After = [ "graphical-session.target" ];
Partof = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.swww}/bin/swww-daemon";
Restart = "on-failure";
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
}

106
home/theming.nix Normal file
View File

@@ -0,0 +1,106 @@
{ config, pkgs, inputs, lib, ... }: {
home.pointerCursor = {
name = "WhiteSur-cursors";
package = pkgs.whitesur-cursors;
size = 30;
gtk.enable = true;
};
qt = { enable = true; platformTheme.name = "kde"; style.name = "breeze"; };
xdg.configFile."matugen/config.toml".text = ''
[config]
reload_apps = true
[templates.alacritty]
input_path = "${config.home.homeDirectory}/nixos/templates/alacritty.toml"
output_path = "${config.home.homeDirectory}/.config/alacritty/colors.toml"
[templates.btop]
input_path = "${config.home.homeDirectory}/nixos/templates/btop.theme"
output_path = "${config.home.homeDirectory}/.config/btop/themes/matugen.theme"
[templates.gtk]
input_path = "${config.home.homeDirectory}/nixos/templates/colors-gtk.css"
output_path = "${config.home.homeDirectory}/.config/matugen/colors.css"
[templates.hyprland]
input_path = "${config.home.homeDirectory}/nixos/templates/hyprland-colors.conf"
output_path = "${config.home.homeDirectory}/.config/hypr/colors.conf"
[templates.hyprlock]
input_path = "${config.home.homeDirectory}/nixos/templates/hyprlock-colors.conf"
output_path = "${config.home.homeDirectory}/.config/hypr/hyprlock-colors.conf"
[templates.rofi]
input_path = "${config.home.homeDirectory}/nixos/templates/rofi.rasi"
output_path = "${config.home.homeDirectory}/.config/rofi/matugen-colors.rasi"
[templates.fish]
input_path = "${config.home.homeDirectory}/nixos/templates/fish-colors.fish"
output_path = "${config.home.homeDirectory}/.config/fish/conf.d/matugen.fish"
[templates.starship]
input_path = "${config.home.homeDirectory}/nixos/templates/starship.toml"
output_path = "${config.home.homeDirectory}/.config/starship.toml"
[templates.swaync]
input_path = "${config.home.homeDirectory}/nixos/templates/swaync-colors.css"
output_path = "${config.home.homeDirectory}/.config/swaync/colors.css"
[templates.waybar]
input_path = "${config.home.homeDirectory}/nixos/templates/colors-gtk.css"
output_path = "${config.home.homeDirectory}/.config/matugen/colors.css"
[templates.wlogout]
input_path = "${config.home.homeDirectory}/nixos/templates/wlogout-colors.css"
output_path = "${config.home.homeDirectory}/.config/wlogout/colors.css"
[templates.lazygit]
input_path = "${config.home.homeDirectory}/nixos/templates/lazygit_theme.yml"
output_path = "${config.home.homeDirectory}/.config/lazygit/theme.yml"
[templates.zathura]
input_path = "${config.home.homeDirectory}/nixos/templates/zathura"
output_path = "${config.home.homeDirectory}/.config/zathura/zathurarc-colors"
[templates.yazi]
input_path = "${config.home.homeDirectory}/nixos/templates/yazi-theme.toml"
output_path = "${config.home.homeDirectory}/.config/yazi/theme.toml"
[templates.zellij]
input_path = "${config.home.homeDirectory}/nixos/templates/zellij.kdl"
output_path = "${config.home.homeDirectory}/.config/zellij/themes/matugen.kdl"
'';
home.activation.regenerateMatugen = lib.hm.dag.entryAfter ["writeBoundary"] ''
MATUGEN="${inputs.matugen.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/matugen"
WALLPAPER="${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper"
if [ -f "$WALLPAPER" ]; then
echo "Matugen: Generiere Farben aus $WALLPAPER..."
mkdir -p ${config.home.homeDirectory}/.config/alacritty
mkdir -p ${config.home.homeDirectory}/.config/btop/themes
mkdir -p ${config.home.homeDirectory}/.config/lazygit
mkdir -p ${config.home.homeDirectory}/.config/rofi
mkdir -p ${config.home.homeDirectory}/.config/swaync
mkdir -p ${config.home.homeDirectory}/.config/wlogout
mkdir -p ${config.home.homeDirectory}/.config/matugen
mkdir -p ${config.home.homeDirectory}/.config/hypr
mkdir -p ${config.home.homeDirectory}/.config/fish/conf.d
mkdir -p ${config.home.homeDirectory}/.config/wob
mkdir -p ${config.home.homeDirectory}/.config/yazi
mkdir -p ${config.home.homeDirectory}/.config/zathura
mkdir -p ${config.home.homeDirectory}/.config/zellij/themes
$MATUGEN image "$WALLPAPER" --type scheme-vibrant
${pkgs.procps}/bin/pkill -USR2 waybar || true
else
echo "Matugen: Wallpaper nicht gefunden ($WALLPAPER)"
fi
'';
}

324
home/waybar.nix Normal file
View File

@@ -0,0 +1,324 @@
{ config, pkgs, lib, ... }:
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 30;
output = [ "eDP-1" "DP-5" "DP-6" ];
modules-left = [ "custom/logo" "hyprland/workspaces" "tray" ];
modules-center = [ "clock" ];
modules-right = [ "network" "idle_inhibitor" "bluetooth" "battery" "custom/notification" ];
"custom/logo" = {
format = "";
tooltip = false;
on-click = "wlogout";
on-click-right = "alacritty -e fish -C fastfetch";
};
"hyprland/workspaces" = {
disable-scroll = true;
all-outputs = true;
format = "{name}";
};
"clock" = {
format = "{:%a %d/%m %H:%M}";
tooltip-format = "{:%Y-%m-%d}";
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = " ";
deactivated = " ";
};
tooltip = true;
tooltip-format-activated = "Inhibitor Aktiv";
tooltip-format-deactivated = "Idle Aktiv";
};
"custom/audio_idle_inhibitor" = {
format = "{icon}";
exec = "sway-audio-idle-inhibit --dry-print-both-waybar | sed -u 's/\"alt\":\"output-input\"/&,\"tooltip\":\"Audio \\& Mikrofon aktiv\"/; s/\"alt\":\"output\"/&,\"tooltip\":\"Audio spielt\"/; s/\"alt\":\"input\"/&,\"tooltip\":\"Mikrofon wird benutzt\"/; s/\"alt\":\"none\"/&,\"tooltip\":\"Keine Aktivität\"/'";
"exec-if" = "which sway-audio-idle-inhibit";
"return-type" = "json";
tooltip = true;
format-icons = {
output = " ";
input = "";
"output-input" = " ";
none = "";
};
};
"tray" = {
icon-size = 18;
spacing = 10;
};
"network" = {
format-wifi = " {essid}";
format-ethernet = " {ifname}";
format-linked = "󰌘{ipaddr}";
format = "{essid}";
format-disconnected = "󰤮 no wifi";
on-click = "${pkgs.alacritty}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui";
on-click-right = "nmcli radio wifi $(nmcli radio wifi | grep -q 'enabled' && echo off || echo on)";
tooltip-format = " {bandwidthUpBits} {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n";
tooltip-format-wifi = " {essid} {frequency}MHz\nStrength: {signalStrength}% ({signaldBm}dBm)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits} {bandwidthDownBits}";
interval = 10;
};
"backlight" = {
device = "intel_backlight";
format = "{icon}";
format-alt = "{percent}%";
format-alt-click = "click-right";
format-icons = ["" "" "" "" "" "" "" "" ""];
tooltip-format = " Helligkeit: {percent}%";
on-scroll-down = "brightnessctl s 5%-";
on-scroll-up = "brightnessctl s +5%";
};
"bluetooth" = {
format = "";
format-disabled = "󰂲";
format-connected = "󰂱{device_alias}";
format-connected-battery = "󰂱{device_alias} {device_battery_percentage}%";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} verbunden\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
on-click = "alacritty -e bluetui";
on-click-right = "rfkill toggle bluetooth";
};
"pulseaudio" = {
format = "{icon} {volume}%";
format-bluetooth = "{icon} {volume}%";
format-muted = "󰖁";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = ["" "" ""];
};
on-click = "pavucontrol";
on-click-right = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
tooltip-format = "Ausgabelautstärke: {source_volume}% | {desc}";
};
"pulseaudio#microphone" = {
format = "{format_source}";
format-source = " {volume}%";
format-source-muted = "";
on-click = "pavucontrol";
on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
on-scroll-up = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+";
on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-";
tooltip-format = "Eingabelautstärke: {source_volume}% | {source_desc}";
scroll-step = 5;
};
"battery" = {
interval = 5;
format = "{icon}";
format-alt = "{capacity}%";
format-alt-click = "click-right";
format-icons = [ "" "" "" "" "" ];
format-charging = "{icon}";
format-plugged = "{icon}";
tooltip-format = "Akkustand: {capacity}% - {timeTo} - {power}W ";
on-click = "alacritty -e btop";
states = {
full = 100;
great = 97;
good = 85;
ok = 50;
warning = 30;
low = 20;
critical = 10;
};
};
"custom/notification" = {
tooltip = false;
format = "{icon}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
};
return-type = "json";
exec = "swaync-client -swb";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
};
};
style = lib.replaceStrings ["#workspaces button.focused"] ["#workspaces button.active"] ''
@import "${config.home.homeDirectory}/.config/matugen/colors.css";
* {
border: none;
border-radius: 0;
padding: 0;
margin: 0;
font-size: 13px;
font-family: "JetBrainsMono Nerd Font", "NotoSans Nerd Font Mono";
font-weight: bold;
}
tooltip {
background: @background;
color: @foreground;
border: 1px solid @primary;
border-radius: 10px;
}
tooltip label {
color: @foreground;
padding: 5px;
}
window#waybar {
background: @background;
color: @foreground;
border-bottom: 2px solid @primary;
}
#custom-logo {
font-size: 20px;
margin: 0 15px;
color: @primary;
}
#workspaces button {
padding: 0 0px;
margin-right: 4px;
color: @foreground;
background: transparent;
}
#workspaces button:hover {
background: @surface_container_high;
color: @foreground;
border-bottom: 2px solid @primary;
}
#workspaces button.active {
background: @surface_container_high;
color: @primary;
border-bottom: 2px solid @primary;
}
#workspaces button.urgent {
background-color: @urgent;
color: @background;
}
#mode {
background-color: @secondary;
color: @background;
padding: 0 5px;
}
#network {
padding-right: 5px;
padding-left: 5px;
}
#clock, #language, #custom-notification, #backlight, #pulseaudio, #bluetooth, #tray {
margin: 0 5px;
color: @foreground;
}
#custom-notification {
margin-right: 15px;
margin-left: 5px;
color: @foreground;
}
#custom-audio_idle_inhibitor {
margin-left: 5px;
margin-right: 5px;
color: @foreground;
}
#idle_inhibitor {
margin-right: 5px;
margin-left: 7px;
color: @foreground;
font-size: 13px;
}
#idle_inhibitor.activated {
animation: blink-icon 2s infinite alternate;
color: @primary;
}
@keyframes blink-icon {
from { color: @primary; }
to { color: transparent; }
}
#battery {
margin-top: 0;
margin-bottom: 0;
margin-left: 5px;
margin-right: 12px;
color: @foreground;
}
#battery.charging, #battery.plugged {
margin: 0 5px;
color: @foreground;
}
#battery.ok:not(.charging) {
animation: blink-icon 3s infinite alternate;
}
@keyframes blink-icon-yellow {
from { color: yellow; }
to { color: transparent; }
}
#battery.warning:not(.charging) {
animation: blink-icon-yellow 1.5s infinite alternate;
}
@keyframes blink-icon-orange {
from { color: orange; }
to { color: transparent; }
}
#battery.low:not(.charging) {
color: orange;
animation: blink-icon-orange 0.8s infinite alternate;
}
@keyframes blink-icon-red {
from { color: red; }
to { color: transparent; }
}
#battery.critical:not(.charging) {
animation: blink-icon-red 0.3s infinite alternate;
}
'';
};
}

35
home/waypaper.nix Normal file
View File

@@ -0,0 +1,35 @@
{ pkgs, lib, config, ... }:
{
home.packages = [ pkgs.waypaper ];
home.activation.configureWaypaper = lib.hm.dag.entryAfter ["writeBoundary"] ''
CONFIG_FILE="${config.home.homeDirectory}/.config/waypaper/config.ini"
if [ ! -f "$CONFIG_FILE" ]; then
echo "Erstelle Standard-Waypaper-Konfiguration..."
mkdir -p "$(dirname "$CONFIG_FILE")"
cat > "$CONFIG_FILE" <<EOF
[Settings]
language = en
folder = ${config.home.homeDirectory}/nixos/wallpaper
wallpaper = ${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper
backend = swww
monitors = All
fill = fill
sort = name
color = #ffffff
subfolders = False
show_hidden = False
show_gifs_only = False
post_command = cp "\$wallpaper" "${config.home.homeDirectory}/nixos/wallpaper/current_wallpaper" && matugen image "\$wallpaper" --type scheme-vibrant && sleep 0.5 && pkill -USR2 waybar && systemctl --user restart swaync
number_of_columns = 3
swww_transition_type = fade
swww_transition_step = 90
swww_transition_angle = 0
swww_transition_duration = 2
EOF
fi
'';
}

57
home/wlogout.nix Normal file
View File

@@ -0,0 +1,57 @@
{ config, pkgs, ... }:
{
programs.wlogout = {
enable = true;
layout = [
{ label = "lock"; action = "hyprlock"; text = "Lock (l)"; keybind = "l"; }
{ label = "reboot"; action = "systemctl reboot"; text = "Reboot (r)"; keybind = "r"; }
{ label = "shutdown"; action = "systemctl poweroff"; text = "Shut Down (s)"; keybind = "s"; }
{ label = "logout"; action = "hyprctl dispatch exit"; text = "Exit (e)"; keybind = "e"; }
{ label = "suspend"; action = "systemctl suspend"; text = "Suspend (u)"; keybind = "u"; }
{ label = "hibernate"; action = "systemctl hibernate"; text = "Hibernate (h)"; keybind = "h"; }
];
style = ''
@import url("${config.home.homeDirectory}/.config/wlogout/colors.css");
* {
box-shadow: none;
font-family: "JetBrainsMono Nerd Font";
}
window {
background-color: rgba(0, 0, 0, 0.4);
}
button {
border-radius: 0;
border-color: @surface;
color: @on_surface;
background-color: rgba(0, 0, 0, 0.4);
border-style: solid;
border-width: 1px;
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
margin: 5px;
}
button:focus, button:active, button:hover {
background-color: rgba(0, 0, 0, 0.4);
color: @on_primary;
outline-style: none;
border-color: @outline;
border-style: solid;
border-width: 1px;
}
#lock { background-image: url("${../icons/lock.png}"); }
#logout { background-image: url("${../icons/logout.png}"); }
#suspend { background-image: url("${../icons/suspend.png}"); }
#hibernate { background-image: url("${../icons/hibernate.png}"); }
#shutdown { background-image: url("${../icons/shutdown.png}"); }
#reboot { background-image: url("${../icons/reboot.png}"); }
'';
};
}

174
home/yazi.nix Normal file
View File

@@ -0,0 +1,174 @@
{ pkgs, ... }:
{
programs.yazi = {
enable = true;
enableFishIntegration = true;
keymap = {
manager.prepend_keymap = [
{
on = [ "g" "e" ];
run = "arrow 100000000";
desc = "Zum Ende der Liste springen (ge)";
}
{
on = [ "T" ];
run = ''shell --orphan --block=false "${pkgs.alacritty}/bin/alacritty"'';
desc = "Terminal in neuem Fenster öffnen";
}
{
on = [ "E" ];
run = ''shell --orphan --block=false "${pkgs.kdePackages.dolphin}/bin/dolphin ."'';
desc = "Dolphin in diesem Ordner öffnen";
}
{
on = [ "G" ];
run = ''shell --orphan --block=false "${pkgs.alacritty}/bin/alacritty -e ${pkgs.lazygit}/bin/lazygit"'';
desc = "Lazygit in neuem Fenster öffnen";
}
{
on = [ "<C-d>" ];
run = ''
shell -- ripdrag --no-click --and-exit --icon-size 64 --target --all "$@" | while read -r filepath; do
cp -nR "$filepath" .
done
'';
desc = "Drag-n-drop (Copy No-Clobber)";
}
{
on = [ "<C-D>" ];
run = ''
shell -- ripdrag --no-click --and-exit --icon-size 64 --target --all "$@" | while read -r filepath; do
cp -fR "$filepath" .
done
'';
desc = "Drag-n-drop (Force Overwrite)";
}
{
on = [ "i" ];
run = ''
shell --block --confirm '
clear
file="$1"
mime=$(file --mime-type -b "$file")
echo "=================================================="
echo " EIGENSCHAFTEN: $(basename "$file")"
echo "=================================================="
# Basis-Infos
printf "%-18s %s\n" "Typ:" "$mime"
printf "%-18s %s\n" "Adresse:" "$(realpath "$file")"
printf "%-18s %s (%s Bytes)\n" "Größe:" "$(du -h "$file" | cut -f1)" "$(stat -c %s "$file")"
echo "--------------------------------------------------"
echo " ZEITSTEMPEL"
printf "%-18s %s\n" "Geändert:" "$(stat -c %y "$file" | cut -d. -f1)"
printf "%-18s %s\n" "Letzter Zugriff:" "$(stat -c %x "$file" | cut -d. -f1)"
echo "--------------------------------------------------"
echo " DETAILS"
# --- PDF SEKTION ---
if [[ "$mime" == "application/pdf" ]]; then
# Nutzt pdfinfo aus poppler_utils
pdfinfo "$file" | grep -E "Pages:|PDF version:|Title:|Author:|Page size:" | while read -r line; do
label=$(echo "$line" | cut -d: -f1)
value=$(echo "$line" | cut -d: -f2- | xargs)
printf "%-18s %s\n" "$label:" "$value"
done
# --- BILD SEKTION ---
elif [[ "$mime" == image/* ]]; then
# Nutzt identify aus imagemagick
dimensions=$(identify -format "%wx%h" "$file")
printf "%-18s %s Pixel\n" "Auflösung:" "$dimensions"
printf "%-18s %s\n" "Farbraum:" "$(identify -format "%[colorspace]" "$file")"
# --- AUDIO/VIDEO SEKTION ---
elif [[ "$mime" == audio/* || "$mime" == video/* ]]; then
# Nutzt mediainfo für Bitrate und Dauer
mediainfo --Inform="General;%-18.18Name: %Format%\n%-18.18Name: %Duration/String3%\n%-18.18Name: %OverallBitRate/String%" "$file"
if [[ "$mime" == video/* ]]; then
mediainfo --Inform="Video;%-18.18Name: %Width%x%Height% Pixel" "$file"
fi
fi
echo "=================================================="
read -p "Drücke Enter zum Schließen..." _
'
'';
desc = "Detaillierte Eigenschaften (PDF, Media, Image)";
}
];
};
settings = {
mgr = {
show_hidden = true;
sort_by = "natural";
sort_sensitive = true;
sort_reverse = false;
sort_dir_first = true;
linemode = "none";
show_symlink = true;
ratio = [ 1 3 4 ];
layout_transition = "none";
};
sort_by = "natural";
sort_sensitive = true;
sort_reverse = false;
sort_dir_first = true;
linemode = "none";
show_hidden = true;
show_symlink = true;
preview = {
image_filter = "lanczos3";
image_quality = 90;
tab_size = 1;
max_width = 600;
max_height = 900;
cache_dir = "";
ueberzug_scale = 1;
ueberzug_offset = [
0
0
0
0
];
};
opener = {
play = [
{ run = ''haruna "$@"''; orphan = true; desc = "Play"; }
];
edit = [
{ run = ''$EDITOR "$@"''; block = true; desc = "Edit"; }
];
view = [
{ run = ''gwenview "$@"''; orphan = true; desc = "Gwenview"; }
];
pdf = [
{ run = ''zathura "$@"''; orphan = true; desc = "Zathura"; }
];
};
open = {
rules = [
{ mime = "image/*"; use = "view"; }
{ name = "*.svg"; use = "view"; }
{ mime = "application/pdf"; use = "pdf"; }
{ mime = "video/*"; use = "play"; }
{ mime = "audio/*"; use = "play"; }
{ mime = "text/*"; use = "edit"; }
{ mime = "application/json"; use = "edit"; }
];
};
};
};
}

13
home/zathura.nix Normal file
View File

@@ -0,0 +1,13 @@
{ pkgs, ... }: {
programs.zathura = {
enable = true;
options = {
selection-clipboard = "clipboard";
adjust-open = "best-fit";
page-h-padding = 10;
page-v-padding = 10;
recolor = true;
};
extraConfig = "include zathurarc-colors";
};
}