diff --git a/configs/nixos/modules/desktop/session/hyprland/default.nix b/configs/nixos/modules/desktop/session/hyprland/default.nix index 61b0192..f630aa5 100644 --- a/configs/nixos/modules/desktop/session/hyprland/default.nix +++ b/configs/nixos/modules/desktop/session/hyprland/default.nix @@ -7,94 +7,101 @@ { options.modules.desktop.session.hyprland.enable = lib.mkEnableOption "the Hyprland compositor"; - config = lib.mkIf config.modules.desktop.session.hyprland.enable { - registry.keybind.${config.networking.hostName} = { - hyprland-focus-left = { - keys = "SUPER + H"; - action = { - kind = "focus"; - direction = "left"; - }; - }; + config = lib.mkIf config.modules.desktop.session.hyprland.enable ( + lib.mkMerge [ + { + registry.keybind.${config.networking.hostName} = { + hyprland-focus-left = { + keys = "SUPER + H"; + action = { + kind = "focus"; + direction = "left"; + }; + }; - hyprland-focus-down = { - keys = "SUPER + J"; - action = { - kind = "focus"; - direction = "down"; - }; - }; + hyprland-focus-down = { + keys = "SUPER + J"; + action = { + kind = "focus"; + direction = "down"; + }; + }; - hyprland-focus-up = { - keys = "SUPER + K"; - action = { - kind = "focus"; - direction = "up"; - }; - }; + hyprland-focus-up = { + keys = "SUPER + K"; + action = { + kind = "focus"; + direction = "up"; + }; + }; - hyprland-focus-right = { - keys = "SUPER + L"; - action = { - kind = "focus"; - direction = "right"; - }; - }; - } - // lib.listToAttrs ( - map (workspace: { - name = "hyprland-workspace-${toString workspace}"; - value = { - keys = "SUPER + ${toString workspace}"; - action = { - kind = "focus"; - inherit workspace; + hyprland-focus-right = { + keys = "SUPER + L"; + action = { + kind = "focus"; + direction = "right"; + }; }; }; - }) (lib.range 1 9) - ); + } + { + registry.keybind.${config.networking.hostName} = lib.listToAttrs ( + map (workspace: { + name = "hyprland-workspace-${toString workspace}"; + value = { + keys = "SUPER + ${toString workspace}"; + action = { + kind = "focus"; + inherit workspace; + }; + }; + }) (lib.range 1 9) + ); + } + { + # This program integration owns the session, portals, and polkit, launched + # through the universal Wayland session manager. + programs.hyprland = { + enable = true; + withUWSM = true; + }; - # This program integration owns the session, portals, and polkit, launched - # through the universal Wayland session manager. - programs.hyprland = { - enable = true; - withUWSM = true; - }; + home-manager.users.${config.user.name}.wayland.windowManager.hyprland = { + enable = true; - home-manager.users.${config.user.name}.wayland.windowManager.hyprland = { - enable = true; + # One package drives the whole session, so there is never a version split. + # The program integration above installs it and the portal, leaving home- + # manager to write only the config. + package = null; + portalPackage = null; - # One package drives the whole session, so there is never a version split. - # The program integration above installs it and the portal, leaving home- - # manager to write only the config. - package = null; - portalPackage = null; + # uwsm owns the systemd graphical-session targets. + systemd.enable = false; - # uwsm owns the systemd graphical-session targets. - systemd.enable = false; + # Write the native Lua Hyprland config. Home Manager renders the Nix + # settings below as hl.* calls. + configType = "lua"; - # Write the native Lua Hyprland config. Home Manager renders the Nix - # settings below as hl.* calls. - configType = "lua"; + settings = { + config.general.layout = "dwindle"; - settings = { - config.general.layout = "dwindle"; - - bind = lib.mapAttrsToList (_name: keybind: { - _args = [ - keybind.keys - (lib.generators.mkLuaInline ( - { - exec = "hl.dsp.exec_cmd(${lib.generators.toLua { } keybind.action.command})"; - focus = "hl.dsp.focus(${ - lib.generators.toLua { } { inherit (keybind.action) direction workspace; } - })"; - } - .${keybind.action.kind} - )) - ]; - }) (lib.attrByPath [ config.networking.hostName ] { } config.registry.keybind); - }; - }; - }; + bind = lib.mapAttrsToList (_name: keybind: { + _args = [ + keybind.keys + (lib.generators.mkLuaInline ( + { + exec = "hl.dsp.exec_cmd(${lib.generators.toLua { } keybind.action.command})"; + focus = "hl.dsp.focus(${ + lib.generators.toLua { } { inherit (keybind.action) direction workspace; } + })"; + } + .${keybind.action.kind} + )) + ]; + }) (lib.attrByPath [ config.networking.hostName ] { } config.registry.keybind); + }; + }; + } + ] + ); }