working on the stateless kiosk, dynamic hostnames not yet working
This commit is contained in:
54
sw/stateless-kiosk/services.nix
Normal file
54
sw/stateless-kiosk/services.nix
Normal file
@@ -0,0 +1,54 @@
|
||||
{ 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" ];
|
||||
wants = [ "default.target" ];
|
||||
after = [ "default.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-unregistered" ;;
|
||||
esac
|
||||
|
||||
${pkgs.nettools}/bin/hostname "$NEW_HOST"
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user