diff options
author | Sebastian Sellmeier <mail@sebastian-sellmeier.de> | 2023-01-29 21:32:43 +0100 |
---|---|---|
committer | Sebastian Sellmeier <mail@sebastian-sellmeier.de> | 2023-02-04 22:49:49 +0100 |
commit | 528f7bfd5dc757308de3e2f977c1e5333cb0d0d9 (patch) | |
tree | 8fbd9cb3330956ae5f6c6ecae2c6f17a3cd94f79 /nixos/modules | |
parent | c611a3428ab752b2ba4365005f1822301136efb6 (diff) |
sway: add package-option
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/programs/sway.nix | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/nixos/modules/programs/sway.nix b/nixos/modules/programs/sway.nix index b0a766dd055f..3b2e69bd37c3 100644 --- a/nixos/modules/programs/sway.nix +++ b/nixos/modules/programs/sway.nix @@ -26,7 +26,7 @@ let }; }; - swayPackage = pkgs.sway.override { + defaultSwayPackage = pkgs.sway.override { extraSessionCommands = cfg.extraSessionCommands; extraOptions = cfg.extraOptions; withBaseWrapper = cfg.wrapperFeatures.base; @@ -42,6 +42,19 @@ in { <https://github.com/swaywm/sway/wiki> and "man 5 sway" for more information''); + package = mkOption { + type = with types; nullOr package; + default = defaultSwayPackage; + defaultText = literalExpression "pkgs.sway"; + description = lib.mdDoc '' + Sway package to use. Will override the options + 'wrapperFeatures', 'extraSessionCommands', and 'extraOptions'. + Set to <code>null</code> to not add any Sway package to your + path. This should be done if you want to use the Home Manager Sway + module to install Sway. + ''; + }; + wrapperFeatures = mkOption { type = wrapperOptions; default = { }; @@ -121,16 +134,17 @@ in { } ]; environment = { - systemPackages = [ swayPackage ] ++ cfg.extraPackages; + systemPackages = optional (cfg.package != null) cfg.package ++ cfg.extraPackages; # Needed for the default wallpaper: - pathsToLink = [ "/share/backgrounds/sway" ]; + pathsToLink = optionals (cfg.package != null) [ "/share/backgrounds/sway" ]; etc = { - "sway/config".source = mkOptionDefault "${swayPackage}/etc/sway/config"; "sway/config.d/nixos.conf".source = pkgs.writeText "nixos.conf" '' # Import the most important environment variables into the D-Bus and systemd # user environments (e.g. required for screen sharing and Pinentry prompts): exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP ''; + } // optionalAttrs (cfg.package != null) { + "sway/config".source = mkOptionDefault "${cfg.package}/etc/sway/config"; }; }; security.polkit.enable = true; @@ -139,7 +153,7 @@ in { fonts.enableDefaultFonts = mkDefault true; programs.dconf.enable = mkDefault true; # To make a Sway session available if a display manager like SDDM is enabled: - services.xserver.displayManager.sessionPackages = [ swayPackage ]; + services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ]; programs.xwayland.enable = mkDefault true; # For screen sharing (this option only has an effect with xdg.portal.enable): xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-wlr ]; |