diff --git a/nixos/modules/services/security/kanidm.nix b/nixos/modules/services/security/kanidm.nix
index 0abf864a8fc7..20e1fdd0f2a1 100644
--- a/nixos/modules/services/security/kanidm.nix
+++ b/nixos/modules/services/security/kanidm.nix
@@ -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 = ''
+ has been renamed
+ to .
+ 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 = { }; })
diff --git a/nixos/tests/kanidm.nix b/nixos/tests/kanidm.nix
index 78f71fce90c6..c9fd7bb2a083 100644
--- a/nixos/tests/kanidm.nix
+++ b/nixos/tests/kanidm.nix
@@ -66,7 +66,7 @@ in
};
enablePam = true;
unixSettings = {
- pam_allowed_login_groups = [ "shell" ];
+ kanidm.pam_allowed_login_groups = [ "shell" ];
};
};