Files
dotfiles/mybin/nixre
2024-01-16 09:03:26 +01:00

98 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# my nixos rebuild script
build_from_github(){
export NIXPKGS_ALLOW_UNFREE=1
export out_path=$(nix build --refresh "github:c2vi/nixos#nixosConfigurations.$host.config.system.build.toplevel" --impure --no-link --print-out-paths "${args_to_pass[@]}")
if [[ "$out_path" == "" ]]
then
build_exit_code=1
else
build_exit_code=0
fi
echo out_path: $out_path
echo build_exit_code: $build_exit_code
return $build_exit_code
}
build_from_local(){
export NIXPKGS_ALLOW_UNFREE=1
export out_path=$(nix build "$HOME/work/config#nixosConfigurations.$host.config.system.build.toplevel" --impure --no-link --print-out-paths "${args_to_pass[@]}")
if [[ "$out_path" == "" ]]
then
build_exit_code=1
else
build_exit_code=0
fi
echo out_path: $out_path
echo build_exit_code: $build_exit_code
return $build_exit_code
}
do_switch(){
if [[ "$host" == "$(hostname)" ]]
then
[[ "$boot" == "false" ]] && sudo $out_path/bin/switch-to-configuration switch
[[ "$boot" == "true" ]] && sudo $out_path/bin/switch-to-configuration boot
else
nix path-info $out_path -r | xargs sudo nix store sign -k ~/work/here/secrets/nix-private
nix copy --no-check-sigs --no-require-sigs --to ssh-ng://$host $out_path
[[ "$boot" == "false" ]] && ssh $host "sudo $out_path/bin/switch-to-configuration switch"
[[ "$boot" == "true" ]] && ssh $host "sudo $out_path/bin/switch-to-configuration boot"
fi
}
function test(){
for arg in "$@";
do
echo got: $arg
done
}
# main
host=$(hostname)
export host
boot=false
use_github=""
flag=""
while getopts ':gbh:' flag; do
case "${flag}" in
h) host="${OPTARG}";;
b) boot=true;;
g) use_github=true;;
*) export args_to_pass=( "${@:OPTIND}" ); break;; # makes it so, that at the first unknown option we start passing the rest of the arguments to the nix build command....
esac
done
# mahem with correctly passing args to the nix build command
#args_to_pass=$(for arg in "${args_to_pass[@]}"; do echo -en " \\\"$arg\\\""; done)
#for arg in "${args_to_pass[@]}"; do echo loop: "$arg"; done
#echo hiii: $args_to_pass
#test "${args_to_pass[@]}"
#exit
if [[ "$use_github" == "true" ]]
then
echo rebuild from github
build_from_github && do_switch
else
echo "rebuild from local (~/work/config/)"
build_from_local && do_switch
fi