From 2e4602cbf36e17e5dacafb4f3ba9d291bbfbc350 Mon Sep 17 00:00:00 2001 From: UGA Innovation Factory Date: Tue, 27 Jan 2026 22:13:32 +0000 Subject: [PATCH] refactor: Move macCaseBuilder into athenix.lib --- lib/default.nix | 6 ++++- lib/macCaseBuilder.nix | 33 ++++++++++++++++++++++++++++ parts/lib.nix | 5 ++++- sw/stateless-kiosk/kiosk-browser.nix | 4 ++-- sw/stateless-kiosk/mac-hostmap.nix | 28 ----------------------- sw/stateless-kiosk/programs.nix | 3 --- sw/stateless-kiosk/services.nix | 4 ++-- 7 files changed, 46 insertions(+), 37 deletions(-) create mode 100644 lib/macCaseBuilder.nix delete mode 100644 sw/stateless-kiosk/mac-hostmap.nix diff --git a/lib/default.nix b/lib/default.nix index cd24450..192bd1d 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,4 +1,8 @@ -{ ... }: +{ + lib, + ... +}: { mkFleet = import ./mkFleet.nix; + macCaseBuilder = import ./macCaseBuilder.nix { inherit lib; }; } diff --git a/lib/macCaseBuilder.nix b/lib/macCaseBuilder.nix new file mode 100644 index 0000000..2478dd4 --- /dev/null +++ b/lib/macCaseBuilder.nix @@ -0,0 +1,33 @@ +{ lib }: +let + # Default MAC address to station number mapping + defaultHostmap = { + "00:e0:4c:46:0b:32" = "1"; + "00:e0:4c:46:07:26" = "2"; + "00:e0:4c:46:05:94" = "3"; + "00:e0:4c:46:07:11" = "4"; + "00:e0:4c:46:08:02" = "5"; + "00:e0:4c:46:08:5c" = "6"; + }; + + # macCaseBuilder: builds a shell case statement from a hostmap + # Parameters: + # varName: the shell variable to assign + # prefix: optional string to prepend to the value (default: "") + # hostmap: optional attribute set to use (default: built-in hostmap) + # + # Example: + # macCaseBuilder { varName = "STATION"; prefix = "nix-"; } + # # Generates case statements like: 00:e0:4c:46:0b:32) STATION=nix-1 ;; + builder = + { + varName, + prefix ? "", + hostmap ? defaultHostmap, + }: + lib.concatStringsSep "\n" ( + lib.mapAttrsToList (mac: val: " ${mac}) ${varName}=${prefix}${val} ;;") hostmap + ); +in +# Export the builder function with hostmap as an accessible attribute +lib.setFunctionArgs builder { } // { hostmap = defaultHostmap; } diff --git a/parts/lib.nix b/parts/lib.nix index efa3287..1aec9a5 100644 --- a/parts/lib.nix +++ b/parts/lib.nix @@ -1,5 +1,8 @@ # Library functions for flake-parts { inputs, ... }: { - flake.lib = import ../lib { inherit inputs; }; + flake.lib = import ../lib { + inherit inputs; + lib = inputs.nixpkgs.lib; + }; } diff --git a/sw/stateless-kiosk/kiosk-browser.nix b/sw/stateless-kiosk/kiosk-browser.nix index dee864b..c682b5c 100644 --- a/sw/stateless-kiosk/kiosk-browser.nix +++ b/sw/stateless-kiosk/kiosk-browser.nix @@ -1,13 +1,13 @@ # This module configures Chromium for kiosk mode under Sway. # It includes a startup script that determines the kiosk URL based on the machine's MAC address. { - lib, pkgs, + inputs, ... }: let - macCaseBuilder = (import ./mac-hostmap.nix { inherit lib; }).macCaseBuilder; + macCaseBuilder = inputs.self.lib.macCaseBuilder; macCases = macCaseBuilder { varName = "STATION"; }; diff --git a/sw/stateless-kiosk/mac-hostmap.nix b/sw/stateless-kiosk/mac-hostmap.nix deleted file mode 100644 index c0d243e..0000000 --- a/sw/stateless-kiosk/mac-hostmap.nix +++ /dev/null @@ -1,28 +0,0 @@ -# Shared MAC address to station mapping and case builder for stateless-kiosk modules -{ lib }: -let - hostmap = { - "00:e0:4c:46:0b:32" = "1"; - "00:e0:4c:46:07:26" = "2"; - "00:e0:4c:46:05:94" = "3"; - "00:e0:4c:46:07:11" = "4"; - "00:e0:4c:46:08:02" = "5"; - "00:e0:4c:46:08:5c" = "6"; - }; - # macCaseBuilder: builds a shell case statement from a hostmap - # varName: the shell variable to assign - # prefix: optional string to prepend to the value (default: "") - # attrset: attribute set to use (default: hostmap) - macCaseBuilder = - { - varName, - prefix ? "", - attrset ? hostmap, - }: - lib.concatStringsSep "\n" ( - lib.mapAttrsToList (mac: val: " ${mac}) ${varName}=${prefix}${val} ;;") attrset - ); -in -{ - inherit hostmap macCaseBuilder; -} diff --git a/sw/stateless-kiosk/programs.nix b/sw/stateless-kiosk/programs.nix index 2e35552..9eb79bb 100644 --- a/sw/stateless-kiosk/programs.nix +++ b/sw/stateless-kiosk/programs.nix @@ -1,7 +1,4 @@ { - config, - lib, - pkgs, ... }: { diff --git a/sw/stateless-kiosk/services.nix b/sw/stateless-kiosk/services.nix index 424d65c..3c518b8 100644 --- a/sw/stateless-kiosk/services.nix +++ b/sw/stateless-kiosk/services.nix @@ -1,10 +1,10 @@ { - lib, pkgs, + inputs, ... }: let - macCaseBuilder = (import ./mac-hostmap.nix { inherit lib; }).macCaseBuilder; + macCaseBuilder = inputs.self.lib.macCaseBuilder; shellCases = macCaseBuilder { varName = "NEW_HOST"; prefix = "nix-station";