forked from pub-solar/os
update to new lib format
This commit is contained in:
parent
496348b8af
commit
197d792946
|
@ -79,7 +79,7 @@
|
|||
"utils": "utils_2"
|
||||
},
|
||||
"locked": {
|
||||
"narHash": "sha256-oTiKYoR210VwjomzfSn/pCJ3immdUDRUPbYTDGaPFn8=",
|
||||
"narHash": "sha256-9JsKDtgLSmAkcaKRD4Ycttip1jpO9dVVaRwclWH0V8E=",
|
||||
"path": "./lib",
|
||||
"type": "path"
|
||||
},
|
||||
|
|
|
@ -12,43 +12,8 @@ rec {
|
|||
# Generate an attribute set by mapping a function over a list of values.
|
||||
genAttrs' = values: f: lib.listToAttrs (map f values);
|
||||
|
||||
# Convert a list of file paths to attribute set where
|
||||
# the key is the folder or filename stripped of nix
|
||||
# extension and imported content of the file as value.
|
||||
#
|
||||
pathsToImportedAttrs = paths:
|
||||
let
|
||||
paths' = lib.filter
|
||||
(path: lib.hasSuffix ".nix" path
|
||||
|| lib.pathExists "${path}/default.nix")
|
||||
paths;
|
||||
in
|
||||
genAttrs' paths' (path: {
|
||||
name = lib.removeSuffix ".nix"
|
||||
# Safe as long this is just used as a name
|
||||
(builtins.unsafeDiscardStringContext (baseNameOf path));
|
||||
value = import path;
|
||||
});
|
||||
|
||||
importHosts = dir:
|
||||
lib.os.recImport {
|
||||
inherit dir;
|
||||
_import = base: {
|
||||
modules = import "${toString dir}/${base}.nix";
|
||||
};
|
||||
};
|
||||
|
||||
concatAttrs = lib.fold (attr: sum: lib.recursiveUpdate sum attr) { };
|
||||
|
||||
# Filter out packages that support given system and follow flake check requirements
|
||||
filterPackages = system: packages:
|
||||
let
|
||||
# Everything that nix flake check requires for the packages output
|
||||
filter = (n: v: with v; let platforms = meta.hydraPlatforms or meta.platforms or [ ]; in
|
||||
lib.isDerivation v && !meta.broken && builtins.elem system platforms);
|
||||
in
|
||||
lib.filterAttrs filter packages;
|
||||
|
||||
safeReadDir = path:
|
||||
lib.optionalAttrs (builtins.pathExists (toString path)) (builtins.readDir (toString path));
|
||||
}
|
||||
|
|
|
@ -3,19 +3,17 @@
|
|||
collectProfiles = set:
|
||||
let
|
||||
collectNestedProfiles = set:
|
||||
lib.mapAttrsToList (n: v:
|
||||
if builtins.isAttrs v then
|
||||
[ v.default or null ] ++ collectNestedProfiles v
|
||||
else null
|
||||
) set;
|
||||
lib.mapAttrsToList
|
||||
(n: v:
|
||||
if builtins.isAttrs v then
|
||||
[ v.default or null ] ++ collectNestedProfiles v
|
||||
else null
|
||||
)
|
||||
set;
|
||||
in
|
||||
builtins.filter (x: x != null) (lib.flatten (collectNestedProfiles set));
|
||||
builtins.filter (x: x != null) (lib.flatten (collectNestedProfiles set));
|
||||
|
||||
pathsIn = dir:
|
||||
let
|
||||
fullPath = name: "${toString dir}/${name}";
|
||||
in
|
||||
map fullPath (lib.attrNames (lib.safeReadDir dir));
|
||||
profileMap = list: map (profile: profile.default) (lib.flatten list);
|
||||
|
||||
unifyOverlays = channels: map (o: if builtins.isFunction (o null null) then o channels else o);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ lib, deploy }:
|
||||
let
|
||||
inherit (lib) os;
|
||||
inherit (builtins) mapAttrs attrNames attrValues head isFunction;
|
||||
in
|
||||
|
||||
|
@ -66,16 +65,16 @@ lib.systemFlake (lib.mergeAny
|
|||
modules = cfg.nixos.hostDefaults.externalModules ++ defaultModules;
|
||||
builder = args: args.specialArgs.channel.input.lib.nixosSystem (lib.mergeAny args {
|
||||
# So modules and functions can create their own version of the build
|
||||
modules = [ { lib.builderArgs = args; } ];
|
||||
modules = [{ lib.builderArgs = args; }];
|
||||
});
|
||||
};
|
||||
|
||||
nixosModules = lib.exporter.modulesFromList cfg.nixos.hostDefaults.modules;
|
||||
|
||||
homeModules = lib.exporter.modulesFromList cfg.home.modules;
|
||||
homeConfigurations = os.mkHomeConfigurations self.nixosConfigurations;
|
||||
homeConfigurations = lib.mkHomeConfigurations self.nixosConfigurations;
|
||||
|
||||
deploy.nodes = os.mkNodes deploy self.nixosConfigurations;
|
||||
deploy.nodes = lib.mkDeployNodes deploy self.nixosConfigurations;
|
||||
|
||||
overlays = lib.exporter.overlaysFromChannelsExporter {
|
||||
# since we can't detect overlays owned by self
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
let
|
||||
argOpts = with lib; { config, ... }:
|
||||
let
|
||||
inherit (lib) os;
|
||||
|
||||
cfg = config;
|
||||
inherit (config) self;
|
||||
|
||||
|
@ -188,7 +186,7 @@ let
|
|||
suites = mkOption {
|
||||
type = pathTo (functionTo attrs);
|
||||
default = _: { };
|
||||
apply = suites: os.mkSuites {
|
||||
apply = suites: lib.mkSuites {
|
||||
inherit suites;
|
||||
inherit (config) profiles;
|
||||
};
|
||||
|
|
|
@ -37,25 +37,6 @@ lib.runTests {
|
|||
];
|
||||
};
|
||||
|
||||
testPathsToImportedAttrs = {
|
||||
expr =
|
||||
pathsToImportedAttrs [
|
||||
(toString ./testPathsToImportedAttrs/dir)
|
||||
./testPathsToImportedAttrs/foo.nix
|
||||
./testPathsToImportedAttrs/bar.nix
|
||||
./testPathsToImportedAttrs/t.nix
|
||||
./testPathsToImportedAttrs/f.nix
|
||||
];
|
||||
|
||||
expected = {
|
||||
dir = { a = 5; };
|
||||
foo = { bar = 1; };
|
||||
bar = { foo = 2; };
|
||||
t = true;
|
||||
f = false;
|
||||
};
|
||||
};
|
||||
|
||||
testRgxToString = lib.testAllTrue [
|
||||
(rgxToString ".+x" "vxk" == "vx")
|
||||
(rgxToString "^fo" "foo" == "fo")
|
||||
|
@ -72,7 +53,7 @@ lib.runTests {
|
|||
};
|
||||
|
||||
testSuites = {
|
||||
expr = os.mkSuites {
|
||||
expr = mkSuites {
|
||||
suites = { profiles, ... }: with profiles; {
|
||||
bar = [ foo ];
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue