From 141c841c29ce144be2c8842f18b30480ae516e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Krop=C3=A1=C4=8Dek?= Date: Sun, 22 Dec 2024 15:21:15 +0100 Subject: [PATCH] added defaultGateway --- hosts/hydra/default.nix | 1 + nixosModules/networking/default.nix | 27 ++++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/hosts/hydra/default.nix b/hosts/hydra/default.nix index fb5ffcc..4334057 100644 --- a/hosts/hydra/default.nix +++ b/hosts/hydra/default.nix @@ -5,6 +5,7 @@ ipv4 = { address = "192.168.1.160"; prefixLength = 24; + defaultGateway = "192.168.1.1"; }; }; }; diff --git a/nixosModules/networking/default.nix b/nixosModules/networking/default.nix index 46c80a6..aa1878c 100644 --- a/nixosModules/networking/default.nix +++ b/nixosModules/networking/default.nix @@ -18,6 +18,12 @@ let default = null; example = if version == 4 then 24 else 64; }; + defaultGateway = lib.mkOption { + type = lib.types.nullOr lib.types.str; + description = "The defautl gateway IPv${version}"; + default = null; + example = if version == 4 then "192.168.1.1" else null; + }; }; in { @@ -34,9 +40,10 @@ in assertions = [ { - assertion = !(cfg.ipv4.address == null || cfg.ipv4.prefixLength == null); + assertion = + !(cfg.ipv4.address == null || cfg.ipv4.prefixLength == null || cfg.ipv4.defaultGateway == null); message = '' - You need to provide valid values for both `address` and `prefixLength` in `kropcloud.networking.ipv4` + You need to provide valid values for `address`, `prefixLength` and `defaultGateway` in `kropcloud.networking.ipv4` when either is set. ''; } @@ -57,11 +64,17 @@ in ]; }; }; - useDHCP = (cfg.ipv4.address == null || cfg.ipv4.prefixLength == null); - nameservers = [ - "8.8.8.8" - "1.1.1.1" - ]; + useDHCP = ( + cfg.ipv4.address == null || cfg.ipv4.prefixLength == null || cfg.ipv4.defaultGateway == null + ); + defaultGateway = lib.mkIf (cfg.ipv4.defaultGateway != null) { address = cfg.ipv4.defaultGateway; }; + nameservers = + lib.mkIf + (cfg.ipv4.address != null || cfg.ipv4.prefixLength != null || cfg.ipv4.defaultGateway != null) + [ + "8.8.8.8" + "1.1.1.1" + ]; }; }; }