fix(sway): add possibility to not install swaylock package

Useful when using home-manager on third-party distribution. Swaylock
from nixpkgs become unable to unlock session because PAM
incompatibilities.
This commit is contained in:
Yorick Barbanneau 2025-08-24 22:45:13 +02:00
parent a359d8c06e
commit c1ee8f9d50
Signed by: ephase
GPG key ID: 246042E52B41FFCF
4 changed files with 18 additions and 7 deletions

View file

@ -13,6 +13,16 @@ in
description = "configure laptop mode"; description = "configure laptop mode";
}; };
swaylock.useNullPackage = mkOption {
type = types.bool;
default = false;
description = ''
Use null package to not install swaylock with Nix
Useful when using Home-Manager on third-party distribution to avoid
problem with PAM
'';
};
wallpapers = { wallpapers = {
lockscreen = mkOption { lockscreen = mkOption {
type = types.str; type = types.str;
@ -114,7 +124,7 @@ in
}; };
iconTheme = { iconTheme = {
name = "Papirus Dark"; name = "Papirus Dark";
package = pkgs.papirus-icon-theme; package = pkgs.papirus-icon-theme;
}; };
font = { font = {
name = "Deja Vu Sans"; name = "Deja Vu Sans";

View file

@ -76,7 +76,7 @@ in
"${mod}+Alt+k" = "kill"; "${mod}+Alt+k" = "kill";
"${mod}+Alt+c" = "reload"; "${mod}+Alt+c" = "reload";
"${mod}+Alt+Backspace" = "exec swaynag -t warning -m 'Exit sway?' -B 'Yes' 'swaymsg exit'"; "${mod}+Alt+Backspace" = "exec swaynag -t warning -m 'Exit sway?' -B 'Yes' 'swaymsg exit'";
"${mod}+Alt+l" = "exec ${pkgs.swaylock}/bin/swaylock"; "${mod}+Alt+l" = if cfg.swaylock.useNullPackage then "exec swaylock" else "exec ${pkgs.swaylock}/bin/swaylock";
# Manage windows placement # Manage windows placement
"${mod}+b" = "splith"; "${mod}+b" = "splith";
"${mod}+v" = "splitv"; "${mod}+v" = "splitv";

View file

@ -21,11 +21,11 @@ in
events = [ events = [
{ {
event = "before-sleep"; event = "before-sleep";
command = "${pkgs.swaylock}/bin/swaylock -f"; command = if cfg.swaylock.useNullPackage then "swaylock" else "${pkgs.swaylock}/bin/swaylock";
} }
{ {
event = "lock"; event = "lock";
command = "${pkgs.swaylock}/bin/swaylock -f"; command = if cfg.swaylock.useNullPackage then "swaylock" else "${pkgs.swaylock}/bin/swaylock";
} }
]; ];
}; };

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; with lib;
let let
cfg = config.modules.desktop.sway; cfg = config.modules.desktop.sway;
@ -6,9 +6,10 @@ in
{ {
config = mkIf config.modules.desktop.sway.enable { config = mkIf config.modules.desktop.sway.enable {
programs.swaylock = { programs.swaylock = {
package = if cfg.swaylock.useNullPackage then null else pkgs.swaylock;
enable = true; enable = true;
settings = { settings = {
image = "${cfg.wallpapers.lockscreen}"; image = if cfg.wallpapers.lockscreen != "" then "${cfg.wallpapers.lockscreen}" else false;
scaling = "center"; scaling = "center";
color = "000000"; color = "000000";
indicator-radius = 70; indicator-radius = 70;
@ -22,7 +23,7 @@ in
ring-wrong-color = "f268b3"; ring-wrong-color = "f268b3";
inside-wrong-color = "f268b3cc"; inside-wrong-color = "f268b3cc";
key-hl-color = "1cd180"; key-hl-color = "1cd180";
caps-lock-key-hl-color = "1cd180"; caps-lock-key-hl-color = "1cd180";
caps-lock-bs-hl-color = "f268b3"; caps-lock-bs-hl-color = "f268b3";
bs-hl-color = "f268b3ff"; bs-hl-color = "f268b3ff";
separator-color = "00000000"; separator-color = "00000000";