{self, ...}: { # Hyprland desktop. The compositor config itself (hyprland.lua + ahmza/*.lua, # hyprlock, hypridle, hyprsunset) is managed via stow (dotfiles: hypr package). # Here we enable Hyprland and install the runtime tools that config + the # helper scripts in the `bin` package expect on PATH. flake.nixosModules.hyprland = {pkgs, ...}: let modules = with self.nixosModules; [ audio systemTheme fuzzel ghostty waybar ]; in { imports = modules; programs.hyprland = { enable = true; withUWSM = true; }; # hypr = compositor config, dunst = notifications, wal = pywal templates, # bin = helper scripts (swp/launch-waybar/passmenu) referenced by keybinds. ahmza.stow.packages = ["hypr" "dunst" "wal" "bin"]; services.displayManager.defaultSession = "hyprland-uwsm"; services.xserver.enable = true; security.polkit.enable = true; environment.systemPackages = with pkgs; [ # hypr* ecosystem (keybinds / hypridle / autostart) hyprlock hypridle hyprsunset hyprpicker # launcher / file manager / browser (vars.lua: Picker/FileManager/Browser) kdePackages.dolphin firefox # wallpaper daemon used by the `swp` script + autostart (awww-daemon) awww # scripting deps for bin/ helpers (swp uses jq + hyprctl) jq # display / applets referenced by autostart xrandr networkmanagerapplet blueman udiskie brightnessctl # clipboard wl-clipboard cliphist # theming gsettings-desktop-schemas dunst pywal16 ]; }; }