mirror of
https://github.com/SebastianStork/nixos-config.git
synced 2026-03-22 21:19:07 +01:00
Add external host support
This commit is contained in:
parent
f93908d157
commit
28e704ceff
11 changed files with 31 additions and 21 deletions
|
|
@ -6,21 +6,31 @@
|
|||
}:
|
||||
let
|
||||
mkHost =
|
||||
hostName:
|
||||
hostDir:
|
||||
inputs.nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs self; };
|
||||
modules =
|
||||
(lib.singleton { networking = { inherit hostName; }; })
|
||||
(lib.singleton { networking.hostName = lib.baseNameOf hostDir; })
|
||||
++ (
|
||||
"${self}/hosts/${hostName}"
|
||||
hostDir
|
||||
|> builtins.readDir
|
||||
|> lib.attrNames
|
||||
|> lib.filter (file: file |> lib.hasSuffix ".nix")
|
||||
|> lib.map (file: "${self}/hosts/${hostName}/${file}")
|
||||
|> lib.filter (lib.hasSuffix ".nix")
|
||||
|> lib.map (file: "${hostDir}/${file}")
|
||||
);
|
||||
};
|
||||
|
||||
mkHosts =
|
||||
baseDir:
|
||||
baseDir
|
||||
|> builtins.readDir
|
||||
|> lib.filterAttrs (_: type: type == "directory")
|
||||
|> lib.mapAttrs (hostName: _: mkHost "${baseDir}/${hostName}");
|
||||
in
|
||||
{
|
||||
flake.nixosConfigurations =
|
||||
"${self}/hosts" |> self.lib.listDirectoryNames |> self.lib.genAttrs mkHost;
|
||||
flake = {
|
||||
nixosConfigurations = mkHosts "${self}/hosts";
|
||||
externalConfigurations = mkHosts "${self}/external-hosts";
|
||||
allHosts = self.nixosConfigurations // self.externalConfigurations;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@
|
|||
};
|
||||
|
||||
hostCreationRules =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.attrValues
|
||||
|> lib.map (host: host.config.custom.sops)
|
||||
|> lib.filter (sops: sops.enable)
|
||||
|> lib.map mkCreationRule;
|
||||
|
||||
userCreationRules =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.attrValues
|
||||
|> lib.filter (host: host.config |> lib.hasAttr "home-manager")
|
||||
|> lib.map (host: host.config.home-manager.users.seb.custom.sops)
|
||||
|
|
|
|||
2
justfile
2
justfile
|
|
@ -16,7 +16,7 @@ repair:
|
|||
nix-store --verify --check-contents --repair
|
||||
|
||||
repl host='$(hostname)':
|
||||
nix repl .#nixosConfigurations.{{ host }}
|
||||
nix repl .#allHosts.{{ host }}
|
||||
|
||||
[group('rebuild')]
|
||||
rebuild mode:
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ in
|
|||
nodes = lib.mkOption {
|
||||
type = lib.types.anything;
|
||||
default =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.attrValues
|
||||
|> lib.map (host: host.config.custom.networking)
|
||||
|> lib.map (
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ in
|
|||
dnsServers = lib.mkOption {
|
||||
type = lib.types.anything;
|
||||
default =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.attrValues
|
||||
|> lib.filter (host: host.config.custom.services.dns.enable)
|
||||
|> lib.map (host: host.config.custom.networking.overlay.address);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ in
|
|||
netCfg.nodes
|
||||
|> lib.map (node: "\"${node.hostName}.${node.overlay.domain}. A ${node.overlay.address}\"");
|
||||
serviceRecords =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.attrValues
|
||||
|> lib.concatMap (
|
||||
host:
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ in
|
|||
};
|
||||
|
||||
users.users.seb.openssh.authorizedKeys.keyFiles =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.attrValues
|
||||
|> lib.filter (host: host.config.networking.hostName != netCfg.hostName)
|
||||
|> lib.filter (host: host.config |> lib.hasAttr "home-manager")
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ in
|
|||
settings =
|
||||
let
|
||||
hosts =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.filterAttrs (_: host: host.config.networking.hostName != config.networking.hostName)
|
||||
|> lib.filterAttrs (_: host: host.config.custom.services.syncthing.enable);
|
||||
in
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ in
|
|||
web-services.gatus.endpoints =
|
||||
let
|
||||
defaultEndpoints =
|
||||
self.nixosConfigurations
|
||||
self.allHosts
|
||||
|> lib.mapAttrs (
|
||||
_: host:
|
||||
host.config.custom.services.caddy.virtualHosts |> lib.attrValues |> lib.map (vHost: vHost.domain)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ pkgs.writeShellApplication {
|
|||
];
|
||||
|
||||
text = ''
|
||||
hosts="$(nix eval .#nixosConfigurations --apply 'builtins.attrNames' --json | jq -r '.[]')"
|
||||
hosts="$(nix eval .#allHosts --apply 'builtins.attrNames' --json | jq -r '.[]')"
|
||||
|
||||
if ! declare -px BW_SESSION >/dev/null 2>&1; then
|
||||
BW_SESSION="$(bw unlock --raw || bw login --raw)"
|
||||
|
|
|
|||
|
|
@ -14,11 +14,11 @@ pkgs.writeShellApplication {
|
|||
fi
|
||||
|
||||
host="$1"
|
||||
address="$(nix eval --raw ".#nixosConfigurations.$host.config.custom.networking.overlay.cidr")"
|
||||
groups="$(nix eval --raw ".#nixosConfigurations.$host.config.custom.services.nebula.groups" --apply 'builtins.concatStringsSep ","')"
|
||||
address="$(nix eval --raw ".#allHosts.$host.config.custom.networking.overlay.cidr")"
|
||||
groups="$(nix eval --raw ".#allHosts.$host.config.custom.services.nebula.groups" --apply 'builtins.concatStringsSep ","')"
|
||||
ca_cert='modules/system/services/nebula/ca.crt'
|
||||
host_pub="$(nix eval --raw ".#nixosConfigurations.$host.config.custom.services.nebula.publicKeyPath")"
|
||||
host_cert="$(nix eval --raw ".#nixosConfigurations.$host.config.custom.services.nebula.certificatePath")"
|
||||
host_pub="$(nix eval --raw ".#allHosts.$host.config.custom.services.nebula.publicKeyPath")"
|
||||
host_cert="$(nix eval --raw ".#allHosts.$host.config.custom.services.nebula.certificatePath")"
|
||||
host_cert="''${host_cert#*-source/}"
|
||||
|
||||
if [[ $# -eq 2 ]]; then
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue