61 lines
1.3 KiB
Nix
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"
|
|
|
|
'';
|
|
};
|
|
};
|
|
}
|