This commit is contained in:
Jakub Kropáček 2024-12-20 00:06:32 +01:00
parent 24eb83266a
commit 6d9a15d2f2
4 changed files with 62 additions and 3 deletions

View file

@ -20,8 +20,15 @@
in
{
nixosConfigurations = {
tailscale-proxy = kclib.mkHost "tailscale-proxy" "x86_64-linux";
entrypoint = kclib.mkHost "entrypoint" "x86_64-linux";
tailscale-proxy = kclib.mkHost {
name = "tailscale-proxy";
};
entrypoint = kclib.mkHost {
name = "entrypoint";
};
hydra = kclib.mkHost {
name = "hydra";
};
};
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
};

12
hosts/hydra.nix Normal file
View file

@ -0,0 +1,12 @@
{ ... }:
{
kropcloud = {
networking = {
ipv4 = {
enable = true;
address = "192.168.1.160";
prefixLength = 24;
};
};
};
}

View file

@ -4,7 +4,10 @@
}:
{
mkHost =
name: arch:
{
name,
arch ? "x86_64-linux",
}:
nixpkgs.lib.nixosSystem {
system = arch;
modules = [

View file

@ -14,13 +14,50 @@ in
default = true;
example = false;
};
# TODO: fix this madness
ipv4 = {
enable = lib.mkEnableOption "Whence to enable IPv4 configuration";
address = lib.mkOption {
type = lib.types.nullOr lib.types.str;
description = "The server IPv4 address";
example = "192.168.1.155";
default = null;
};
prefixLength = lib.mkOption {
type = lib.types.int;
description = "The server IPv4 address prefix length";
default = 24;
example = 24;
};
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = !(cfg.ipv4.enable && (cfg.ipv4.address == null || cfg.ipv4.address == "" || cfg.ipv4.prefixLength == null));
message = ''
You need to provide valid values for both `address` and `prefixLength` in `kropcloud.networking.ipv4`
when `kropcloud.networking.ipv4.enable` is true.
'';
}
];
networking = {
nftables.enable = true;
firewall = {
checkReversePath = "loose";
};
interfaces = {
ens18 = {
ipv4.addresses = lib.mkIf cfg.ipv4.enable [
{
address = cfg.ipv4.address;
prefixLength = cfg.ipv4.prefixLength;
}
];
};
};
};
};
}