nixos/plasma-login-manager: init

This commit is contained in:
K900
2026-02-17 11:33:51 +03:00
parent 43dacb643d
commit 88327eb387
3 changed files with 125 additions and 0 deletions
+1
View File
@@ -619,6 +619,7 @@
./services/display-managers/greetd.nix
./services/display-managers/lemurs.nix
./services/display-managers/ly.nix
./services/display-managers/plasma-login-manager.nix
./services/display-managers/sddm.nix
./services/editors/emacs.nix
./services/editors/haste.nix
@@ -0,0 +1,123 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib)
mkIf
mkEnableOption
mkOption
mkPackageOption
optionalAttrs
;
cfg = config.services.displayManager.plasma-login-manager;
xcfg = config.services.xserver;
dmcfg = config.services.displayManager;
iniFmt = pkgs.formats.ini { };
defaultConfig =
optionalAttrs xcfg.enable {
X11.ServerPath = xcfg.displayManager.xserverBin;
}
// optionalAttrs dmcfg.autoLogin.enable {
Autologin = {
User = dmcfg.autoLogin.user;
Session = "${dmcfg.sessionData.autologinSession}.desktop";
};
};
defaultConfigFile = iniFmt.generate "00-nixos-defaults.conf" defaultConfig;
userConfigFile = iniFmt.generate "99-user.conf" cfg.settings;
in
{
options.services.displayManager.plasma-login-manager = {
enable = mkEnableOption "Plasma Login Manager";
package = mkPackageOption pkgs [
"kdePackages"
"plasma-login-manager"
] { };
settings = mkOption {
type = iniFmt.type;
default = { };
example = {
Users.ReuseSession = false;
};
description = "Additional settings for Plasma Login Manager (see `man plasmalogin.conf`)";
};
};
config = mkIf cfg.enable {
services.displayManager.enable = true;
environment.systemPackages = [ cfg.package ];
systemd.packages = [ cfg.package ];
systemd.tmpfiles.packages = [ cfg.package ];
services.dbus.packages = [ cfg.package ];
systemd.services.plasmalogin = {
aliases = [ "display-manager.service" ];
path = [ cfg.package ];
wantedBy = [ "graphical.target" ];
restartIfChanged = false;
};
systemd.defaultUnit = "graphical.target";
environment.etc."plasmalogin.conf.d/00-nixos-defaults.conf".source = defaultConfigFile;
environment.etc."plasmalogin.conf.d/99-user.conf".source = userConfigFile;
security.pam.services = {
plasmalogin.text = ''
auth substack login
account include login
password substack login
session include login
'';
plasmalogin-autologin.text = ''
auth requisite pam_nologin.so
auth required pam_permit.so
account include plasmalogin
password include plasmalogin
session include plasmalogin
'';
plasmalogin-greeter.text = ''
# Load environment from /etc/environment and ~/.pam_environment
auth required pam_env.so conffile=/etc/pam/environment readenv=0
# Always let the greeter start without authentication
auth required pam_permit.so
# No action required for account management
account required pam_permit.so
# Can't change password
password required pam_deny.so
# Setup session
session required pam_unix.so
session optional ${config.systemd.package}/lib/security/pam_systemd.so
'';
};
# FIXME: use upstream sysusers
users = {
users.plasmalogin = {
name = "plasmalogin";
isSystemUser = true;
group = "plasmalogin";
description = "Plasma Login Manager greeter user";
home = "/var/lib/plasmalogin";
};
groups.plasmalogin = { };
};
};
}
+1
View File
@@ -823,6 +823,7 @@ in
|| config.services.greetd.enable
|| config.services.displayManager.ly.enable
|| config.services.displayManager.lemurs.enable
|| config.services.displayManager.plasma-login-manager.enable
);
in
mkIf default (mkDefault true);