use with builtins
This commit is contained in:
parent
86fe8f9a49
commit
d2de01644a
2 changed files with 137 additions and 136 deletions
6
flake.lock
generated
6
flake.lock
generated
|
|
@ -43,11 +43,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765681171,
|
"lastModified": 1765682506,
|
||||||
"narHash": "sha256-IP1MMCVj/U9j5gJwyTqrCOw+ZzOZSVxZecpmw2UOsfg=",
|
"narHash": "sha256-7ElrlSed9FGQHgcHMwnp7KbBzVmGKJ1m41oorhihxYg=",
|
||||||
"owner": "emilelcb",
|
"owner": "emilelcb",
|
||||||
"repo": "nib",
|
"repo": "nib",
|
||||||
"rev": "8a8469962403d609a0f05f2c78ff17e06cb01e1c",
|
"rev": "223bb548ec08f1f7274c439b2354f83fdc7cea1c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
27
flake.nix
27
flake.nix
|
|
@ -22,14 +22,15 @@
|
||||||
nib,
|
nib,
|
||||||
deploy-rs,
|
deploy-rs,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs:
|
||||||
|
with builtins; let
|
||||||
lib = nixpkgs.lib;
|
lib = nixpkgs.lib;
|
||||||
|
|
||||||
sys = with nib;
|
sys = with nib;
|
||||||
mkUSys {
|
mkUSys {
|
||||||
pkgs = withPkgs nixpkgs {
|
pkgs = withPkgs nixpkgs {
|
||||||
config.allowUnfree = false;
|
config.allowUnfree = false;
|
||||||
overlays = builtins.attrValues self.overlays;
|
overlays = attrValues self.overlays;
|
||||||
};
|
};
|
||||||
upkgs = withPkgs nixpkgs-unstable {
|
upkgs = withPkgs nixpkgs-unstable {
|
||||||
config.allowUnfree = false;
|
config.allowUnfree = false;
|
||||||
|
|
@ -53,7 +54,7 @@
|
||||||
# abstract node instance that stores all default values
|
# abstract node instance that stores all default values
|
||||||
templateNode = name: system: let
|
templateNode = name: system: let
|
||||||
missing = msg: path:
|
missing = msg: path:
|
||||||
builtins.abort ''
|
abort ''
|
||||||
Each Cerulean Nexus node is required to specify ${msg}!
|
Each Cerulean Nexus node is required to specify ${msg}!
|
||||||
Ensure `cerulean.nexus.nodes.${name}.${path}` exists under your call to `cerulean.mkNexus`.
|
Ensure `cerulean.nexus.nodes.${name}.${path}` exists under your call to `cerulean.mkNexus`.
|
||||||
'';
|
'';
|
||||||
|
|
@ -89,11 +90,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
parseNode = name: nodeAttrs:
|
parseNode = name: nodeAttrs:
|
||||||
if !(builtins.isAttrs nodeAttrs)
|
if !(isAttrs nodeAttrs)
|
||||||
then
|
then
|
||||||
# fail if node is not an attribute set
|
# fail if node is not an attribute set
|
||||||
builtins.abort ''
|
abort ''
|
||||||
Cerulean Nexus nodes must be provided as an attribute set, got "${builtins.typeOf nodeAttrs}" instead!
|
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`.
|
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!!
|
# TODO: nodeAttrs.system won't display any nice error messages!!
|
||||||
|
|
@ -103,14 +104,14 @@
|
||||||
r = nib.parse.mergeStruct templateAttrs nodeAttrs;
|
r = nib.parse.mergeStruct templateAttrs nodeAttrs;
|
||||||
in
|
in
|
||||||
nib.types.unwrapRes (_:
|
nib.types.unwrapRes (_:
|
||||||
builtins.abort ''
|
abort ''
|
||||||
Cerulean failed to parse `cerulean.nexus.nodes.${name}`!
|
Cerulean failed to parse `cerulean.nexus.nodes.${name}`!
|
||||||
mergeStruct should never return `result.Err`... How are you here?!?
|
mergeStruct should never return `result.Err`... How are you here?!?
|
||||||
'')
|
'')
|
||||||
r;
|
r;
|
||||||
|
|
||||||
# TODO: mapNodes = f: builtins.mapAttrs (name: nodeAttrs: f name (parseNode name nodeAttrs)) config.nexus.nodes
|
# TODO: mapNodes = f: mapAttrs (name: nodeAttrs: f name (parseNode name nodeAttrs)) config.nexus.nodes
|
||||||
mapNodes = f: builtins.mapAttrs f (builtins.mapAttrs parseNode config.nexus.nodes);
|
mapNodes = f: mapAttrs f (mapAttrs parseNode config.nexus.nodes);
|
||||||
in rec {
|
in rec {
|
||||||
nixosConfigurations = mapNodes (
|
nixosConfigurations = mapNodes (
|
||||||
_: node:
|
_: node:
|
||||||
|
|
@ -146,19 +147,19 @@
|
||||||
sshOpts =
|
sshOpts =
|
||||||
node.deploy.ssh.opts
|
node.deploy.ssh.opts
|
||||||
++ (
|
++ (
|
||||||
if builtins.elem "-p" node.deploy.ssh.opts
|
if elem "-p" node.deploy.ssh.opts
|
||||||
then []
|
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
|
mkNexus = outputs: let
|
||||||
config = outputs.cerulean;
|
config = outputs.cerulean;
|
||||||
in
|
in
|
||||||
(mkNexusConfig config) // (builtins.removeAttrs outputs ["cerulean"]);
|
(mkNexusConfig config) // (removeAttrs outputs ["cerulean"]);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue