This commit is contained in:
parent
f79070773e
commit
81d7598bd7
|
@ -1,10 +1,17 @@
|
||||||
{lib}:
|
{ lib, inputs, ... }:
|
||||||
lib.makeExtensible (self: let
|
|
||||||
callLibs = file: import file {lib = self;};
|
{
|
||||||
|
flake = {
|
||||||
|
pub-solar-os.lib = let
|
||||||
|
callLibs = file: import file {inherit lib;};
|
||||||
in rec {
|
in rec {
|
||||||
## Define your own library functions here!
|
## Define your own library functions here!
|
||||||
#id = x: x;
|
#id = x: x;
|
||||||
## Or in files, containing functions that take {lib}
|
## Or in files, containing functions that take {lib}
|
||||||
#foo = callLibs ./foo.nix;
|
#foo = callLibs ./foo.nix;
|
||||||
## In configs, they can be used under "lib.our"
|
## In configs, they can be used under "lib.our"
|
||||||
})
|
|
||||||
|
deploy = import ./deploy.nix { inherit inputs lib; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
62
lib/deploy.nix
Normal file
62
lib/deploy.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* The contents of this file are adapted from digga
|
||||||
|
* https://github.com/divnix/digga
|
||||||
|
*
|
||||||
|
* Licensed under the MIT license
|
||||||
|
*/
|
||||||
|
|
||||||
|
{ lib, inputs }: let
|
||||||
|
getFqdn = c: let
|
||||||
|
net = c.config.networking;
|
||||||
|
fqdn =
|
||||||
|
if (net ? domain) && (net.domain != null)
|
||||||
|
then "${net.hostName}.${net.domain}"
|
||||||
|
else net.hostName;
|
||||||
|
in
|
||||||
|
fqdn;
|
||||||
|
in {
|
||||||
|
mkDeployNodes = systemConfigurations: extraConfig:
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
Synopsis: mkNodes _systemConfigurations_ _extraConfig_
|
||||||
|
|
||||||
|
Generate the `nodes` attribute expected by deploy-rs
|
||||||
|
where _systemConfigurations_ are `nodes`.
|
||||||
|
|
||||||
|
_systemConfigurations_ should take the form of a flake's
|
||||||
|
_nixosConfigurations_. Note that deploy-rs does not currently support
|
||||||
|
deploying to darwin hosts.
|
||||||
|
|
||||||
|
_extraConfig_, if specified, will be merged into each of the
|
||||||
|
nodes' configurations.
|
||||||
|
|
||||||
|
Example _systemConfigurations_ input:
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
hostname-1 = {
|
||||||
|
fastConnection = true;
|
||||||
|
sshOpts = [ "-p" "25" ];
|
||||||
|
};
|
||||||
|
hostname-2 = {
|
||||||
|
sshOpts = [ "-p" "19999" ];
|
||||||
|
sshUser = "root";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
lib.recursiveUpdate
|
||||||
|
(lib.mapAttrs
|
||||||
|
(
|
||||||
|
_: c: {
|
||||||
|
hostname = getFqdn c;
|
||||||
|
profiles.system = {
|
||||||
|
user = "root";
|
||||||
|
path = inputs.deploy-rs.lib.${c.pkgs.stdenv.hostPlatform.system}.activate.nixos c;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
systemConfigurations)
|
||||||
|
extraConfig;
|
||||||
|
}
|
Loading…
Reference in a new issue