From 71769cb74c9f9bd401e717ac2b04d739058f1289 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Tue, 28 Dec 2021 09:49:44 +0100 Subject: [PATCH] raven/labsync: declaratively build tftp env Fixes #8. --- .gitattributes | 2 ++ machines/raven/services/default.nix | 2 +- .../{labsync.nix => labsync/default.nix} | 13 ++++++++++-- machines/raven/services/labsync/pxelinux.cfg | 21 +++++++++++++++++++ machines/raven/services/labsync/splash.png | 3 +++ 5 files changed, 38 insertions(+), 3 deletions(-) rename machines/raven/services/{labsync.nix => labsync/default.nix} (54%) create mode 100644 machines/raven/services/labsync/pxelinux.cfg create mode 100644 machines/raven/services/labsync/splash.png diff --git a/.gitattributes b/.gitattributes index 13b84cc..f769614 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,3 @@ **/secrets.yaml diff=sops + +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/machines/raven/services/default.nix b/machines/raven/services/default.nix index c4f05bf..420c68a 100644 --- a/machines/raven/services/default.nix +++ b/machines/raven/services/default.nix @@ -3,7 +3,7 @@ ./asterisk.nix ./dnsmasq.nix ./dyndns.nix - ./labsync.nix + ./labsync ./unifi-controller.nix ]; } diff --git a/machines/raven/services/labsync.nix b/machines/raven/services/labsync/default.nix similarity index 54% rename from machines/raven/services/labsync.nix rename to machines/raven/services/labsync/default.nix index 985fe66..471a62c 100644 --- a/machines/raven/services/labsync.nix +++ b/machines/raven/services/labsync/default.nix @@ -1,11 +1,13 @@ # legacy labsync, currently partly implemented in docker outside of this configuration +{ pkgs, ... }: + { services.opentracker.enable = true; services.nginx.virtualHosts."labsync.lab.fablab-nea.de" = { locations = { "/" = { - root = "/opt/docker/tftpgen/data/labsync"; + root = "/opt/docker/tftpgen/data"; extraConfig = '' autoindex on; ''; @@ -16,7 +18,14 @@ services.atftpd = { enable = true; - root = "/opt/docker/tftpgen/data"; + root = pkgs.runCommand "pxelinux-tftproot" { } '' + mkdir -p $out/pxelinux.cfg + cp ${pkgs.syslinux}/share/syslinux/{ldlinux.c32,libcom32.c32,libutil.c32,lpxelinux.0,vesamenu.c32} $out + cp ${./splash.png} $out/splash.png + cp ${./pxelinux.cfg} $out/pxelinux.cfg/default + # required to serve labsync/labsync.cfg, which is generated dynamically by a docker container + ln -s /opt/docker/tftpgen/data $out/labsync + ''; }; networking.firewall.allowedTCPPorts = [ diff --git a/machines/raven/services/labsync/pxelinux.cfg b/machines/raven/services/labsync/pxelinux.cfg new file mode 100644 index 0000000..0aa7cc9 --- /dev/null +++ b/machines/raven/services/labsync/pxelinux.cfg @@ -0,0 +1,21 @@ +# default menu settings +menu width 100 +menu height 24 +menu title labsync + +# can be overwriten by mounting another image; has to be 1024×768 in 16:9 +menu background splash.png +menu color border * #00000000 #00000000 none +menu color sel * #ffffffff #76a1d0ff * +menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * +menu cmdlinerow 16 +menu timeoutrow 16 +menu tabmsgrow 18 +# do not show “press tab to edit options…” entry (empty) +menu tabmsg + +include labsync/labsync.cfg +default vesamenu.c32 + +# disable timeout (explicitly) +timeout 0 diff --git a/machines/raven/services/labsync/splash.png b/machines/raven/services/labsync/splash.png new file mode 100644 index 0000000..8cd09d9 --- /dev/null +++ b/machines/raven/services/labsync/splash.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59980cbbf0c87d3d5045c7434e294fc04a8b313181e079104881bf62589adf2c +size 878475