{ config, lib, pkgs, ... }: with lib; let vars = config.pam.sessionVariables; in { meta.maintainers = [ maintainers.rycee ]; 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 (vars != { }) { home.file.".pam_environment".text = concatStringsSep "\n" (mapAttrsToList (n: v: ''${n} OVERRIDE="${toString v}"'') vars) + "\n"; }; }