diff --git a/homes/x86_64-linux/rafiq/default.nix b/homes/x86_64-linux/rafiq/default.nix index 3f5a40e..1b707c8 100644 --- a/homes/x86_64-linux/rafiq/default.nix +++ b/homes/x86_64-linux/rafiq/default.nix @@ -34,6 +34,7 @@ in inputs system pkgs + osConfig ; } )) diff --git a/homes/x86_64-linux/rafiq/desktop/default.nix b/homes/x86_64-linux/rafiq/desktop/default.nix index f523d7f..5e8befb 100644 --- a/homes/x86_64-linux/rafiq/desktop/default.nix +++ b/homes/x86_64-linux/rafiq/desktop/default.nix @@ -3,6 +3,7 @@ lib, inputs, system, + osConfig, ... }: let @@ -15,4 +16,5 @@ mkMerge [ (import ./media-player.nix) (import ./status-bar.nix { inherit pkgs; }) (import ./terminal.nix) + (import ./window-manager { inherit pkgs osConfig lib; }) ] diff --git a/homes/x86_64-linux/rafiq/desktop/window-manager/default.nix b/homes/x86_64-linux/rafiq/desktop/window-manager/default.nix new file mode 100644 index 0000000..44b9a6f --- /dev/null +++ b/homes/x86_64-linux/rafiq/desktop/window-manager/default.nix @@ -0,0 +1,11 @@ +{ + lib, + pkgs, + osConfig, + ... +}: +{ + wayland.windowManager.hyprland.settings = import ./hyprland/settings.nix { + inherit pkgs osConfig lib; + }; +} diff --git a/modules/home/desktop/windowManager/hyprland/decoration.nix b/homes/x86_64-linux/rafiq/desktop/window-manager/hyprland/decoration.nix similarity index 100% rename from modules/home/desktop/windowManager/hyprland/decoration.nix rename to homes/x86_64-linux/rafiq/desktop/window-manager/hyprland/decoration.nix diff --git a/modules/home/desktop/windowManager/hyprland/keybinds.nix b/homes/x86_64-linux/rafiq/desktop/window-manager/hyprland/keybinds.nix similarity index 100% rename from modules/home/desktop/windowManager/hyprland/keybinds.nix rename to homes/x86_64-linux/rafiq/desktop/window-manager/hyprland/keybinds.nix diff --git a/homes/x86_64-linux/rafiq/desktop/window-manager/hyprland/settings.nix b/homes/x86_64-linux/rafiq/desktop/window-manager/hyprland/settings.nix new file mode 100644 index 0000000..3780d20 --- /dev/null +++ b/homes/x86_64-linux/rafiq/desktop/window-manager/hyprland/settings.nix @@ -0,0 +1,30 @@ +{ + lib, + pkgs, + osConfig, + ... +}: +let + inherit (lib) mkMerge; + inherit (osConfig.desktop) mainMonitor; +in +mkMerge [ + (import ./decoration.nix) + (import ./keybinds.nix { inherit pkgs; }) + { + ecosystem.no_update_news = true; + xwayland.force_zero_scaling = true; + + monitor = [ + "${mainMonitor.id}, ${mainMonitor.resolution}@${mainMonitor.refresh-rate}, auto, ${mainMonitor.scale}" + ", preferred, auto, 1" + ]; + + exec-once = [ + "uwsm app -- $LOCKSCREEN" + "uwsm app -- $NOTIFICATION_DAEMON" + "uwsm app -- $STATUS_BAR" + ]; + + } +] diff --git a/modules/home/desktop/default.nix b/modules/home/desktop/default.nix index 43f78ac..4e6e9e7 100644 --- a/modules/home/desktop/default.nix +++ b/modules/home/desktop/default.nix @@ -11,15 +11,7 @@ let inherit (lib) mkMerge mkIf mkEnableOption; in { - options.desktop = { - wayland.enableUtils = mkEnableOption "common Wayland utilities"; - }; config = mkIf upstreamCfg.enable (mkMerge [ - (mkIf cfg.wayland.enableUtils { - home.packages = with pkgs; [ - wl-clipboard-rs - ]; - }) (lib.mkIf (osConfig.hardware.gpu == "nvidia") { home.packages = [ pkgs.stable-diffusion-webui.forge.cuda ]; home.persistence."/persist/home/${config.snowfallorg.user.name}".directories = [ diff --git a/modules/home/desktop/windowManager/hyprland/default.nix b/modules/home/desktop/windowManager/hyprland/default.nix deleted file mode 100644 index 53f78d1..0000000 --- a/modules/home/desktop/windowManager/hyprland/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - pkgs, - lib, - osConfig, - ... -}: -let - inherit (osConfig.desktop) mainMonitor; -in -{ - config = lib.mkIf (osConfig.desktop.windowManager == "hyprland") { - desktop.wayland.enableUtils = true; - wayland.windowManager.hyprland = { - enable = true; - systemd.enable = false; - settings = lib.mkMerge [ - { - ecosystem.no_update_news = true; - - monitor = [ - "${mainMonitor.id}, ${mainMonitor.resolution}@${mainMonitor.refresh-rate}, auto, ${mainMonitor.scale}" - ", preferred, auto, 1" - ]; - - exec-once = [ - "uwsm app -- $LOCKSCREEN" - "uwsm app -- $NOTIFICATION_DAEMON" - "uwsm app -- $STATUS_BAR" - ]; - - xwayland.force_zero_scaling = true; - } - (import ./decoration.nix) - (import ./keybinds.nix { inherit pkgs; }) - ]; - }; - xdg.configFile."uwsm/env".text = # sh - '' - export GDK_SCALE=${mainMonitor.scale} - export STEAM_FORCE_DESKTOPUI_SCALING=${mainMonitor.scale} - ''; - xdg.configFile."uwsm/env-hyprland".text = # sh - '' - export GDK_SCALE=${mainMonitor.scale} - export STEAM_FORCE_DESKTOPUI_SCALING=${mainMonitor.scale} - ''; - }; -} diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix index 0251e8d..36c28ca 100644 --- a/modules/nixos/desktop/default.nix +++ b/modules/nixos/desktop/default.nix @@ -5,23 +5,21 @@ ... }: let - inherit (lib) mkEnableOption; + inherit (lib) mkEnableOption mkIf singleton; inherit (lib.pantheon) mkStrOption; + inherit (pkgs) wl-clipboard-rs; + cfg = config.desktop; in { - imports = [ - ./windowManager.nix - ]; - options.desktop = { enable = mkEnableOption ""; + enableWaylandUtilities = mkEnableOption ""; mainMonitor = { id = mkStrOption; scale = lib.pantheon.mkStrOption; resolution = lib.pantheon.mkStrOption; refresh-rate = lib.pantheon.mkStrOption; }; - windowManager = lib.pantheon.mkStrOption; enableSpotifyd = lib.mkEnableOption ""; enableSteam = lib.mkEnableOption ""; enableVR = lib.mkEnableOption ""; @@ -34,6 +32,9 @@ in font-awesome ]; } + (mkIf cfg.enableWaylandUtilities { + home-manager.sharedModules = singleton { home.packages = [ wl-clipboard-rs ]; }; + }) (lib.mkIf config.desktop.enableSteam { programs.steam = { enable = true; diff --git a/modules/nixos/desktop/window-manager/hyprland/default.nix b/modules/nixos/desktop/window-manager/hyprland/default.nix new file mode 100644 index 0000000..67060bd --- /dev/null +++ b/modules/nixos/desktop/window-manager/hyprland/default.nix @@ -0,0 +1,47 @@ +{ config, lib, ... }: +let + inherit (lib) mkEnableOption mkIf singleton; + inherit (config.desktop) mainMonitor; + cfg = config.desktop.window-manager.hyprland; +in +{ + options.desktop.window-manager.hyprland = { + enable = mkEnableOption ""; + }; + + config = mkIf cfg.enable { + desktop.enableWaylandUtilities = true; + environment.loginShellInit = # sh + '' + if [[ -z "$SSH_CLIENT" && -z "$SSH_CONNECTION" ]]; then + if uwsm check may-start; then + exec uwsm start hyprland-uwsm.desktop + fi + fi + ''; + environment.variables = { + ELECTRON_OZONE_PLATFORM_HINT = "auto"; + NIXOS_OZONE_WL = "1"; + }; + programs.hyprland = { + enable = true; + withUWSM = true; + }; + home-manager.sharedModules = singleton { + wayland.windowManager.hyprland = { + enable = true; + systemd.enable = false; + }; + xdg.configFile."uwsm/env".text = # sh + '' + export GDK_SCALE=${mainMonitor.scale} + export STEAM_FORCE_DESKTOPUI_SCALING=${mainMonitor.scale} + ''; + xdg.configFile."uwsm/env-hyprland".text = # sh + '' + export GDK_SCALE=${mainMonitor.scale} + export STEAM_FORCE_DESKTOPUI_SCALING=${mainMonitor.scale} + ''; + }; + }; +} diff --git a/modules/nixos/desktop/windowManager.nix b/modules/nixos/desktop/windowManager.nix deleted file mode 100644 index 251690a..0000000 --- a/modules/nixos/desktop/windowManager.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, ... }: -{ - config = lib.mkMerge [ - (lib.mkIf (config.desktop.windowManager == "hyprland") { - environment.loginShellInit = # sh - '' - if [[ -z "$SSH_CLIENT" && -z "$SSH_CONNECTION" ]]; then - if uwsm check may-start; then - exec uwsm start hyprland-uwsm.desktop - fi - fi - ''; - environment.variables = { - ELECTRON_OZONE_PLATFORM_HINT = "auto"; - NIXOS_OZONE_WL = "1"; - }; - programs.hyprland = { - enable = true; - withUWSM = true; - }; - }) - ]; -} diff --git a/systems/x86_64-linux/desktop.nix b/systems/x86_64-linux/desktop.nix index 905b17d..b653213 100644 --- a/systems/x86_64-linux/desktop.nix +++ b/systems/x86_64-linux/desktop.nix @@ -8,7 +8,7 @@ notification-daemon.mako.enable = true; status-bar.waybar.enable = true; terminal.ghostty.enable = true; - windowManager = "hyprland"; + window-manager.hyprland.enable = true; enableSpotifyd = true; enableSteam = true; enableVR = true;