diff --git a/modules/misc/pam.nix b/modules/misc/pam.nix index 3bd0f2925..dfeaf2f33 100644 --- a/modules/misc/pam.nix +++ b/modules/misc/pam.nix @@ -6,17 +6,35 @@ let homeCfg = config.home; + vars = + optionalAttrs (homeCfg.sessionVariableSetter == "pam") homeCfg.sessionVariables + // config.pam.sessionVariables; + in { meta.maintainers = [ maintainers.rycee ]; - options = {}; + options = { + pam.sessionVariables = mkOption { + default = {}; + type = types.attrs; + example = { EDITOR = "vim"; }; + description = '' + Environment variables that will be set for the PAM session. + The variable values must be as described in + + pam_env.conf + 5 + . + ''; + }; + }; - config = mkIf (homeCfg.sessionVariableSetter == "pam") { + config = mkIf (vars != {}) { home.file.".pam_environment".text = concatStringsSep "\n" ( - mapAttrsToList (n: v: "${n} OVERRIDE=${v}") homeCfg.sessionVariables + mapAttrsToList (n: v: "${n} OVERRIDE=${toString v}") vars ) + "\n"; }; }