diff --git a/modules/home/de/default.nix b/modules/home/de/default.nix index c95ff67..9a00997 100644 --- a/modules/home/de/default.nix +++ b/modules/home/de/default.nix @@ -1,23 +1,16 @@ -{ - config, - pkgs, - lib, - ... -}: let - cfg = config.myConfig.de; -in { +{lib, ...}: { imports = [ ./qtile.nix ./hyprland + + ./theming.nix + ./rofi + ./tray.nix + ./waybar.nix + ./hypridlelock.nix ]; options.myConfig.de = { - theming.enable = lib.mkEnableOption ""; - - wallpaper = lib.mkOption { - type = lib.types.path; - }; - widget = { backlight = { enable = lib.mkEnableOption ""; @@ -27,87 +20,5 @@ in { }; battery.enable = lib.mkEnableOption ""; }; - - tray = { - syncthing.enable = lib.mkEnableOption ""; - networkmanager.enable = lib.mkEnableOption ""; - }; }; - - config = lib.mkMerge [ - (lib.mkIf cfg.theming.enable { - dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark"; - - gtk = { - enable = true; - - gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; - - theme.name = "Adwaita-dark"; - theme.package = pkgs.gnome.gnome-themes-extra; - - iconTheme.name = "Adwaita"; - iconTheme.package = pkgs.gnome.adwaita-icon-theme; - - font.name = "Open Sans"; - font.package = pkgs.open-sans; - }; - - qt = { - enable = true; - platformTheme = "gtk"; - style.name = "adwaita-dark"; - style.package = pkgs.adwaita-qt; - }; - - home.pointerCursor = { - name = "Bibata-Original-Classic"; - package = pkgs.bibata-cursors; - size = 24; - gtk.enable = true; - }; - }) - - (lib.mkIf cfg.tray.syncthing.enable { - home.packages = [pkgs.syncthingtray-minimal]; - - systemd.user.services = { - syncthingtray = { - Unit = { - Description = "Syncthingtray"; - Requires = ["tray.target"]; - After = ["graphical-session-pre.target" "tray.target"]; - PartOf = ["graphical-session.target"]; - }; - Service = { - ExecStart = "${lib.getExe' pkgs.syncthingtray-minimal "syncthingtray"} --wait"; - }; - Install = { - WantedBy = ["graphical-session.target"]; - }; - }; - }; - }) - - (lib.mkIf cfg.tray.networkmanager.enable { - home.packages = [pkgs.networkmanagerapplet]; - - systemd.user.services = { - nm-applet = { - Unit = { - Description = "Networkmanager-applet"; - Requires = ["tray.target"]; - After = ["graphical-session-pre.target" "tray.target"]; - PartOf = ["graphical-session.target"]; - }; - Service = { - ExecStart = "${lib.getExe pkgs.networkmanagerapplet}"; - }; - Install = { - WantedBy = ["graphical-session.target"]; - }; - }; - }; - }) - ]; } diff --git a/modules/home/de/hyprland/hypridlelock.nix b/modules/home/de/hypridlelock.nix similarity index 87% rename from modules/home/de/hyprland/hypridlelock.nix rename to modules/home/de/hypridlelock.nix index 9460757..142c5cc 100644 --- a/modules/home/de/hyprland/hypridlelock.nix +++ b/modules/home/de/hypridlelock.nix @@ -10,9 +10,12 @@ inputs.hypridle.homeManagerModules.hypridle ]; - config = lib.mkIf config.myConfig.de.hyprland.enable { + options.myConfig.de.hypridlelock.enable = lib.mkEnableOption ""; + + config = lib.mkIf config.myConfig.de.hypridlelock.enable { programs.hyprlock = { enable = true; + backgrounds = [ { path = "screenshot"; @@ -26,9 +29,11 @@ hyprlockExe = "${lib.getExe inputs.hyprlock.packages.${pkgs.system}.default}"; in { enable = true; + lockCmd = "pidof ${hyprlockExe} || ${hyprlockExe}"; # beforeSleepCmd = "loginctl lock-session"; afterSleepCmd = "hyprctl dispatch dpms on"; + listeners = [ { timeout = 600; diff --git a/modules/home/de/hyprland/config.nix b/modules/home/de/hyprland/config.nix new file mode 100644 index 0000000..ce68761 --- /dev/null +++ b/modules/home/de/hyprland/config.nix @@ -0,0 +1,154 @@ +{ + config, + pkgs, + lib, + ... +}: { + config = lib.mkIf config.myConfig.de.hyprland.enable { + wayland.windowManager.hyprland = { + enable = true; + + settings = { + exec-once = ["hyprpaper"]; + + input = { + kb_layout = "de"; + kb_variant = "nodeadkeys"; + + accel_profile = "flat"; + }; + + input.touchpad = { + disable_while_typing = true; + natural_scroll = true; + middle_button_emulation = true; + }; + device = { + name = "dell0b9f:00-27c6:0d43-touchpad"; + accel_profile = "adaptive"; + }; + + general = { + gaps_in = 5; + gaps_out = 10; + border_size = 1; + + layout = "master"; + }; + + master = { + new_is_master = false; + no_gaps_when_only = 1; + mfact = "0.5"; + }; + + decoration = { + rounding = 6; + drop_shadow = false; + }; + + animations.enabled = false; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + force_default_wallpaper = 0; + }; + + "$mod" = "SUPER"; + "$terminal" = "kitty"; + "$browser" = "brave"; + "$fileManager" = "nemo"; + "$editor" = "codium"; + + bind = + [ + # Essentials + "$mod CONTROL, Q, exit," + "$mod CONTROL, S, exec, systemctl suspend" + "$mod CONTROL, L, exec, loginctl lock-session" + "$mod SHIFT, C, killactive," + "$mod, TAB, cyclenext," + "$mod SHIFT, V, togglefloating," + "$mod SHIFT, F, fullscreen, 0" + + # Launch programs + "$mod, RETURN, exec, $terminal" + "$mod, V, exec, ${lib.getExe pkgs.cliphist} list | rofi -dmenu | ${lib.getExe pkgs.cliphist} decode | ${lib.getExe' pkgs.wl-clipboard "wl-copy"}" + "$mod, B, exec, $browser" + "$mod, F, exec, $fileManager" + "$mod, C, exec, $editor" + "$mod, S, exec, spotify" + + # Move focus + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + + # Move window + "$mod SHIFT, left, movewindow, l" + "$mod SHIFT, right, movewindow, r" + "$mod SHIFT, up, movewindow, u" + "$mod SHIFT, down, movewindow, d" + + # Scroll through workspaces + "$mod, mouse_down, workspace, e-1" + "$mod, mouse_up, workspace, e+1" + ] + # Switch workspace + ++ ( + builtins.concatLists (builtins.genList ( + x: [ + "$mod, ${toString (x + 1)}, workspace, ${toString (x + 1)}" + "$mod SHIFT, ${toString (x + 1)}, movetoworkspacesilent, ${toString (x + 1)}" + ] + ) + 9) + ); + + # Release + bindr = [ + # Launcher + "$mod, R, exec, pkill rofi || rofi -show drun" + ]; + + # Repeat + binde = [ + # Resize window + "$mod CONTROL, left, resizeactive, -100 0" + "$mod CONTROL, right, resizeactive, 100 0" + "$mod CONTROL, up, resizeactive, 0 -100" + "$mod CONTROL, down, resizeactive, 0 100" + ]; + + # Locked + bindl = [ + ", switch:on:Lid Switch, exec, systemctl suspend" + + # Media + ", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} --player=spotify play-pause" + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ]; + + # Repeat + Locked + bindel = [ + # Adjust volume + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + + # Adjust brightness + ", XF86MonBrightnessUp, exec, brillo -q -u 20000 -A 4" + ", XF86MonBrightnessDown, exec, brillo -q -u 20000 -U 4" + ]; + + # Mouse + bindm = [ + # Move/resize windows + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + }; + }; + }; +} diff --git a/modules/home/de/hyprland/default.nix b/modules/home/de/hyprland/default.nix index f705c18..7914e7a 100644 --- a/modules/home/de/hyprland/default.nix +++ b/modules/home/de/hyprland/default.nix @@ -6,10 +6,7 @@ }: let cfg = config.myConfig.de; in { - imports = [ - ./waybar.nix - ./hypridlelock.nix - ]; + imports = [./config.nix]; options.myConfig.de.hyprland.enable = lib.mkEnableOption ""; @@ -21,155 +18,14 @@ in { splash=false ''; - myConfig.rofi.enable = true; services.cliphist.enable = true; services.dunst.enable = true; - wayland.windowManager.hyprland = { - enable = true; - - settings = { - exec-once = ["hyprpaper"]; - - input = { - kb_layout = "de"; - kb_variant = "nodeadkeys"; - - accel_profile = "flat"; - }; - - input.touchpad = { - disable_while_typing = true; - natural_scroll = true; - middle_button_emulation = true; - }; - device = { - name = "dell0b9f:00-27c6:0d43-touchpad"; - accel_profile = "adaptive"; - }; - - general = { - gaps_in = 5; - gaps_out = 10; - border_size = 1; - - layout = "master"; - }; - - master = { - new_is_master = false; - no_gaps_when_only = 1; - mfact = "0.5"; - }; - - decoration = { - rounding = 6; - drop_shadow = false; - }; - - animations.enabled = false; - - misc = { - disable_hyprland_logo = true; - disable_splash_rendering = true; - force_default_wallpaper = 0; - }; - - "$mod" = "SUPER"; - "$terminal" = "kitty"; - "$browser" = "brave"; - "$fileManager" = "nemo"; - "$editor" = "codium"; - - bind = - [ - # Essentials - "$mod CONTROL, Q, exit," - "$mod CONTROL, S, exec, systemctl suspend" - "$mod CONTROL, L, exec, loginctl lock-session" - "$mod SHIFT, C, killactive," - "$mod, TAB, cyclenext," - "$mod SHIFT, V, togglefloating," - "$mod SHIFT, F, fullscreen, 0" - - # Launch programs - "$mod, RETURN, exec, $terminal" - "$mod, V, exec, ${lib.getExe pkgs.cliphist} list | rofi -dmenu | ${lib.getExe pkgs.cliphist} decode | ${lib.getExe' pkgs.wl-clipboard "wl-copy"}" - "$mod, B, exec, $browser" - "$mod, F, exec, $fileManager" - "$mod, C, exec, $editor" - "$mod, S, exec, spotify" - - # Move focus - "$mod, left, movefocus, l" - "$mod, right, movefocus, r" - "$mod, up, movefocus, u" - "$mod, down, movefocus, d" - - # Move window - "$mod SHIFT, left, movewindow, l" - "$mod SHIFT, right, movewindow, r" - "$mod SHIFT, up, movewindow, u" - "$mod SHIFT, down, movewindow, d" - - # Scroll through workspaces - "$mod, mouse_down, workspace, e-1" - "$mod, mouse_up, workspace, e+1" - ] - # Switch workspace - ++ ( - builtins.concatLists (builtins.genList ( - x: [ - "$mod, ${toString (x + 1)}, workspace, ${toString (x + 1)}" - "$mod SHIFT, ${toString (x + 1)}, movetoworkspacesilent, ${toString (x + 1)}" - ] - ) - 9) - ); - - # Release - bindr = [ - # Launcher - "$mod, R, exec, pkill rofi || rofi -show drun" - ]; - - # Repeat - binde = [ - # Resize window - "$mod CONTROL, left, resizeactive, -100 0" - "$mod CONTROL, right, resizeactive, 100 0" - "$mod CONTROL, up, resizeactive, 0 -100" - "$mod CONTROL, down, resizeactive, 0 100" - ]; - - # Locked - bindl = [ - ", switch:on:Lid Switch, exec, systemctl suspend" - - # Media - ", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} --player=spotify play-pause" - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ]; - - # Repeat + Locked - bindel = [ - # Adjust volume - ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - - # Adjust brightness - ", XF86MonBrightnessUp, exec, brillo -q -u 20000 -A 4" - ", XF86MonBrightnessDown, exec, brillo -q -u 20000 -U 4" - ]; - - # Mouse - bindm = [ - # Move/resize windows - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - }; + myConfig.de = { + rofi.enable = true; + hypridlelock.enable = true; + waybar.enable = true; }; }; } diff --git a/modules/home/de/qtile.nix b/modules/home/de/qtile.nix index 9c866c5..a9120f1 100644 --- a/modules/home/de/qtile.nix +++ b/modules/home/de/qtile.nix @@ -23,7 +23,7 @@ in { xsession.enable = true; - myConfig.rofi.enable = true; + myConfig.de.rofi.enable = true; services.clipmenu = { enable = true; launcher = "rofi"; diff --git a/modules/home/rofi/default.nix b/modules/home/de/rofi/default.nix similarity index 71% rename from modules/home/rofi/default.nix rename to modules/home/de/rofi/default.nix index 5af5bfd..2acb80c 100644 --- a/modules/home/rofi/default.nix +++ b/modules/home/de/rofi/default.nix @@ -4,11 +4,10 @@ lib, ... }: let - cfg = config.myConfig.rofi; + cfg = config.myConfig.de.rofi; in { - options.myConfig.rofi = { + options.myConfig.de.rofi = { enable = lib.mkEnableOption ""; - clipboard.enable = lib.mkEnableOption ""; }; config = lib.mkIf cfg.enable { diff --git a/modules/home/rofi/theme.rasi b/modules/home/de/rofi/theme.rasi similarity index 100% rename from modules/home/rofi/theme.rasi rename to modules/home/de/rofi/theme.rasi diff --git a/modules/home/de/theming.nix b/modules/home/de/theming.nix new file mode 100644 index 0000000..11979ee --- /dev/null +++ b/modules/home/de/theming.nix @@ -0,0 +1,48 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.myConfig.de; +in { + options.myConfig.de = { + theming.enable = lib.mkEnableOption ""; + wallpaper = lib.mkOption { + type = lib.types.path; + }; + }; + + config = lib.mkIf cfg.theming.enable { + dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark"; + + gtk = { + enable = true; + + gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; + + theme.name = "Adwaita-dark"; + theme.package = pkgs.gnome.gnome-themes-extra; + + iconTheme.name = "Adwaita"; + iconTheme.package = pkgs.gnome.adwaita-icon-theme; + + font.name = "Open Sans"; + font.package = pkgs.open-sans; + }; + + qt = { + enable = true; + platformTheme = "gtk"; + style.name = "adwaita-dark"; + style.package = pkgs.adwaita-qt; + }; + + home.pointerCursor = { + name = "Bibata-Original-Classic"; + package = pkgs.bibata-cursors; + size = 24; + gtk.enable = true; + }; + }; +} diff --git a/modules/home/de/tray.nix b/modules/home/de/tray.nix new file mode 100644 index 0000000..7366d58 --- /dev/null +++ b/modules/home/de/tray.nix @@ -0,0 +1,59 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.myConfig.de; +in { + options.myConfig.de = { + tray = { + syncthing.enable = lib.mkEnableOption ""; + networkmanager.enable = lib.mkEnableOption ""; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf cfg.tray.syncthing.enable { + home.packages = [pkgs.syncthingtray-minimal]; + + systemd.user.services = { + syncthingtray = { + Unit = { + Description = "Syncthingtray"; + Requires = ["tray.target"]; + After = ["graphical-session-pre.target" "tray.target"]; + PartOf = ["graphical-session.target"]; + }; + Service = { + ExecStart = "${lib.getExe' pkgs.syncthingtray-minimal "syncthingtray"} --wait"; + }; + Install = { + WantedBy = ["graphical-session.target"]; + }; + }; + }; + }) + + (lib.mkIf cfg.tray.networkmanager.enable { + home.packages = [pkgs.networkmanagerapplet]; + + systemd.user.services = { + nm-applet = { + Unit = { + Description = "Networkmanager-applet"; + Requires = ["tray.target"]; + After = ["graphical-session-pre.target" "tray.target"]; + PartOf = ["graphical-session.target"]; + }; + Service = { + ExecStart = "${lib.getExe pkgs.networkmanagerapplet}"; + }; + Install = { + WantedBy = ["graphical-session.target"]; + }; + }; + }; + }) + ]; +} diff --git a/modules/home/de/hyprland/waybar.nix b/modules/home/de/waybar.nix similarity index 95% rename from modules/home/de/hyprland/waybar.nix rename to modules/home/de/waybar.nix index 9f77f2e..ca6ddd0 100644 --- a/modules/home/de/hyprland/waybar.nix +++ b/modules/home/de/waybar.nix @@ -4,7 +4,9 @@ lib, ... }: { - config = lib.mkIf config.myConfig.de.hyprland.enable { + options.myConfig.de.waybar.enable = lib.mkEnableOption ""; + + config = lib.mkIf config.myConfig.de.waybar.enable { programs.waybar = { enable = true; systemd.enable = true; diff --git a/modules/home/default.nix b/modules/home/default.nix index 20d2468..b91b325 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -7,6 +7,5 @@ ./git.nix ./neovim.nix ./kitty.nix - ./rofi ]; }