Compare commits

...

3 commits

15 changed files with 71 additions and 29 deletions

View file

@ -0,0 +1,29 @@
{ self, ... }:
{
imports = [ self.nixosModules.default ];
nixpkgs.hostPlatform = "aarch64-linux";
custom = {
networking = {
overlay = {
address = "10.254.250.74";
role = "client";
};
underlay.useDhcp = true;
};
services = {
nebula = {
publicKeyPath = toString ./keys/nebula.pub;
certificatePath = toString ./keys/nebula.crt;
};
syncthing = {
enable = true;
deviceId = "6ROH65D-E65I5F6-URI4OUZ-RCHFC3B-PMBSIHH-5DNLJPS-SYSUWQY-HKYGHQG";
folders = [ "Documents" ];
};
};
};
}

View file

@ -0,0 +1,6 @@
-----BEGIN NEBULA CERTIFICATE V2-----
MIG9oFeACWZhaXJwaG9uZaEHBAUK/vpKGKMTDAZjbGllbnQMCXN5bmN0aGluZ4UE
aYZd9oYEayh99IcgFUP+GVuq3tcsxWoMTgOEhDMlEFpe1AjCbmBFMjtzRWiCIElb
0YB49Bb2JcLlgcwZlPGgzNBIxclJSjQWFW00pdEXg0DPZt5bCLCfd1nPUk6ty6R7
UU+YZkx6A0p26wH8TeOVUIoD/9MxpPgEtewH3CPBZQhKFnmpWzDYgF3/WJY/LkQP
-----END NEBULA CERTIFICATE V2-----

View file

@ -0,0 +1,3 @@
-----BEGIN NEBULA X25519 PUBLIC KEY-----
SVvRgHj0FvYlwuWBzBmU8aDM0EjFyUlKNBYVbTSl0Rc=
-----END NEBULA X25519 PUBLIC KEY-----

View file

@ -6,21 +6,33 @@
}:
let
mkHost =
hostName:
hostDir:
inputs.nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs self; };
modules =
(lib.singleton { networking = { inherit hostName; }; })
(lib.singleton {
networking.hostName = hostDir |> lib.baseNameOf |> lib.unsafeDiscardStringContext;
})
++ (
"${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;
};
}

View file

@ -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)

View file

@ -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:

View file

@ -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 (

View file

@ -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);

View file

@ -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:

View file

@ -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")

View file

@ -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

View file

@ -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)

View file

@ -112,12 +112,4 @@
sshd.enable = true;
};
};
services.syncthing.settings = {
devices."fairphone" = {
id = "6ROH65D-E65I5F6-URI4OUZ-RCHFC3B-PMBSIHH-5DNLJPS-SYSUWQY-HKYGHQG";
addresses = "tcp://10.254.250.74:22000";
};
folders."Documents".devices = [ config.services.syncthing.settings.devices."fairphone".name ];
};
}

View file

@ -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)"

View file

@ -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