Port update script to service
1 files changed, 21 insertions, 11 deletions
diff --git a/modules/auto-redeploy.nix b/modules/auto-redeploy.nix
index e3b81fc..ed951c7 100644
--- a/modules/auto-redeploy.nix
+++ b/modules/auto-redeploy.nix
@@ -12,34 +12,44 @@
};
};
};
+ #Emma - Auto-redeploy service
systemd.services = {
"auto-redeploy" = {
#wantedBy = [ "multi-user.target" ];
#after = [ "network.target" ];
+ path = with pkgs; [ git curl nix nixos-install-tools nixos-rebuild ];
serviceConfig = {
ExecStart = pkgs.writeShellScript "auto-redeploy" ''
cd /Spacebar-Open-Architecture
#store current commit hash
- echo "Current commit: $(${pkgs.git}/bin/git rev-parse HEAD)"
- currentCommit=$(${pkgs.git}/bin/git rev-parse HEAD)
- ${pkgs.git}/bin/git fetch --all
+ echo "Current commit: $(git rev-parse HEAD)"
+ currentCommit=$(git rev-parse HEAD)
+ git fetch --all
#check if there are any new commits
echo "Checking for new commits..."
- echo "Local: $(${pkgs.git}/bin/git rev-parse HEAD)"
- echo "Remote: $(${pkgs.git}/bin/git rev-parse @{u})"
- if [ $(${pkgs.git}/bin/git rev-parse HEAD) = $(${pkgs.git}/bin/git rev-parse @{u}) ]; then
+ echo "Local: $(git rev-parse HEAD)"
+ echo "Remote: $(git rev-parse @{u})"
+ if [ $(git rev-parse HEAD) = $(git rev-parse @{u}) ]; then
echo "Already up-to-date"
exit 0
fi
- ${pkgs.curl}/bin/curl -S -H "Content-Type: application/json" -d '{"username": "${config.networking.hostName} - redeploy", "content": "System started redeploy."}' ${secrets.webhooks.discord.deploy}
+ curl -S -H "Content-Type: application/json" -d '{"username": "${config.networking.hostName} - redeploy", "content": "System started redeploy."}' ${secrets.webhooks.discord.deploy}
#pull new commits
- ${pkgs.git}/bin/git pull
+ git pull
#send commit log to discord
- ${pkgs.curl}/bin/curl -S -H "Content-Type: application/json" -d '{"username": "${config.networking.hostName} - redeploy", "content": "```$(git log --pretty=format:"%h - %s" $currentCommit..HEAD)```"}' ${secrets.webhooks.discord.deploy}
+ curl -S -H "Content-Type: application/json" -d '{"username": "${config.networking.hostName} - redeploy", "content": "```$(git log --pretty=format:"%h - %s" $currentCommit..HEAD)```"}' ${secrets.webhooks.discord.deploy}
#call ./update.sh and store output (including stderr) in a file
- ./update.sh 2>&1 | tee /tmp/update.log
+ (
+ nix flake update
+ nixos-generate-config --show-hardware-config > hardware-configuration.nix
+ git add -f hardware-configuration.nix
+ nixos-rebuild switch --flake ".#${config.networking.hostName}" -j`nproc` --upgrade-all
+ git rm --cached hardware-configuration.nix
+ ) 2>&1 | tee /tmp/update.log
#send the output to discord as a file
- ${pkgs.curl}/bin/curl -S -F "file=@/tmp/update.log" -F "filename=update.log" -F "content=System finished redeploy." -H "Content-Type: multipart/form-data" ${secrets.webhooks.discord.deploy}
+ curl -S -F "file=@/tmp/update.log" -F "filename=update.log" -F "content=System finished redeploy." -H "Content-Type: multipart/form-data" ${secrets.webhooks.discord.deploy}
+ #store current commit in file
+ echo $(git rev-parse HEAD) > currentCommit
'';
#Restart = "always";
#RestartSec = 60;
|