diff options
Diffstat (limited to 'modules/hosts/desktop/sway')
| -rw-r--r-- | modules/hosts/desktop/sway/default.nix | 94 | ||||
| -rw-r--r-- | modules/hosts/desktop/sway/swayidle.nix | 49 | ||||
| -rw-r--r-- | modules/hosts/desktop/sway/swaylock.nix | 30 |
3 files changed, 78 insertions, 95 deletions
diff --git a/modules/hosts/desktop/sway/default.nix b/modules/hosts/desktop/sway/default.nix index c149c21..b9cec12 100644 --- a/modules/hosts/desktop/sway/default.nix +++ b/modules/hosts/desktop/sway/default.nix @@ -7,17 +7,39 @@ }: let - inherit (lib) mkEnableOption mkIf mkOptionDefault; - mod = config.home-manager.users.${username}.wayland.windowManager.sway.config.modifier; + inherit (lib) mkEnableOption mkOption mkIf mkOptionDefault types; cfg = config.nx.desktop.sway; + mod = "Mod4"; in { - imports = [ - ./swayidle.nix - ./swaylock.nix - ]; + options.nx.desktop.sway = { + enable = mkEnableOption "Enable sway"; + monitors = mkOption { + type = types.attrsOf (types.submodule { + options = { + resolution = mkOption { + type = types.str; + description = "Monitor resolution and refresh rate"; + example = "1920x1080@240Hz"; + }; + position = mkOption { + type = types.str; + default = "0 0"; + description = "Monitor position"; + example = "1920 0"; + }; + }; + }); + default = { }; + description = "Monitor configuration"; + }; + wallpaper = mkOption { + type = types.nullOr types.path; + default = null; + description = "Wallpaper image path"; + }; + }; - options.nx.desktop.sway.enable = mkEnableOption "Enable sway and setup"; config = mkIf cfg.enable { home-manager.users.${username} = { home.packages = with pkgs; [ @@ -37,16 +59,14 @@ in config = { input = { "*" = { - xkb_layout = "de"; + xkb_layout = config.console.keyMap; }; }; - output = { - DP-1 = { - resolution = "1920x1080@240Hz"; - bg = "/etc/nixos/images/pond.jpg fill"; - }; - }; + output = lib.mapAttrs (name: monitor: { + resolution = monitor.resolution; + position = monitor.position; + } // (if cfg.wallpaper != null then { bg = "${cfg.wallpaper} fill"; } else { })) cfg.monitors; gaps = { inner = 15; @@ -57,7 +77,7 @@ in border = 0; }; - modifier = "Mod4"; + modifier = mod; keybindings = mkOptionDefault { "${mod}+q" = "kill"; @@ -76,7 +96,7 @@ in bars = [ { - "command" = "${pkgs.waybar}/bin/waybar"; + command = "${pkgs.waybar}/bin/waybar"; } ]; }; @@ -114,6 +134,48 @@ in package = pkgs.adwaita-icon-theme; size = 24; }; + + # swaylock + programs.swaylock = { + enable = true; + settings = { + font = "monospace 12"; + color = "00000000"; + ring-color = "ffffffff"; + key-hl-color = "ff0000ff"; + bs-hl-color = "ff0000ff"; + }; + }; + + # swayidle + services.swayidle = { + enable = true; + timeouts = [ + { + timeout = 300; + command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; + } + { + timeout = 600; + command = "${pkgs.sway}/bin/swaymsg 'output * dpms off'"; + resumeCommand = "${pkgs.sway}/bin/swaymsg output * dpms on"; + } + { + timeout = 900; + command = "${pkgs.systemd}/bin/systemctl suspend"; + } + ]; + events = [ + { + event = "after-resume"; + command = "${pkgs.sway}/bin/swaymsg output * dpms on"; + } + { + event = "before-sleep"; + command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; + } + ]; + }; }; }; } diff --git a/modules/hosts/desktop/sway/swayidle.nix b/modules/hosts/desktop/sway/swayidle.nix deleted file mode 100644 index df8dbdc..0000000 --- a/modules/hosts/desktop/sway/swayidle.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - config, - lib, - pkgs, - username, - ... -}: - -let - inherit (lib) mkEnableOption mkIf; - cfg = config.nx.desktop.swayidle; -in -{ - options.nx.desktop.swayidle.enable = mkEnableOption "Enable swayidle configuration" // { - default = config.nx.desktop.sway.enable; - }; - config = mkIf cfg.enable { - home-manager.users."${username}" = { - services.swayidle = { - enable = true; - timeouts = [ - { - timeout = 300; - command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; - } - { - timeout = 600; - command = "${pkgs.sway}/bin/swaymsg 'output * dpms off"; - resumeCommand = "${pkgs.sway}/bin/swaymsg output * dpms on"; - } - { - timeout = 900; - command = "${pkgs.systemd}/bin/systemctl suspend"; - } - ]; - events = [ - { - event = "after-resume"; - command = "${pkgs.sway}/bin/swaymsg output * dpms on"; - } - { - event = "before-sleep"; - command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; - } - ]; - }; - }; - }; -} diff --git a/modules/hosts/desktop/sway/swaylock.nix b/modules/hosts/desktop/sway/swaylock.nix deleted file mode 100644 index 9ba43a1..0000000 --- a/modules/hosts/desktop/sway/swaylock.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - config, - username, - lib, - ... -}: - -let - inherit (lib) mkEnableOption mkIf; - cfg = config.nx.desktop.swaylock; -in -{ - options.nx.desktop.swaylock.enable = mkEnableOption "Enable and setup swaylock" // { - default = config.nx.desktop.sway.enable; - }; - config = mkIf cfg.enable { - home-manager.users."${username}" = { - programs.swaylock = { - enable = true; - settings = { - font = "monospace 12"; - color = "00000000"; - ring-color = "ffffffff"; - key-hl-color = "ff0000ff"; - bs-hl-color = "ff0000ff"; - }; - }; - }; - }; -} |
