From 2af075c7dd17da7f1a4d4cda7310d7e5f811146c Mon Sep 17 00:00:00 2001 From: marc Date: Tue, 3 Dec 2024 22:57:56 +0100 Subject: [PATCH] More refactoring and added hyprlock --- config/rofi/menus/powermenu/powermenu.sh | 4 +- hosts/reykjavik/default.nix | 10 +-- modules/desktop/{env => }/grapheio.nix | 48 +++++--------- modules/desktop/tools/eww.nix | 8 ++- modules/desktop/{greeter => tools}/greetd.nix | 4 +- modules/desktop/tools/hyprlock.nix | 66 +++++++++++++++++++ modules/desktop/tools/hyprpaper.nix | 28 ++++++++ modules/desktop/wm/hyprland.nix | 33 +--------- modules/system/audio.nix | 44 +++++++++++++ 9 files changed, 170 insertions(+), 75 deletions(-) rename modules/desktop/{env => }/grapheio.nix (57%) rename modules/desktop/{greeter => tools}/greetd.nix (90%) create mode 100644 modules/desktop/tools/hyprlock.nix create mode 100644 modules/desktop/tools/hyprpaper.nix create mode 100644 modules/system/audio.nix diff --git a/config/rofi/menus/powermenu/powermenu.sh b/config/rofi/menus/powermenu/powermenu.sh index 24a8e80..10d365b 100755 --- a/config/rofi/menus/powermenu/powermenu.sh +++ b/config/rofi/menus/powermenu/powermenu.sh @@ -81,8 +81,8 @@ case ${chosen} in $lock) if command -v i3lock-color; then i3lock-color -c 808F85 && sleep 1 - # elif command -v betterlockscreen; then - # betterlockscreen -l + elif command -v hyprlock; then + hyprlock fi ;; $suspend) diff --git a/hosts/reykjavik/default.nix b/hosts/reykjavik/default.nix index 82a3e23..cb66f82 100644 --- a/hosts/reykjavik/default.nix +++ b/hosts/reykjavik/default.nix @@ -68,10 +68,12 @@ in # - Desktop ---------------------------------- desktop = { inherit wallpaper; - env.grapheio.enable = true; - wm.hyprland = { - kb_layout = "es,gr"; - }; + + # Use Γραφείο (custom) desktop environment + grapheio.enable = true; + + # Add greek keyboard layout + wm.hyprland.kb_layout = "es,gr"; }; # - Editors and development ------------------ diff --git a/modules/desktop/env/grapheio.nix b/modules/desktop/grapheio.nix similarity index 57% rename from modules/desktop/env/grapheio.nix rename to modules/desktop/grapheio.nix index 6bc8cc8..2b0380d 100644 --- a/modules/desktop/env/grapheio.nix +++ b/modules/desktop/grapheio.nix @@ -2,11 +2,11 @@ with lib; let - cfg = config.samfelag.modules.desktop.env.grapheio; + cfg = config.samfelag.modules.desktop.grapheio; in { - options.samfelag.modules.desktop.env.grapheio = { - enable = mkEnableOption "Grapheio desktop environment - hyprland based"; + options.samfelag.modules.desktop.grapheio = { + enable = mkEnableOption "Γραφείο desktop environment - hyprland based"; }; config = mkIf cfg.enable { @@ -14,33 +14,11 @@ in # - Packages --------------------------------- environment.systemPackages = with pkgs; [ - # - System --------------------------------- - # - Audio - alsa-utils - playerctl - brightnessctl - # - Appearance ----------------------------- # - Cursor inputs.hyprcursor-rose-pine.packages.${pkgs.system}.default - # - Wallpaper - hyprpaper ]; - # - Audio ------------------------------------ - - services = { - pipewire = { - enable = true; - }; - }; - - # - Hyprpaper -------------------------------- - hm.xdg.configFile."hypr/hyprpaper.conf".text = '' - preload = ${config.samfelag.modules.desktop.wallpaper} - wallpaper = ,${config.samfelag.modules.desktop.wallpaper} - ''; - # - Cursor ----------------------------------- hm.home.pointerCursor = { gtk.enable = true; @@ -61,26 +39,30 @@ in samfelag.modules = { + system.audio.enable = true; + system.kanata.enable = true; + desktop = { # Window Manager wm.hyprland.enable = true; - # Greeter (login screen) - greeter.greetd = { - enable = true; - wm_cmd = "Hyprland"; - }; - tools = { + # Greeter (login screen) + greetd = { + enable = true; + wm_cmd = "Hyprland"; + }; + # Locker + hyprlock.enable = true; # Status bars eww.enable = true; # Launcher rofi.enable = true; + # Wallpapper + hyprpaper.enable = true; }; }; - system.kanata.enable = true; - app = { alacritty.enable = true; firefox.enable = true; diff --git a/modules/desktop/tools/eww.nix b/modules/desktop/tools/eww.nix index 3268e89..41b3e42 100644 --- a/modules/desktop/tools/eww.nix +++ b/modules/desktop/tools/eww.nix @@ -3,9 +3,6 @@ let cfg = config.samfelag.modules.desktop.tools.eww; hyprCfg = config.samfelag.modules.desktop.wm.hyprland; - # Paths - paths = { - }; in { options.samfelag.modules.desktop.tools.eww = { @@ -29,6 +26,11 @@ in { hm.xdg.configFile."eww/widgets".source = ../../../config/eww/widgets; hm.xdg.configFile."eww/scripts".source = ../../../config/eww/scripts; + # - Execute on startup ----------------------- + hm.wayland.windowManager.hyprland.settings.exec-once = lib.mkIf hyprCfg.enable [ + "eww open top-bar" + ]; + # - Themeing --------------------------------- hm.xdg.configFile."eww/colour-scheme.scss".text = '' $base00: #${config.colorScheme.palette.base00}; diff --git a/modules/desktop/greeter/greetd.nix b/modules/desktop/tools/greetd.nix similarity index 90% rename from modules/desktop/greeter/greetd.nix rename to modules/desktop/tools/greetd.nix index d3b66a0..fbade02 100644 --- a/modules/desktop/greeter/greetd.nix +++ b/modules/desktop/tools/greetd.nix @@ -1,10 +1,10 @@ { inputs, config, lib, pkgs, ... }: let - cfg = config.samfelag.modules.desktop.greeter.greetd; + cfg = config.samfelag.modules.desktop.tools.greetd; in { - options.samfelag.modules.desktop.greeter.greetd = with lib; { + options.samfelag.modules.desktop.tools.greetd = with lib; { enable = mkEnableOption "Greetd based greeter"; wm_cmd = lib.my.mkOpt' types.str "" "Window manager command"; }; diff --git a/modules/desktop/tools/hyprlock.nix b/modules/desktop/tools/hyprlock.nix new file mode 100644 index 0000000..ef705ee --- /dev/null +++ b/modules/desktop/tools/hyprlock.nix @@ -0,0 +1,66 @@ +{ config, lib, pkgs, inputs, ... }: + +with lib; +let + cfg = config.samfelag.modules.desktop.tools.hyprlock; + hexToRGBString = inputs.nix-colors.lib-core.conversions.hexToRGBString ","; +in +{ + options.samfelag.modules.desktop.tools.hyprlock = { + enable = mkEnableOption "Hyprlock screen locker"; + }; + + config = mkIf cfg.enable { + + hm.programs.hyprlock = { + enable = true; + settings = { + general = { + # disable_loading_bar = true; + # grace = 5; + }; + + background = [ + { + path = "${config.samfelag.modules.desktop.wallpaper}"; + blur_passes = 2; + blur_size = 4; + } + ]; + + input-field = [ + { + font_family = "Iosevka"; + size = "300, 40"; + position = "0, -80"; + outline_thickness = 1; + fade_on_empty = "false"; + placeholder_text = ""; + + outer_color = "rgba(${hexToRGBString config.colorScheme.palette.base02},0.9)"; + inner_color = "rgba(${hexToRGBString config.colorScheme.palette.base00},0.9)"; + font_color = "rgba(${hexToRGBString config.colorScheme.palette.base05},1.0)"; + + check_color = "rgba(${hexToRGBString config.colorScheme.palette.base07},1.0)"; + fail_color = "rgba(${hexToRGBString config.colorScheme.palette.base06},1.0)"; + } + ]; + + label = [ + { + text = "$TIME"; + color = "rgba(${hexToRGBString config.colorScheme.palette.base00},1.0)"; + font_size = 25; + font_family = "Iosevka"; + + position = "0, 80"; + halign = "center"; + valign = "center"; + } + ]; + }; + }; + + + }; +} diff --git a/modules/desktop/tools/hyprpaper.nix b/modules/desktop/tools/hyprpaper.nix new file mode 100644 index 0000000..377c9a7 --- /dev/null +++ b/modules/desktop/tools/hyprpaper.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, inputs, ... }: + +with lib; +let + cfg = config.samfelag.modules.desktop.tools.hyprpaper; +in +{ + options.samfelag.modules.desktop.tools.hyprpaper = { + enable = mkEnableOption "Hyprpaper desktop wallpaper"; + }; + + config = mkIf cfg.enable { + + hm.services.hyprpaper = { + enable = true; + settings = { + preload = "${config.samfelag.modules.desktop.wallpaper}"; + wallpaper = ",${config.samfelag.modules.desktop.wallpaper}"; + }; + }; + + # - Execute on startup ----------------------- + hm.wayland.windowManager.hyprland.settings.exec-once = [ + "hyprpaper" + ]; + + }; +} diff --git a/modules/desktop/wm/hyprland.nix b/modules/desktop/wm/hyprland.nix index 77ee40a..0470b8b 100644 --- a/modules/desktop/wm/hyprland.nix +++ b/modules/desktop/wm/hyprland.nix @@ -7,20 +7,13 @@ in { options.samfelag.modules.desktop.wm.hyprland = with lib; { enable = mkEnableOption "hyprland window manager"; - mod = my.mkOpt' types.str "Mod4" "Main modifier key for hyprland"; - kb_layout = my.mkOpt' types.str "es" "Keyboard layout(s) for hyprland"; - extraKeybindings = my.mkOpt (types.listOf types.str) [ ]; - # extraStartup = my.mkOpt (types.listOf types.attrs) [ ]; }; config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - ]; - # - Configuration ----------------------------- # Hyprland config @@ -31,11 +24,9 @@ in { hm.wayland.windowManager.hyprland = { enable = true; - xwayland.enable = true; - package = pkgs.hyprland; - # Optional - # Whether to enable hyprland-session.target on hyprland startup + + xwayland.enable = true; systemd.enable = true; plugins = [ @@ -60,8 +51,6 @@ in { monitor = ",highres,auto,1"; exec-once = [ - "hyprpaper" - "eww open top-bar" ]; decoration = { @@ -120,29 +109,11 @@ in { "${cfg.mod} SHIFT, 5, movetoworkspace, 5" "${cfg.mod} SHIFT, 0, movetoworkspace, 6" - # - Media ------------------------------ - - # Pulse Audio controls (mute) - ", XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" - - # Media player controls - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioPause, exec, playerctl play-pause" - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - ", XF86AudioStop, exec, playerctl stop" - # - Keyboard --------------------------- "${cfg.mod}, Escape, exec, hyprctl switchxkblayout current next" ] ++ cfg.extraKeybindings; - binde = [ - # Pulse Audio controls (volume) - ", XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%" - ", XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%" - ]; - bindm = [ "${cfg.mod}, mouse:272, hy3:movewindow" "${cfg.mod} SHIFT, mouse:272, resizewindow 1" diff --git a/modules/system/audio.nix b/modules/system/audio.nix new file mode 100644 index 0000000..e9bf6e0 --- /dev/null +++ b/modules/system/audio.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, inputs, ... }: + +with lib; +let + cfg = config.samfelag.modules.system.audio; + hyprCfg = config.samfelag.modules.desktop.wm.hyprland; +in +{ + options.samfelag.modules.system.audio = { + enable = mkEnableOption "Audio support"; + }; + + config = mkIf cfg.enable { + + environment.systemPackages = with pkgs; [ + alsa-utils + playerctl + brightnessctl + ]; + + services.pipewire.enable = true; + + # - Hyprland keybindings --------------------- + hm.wayland.windowManager.hyprland.settings = lib.mkIf hyprCfg.enable { + bind = [ + # Pulse Audio controls (mute) + ", XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" + + # Media player controls + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + ", XF86AudioStop, exec, playerctl stop" + ]; + + binde = [ + # Pulse Audio controls (volume) + ", XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%" + ", XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%" + ]; + }; + }; +}