1
1
mirror of https://github.com/divnix/digga.git synced 2024-12-23 16:11:51 +03:00

re-add mkProfileAttrs with a deprecation message

This commit is contained in:
Pacman99 2021-05-26 08:28:56 -07:00 committed by Parthiv Seetharaman
parent f100c6dcf4
commit 271cfd0c18
3 changed files with 52 additions and 4 deletions

View File

@ -46,7 +46,7 @@
inherit (attrs) mapFilterAttrs genAttrs' safeReadDir concatAttrs;
inherit (lists) unifyOverlays;
inherit (strings) rgxToString;
inherit (importers) profileMap rakeLeaves maybeImportDevshellModule;
inherit (importers) profileMap rakeLeaves mkProfileAttrs maybeImportDevshellModule;
inherit (generators) mkSuites mkDeployNodes mkHomeConfigurations;
}
);

View File

@ -33,11 +33,13 @@
extraConfig)
hosts;
# DEPRECATED, suites no longer needs an explicit function after the importables generalization
# deprecation message for suites is already in evalArgs
mkSuites = { suites, profiles }:
let
profileSet = lib.genAttrs' profiles (path: {
name = baseNameOf path;
value = lib.rakeLeaves (toString path);
value = lib.mkProfileAttrs (toString path);
});
definedSuites = lib.mapAttrs (_: v: lib.profileMap v) (suites profileSet);

View File

@ -53,15 +53,61 @@ let
in
lib.mapAttrs' collect files;
# DEPRECATED, prefer rakeLeaves
mkProfileAttrs =
/**
Synopsis: mkProfileAttrs _path_
Recursively collect the subdirs of _path_ containing a default.nix into attrs.
This sets a contract, eliminating ambiguity for _default.nix_ living under the
profile directory.
Example:
let profiles = mkProfileAttrs ./profiles; in
assert profiles ? core.default; 0
**/
dir:
let
imports =
let
files = lib.safeReadDir dir;
p = n: v:
v == "directory"
&& n != "profiles";
in
lib.filterAttrs p files;
f = n: _:
lib.optionalAttrs
(lib.pathExists "${dir}/${n}/default.nix")
{ default = "${dir}/${n}"; }
// mkProfileAttrs "${dir}/${n}";
in
lib.mapAttrs f imports;
getProfilePath = fallback: item:
if lib.isString item then item else fallback;
in
{
inherit rakeLeaves;
profileMap = list: map
mkProfileAttrs = builtins.trace ''
The function, mkProfileAttrs, has been deprecated, you can now create profile sets
with the standard importer, rakeLeaves. The formmat of rakeLeaves is a little different,
because it doesn't recurse into directories with `default.nix` files in them. So some
of your sub-profiles might no longer be collected. Make sure to update your profiles
with that in mind;
See https://github.com/divnix/digga/pull/29 for more details
''
mkProfileAttrs;
# DEPRECATED, profiles in suites are type-checked in evalArgs
# both versions of `profileMap` are no longer necessary
# paths are type-checked for suites in evalArgs
# and `.default` isn't special with `rakeLeaves`
/** profileMap = list: map
(p: getProfilePath (throw "passed profile ${builtins.toJSON p} isn't a path") p)
(lib.flatten list);
(lib.flatten list); **/
profileMap = list: map (profile: profile.default) (lib.flatten list);
overlays = dir:
{