{ theFlake, ... }: let # Prevent building a configuration without revision rev = if theFlake ? rev then theFlake.rev else throw ("Refusing to build from a dirty Git tree!"); in { # Save the commit of the config in /etc/configrev environment.etc.configrev.text = rev + "\n"; # Keep a log with the config over time system.activationScripts.configRevLog.text = '' BOOTED=$(cat /run/booted-system/etc/configrev 2>/dev/null || echo unknown) CURRENT=$(cat /run/current-system/etc/configrev 2>/dev/null || echo unknown) NEXT=${rev} DATENOW=$(date --iso-8601=seconds) echo "$DATENOW booted=$BOOTED current=$CURRENT next=$NEXT" >> /var/configrev.log ''; system.configurationRevision = rev; }