nixos/kanidm: add support for kanidm unixd config v2 (#432765)

This commit is contained in:
Marcus Ramberg
2026-01-11 16:23:13 +00:00
committed by GitHub
2 changed files with 18 additions and 4 deletions
+17 -3
View File
@@ -29,6 +29,7 @@ let
mkIf
mkMerge
mkOption
mkOrder
mkPackageOption
optional
optionals
@@ -368,7 +369,7 @@ in
freeformType = settingsFormat.type;
options = {
pam_allowed_login_groups = mkOption {
kanidm.pam_allowed_login_groups = mkOption {
description = "Kanidm groups that are allowed to login using PAM.";
example = "my_pam_group";
type = types.listOf types.str;
@@ -673,6 +674,10 @@ in
config = mkIf (cfg.enableClient || cfg.enableServer || cfg.enablePam) {
warnings = lib.optionals (cfg.package.eolMessage != "") [ cfg.package.eolMessage ];
services.kanidm = {
unixSettings.version = "2";
serverSettings.version = "2";
};
assertions =
let
@@ -710,6 +715,14 @@ in
};
in
[
{
assertion = cfg.enablePam -> !(cfg.unixSettings ? pam_allowed_login_groups);
message = ''
<option>services.kanidm.unixSettings.pam_allowed_login_groups</option> has been renamed
to <option>services.kanidm.unixSettings.kanidm.pam_allowed_login_groups</option>.
Please change your usage.
'';
}
{
assertion =
!cfg.enableServer
@@ -1040,8 +1053,9 @@ in
system.nssModules = mkIf cfg.enablePam [ cfg.package ];
system.nssDatabases.group = optional cfg.enablePam "kanidm";
system.nssDatabases.passwd = optional cfg.enablePam "kanidm";
# Needs to be before "files" which is `mkBefore`
system.nssDatabases.group = mkOrder 490 (optional cfg.enablePam "kanidm");
system.nssDatabases.passwd = mkOrder 490 (optional cfg.enablePam "kanidm");
users.groups = mkMerge [
(mkIf cfg.enableServer { kanidm = { }; })
+1 -1
View File
@@ -66,7 +66,7 @@ in
};
enablePam = true;
unixSettings = {
pam_allowed_login_groups = [ "shell" ];
kanidm.pam_allowed_login_groups = [ "shell" ];
};
};