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 in
{ {
nixosConfigurations = { nixosConfigurations = {
tailscale-proxy = kclib.mkHost "tailscale-proxy" "x86_64-linux"; tailscale-proxy = kclib.mkHost {
entrypoint = kclib.mkHost "entrypoint" "x86_64-linux"; 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; 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 = mkHost =
name: arch: {
name,
arch ? "x86_64-linux",
}:
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
system = arch; system = arch;
modules = [ modules = [

View file

@ -14,13 +14,50 @@ in
default = true; default = true;
example = false; 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 { 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 = { networking = {
nftables.enable = true; nftables.enable = true;
firewall = { firewall = {
checkReversePath = "loose"; checkReversePath = "loose";
}; };
interfaces = {
ens18 = {
ipv4.addresses = lib.mkIf cfg.ipv4.enable [
{
address = cfg.ipv4.address;
prefixLength = cfg.ipv4.prefixLength;
}
];
};
};
}; };
}; };
} }