diff --git a/modules/home-manager/desktop/sway/default.nix b/modules/home-manager/desktop/sway/default.nix index e45a78c..e40d519 100644 --- a/modules/home-manager/desktop/sway/default.nix +++ b/modules/home-manager/desktop/sway/default.nix @@ -7,6 +7,12 @@ in options.modules.desktop.sway = { enable = mkEnableOption "enable Sway Windows Manager"; + installPackage = mkOption { + type = types.bool; + default = true; + description = "install Package, if false relies on distribution packages"; + }; + kanshi = mkOption { type = types.bool; default = false; diff --git a/modules/home-manager/desktop/sway/includes/sway.nix b/modules/home-manager/desktop/sway/includes/sway.nix index c398807..aba7d37 100644 --- a/modules/home-manager/desktop/sway/includes/sway.nix +++ b/modules/home-manager/desktop/sway/includes/sway.nix @@ -7,6 +7,14 @@ in config = mkIf config.modules.desktop.sway.enable { wayland.windowManager.sway = { enable = true; + + # Do not install sway package on other system that NixOS + # because performance issue + package = + if cfg.installPackage + then pkgs.sway + else null; + wrapperFeatures.gtk = true; systemd.enable = true; config = { @@ -61,7 +69,10 @@ in "${mod}+Shift+q" = "kill"; "${mod}+d" = "exec ${pkgs.fuzzel}/bin/fuzzel"; "${mod}+Shift+c" = "reload"; - "${mod}+Alt+l" = "exec ${pkgs.swaylock}/bin/swaylock"; + "${mod}+Alt+l" = + if cfg.installPackage + then "exec ${pkgs.swaylock}/bin/swaylock" + else "exec swaylock"; "${mod}+${left} focus" = "left"; "${mod}+${down} focus" = "down"; "${mod}+${up} focus" = "up"; diff --git a/modules/home-manager/desktop/sway/includes/swayidle.nix b/modules/home-manager/desktop/sway/includes/swayidle.nix index 05e339a..274c7ce 100644 --- a/modules/home-manager/desktop/sway/includes/swayidle.nix +++ b/modules/home-manager/desktop/sway/includes/swayidle.nix @@ -1,5 +1,8 @@ { config, lib, pkgs, ... }: with lib; +let + cfg = config.modules.desktop.sway; +in { config = mkIf config.modules.desktop.sway.enable { services.swayidle = { @@ -7,22 +10,34 @@ with lib; timeouts = [ { timeout = 300; - command = "${pkgs.swaylock}/bin/swaylock -f"; + command = + if cfg.installPackage + then "${pkgs.swaylock}/bin/swaylock -f" + else "swaylock -f"; } { timeout = 600; command = ''${pkgs.sway}/bin/swaymsg "output * power off"''; - resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * power on"''; + resumeCommand = + if cfg.installPackage + then ''${pkgs.sway}/bin/swaymsg "output * power on"'' + else ''swaymsg "output * power on"''; } ]; events = [ { event = "before-sleep"; - command = "${pkgs.swaylock}/bin/swaylock -f"; + command = + if cfg.installPackage + then "${pkgs.swaylock}/bin/swaylock -f" + else "swaylock -f"; } { event = "lock"; - command = "${pkgs.swaylock}/bin/swaylock -f"; + command = + if cfg.installPackage + then "${pkgs.swaylock}/bin/swaylock -f" + else "swaylock -f"; } ]; }; diff --git a/modules/home-manager/desktop/sway/includes/swaylock.nix b/modules/home-manager/desktop/sway/includes/swaylock.nix index 527f777..1b1f2ad 100644 --- a/modules/home-manager/desktop/sway/includes/swaylock.nix +++ b/modules/home-manager/desktop/sway/includes/swaylock.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: with lib; let cfg = config.modules.desktop.sway; @@ -7,6 +7,10 @@ in config = mkIf config.modules.desktop.sway.enable { programs.swaylock = { enable = true; + package = + if cfg.installPackage + then pkgs.swaylock + else pkgs.emptyDirectory; settings = { image = "${cfg.wallpapers.lockscreen}"; scaling = "center";