use with builtins

This commit is contained in:
do butterflies cry? 2025-12-14 13:25:00 +10:00
parent 86fe8f9a49
commit d2de01644a
2 changed files with 137 additions and 136 deletions

6
flake.lock generated
View file

@ -43,11 +43,11 @@
]
},
"locked": {
"lastModified": 1765681171,
"narHash": "sha256-IP1MMCVj/U9j5gJwyTqrCOw+ZzOZSVxZecpmw2UOsfg=",
"lastModified": 1765682506,
"narHash": "sha256-7ElrlSed9FGQHgcHMwnp7KbBzVmGKJ1m41oorhihxYg=",
"owner": "emilelcb",
"repo": "nib",
"rev": "8a8469962403d609a0f05f2c78ff17e06cb01e1c",
"rev": "223bb548ec08f1f7274c439b2354f83fdc7cea1c",
"type": "github"
},
"original": {

View file

@ -22,14 +22,15 @@
nib,
deploy-rs,
...
} @ inputs: let
} @ inputs:
with builtins; let
lib = nixpkgs.lib;
sys = with nib;
mkUSys {
pkgs = withPkgs nixpkgs {
config.allowUnfree = false;
overlays = builtins.attrValues self.overlays;
overlays = attrValues self.overlays;
};
upkgs = withPkgs nixpkgs-unstable {
config.allowUnfree = false;
@ -53,7 +54,7 @@
# abstract node instance that stores all default values
templateNode = name: system: let
missing = msg: path:
builtins.abort ''
abort ''
Each Cerulean Nexus node is required to specify ${msg}!
Ensure `cerulean.nexus.nodes.${name}.${path}` exists under your call to `cerulean.mkNexus`.
'';
@ -89,11 +90,11 @@
};
parseNode = name: nodeAttrs:
if !(builtins.isAttrs nodeAttrs)
if !(isAttrs nodeAttrs)
then
# fail if node is not an attribute set
builtins.abort ''
Cerulean Nexus nodes must be provided as an attribute set, got "${builtins.typeOf nodeAttrs}" instead!
abort ''
Cerulean Nexus nodes must be provided as an attribute set, got "${typeOf nodeAttrs}" instead!
Ensure all `cerulean.nexus.nodes.${name}` declarations are attribute sets under your call to `cerulean.mkNexus`.
''
# TODO: nodeAttrs.system won't display any nice error messages!!
@ -103,14 +104,14 @@
r = nib.parse.mergeStruct templateAttrs nodeAttrs;
in
nib.types.unwrapRes (_:
builtins.abort ''
abort ''
Cerulean failed to parse `cerulean.nexus.nodes.${name}`!
mergeStruct should never return `result.Err`... How are you here?!?
'')
r;
# TODO: mapNodes = f: builtins.mapAttrs (name: nodeAttrs: f name (parseNode name nodeAttrs)) config.nexus.nodes
mapNodes = f: builtins.mapAttrs f (builtins.mapAttrs parseNode config.nexus.nodes);
# TODO: mapNodes = f: mapAttrs (name: nodeAttrs: f name (parseNode name nodeAttrs)) config.nexus.nodes
mapNodes = f: mapAttrs f (mapAttrs parseNode config.nexus.nodes);
in rec {
nixosConfigurations = mapNodes (
_: node:
@ -146,19 +147,19 @@
sshOpts =
node.deploy.ssh.opts
++ (
if builtins.elem "-p" node.deploy.ssh.opts
if elem "-p" node.deploy.ssh.opts
then []
else ["-p" (builtins.toString node.deploy.ssh.port)]
else ["-p" (toString node.deploy.ssh.port)]
);
};
});
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks deploy) deploy-rs.lib;
checks = mapAttrs (system: deployLib: deployLib.deployChecks deploy) deploy-rs.lib;
};
mkNexus = outputs: let
config = outputs.cerulean;
in
(mkNexusConfig config) // (builtins.removeAttrs outputs ["cerulean"]);
(mkNexusConfig config) // (removeAttrs outputs ["cerulean"]);
};
}