From 3ff6eebd21dfd22ba06dc783f5bd809d23662750 Mon Sep 17 00:00:00 2001 From: Felix Buehler Date: Sat, 24 Aug 2024 22:05:26 +0200 Subject: [PATCH] nixos/shells-environment: remove `with lib;` --- nixos/modules/config/shells-environment.nix | 84 ++++++++++----------- 1 file changed, 40 insertions(+), 44 deletions(-) diff --git a/nixos/modules/config/shells-environment.nix b/nixos/modules/config/shells-environment.nix index 50796f8bc6f1..9289eced109f 100644 --- a/nixos/modules/config/shells-environment.nix +++ b/nixos/modules/config/shells-environment.nix @@ -1,10 +1,6 @@ # This module defines a global environment configuration and # a common configuration for all shells. - { config, lib, utils, pkgs, ... }: - -with lib; - let cfg = config.environment; @@ -12,27 +8,27 @@ let exportedEnvVars = let absoluteVariables = - mapAttrs (n: toList) cfg.variables; + lib.mapAttrs (n: lib.toList) cfg.variables; suffixedVariables = - flip mapAttrs cfg.profileRelativeEnvVars (envVar: listSuffixes: - concatMap (profile: map (suffix: "${profile}${suffix}") listSuffixes) cfg.profiles + lib.flip lib.mapAttrs cfg.profileRelativeEnvVars (envVar: listSuffixes: + lib.concatMap (profile: map (suffix: "${profile}${suffix}") listSuffixes) cfg.profiles ); allVariables = - zipAttrsWith (n: concatLists) [ absoluteVariables suffixedVariables ]; + lib.zipAttrsWith (n: lib.concatLists) [ absoluteVariables suffixedVariables ]; exportVariables = - mapAttrsToList (n: v: ''export ${n}="${concatStringsSep ":" v}"'') allVariables; + lib.mapAttrsToList (n: v: ''export ${n}="${lib.concatStringsSep ":" v}"'') allVariables; in - concatStringsSep "\n" exportVariables; + lib.concatStringsSep "\n" exportVariables; in { options = { - environment.variables = mkOption { + environment.variables = lib.mkOption { default = {}; example = { EDITOR = "nvim"; VISUAL = "nvim"; }; description = '' @@ -42,22 +38,22 @@ in strings. The latter is concatenated, interspersed with colon characters. ''; - type = with types; attrsOf (oneOf [ (listOf (oneOf [ int str path ])) int str path ]); + type = with lib.types; attrsOf (oneOf [ (listOf (oneOf [ int str path ])) int str path ]); apply = let - toStr = v: if isPath v then "${v}" else toString v; - in mapAttrs (n: v: if isList v then concatMapStringsSep ":" toStr v else toStr v); + toStr = v: if lib.isPath v then "${v}" else toString v; + in lib.mapAttrs (n: v: if lib.isList v then lib.concatMapStringsSep ":" toStr v else toStr v); }; - environment.profiles = mkOption { + environment.profiles = lib.mkOption { default = []; description = '' A list of profiles used to setup the global environment. ''; - type = types.listOf types.str; + type = lib.types.listOf lib.types.str; }; - environment.profileRelativeEnvVars = mkOption { - type = types.attrsOf (types.listOf types.str); + environment.profileRelativeEnvVars = lib.mkOption { + type = lib.types.attrsOf (lib.types.listOf lib.types.str); example = { PATH = [ "/bin" ]; MANPATH = [ "/man" "/share/man" ]; }; description = '' Attribute set of environment variable. Each attribute maps to a list @@ -68,7 +64,7 @@ in }; # !!! isn't there a better way? - environment.extraInit = mkOption { + environment.extraInit = lib.mkOption { default = ""; description = '' Shell script code called during global environment initialisation @@ -76,40 +72,40 @@ in This code is assumed to be shell-independent, which means you should stick to pure sh without sh word split. ''; - type = types.lines; + type = lib.types.lines; }; - environment.shellInit = mkOption { + environment.shellInit = lib.mkOption { default = ""; description = '' Shell script code called during shell initialisation. This code is assumed to be shell-independent, which means you should stick to pure sh without sh word split. ''; - type = types.lines; + type = lib.types.lines; }; - environment.loginShellInit = mkOption { + environment.loginShellInit = lib.mkOption { default = ""; description = '' Shell script code called during login shell initialisation. This code is assumed to be shell-independent, which means you should stick to pure sh without sh word split. ''; - type = types.lines; + type = lib.types.lines; }; - environment.interactiveShellInit = mkOption { + environment.interactiveShellInit = lib.mkOption { default = ""; description = '' Shell script code called during interactive shell initialisation. This code is assumed to be shell-independent, which means you should stick to pure sh without sh word split. ''; - type = types.lines; + type = lib.types.lines; }; - environment.shellAliases = mkOption { + environment.shellAliases = lib.mkOption { example = { l = null; ll = "ls -l"; }; description = '' An attribute set that maps aliases (the top level attribute names in @@ -117,30 +113,30 @@ in aliases are added to all users' shells. Aliases mapped to `null` are ignored. ''; - type = with types; attrsOf (nullOr (either str path)); + type = with lib.types; attrsOf (nullOr (either str path)); }; - environment.homeBinInPath = mkOption { + environment.homeBinInPath = lib.mkOption { description = '' Include ~/bin/ in $PATH. ''; default = false; - type = types.bool; + type = lib.types.bool; }; - environment.localBinInPath = mkOption { + environment.localBinInPath = lib.mkOption { description = '' Add ~/.local/bin/ to $PATH ''; default = false; - type = types.bool; + type = lib.types.bool; }; - environment.binsh = mkOption { + environment.binsh = lib.mkOption { default = "${config.system.build.binsh}/bin/sh"; - defaultText = literalExpression ''"''${config.system.build.binsh}/bin/sh"''; - example = literalExpression ''"''${pkgs.dash}/bin/dash"''; - type = types.path; + defaultText = lib.literalExpression ''"''${config.system.build.binsh}/bin/sh"''; + example = lib.literalExpression ''"''${pkgs.dash}/bin/dash"''; + type = lib.types.path; visible = false; description = '' The shell executable that is linked system-wide to @@ -150,15 +146,15 @@ in ''; }; - environment.shells = mkOption { + environment.shells = lib.mkOption { default = []; - example = literalExpression "[ pkgs.bashInteractive pkgs.zsh ]"; + example = lib.literalExpression "[ pkgs.bashInteractive pkgs.zsh ]"; description = '' A list of permissible login shells for user accounts. No need to mention `/bin/sh` here, it is placed into this list implicitly. ''; - type = types.listOf (types.either types.shellPackage types.path); + type = lib.types.listOf (lib.types.either lib.types.shellPackage lib.types.path); }; }; @@ -175,7 +171,7 @@ in environment.profileRelativeEnvVars = config.environment.profileRelativeSessionVariables; - environment.shellAliases = mapAttrs (name: mkDefault) { + environment.shellAliases = lib.mapAttrs (name: lib.mkDefault) { ls = "ls --color=tty"; ll = "ls -l"; l = "ls -alh"; @@ -183,7 +179,7 @@ in environment.etc.shells.text = '' - ${concatStringsSep "\n" (map utils.toShellPath cfg.shells)} + ${lib.concatStringsSep "\n" (map utils.toShellPath cfg.shells)} /bin/sh ''; @@ -202,17 +198,17 @@ in ${cfg.extraInit} - ${optionalString cfg.homeBinInPath '' + ${lib.optionalString cfg.homeBinInPath '' # ~/bin if it exists overrides other bin directories. export PATH="$HOME/bin:$PATH" ''} - ${optionalString cfg.localBinInPath '' + ${lib.optionalString cfg.localBinInPath '' export PATH="$HOME/.local/bin:$PATH" ''} ''; - system.activationScripts.binsh = stringAfter [ "stdio" ] + system.activationScripts.binsh = lib.stringAfter [ "stdio" ] '' # Create the required /bin/sh symlink; otherwise lots of things # (notably the system() function) won't work.