diff options
Diffstat (limited to 'home-manager/modules/home-environment.nix')
-rw-r--r-- | home-manager/modules/home-environment.nix | 124 |
1 files changed, 109 insertions, 15 deletions
diff --git a/home-manager/modules/home-environment.nix b/home-manager/modules/home-environment.nix index 0b2fb8f4ef9..2947433993e 100644 --- a/home-manager/modules/home-environment.nix +++ b/home-manager/modules/home-environment.nix @@ -16,11 +16,35 @@ let ''; }; - address = mkOption { + ctype = mkOption { default = null; type = types.nullOr types.str; description = '' - The language to use for addresses. + Character classification category. + ''; + }; + + numeric = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The language to use for numerical values. + ''; + }; + + time = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The language to use for formatting times. + ''; + }; + + collate = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The language to use for collation (alphabetical ordering). ''; }; @@ -32,6 +56,14 @@ let ''; }; + messages = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The language to use for messages, application UI languages, etc. + ''; + }; + paper = mkOption { default = null; type = types.nullOr types.str; @@ -40,13 +72,38 @@ let ''; }; - time = mkOption { + name = mkOption { default = null; type = types.nullOr types.str; description = '' - The language to use for formatting times. + The language to use for personal names. + ''; + }; + + address = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The language to use for addresses. + ''; + }; + + telephone = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The language to use for telephone numbers. ''; }; + + measurement = mkOption { + default = null; + type = types.nullOr types.str; + description = '' + The language to use for measurement values. + ''; + }; + }; }; @@ -125,14 +182,23 @@ in options = { home.username = mkOption { type = types.str; - defaultText = "$USER"; + defaultText = literalExample '' + "$USER" for state version < 20.09, + undefined for state version ≥ 20.09 + ''; + example = "jane.doe"; description = "The user's username."; }; home.homeDirectory = mkOption { type = types.path; - defaultText = "$HOME"; - description = "The user's home directory."; + defaultText = literalExample '' + "$HOME" for state version < 20.09, + undefined for state version ≥ 20.09 + ''; + apply = toString; + example = "/home/jane.doe"; + description = "The user's home directory. Must be an absolute path."; }; home.profileDirectory = mkOption { @@ -198,6 +264,16 @@ in ''; }; + home.sessionVariablesExtra = mkOption { + type = types.lines; + default = ""; + internal = true; + description = '' + Extra configuration to add to the + <filename>hm-session-vars.sh</filename> file. + ''; + }; + home.packages = mkOption { type = types.listOf types.package; default = []; @@ -226,8 +302,8 @@ in type = types.bool; description = '' Whether the activation script should start with an empty - <envvar>PATH</envvar> variable. When <literal>false</literal> - then the user's <envvar>PATH</envvar> will be used. + <envar>PATH</envar> variable. When <literal>false</literal> + then the user's <envar>PATH</envar> will be used. ''; }; @@ -317,13 +393,17 @@ in } ]; - home.username = mkDefault (builtins.getEnv "USER"); - home.homeDirectory = mkDefault (builtins.getEnv "HOME"); + home.username = + mkIf (versionOlder config.home.stateVersion "20.09") + (mkDefault (builtins.getEnv "USER")); + home.homeDirectory = + mkIf (versionOlder config.home.stateVersion "20.09") + (mkDefault (builtins.getEnv "HOME")); home.profileDirectory = if config.submoduleSupport.enable && config.submoduleSupport.externalPackageInstall - then config.home.path + then "/etc/profiles/per-user/${cfg.username}" else cfg.homeDirectory + "/.nix-profile"; home.sessionVariables = @@ -332,13 +412,27 @@ in in (maybeSet "LANG" cfg.language.base) // - (maybeSet "LC_ADDRESS" cfg.language.address) + (maybeSet "LC_CTYPE" cfg.language.ctype) + // + (maybeSet "LC_NUMERIC" cfg.language.numeric) + // + (maybeSet "LC_TIME" cfg.language.time) + // + (maybeSet "LC_COLLATE" cfg.language.collate) // (maybeSet "LC_MONETARY" cfg.language.monetary) // + (maybeSet "LC_MESSAGES" cfg.language.messages) + // (maybeSet "LC_PAPER" cfg.language.paper) // - (maybeSet "LC_TIME" cfg.language.time); + (maybeSet "LC_NAME" cfg.language.name) + // + (maybeSet "LC_ADDRESS" cfg.language.address) + // + (maybeSet "LC_TELEPHONE" cfg.language.telephone) + // + (maybeSet "LC_MEASUREMENT" cfg.language.measurement); home.packages = [ # Provide a file holding all session variables. @@ -352,7 +446,7 @@ in export __HM_SESS_VARS_SOURCED=1 ${config.lib.shell.exportAll cfg.sessionVariables} - ''; + '' + cfg.sessionVariablesExtra; } ) ]; |