Loading lib/attrsets.nix +21 −2 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ let inherit (builtins) head tail length; inherit (lib.trivial) id; inherit (lib.trivial) flip id mergeAttrs pipe; inherit (lib.strings) concatStringsSep concatMapStringsSep escapeNixIdentifier sanitizeDerivationName; inherit (lib.lists) foldr foldl' concatMap concatLists elemAt all partition groupBy take foldl; in Loading Loading @@ -77,6 +77,25 @@ rec { let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'"; in attrByPath attrPath (abort errorMsg); /* Map each attribute in the given set and merge them into a new attribute set. Type: concatMapAttrs :: (String -> a -> AttrSet) -> AttrSet -> AttrSet Example: concatMapAttrs (name: value: { ${name} = value; ${name + value} = value; }) { x = "a"; y = "b"; } => { x = "a"; xa = "a"; y = "b"; yb = "b"; } */ concatMapAttrs = f: flip pipe [ (mapAttrs f) attrValues (foldl' mergeAttrs { }) ]; /* Update or set specific paths of an attribute set. Loading Loading @@ -606,7 +625,7 @@ rec { getMan = getOutput "man"; /* Pick the outputs of packages to place in buildInputs */ chooseDevOutputs = drvs: builtins.map getDev drvs; chooseDevOutputs = builtins.map getDev; /* Make various Nix tools consider the contents of the resulting attribute set when looking for what to build, find, etc. Loading lib/default.nix +1 −1 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ let inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond mapAttrs' mapAttrsToList concatMapAttrs mapAttrsRecursive mapAttrsRecursiveCond genAttrs isDerivation toDerivation optionalAttrs zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil recursiveUpdate matchAttrs overrideExisting showAttrPath getOutput getBin Loading lib/tests/misc.nix +17 −0 Original line number Diff line number Diff line Loading @@ -478,6 +478,23 @@ runTests { # ATTRSETS testConcatMapAttrs = { expr = concatMapAttrs (name: value: { ${name} = value; ${name + value} = value; }) { foo = "bar"; foobar = "baz"; }; expected = { foo = "bar"; foobar = "baz"; foobarbaz = "baz"; }; }; # code from the example testRecursiveUpdateUntil = { expr = recursiveUpdateUntil (path: l: r: path == ["foo"]) { Loading nixos/modules/services/security/vaultwarden/default.nix +3 −3 Original line number Diff line number Diff line Loading @@ -22,9 +22,9 @@ let # we can only check for values consistently after converting them to their corresponding environment variable name. configEnv = let configEnv = listToAttrs (concatLists (mapAttrsToList (name: value: if value != null then [ (nameValuePair (nameToEnvVar name) (if isBool value then boolToString value else toString value)) ] else [] ) cfg.config)); configEnv = concatMapAttrs (name: value: optionalAttrs (value != null) { ${nameToEnvVar name} = if isBool value then boolToString value else toString value; }) cfg.config; in { DATA_FOLDER = "/var/lib/bitwarden_rs"; } // optionalAttrs (!(configEnv ? WEB_VAULT_ENABLED) || configEnv.WEB_VAULT_ENABLED == "true") { WEB_VAULT_FOLDER = "${cfg.webVaultPackage}/share/vaultwarden/vault"; } // configEnv; Loading pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix +12 −12 Original line number Diff line number Diff line Loading @@ -14,18 +14,18 @@ let # ocaml-interface # tree-sitter-ocaml-interface # tree-sitter-ocaml_interface builtGrammars = generatedGrammars // lib.listToAttrs (lib.concatLists (lib.mapAttrsToList builtGrammars = generatedGrammars // lib.concatMapAttrs (k: v: let replaced = lib.replaceStrings [ "_" ] [ "-" ] k; in map (lib.flip lib.nameValuePair v) ([ "tree-sitter-${k}" ] ++ lib.optionals (k != replaced) [ replaced "tree-sitter-${replaced}" ])) generatedDerivations)); { "tree-sitter-${k}" = v; } // lib.optionalAttrs (k != replaced) { ${replaced} = v; "tree-sitter-${replaced}" = v; }) generatedDerivations; allGrammars = lib.attrValues generatedDerivations; Loading Loading
lib/attrsets.nix +21 −2 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ let inherit (builtins) head tail length; inherit (lib.trivial) id; inherit (lib.trivial) flip id mergeAttrs pipe; inherit (lib.strings) concatStringsSep concatMapStringsSep escapeNixIdentifier sanitizeDerivationName; inherit (lib.lists) foldr foldl' concatMap concatLists elemAt all partition groupBy take foldl; in Loading Loading @@ -77,6 +77,25 @@ rec { let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'"; in attrByPath attrPath (abort errorMsg); /* Map each attribute in the given set and merge them into a new attribute set. Type: concatMapAttrs :: (String -> a -> AttrSet) -> AttrSet -> AttrSet Example: concatMapAttrs (name: value: { ${name} = value; ${name + value} = value; }) { x = "a"; y = "b"; } => { x = "a"; xa = "a"; y = "b"; yb = "b"; } */ concatMapAttrs = f: flip pipe [ (mapAttrs f) attrValues (foldl' mergeAttrs { }) ]; /* Update or set specific paths of an attribute set. Loading Loading @@ -606,7 +625,7 @@ rec { getMan = getOutput "man"; /* Pick the outputs of packages to place in buildInputs */ chooseDevOutputs = drvs: builtins.map getDev drvs; chooseDevOutputs = builtins.map getDev; /* Make various Nix tools consider the contents of the resulting attribute set when looking for what to build, find, etc. Loading
lib/default.nix +1 −1 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ let inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond mapAttrs' mapAttrsToList concatMapAttrs mapAttrsRecursive mapAttrsRecursiveCond genAttrs isDerivation toDerivation optionalAttrs zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil recursiveUpdate matchAttrs overrideExisting showAttrPath getOutput getBin Loading
lib/tests/misc.nix +17 −0 Original line number Diff line number Diff line Loading @@ -478,6 +478,23 @@ runTests { # ATTRSETS testConcatMapAttrs = { expr = concatMapAttrs (name: value: { ${name} = value; ${name + value} = value; }) { foo = "bar"; foobar = "baz"; }; expected = { foo = "bar"; foobar = "baz"; foobarbaz = "baz"; }; }; # code from the example testRecursiveUpdateUntil = { expr = recursiveUpdateUntil (path: l: r: path == ["foo"]) { Loading
nixos/modules/services/security/vaultwarden/default.nix +3 −3 Original line number Diff line number Diff line Loading @@ -22,9 +22,9 @@ let # we can only check for values consistently after converting them to their corresponding environment variable name. configEnv = let configEnv = listToAttrs (concatLists (mapAttrsToList (name: value: if value != null then [ (nameValuePair (nameToEnvVar name) (if isBool value then boolToString value else toString value)) ] else [] ) cfg.config)); configEnv = concatMapAttrs (name: value: optionalAttrs (value != null) { ${nameToEnvVar name} = if isBool value then boolToString value else toString value; }) cfg.config; in { DATA_FOLDER = "/var/lib/bitwarden_rs"; } // optionalAttrs (!(configEnv ? WEB_VAULT_ENABLED) || configEnv.WEB_VAULT_ENABLED == "true") { WEB_VAULT_FOLDER = "${cfg.webVaultPackage}/share/vaultwarden/vault"; } // configEnv; Loading
pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix +12 −12 Original line number Diff line number Diff line Loading @@ -14,18 +14,18 @@ let # ocaml-interface # tree-sitter-ocaml-interface # tree-sitter-ocaml_interface builtGrammars = generatedGrammars // lib.listToAttrs (lib.concatLists (lib.mapAttrsToList builtGrammars = generatedGrammars // lib.concatMapAttrs (k: v: let replaced = lib.replaceStrings [ "_" ] [ "-" ] k; in map (lib.flip lib.nameValuePair v) ([ "tree-sitter-${k}" ] ++ lib.optionals (k != replaced) [ replaced "tree-sitter-${replaced}" ])) generatedDerivations)); { "tree-sitter-${k}" = v; } // lib.optionalAttrs (k != replaced) { ${replaced} = v; "tree-sitter-${replaced}" = v; }) generatedDerivations; allGrammars = lib.attrValues generatedDerivations; Loading