In environment.variables, unify "value" and "list"

This commit is contained in:
Eelco Dolstra 2013-09-23 23:03:21 +02:00
parent 3840e96e79
commit 9df40867b9
11 changed files with 28 additions and 56 deletions

View file

@ -49,7 +49,7 @@ with pkgs.lib;
# FIXME: This variable is no longer needed, but we'll keep it
# around for a while for applications linked against old
# fontconfig builds.
environment.variables.FONTCONFIG_FILE.value = "/etc/fonts/fonts.conf";
environment.variables.FONTCONFIG_FILE = "/etc/fonts/fonts.conf";
environment.systemPackages = [ pkgs.fontconfig ];

View file

@ -69,7 +69,7 @@ in
environment.systemPackages = [ glibcLocales ];
environment.variables.LANG.value = config.i18n.defaultLocale;
environment.variables.LANG = config.i18n.defaultLocale;
# /etc/locale.conf is used by systemd.
environment.etc = singleton

View file

@ -9,40 +9,6 @@ let
cfg = config.environment;
environOpts = { name, config, ... }: {
options = {
value = mkOption {
example = "/foo/bin";
description =
''
Variable value.
Exactly one of this or <option>list</option> must be set.
'';
type = types.uniq types.string;
};
list = mkOption {
default = null;
example = [ "/foo/bin" "/bar/bin" ];
description =
''
Variable value.
Exactly one of this or <option>value</option> must be set.
'';
type = types.nullOr (types.listOf types.string);
};
};
config = {
value = mkIf (config.list != null)
(concatStringsSep ":" config.list);
};
};
in
{
@ -53,9 +19,15 @@ in
default = {};
description = ''
A set of environment variables used in the global environment.
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 types.optionSet;
options = [ environOpts ];
type = types.attrsOf (mkOptionType {
name = "a string or a list of strings";
check = x: builtins.isString x || isList x;
});
apply = mapAttrs (n: v: if isList v then concatStringsSep ":" v else v);
};
environment.profiles = mkOption {
@ -140,7 +112,7 @@ in
environment.binsh = mkOption {
default = "${config.system.build.binsh}/bin/sh";
example = "\${pkgs.dash}/bin/dash";
type = with pkgs.lib.types; path;
type = types.path;
description = ''
The shell executable that is linked system-wide to
<literal>/bin/sh</literal>. Please note that NixOS assumes all
@ -177,7 +149,7 @@ in
${concatStringsSep "\n" (
(mapAttrsToList (n: v: ''export ${n}="${concatStringsSep ":" v}"'')
# This line is a kind of a hack because of !!! note above
(fold (mergeAttrsWithFunc concat) {} ([ (mapAttrs (n: v: [ v.value ]) cfg.variables) ] ++ map cfg.profileVariables cfg.profiles))))}
(fold (mergeAttrsWithFunc concat) {} ([ (mapAttrs (n: v: [ v ]) cfg.variables) ] ++ map cfg.profileVariables cfg.profiles))))}
${cfg.extraInit}

View file

@ -24,8 +24,8 @@ with pkgs.lib;
config = {
environment.variables.TZDIR.value = "/etc/zoneinfo";
environment.variables.TZ.value = config.time.timeZone;
environment.variables.TZDIR = "/etc/zoneinfo";
environment.variables.TZ = config.time.timeZone;
environment.etc.localtime.source = "${pkgs.tzdata}/share/zoneinfo/${config.time.timeZone}";

View file

@ -50,7 +50,7 @@ with pkgs.lib;
# Tell the Nix evaluator to garbage collect more aggressively.
# This is desirable in memory-constrained environments that don't
# (yet) have swap set up.
environment.variables.GC_INITIAL_HEAP_SIZE.value = "100000";
environment.variables.GC_INITIAL_HEAP_SIZE = "100000";
};
}

View file

@ -17,18 +17,18 @@ in
config = {
environment.variables =
{ LOCALE_ARCHIVE.value = "/run/current-system/sw/lib/locale/locale-archive";
LOCATE_PATH.value = "/var/cache/locatedb";
NIXPKGS_CONFIG.value = "/etc/nix/nixpkgs-config.nix";
NIX_PATH.list =
{ LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive";
LOCATE_PATH = "/var/cache/locatedb";
NIXPKGS_CONFIG = "/etc/nix/nixpkgs-config.nix";
NIX_PATH =
[ "/nix/var/nix/profiles/per-user/root/channels/nixos"
"nixpkgs=/etc/nixos/nixpkgs"
"nixos=/etc/nixos/nixos"
"nixos-config=/etc/nixos/configuration.nix"
"services=/etc/nixos/services"
];
PAGER.value = "less -R";
EDITOR.value = "nano";
PAGER = "less -R";
EDITOR = "nano";
};
environment.profiles =

View file

@ -17,9 +17,9 @@ with pkgs.lib;
}
];
environment.variables.OPENSSL_X509_CERT_FILE.value = "/etc/ssl/certs/ca-bundle.crt";
environment.variables.CURL_CA_BUNDLE.value = "/etc/ssl/certs/ca-bundle.crt";
environment.variables.GIT_SSL_CAINFO.value = "/etc/ssl/certs/ca-bundle.crt";
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";
};

View file

@ -328,7 +328,7 @@ in
};
# Set up the environment variables for running Nix.
environment.variables = mapAttrs (n: v: { value = v; }) cfg.envVars;
environment.variables = cfg.envVars;
environment.extraInit =
''

View file

@ -79,7 +79,7 @@ in
environment.pathsToLink =
[ "/share/xfce4" "/share/themes" "/share/mime" "/share/desktop-directories" "/share/gtksourceview-2.0" ];
environment.variables.GIO_EXTRA_MODULES.value = "${pkgs.xfce.gvfs}/lib/gio/modules";
environment.variables.GIO_EXTRA_MODULES = "${pkgs.xfce.gvfs}/lib/gio/modules";
# Enable helpful DBus services.
services.udisks2.enable = true;

View file

@ -409,7 +409,7 @@ in
boot.blacklistedKernelModules =
optionals (elem "nvidia" driverNames) [ "nouveau" "nvidiafb" ];
environment.variables.LD_LIBRARY_PATH.list =
environment.variables.LD_LIBRARY_PATH =
[ "/run/opengl-driver/lib" "/run/opengl-driver-32/lib" ];
environment.etc =

View file

@ -105,7 +105,7 @@ with pkgs.lib;
echo ${config.system.sbin.modprobe}/sbin/modprobe > /proc/sys/kernel/modprobe
'';
environment.variables.MODULE_DIR.value = "/run/current-system/kernel-modules/lib/modules";
environment.variables.MODULE_DIR = "/run/current-system/kernel-modules/lib/modules";
};