init
This commit is contained in:
21
home/alacritty.nix
Normal file
21
home/alacritty.nix
Normal 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
48
home/helix.nix
Normal 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
39
home/home.nix
Normal 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
28
home/hypridle.nix
Normal 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
263
home/hyprland.nix
Normal 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
83
home/hyprlock.nix
Normal 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
65
home/mime-apps.nix
Normal 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
101
home/packages.nix
Normal 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
113
home/rofi.nix
Normal 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
73
home/rofi_alternative.nix
Normal 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
77
home/shell.nix
Normal 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
37
home/swaync.nix
Normal 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
8
home/swayosd.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
services.swayosd = {
|
||||
enable = true;
|
||||
topMargin = 0.5;
|
||||
};
|
||||
}
|
||||
24
home/swww.nix
Normal file
24
home/swww.nix
Normal 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
106
home/theming.nix
Normal 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
324
home/waybar.nix
Normal 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
35
home/waypaper.nix
Normal 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
57
home/wlogout.nix
Normal 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
174
home/yazi.nix
Normal 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
13
home/zathura.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user