From 8f137c28230623259a964484adcf31fe00756594 Mon Sep 17 00:00:00 2001 From: Azat Bahawi Date: Sat, 17 Dec 2022 16:39:09 +0300 Subject: 2022-12-17 --- lib/default.nix | 2 +- lib/dns.nix | 2 +- lib/my.nix | 49 ++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 40 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/default.nix b/lib/default.nix index d121f5e..da4b4d2 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,7 +1,7 @@ lib: _: rec { my = import ./my.nix lib; - dns = import ./dns.nix lib; + dns = import ./dns.nix; isEven = number: assert (builtins.isInt number) || (builtins.isFloat number); diff --git a/lib/dns.nix b/lib/dns.nix index e486f1c..5e1d767 100644 --- a/lib/dns.nix +++ b/lib/dns.nix @@ -1,4 +1,4 @@ -_: { +{ const = { quad9 = { default = ["9.9.9.9" "149.112.112.112" "2620:fe::fe" "2620:fe::9"]; diff --git a/lib/my.nix b/lib/my.nix index f9c6a35..9b999a5 100644 --- a/lib/my.nix +++ b/lib/my.nix @@ -9,23 +9,36 @@ with lib; attrsOf (submodule ({name, ...}: { freeformType = attrs; options = let + mkConfigurationArchOption = type: + mkOption { + description = "Whether the machine's architecture is a ${type} one."; + type = bool; + default = false; + }; + mkConfigurationTypeOption = type: mkOption { - description = "Whether the machine is a ${type} one."; + description = "Whether the machine's functional type is a ${type} one."; type = bool; default = false; }; in { hostname = mkOption { - description = "The machine's hostname"; + description = "The machine's hostname."; type = str; default = name; readOnly = true; }; + system = mkOption { - description = "The machine's system"; - type = enum ["x86_64-linux" "aarch64-linux"]; - default = "x86_64-linux"; + description = "The machine's system."; + type = nullOr (enum [ + "aarch64-darwin" + "aarch64-linux" + "x86_64-darwin" + "x86_64-linux" + ]); + default = null; }; isHeadless = mkConfigurationTypeOption "headless"; @@ -39,12 +52,12 @@ with lib; default = null; }; prefixLength = mkOption { - description = "The machine's IPv4 prefix length."; + description = "The machine's public IPv4 prefix length."; type = nullOr int; default = null; }; gatewayAddress = mkOption { - description = "The machine's IPv4 gateway address."; + description = "The machine's public IPv4 gateway address."; type = nullOr str; default = null; }; @@ -56,12 +69,12 @@ with lib; default = null; }; prefixLength = mkOption { - description = "The machine's IPv6 prefix length."; + description = "The machine's public IPv6 prefix length."; type = nullOr int; default = null; }; gatewayAddress = mkOption { - description = "The machine's IPv6 gateway address."; + description = "The machine's public IPv6 gateway address."; type = nullOr str; default = null; }; @@ -74,7 +87,7 @@ with lib; default = null; }; ipv6.address = mkOption { - description = "The machine's internal IPv4 addresses."; + description = "The machine's internal IPv6 addresses."; type = nullOr str; default = null; }; @@ -93,7 +106,7 @@ with lib; # filtering for actual subdomains. We can remove this option # altogether then. domains = mkOption { - description = "External domains that resovle to this address."; + description = "External domains that resolve to this address."; type = listOf str; default = []; }; @@ -171,7 +184,9 @@ with lib; shire ]; }; + varda = { + system = "x86_64-linux"; isHeadless = true; ipv4 = { gatewayAddress = "@IPV4_ADDRESS@"; @@ -189,7 +204,9 @@ with lib; publicKey = "@PUBLIC_KEY@"; }; }; + yavanna = { + system = "x86_64-linux"; isHeadless = true; ipv4 = { gatewayAddress = "@IPV4_ADDRESS@"; @@ -209,7 +226,9 @@ with lib; domains = with my.domain; ["flood.${shire}"]; syncthing.id = "@SYNCTHING_ID@"; }; + eonwe = { + system = "x86_64-linux"; isHeadful = true; wireguard = { ipv4.address = "10.69.3.1"; @@ -218,7 +237,9 @@ with lib; }; syncthing.id = "@SYNCTHING_ID@"; }; + melian = { + system = "x86_64-linux"; isHeadful = true; wireguard = { ipv4.address = "10.69.4.1"; @@ -227,6 +248,12 @@ with lib; }; syncthing.id = "@SYNCTHING_ID@"; }; + + mairon = { + system = "aarch64-darwin"; + isHeadful = true; + }; + gothmog = { isOther = true; wireguard = { -- cgit 1.4.1