From f082ed8ac0d290fb1019d43c51dcdd7c2064ee58 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Wed, 9 Apr 2025 09:41:45 +0800 Subject: [PATCH] refactor(scripts): move rebuild to nix file --- modules/programs/scripts/default.nix | 53 +++++++++++++++++++++++++++- modules/programs/scripts/rebuild.sh | 47 ------------------------ 2 files changed, 52 insertions(+), 48 deletions(-) delete mode 100755 modules/programs/scripts/rebuild.sh diff --git a/modules/programs/scripts/default.nix b/modules/programs/scripts/default.nix index 253a820..a18489e 100644 --- a/modules/programs/scripts/default.nix +++ b/modules/programs/scripts/default.nix @@ -9,7 +9,58 @@ ]; } (builtins.readFile ./git-extract.py)) - (pkgs.writeShellScriptBin "rebuild" (builtins.readFile ./rebuild.sh)) + (pkgs.writeShellScriptBin "rebuild" # sh + '' + rebuild_remote() { + git add . + hostname=$1 + builder="nemesis" + if [[ "''${hostname}" == "''${builder}" ]]; then + nh os switch . + else + nixos-rebuild switch \ + --flake .#"''${hostname}" \ + --target-host "$(whoami)"@"''${hostname}" \ + --build-host "''${builder}" \ + --use-remote-sudo + fi + } + + main() { + if [[ $# -gt 1 ]]; then + echo "Only one argument is allowed. Pass in a hostname or all." + exit 1 + elif [[ $# -lt 1 ]]; then + rebuild_remote "$HOSTNAME" + exit 0 + fi + + case "$1" in + all) + # Create a list of hostnames to rebuild + hosts=("nemesis" "apollo") + + # Use parallel to rebuild each host + , parallel rebuild ::: "''${hosts[@]}" + + # Check the exit code of parallel + if [[ $? -ne 0 ]]; then + echo "One or more rebuilds failed." + exit 1 + else + exit 0 + fi + ;; + *) + rebuild_remote "$1" + exit 0 + ;; + esac + } + + main "$@" + '' + ) (pkgs.writeShellScriptBin "byebye" (builtins.readFile ./byebye.sh)) (pkgs.writeShellScriptBin "deploy" (builtins.readFile ./deploy.sh)) ]; diff --git a/modules/programs/scripts/rebuild.sh b/modules/programs/scripts/rebuild.sh deleted file mode 100755 index c8cb2dd..0000000 --- a/modules/programs/scripts/rebuild.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -rebuild_remote() { - hostname=$1 - builder="nemesis" - if [[ "${hostname}" == "${builder}" ]]; then - nh os switch . - else - nixos-rebuild switch --flake .#"${hostname}" --target-host "$(whoami)"@"${hostname}" --build-host "${builder}" --use-remote-sudo - fi -} - -main() { - if [[ $# -gt 1 ]]; then - echo "Only one argument is allowed. Pass in a hostname or all." - exit 1 - elif [[ $# -lt 1 ]]; then - rebuild_remote "$HOSTNAME" - exit 0 - fi - - git add . - - case "$1" in - all) - # Create a list of hostnames to rebuild - hosts=("nemesis" "apollo") - - # Use parallel to rebuild each host - , parallel rebuild ::: "${hosts[@]}" - - # Check the exit code of parallel - if [[ $? -ne 0 ]]; then - echo "One or more rebuilds failed." - exit 1 - else - exit 0 - fi - ;; - *) - rebuild_remote "$1" - exit 0 - ;; - esac -} - -main "$@"