Files
athenix/sw/stateless-kiosk/services.nix
UGA Innovation Factory 140648cd8f run nix fmt
2025-12-15 15:57:56 -05:00

61 lines
1.3 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
macCaseBuilder = (import ./mac-hostmap.nix { inherit lib; }).macCaseBuilder;
shellCases = macCaseBuilder {
varName = "NEW_HOST";
prefix = "nix-station";
};
in
{
services.xserver.enable = false;
services.seatd.enable = true;
services.openssh.enable = true;
services.dbus.enable = true;
security.polkit.enable = true;
services.displayManager = {
autoLogin = {
enable = true;
user = "engr-ugaif";
};
sddm = {
enable = true;
wayland.enable = true;
};
defaultSession = "sway";
};
systemd.services.dynamic-hostname = {
description = "Set hostname based on MAC address";
wantedBy = [ "sysinit.target" ];
before = [ "network-pre.target" ];
wants = [ "network-pre.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = pkgs.writeShellScript "dynamic-hostname" ''
set -euo pipefail
# Pick first non-loopback interface with a MAC
IFACE="$(ls /sys/class/net | grep -v '^lo$' | head -n1)"
MAC="$(cat /sys/class/net/$IFACE/address | tr '[:upper:]' '[:lower:]')"
case "$MAC" in
${shellCases}
*) NEW_HOST="nix-station-anon" ;;
esac
${pkgs.nettools}/bin/hostname "$NEW_HOST"
'';
};
};
}