From 9a4f9c2ca30f5090f83ec5324c5e8c462a2d7308 Mon Sep 17 00:00:00 2001 From: Elias Coppens Date: Tue, 4 Feb 2025 21:53:21 +0100 Subject: [PATCH] feat(ap01): WIP --- hive.nix | 4 +- .../{ap01 => ap-v01}/_configuration.nix | 3 +- .../liminix/{ap01 => ap-v01}/addresses.nix | 0 machines/liminix/{ap01 => ap-v01}/dns.nix | 0 machines/liminix/{ap01 => ap-v01}/ipc.nix | 0 machines/liminix/{ap01 => ap-v01}/lan.nix | 0 .../liminix/{ap01 => ap-v01}/management.nix | 0 .../liminix/{ap01 => ap-v01}/metadata.nix | 0 .../liminix/{ap01 => ap-v01}/recovery.nix | 0 machines/liminix/{ap01 => ap-v01}/system.nix | 0 machines/liminix/{ap01 => ap-v01}/wlan.nix | 13 ++++ meta/nodes/liminix.nix | 63 ++++++++++++++++--- meta/options.nix | 6 ++ npins/sources.json | 6 +- 14 files changed, 79 insertions(+), 16 deletions(-) rename machines/liminix/{ap01 => ap-v01}/_configuration.nix (97%) rename machines/liminix/{ap01 => ap-v01}/addresses.nix (100%) rename machines/liminix/{ap01 => ap-v01}/dns.nix (100%) rename machines/liminix/{ap01 => ap-v01}/ipc.nix (100%) rename machines/liminix/{ap01 => ap-v01}/lan.nix (100%) rename machines/liminix/{ap01 => ap-v01}/management.nix (100%) rename machines/liminix/{ap01 => ap-v01}/metadata.nix (100%) rename machines/liminix/{ap01 => ap-v01}/recovery.nix (100%) rename machines/liminix/{ap01 => ap-v01}/system.nix (100%) rename machines/liminix/{ap01 => ap-v01}/wlan.nix (89%) diff --git a/hive.nix b/hive.nix index df57365..666c79d 100644 --- a/hive.nix +++ b/hive.nix @@ -111,12 +111,12 @@ in args; defaults = - { name, nodePath, ... }: + { name, ... }: { # Import the default modules imports = [ # Import the base configuration for each node - ./${nodePath}/_configuration.nix + ./machines/liminix/ap-v01/_configuration.nix ./modules/generic ./modules/${category name} ]; diff --git a/machines/liminix/ap01/_configuration.nix b/machines/liminix/ap-v01/_configuration.nix similarity index 97% rename from machines/liminix/ap01/_configuration.nix rename to machines/liminix/ap-v01/_configuration.nix index 00c0a3e..6b023f0 100644 --- a/machines/liminix/ap01/_configuration.nix +++ b/machines/liminix/ap-v01/_configuration.nix @@ -5,6 +5,7 @@ { modulesPath, sourcePkgs, + name, ... }: { @@ -39,6 +40,6 @@ (import "${modulesPath}/../devices/zyxel-nwa50ax").module ]; - hostname = "ap01-prototype"; + hostname = name; nixpkgs.source = sourcePkgs.path; } diff --git a/machines/liminix/ap01/addresses.nix b/machines/liminix/ap-v01/addresses.nix similarity index 100% rename from machines/liminix/ap01/addresses.nix rename to machines/liminix/ap-v01/addresses.nix diff --git a/machines/liminix/ap01/dns.nix b/machines/liminix/ap-v01/dns.nix similarity index 100% rename from machines/liminix/ap01/dns.nix rename to machines/liminix/ap-v01/dns.nix diff --git a/machines/liminix/ap01/ipc.nix b/machines/liminix/ap-v01/ipc.nix similarity index 100% rename from machines/liminix/ap01/ipc.nix rename to machines/liminix/ap-v01/ipc.nix diff --git a/machines/liminix/ap01/lan.nix b/machines/liminix/ap-v01/lan.nix similarity index 100% rename from machines/liminix/ap01/lan.nix rename to machines/liminix/ap-v01/lan.nix diff --git a/machines/liminix/ap01/management.nix b/machines/liminix/ap-v01/management.nix similarity index 100% rename from machines/liminix/ap01/management.nix rename to machines/liminix/ap-v01/management.nix diff --git a/machines/liminix/ap01/metadata.nix b/machines/liminix/ap-v01/metadata.nix similarity index 100% rename from machines/liminix/ap01/metadata.nix rename to machines/liminix/ap-v01/metadata.nix diff --git a/machines/liminix/ap01/recovery.nix b/machines/liminix/ap-v01/recovery.nix similarity index 100% rename from machines/liminix/ap01/recovery.nix rename to machines/liminix/ap-v01/recovery.nix diff --git a/machines/liminix/ap01/system.nix b/machines/liminix/ap-v01/system.nix similarity index 100% rename from machines/liminix/ap01/system.nix rename to machines/liminix/ap-v01/system.nix diff --git a/machines/liminix/ap01/wlan.nix b/machines/liminix/ap-v01/wlan.nix similarity index 89% rename from machines/liminix/ap01/wlan.nix rename to machines/liminix/ap-v01/wlan.nix index 0c68253..1ac7ffa 100644 --- a/machines/liminix/ap01/wlan.nix +++ b/machines/liminix/ap-v01/wlan.nix @@ -6,10 +6,19 @@ config, pkgs, lib, + nodeMeta, ... }: let svc = config.system.service; + + inherit (nodeMeta.extraNodeSettings) building floor ap-no; + + hex = x: lib.fixedWidthString 2 "0" (lib.toHexString x); + + mac-1 = "02:5B:6A:${hex (building * 4)}:${hex floor}:${hex ap-no}"; + mac-2 = "02:5B:6A:${hex (building * 4 + 1)}:${hex floor}:${hex ap-no}"; + secrets-1 = { ssid = "DGNum"; }; @@ -89,6 +98,10 @@ let }; in { + hardware.wlanMacAddresses = { + wlan0 = mac-1; + wlan1 = mac-2; + }; services = { # wlan0 is the 2.4GHz interface. hostap-1 = mkWifiSta ( diff --git a/meta/nodes/liminix.nix b/meta/nodes/liminix.nix index 5c6e952..3510908 100644 --- a/meta/nodes/liminix.nix +++ b/meta/nodes/liminix.nix @@ -15,18 +15,61 @@ # nixpkgs = "unstable" or "22.11"; # nixpkgs version # } -{ - ap01 = { - site = "unknown"; - adminGroups = [ "fai" ]; +let + lib = import ../../lib/nix-lib; + inherit (lib) mapFuse; - hashedPassword = "$y$j9T$DMOQEWOYFHjNS0myrXp4x/$MG33VSdXGvib.99eN.AbvyVdNNJw4ERjAwK4.ULJe/A"; + mkAP = building: floor: ap-no: { + "ap-v01-${builtins.toString building}-${builtins.toString floor}-${builtins.toString ap-no}" = { + site = "unknown"; + adminGroups = [ "fai" ]; - stateVersion = null; + hashedPassword = "$y$j9T$DMOQEWOYFHjNS0myrXp4x/$MG33VSdXGvib.99eN.AbvyVdNNJw4ERjAwK4.ULJe/A"; - nixpkgs = { - system = "zyxel-nwa50ax"; - version = "24.05"; + stateVersion = null; + + nixpkgs = { + system = "zyxel-nwa50ax"; + version = "24.05"; + }; + + extraNodeSettings = { + inherit building floor ap-no; + vendor-mac = null; + }; }; }; -} +in +{ } +// + mapFuse + ( + floor: + mapFuse (mkAP 0 floor) [ + 1 + 2 + 3 + 4 + 5 + 6 + ] + ) + [ + 0 + 1 + 2 + ] # Hypnos-1 +// + mapFuse + ( + floor: + mapFuse (mkAP 1 floor) [ + 1 + 2 + ] + ) + [ + 0 + 1 + 2 + ] # Hypnos-2 diff --git a/meta/options.nix b/meta/options.nix index 539be1d..5b815d3 100644 --- a/meta/options.nix +++ b/meta/options.nix @@ -210,6 +210,12 @@ in default = null; description = "VM cluster where the VM is located"; }; + + extraNodeSettings = mkOption { + type = attrs; + default = { }; + description = "Freeform attribute set to customize the node"; + }; }; config = { diff --git a/npins/sources.json b/npins/sources.json index e19a154..ec8ff71 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -153,10 +153,10 @@ "type": "Git", "url": "https://git.dgnum.eu/DGNum/liminix" }, - "branch": "main", - "revision": "1322de1ee0cdb19fead79e12ab279ee0b575019a", + "branch": "mdebray/mac-personalisation", + "revision": "b129f775b2f58a820d09b11f17363ef477669668", "url": null, - "hash": "07nk6nik97k8a57cf17dcj3gn2lbhw1myymrxpqc2aqa3haj754k" + "hash": "17vryhcd4d7ghjin03bnqnzrra17698hd12k1afkjpi2j0ag0p3z" }, "linkal": { "type": "Git",