2023-12-09 23:51:04 +01:00
|
|
|
|
#!/usr/bin/env nix-shell
|
|
|
|
|
#! nix-shell -i bash
|
|
|
|
|
#! nix-shell -p bash nix-output-monitor
|
|
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
|
|
|
|
|
|
|
|
# Parse arguments
|
|
|
|
|
function help {
|
|
|
|
|
echo "Usage: $0 [-h|-v|-b] profile"
|
|
|
|
|
echo "Build Home Manager configuration on the local machine."
|
|
|
|
|
echo
|
|
|
|
|
echo "Arguments:"
|
|
|
|
|
echo " profile: Home Manager profile to use"
|
|
|
|
|
echo
|
|
|
|
|
echo "Options:"
|
|
|
|
|
echo " -h: Display this help message."
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-16 22:22:14 +01:00
|
|
|
|
while getopts "h" OPTION
|
2023-12-09 23:51:04 +01:00
|
|
|
|
do
|
|
|
|
|
case "$OPTION" in
|
|
|
|
|
h)
|
|
|
|
|
help
|
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
?)
|
|
|
|
|
help
|
|
|
|
|
exit 2
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
shift "$(($OPTIND -1))"
|
|
|
|
|
|
|
|
|
|
if [ "$#" -ne 1 ]
|
|
|
|
|
then
|
|
|
|
|
help
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
profile="$1"
|
|
|
|
|
|
|
|
|
|
profile_dir="${SCRIPT_DIR}/${profile}"
|
|
|
|
|
if [ ! -d "$profile_dir" ]
|
|
|
|
|
then
|
|
|
|
|
echo "Profile not found."
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
home_manager_config="${profile_dir}/hm.nix"
|
|
|
|
|
if [ ! -f "$home_manager_config" ]
|
|
|
|
|
then
|
|
|
|
|
echo "Home Manager configuration not found."
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
set -x
|
|
|
|
|
|
|
|
|
|
nom-build '<home-manager/home-manager/home-manager.nix>' --argstr confPath "${home_manager_config}" -o "${profile_dir}/hm"
|
|
|
|
|
|
|
|
|
|
set +x
|
|
|
|
|
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
path="$(readlink -f "${profile_dir}/hm")"
|
|
|
|
|
|
|
|
|
|
echo "Manual installation instructions:"
|
|
|
|
|
echo "- Transfer $path and dependencies to the destination machine (somehow)"
|
|
|
|
|
echo "- Run $path/activate as the destination user"
|
|
|
|
|
echo "- Log into the user again to make sure everything is sourced"
|
|
|
|
|
echo "- Transfer necessary private keys (or use ssh -A for testing)"
|
|
|
|
|
echo "- Run git-sync-init"
|
|
|
|
|
echo "- Check that the system can build itself"
|