72 lines
1.4 KiB
Nix
72 lines
1.4 KiB
Nix
|
{ config, lib, pkgs, ... }:
|
||
|
|
||
|
with lib;
|
||
|
let
|
||
|
reboot-if-necessary = pkgs.writeShellScriptBin "reboot-if-necessary" ''
|
||
|
if [ $# -ne 1 ]; then
|
||
|
echo "FAILED: no sync file provided."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
WALL=${pkgs.utillinux}/bin/wall
|
||
|
|
||
|
if [ -f $1 ]; then
|
||
|
$WALL "$1 exists, rebooting system"
|
||
|
${pkgs.systemd}/bin/reboot
|
||
|
else
|
||
|
$WALL "$1 does not exist, aborting reboot."
|
||
|
fi
|
||
|
|
||
|
exit 0
|
||
|
'';
|
||
|
|
||
|
test-config = pkgs.writeShellScriptBin "fudo-test-config" ''
|
||
|
if [ $# -gt 1 ]; then
|
||
|
echo "usage: $0 [timeout]"
|
||
|
exit 1
|
||
|
elif [ $# -eq 1 ]; then
|
||
|
TIMEOUT=$1
|
||
|
else
|
||
|
TIMEOUT=15m
|
||
|
fi
|
||
|
|
||
|
SYNCFILE=$TMP/sync-$(date +"%Y%m%d-%H%M%N")
|
||
|
touch $SYNCFILE
|
||
|
${pkgs.utillinux}/bin/wall "Launching config. System will restart in $TIMEOUT if $SYNCFILE still exists."
|
||
|
systemd-run --on-active=$TIMEOUT ${reboot-if-necessary} $SYNCFILE
|
||
|
nixos-rebuild test
|
||
|
|
||
|
exit 0
|
||
|
'';
|
||
|
|
||
|
in {
|
||
|
imports = [ ./common.nix ];
|
||
|
|
||
|
config = {
|
||
|
environment = {
|
||
|
systemPackages = with pkgs; [
|
||
|
emacs-nox
|
||
|
ldns
|
||
|
ldns.examples
|
||
|
jdk12_headless
|
||
|
racket-minimal
|
||
|
reboot-if-necessary
|
||
|
test-config
|
||
|
];
|
||
|
|
||
|
noXlibs = true;
|
||
|
};
|
||
|
|
||
|
security = { hideProcessInformation = true; };
|
||
|
|
||
|
networking.networkmanager.enable = mkForce false;
|
||
|
|
||
|
boot.tmpOnTmpfs = true;
|
||
|
|
||
|
services.xserver.enable = false;
|
||
|
|
||
|
sound.enable = false;
|
||
|
hardware.pulseaudio.enable = false;
|
||
|
};
|
||
|
}
|