45 lines
957 B
Nix
Executable file
45 lines
957 B
Nix
Executable file
{
|
||
osConfig,
|
||
config,
|
||
pkgs,
|
||
}:
|
||
let
|
||
inherit (osConfig.networking) hostName;
|
||
shouldNotify =
|
||
(builtins.hasAttr "ntfy-client" config.services) && config.services.ntfy-client.enable;
|
||
rebuildCommand = ''
|
||
nixos-rebuild switch --target-host "$TARGET" \
|
||
--build-host "$BUILD" \
|
||
--sudo --ask-sudo-password $@'';
|
||
in
|
||
pkgs.writeShellScriptBin "rRebuild" ''
|
||
NOTIFY="''\${NOTIFY:-0}"
|
||
TARGET=$1
|
||
BUILD=$2
|
||
|
||
set -euo pipefail
|
||
|
||
shift 2
|
||
|
||
${
|
||
if shouldNotify then
|
||
''
|
||
export NTFY_TITLE="🎯 $TARGET built by 🏗️ ''\${BUILD:-${hostName}}"
|
||
export NTFY_TAGS="gear"
|
||
|
||
if [ "$NOTIFY" -eq 0 ] ; then
|
||
${rebuildCommand}
|
||
exit 0
|
||
fi
|
||
|
||
if ${rebuildCommand}
|
||
then
|
||
ntfy pub system-build "✅ Build success" > /dev/null 2>&1
|
||
else
|
||
ntfy pub system-build "⛔ Build failed" > /dev/null 2>&1
|
||
fi
|
||
''
|
||
else
|
||
rebuildCommand
|
||
}
|
||
''
|