Skip to content

Commit

Permalink
Revert "Revert "Merge #2692: Use pam_env to properly setup system-wid…
Browse files Browse the repository at this point in the history
…e env""

This reverts commit 491c088.
  • Loading branch information
edolstra committed Jun 10, 2014
1 parent 491c088 commit 8ae659f
Show file tree
Hide file tree
Showing 10 changed files with 73 additions and 12 deletions.
2 changes: 1 addition & 1 deletion nixos/modules/config/i18n.nix
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ in

environment.systemPackages = [ glibcLocales ];

environment.variables =
environment.systemVariables =
{ LANG = config.i18n.defaultLocale;
LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive";
};
Expand Down
1 change: 1 addition & 0 deletions nixos/modules/config/shells-environment.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ in
default = {};
description = ''
A set of environment variables used in the global environment.
These variables will be set on shell initialisation.
The value of each variable can be either a string or a list of
strings. The latter is concatenated, interspersed with colon
characters.
Expand Down
56 changes: 56 additions & 0 deletions nixos/modules/config/system-environment.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# This module defines a system-wide environment that will be
# initialised by pam_env (that is, not only in shells).
{ config, lib, pkgs, ... }:

with lib;

let

cfg = config.environment;

in

{

options = {

environment.systemVariables = mkOption {
default = {};
description = ''
A set of environment variables used in the global environment.
These variables will be set by PAM.
The value of each variable can be either a string or a list of
strings. The latter is concatenated, interspersed with colon
characters.
'';
type = types.attrsOf (mkOptionType {
name = "a string or a list of strings";
merge = loc: defs:
let
defs' = filterOverrides defs;
res = (head defs').value;
in
if isList res then concatLists (getValues defs')
else if lessThan 1 (length defs') then
throw "The option `${showOption loc}' is defined multiple times, in ${showFiles (getFiles defs)}."
else if !isString res then
throw "The option `${showOption loc}' does not have a string value, in ${showFiles (getFiles defs)}."
else res;
});
apply = mapAttrs (n: v: if isList v then concatStringsSep ":" v else v);
};

};

config = {

system.build.pamEnvironment = pkgs.writeText "pam-environment"
''
${concatStringsSep "\n" (
(mapAttrsToList (n: v: ''${n}="${concatStringsSep ":" v}"'')
(zipAttrsWith (const concatLists) ([ (mapAttrs (n: v: [ v ]) cfg.systemVariables) ]))))}
'';

};

}
2 changes: 1 addition & 1 deletion nixos/modules/config/timezone.nix
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ in

config = {

environment.variables.TZDIR = "/etc/zoneinfo";
environment.systemVariables.TZDIR = "/etc/zoneinfo";

systemd.globalEnvironment.TZDIR = tzdir;

Expand Down
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
./config/power-management.nix
./config/pulseaudio.nix
./config/shells-environment.nix
./config/system-environment.nix
./config/swap.nix
./config/sysctl.nix
./config/system-path.nix
Expand Down
9 changes: 6 additions & 3 deletions nixos/modules/programs/environment.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,16 @@ in
environment.variables =
{ LOCATE_PATH = "/var/cache/locatedb";
NIXPKGS_CONFIG = "/etc/nix/nixpkgs-config.nix";
NIX_PATH =
PAGER = "less -R";
EDITOR = "nano";
};

environment.systemVariables =
{ NIX_PATH =
[ "/nix/var/nix/profiles/per-user/root/channels/nixos"
"nixpkgs=/etc/nixos/nixpkgs"
"nixos-config=/etc/nixos/configuration.nix"
];
PAGER = "less -R";
EDITOR = "nano";
};

environment.profiles =
Expand Down
8 changes: 5 additions & 3 deletions nixos/modules/security/ca.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ with lib;
}
];

environment.variables.OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
environment.variables.CURL_CA_BUNDLE = "/etc/ssl/certs/ca-bundle.crt";
environment.variables.GIT_SSL_CAINFO = "/etc/ssl/certs/ca-bundle.crt";
environment.systemVariables =
{ OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
CURL_CA_BUNDLE = "/etc/ssl/certs/ca-bundle.crt";
GIT_SSL_CAINFO = "/etc/ssl/certs/ca-bundle.crt";
};

};

Expand Down
1 change: 1 addition & 0 deletions nixos/modules/security/pam.nix
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ let
"password optional ${pkgs.samba}/lib/security/pam_smbpass.so nullok use_authtok try_first_pass"}
# Session management.
session required pam_env.so envfile=${config.system.build.pamEnvironment}
session required pam_unix.so
${optionalString cfg.setLoginUid
"session required pam_loginuid.so"}
Expand Down
3 changes: 0 additions & 3 deletions nixos/modules/security/sudo.nix
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,6 @@ in
# Don't edit this file. Set the NixOS option ‘security.sudo.configFile’ instead.
# Environment variables to keep for root and %wheel.
Defaults:root,%wheel env_keep+=LOCALE_ARCHIVE
Defaults:root,%wheel env_keep+=NIX_CONF_DIR
Defaults:root,%wheel env_keep+=NIX_PATH
Defaults:root,%wheel env_keep+=TERMINFO_DIRS
Defaults:root,%wheel env_keep+=TERMINFO
Expand Down
2 changes: 1 addition & 1 deletion nixos/modules/services/misc/nix-daemon.nix
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ in
};

# Set up the environment variables for running Nix.
environment.variables = cfg.envVars;
environment.systemVariables = cfg.envVars;

environment.extraInit =
''
Expand Down

0 comments on commit 8ae659f

Please sign in to comment.