diff --git a/deploy.sh b/deploy.sh index d38d7e0..0c9b14a 100644 --- a/deploy.sh +++ b/deploy.sh @@ -77,7 +77,7 @@ WEB_APPLICATIONS_DESCRIPTION=( "Nextcloud : A self-hosted productivity platform, like Google Drive & Office" "Passbolt: An open-source, security-first password manager for teams" "Uptime-Kuma : A fancy self-hosted monitoring tool" - "VSCodium : Run VS Code in your browser, accessible anywhere" + "VSCodium : An open-source version of VScode in your web browser" ) SYSTEM_SERVICES_DESCRIPTION=( "ClamAV : An open-source anti-virus" @@ -192,10 +192,35 @@ necessary_information_config() { fi } -setup_ssh() { - mkdir -p final-nix-config/ +hierarchy_preparation() { mkdir -p final-nix-config/etc/ mkdir -p final-nix-config/etc/nixos/ + mkdir -p final-nix-config/etc/secrets/ + mkdir -p final-nix-config/etc/secrets/disks/ + mkdir -p final-nix-config/etc/nixos/secrets/ + mkdir -p final-nix-config/var/ + mkdir -p final-nix-config/var/lib/ + mkdir -p final-nix-config/var/lib/sops-nix/ + mkdir -p final-nix-config/var/lib/numbus-server/ + + if [[ -e final-nix-config/etc/nixos/configuration.nix ]]; then + gum confirm "It seems you have already run this script. Previously generated files need to be cleaned up. Proceed?" || { echo -e "\n\nāŒ Aborting."; exit 1; } + rm -f final-nix-config/etc/nixos/* + rm -f final-nix-config/var/lib/sops-nix/* + rm -f final-nix-config/etc/nixos/secrets/* + rm -f final-nix-config/etc/secrets/disks/* + rm -f final-nix-config/var/lib/numbus-server/* + rm -f final-nix-config/home/numbus-admin/.ssh/* + fi + + echo -e "\nāœ… Writing configuration..." + cp -${FILES_COPY_FLAGS} templates/nix-config/configuration.nix final-nix-config/etc/nixos/configuration.nix + cp -${FILES_COPY_FLAGS} templates/nix-config/flake.nix final-nix-config/etc/nixos/flake.nix + export CONFIGURATION_PATH="final-nix-config/etc/nixos/configuration.nix" +} + +setup_ssh() { + mkdir -p final-nix-config/ mkdir -p final-nix-config/home/ mkdir -p final-nix-config/home/numbus-admin/ mkdir -p final-nix-config/home/numbus-admin/.ssh/ @@ -218,21 +243,6 @@ ssh_to_host() { ssh -i "final-nix-config/home/numbus-admin/.ssh/id_ed25519" "${TARGET_USER}@${LIVE_TARGET_IP}" "${COMMAND}" } -hierarchy_preparation() { - mkdir -p final-nix-config/etc/secrets - mkdir -p final-nix-config/etc/secrets/disks - mkdir -p final-nix-config/etc/nixos/secrets - mkdir -p final-nix-config/var - mkdir -p final-nix-config/var/lib - mkdir -p final-nix-config/var/lib/sops-nix - mkdir -p final-nix-config/var/lib/numbus-server - - echo -e "\nāœ… Writing configuration..." - cp -${FILES_COPY_FLAGS} templates/nix-config/configuration.nix final-nix-config/etc/nixos/configuration.nix - cp -${FILES_COPY_FLAGS} templates/nix-config/flake.nix final-nix-config/etc/nixos/flake.nix - export CONFIGURATION_PATH="final-nix-config/etc/nixos/configuration.nix" -} - hardware_detection() { ### --> Get hardware information local TMPFILE="/tmp/nixos-installation-hardware-detection-temp-file" @@ -293,6 +303,7 @@ for DISK in \$(lsblk -x SIZE -d -n -e 7,11 -o NAME); do # Disk ID DISK_ID+=("\$(ls -l /dev/disk/by-id | grep -m1 "../../\$DISK" | awk '{print "/dev/disk/by-id/" \$9}')") DISK_SIZE+=("\$(lsblk -x SIZE -d -n -e 7,11 -o SIZE /dev/\$DISK)") + done echo "# Hardware detection results on \$(date)" > "${TMPFILE}" @@ -473,8 +484,9 @@ services_config_generation() { echo -e "\n # Services settings" >> ${CONFIGURATION_PATH} echo -e " numbus.services.domain = \"${DOMAIN_NAME}\";" >> ${CONFIGURATION_PATH} + i=0 - for service in "${SELECTED_SERVICES[@]}"; do + for service in "${SELECTED_WEB_APPLICATIONS[@]}"; do if [[ -v SELECTED_WEB_APPLICATIONS_SUBDOMAIN && -n "${SELECTED_WEB_APPLICATIONS_SUBDOMAIN[${i}]}" ]]; then echo -e " numbus.services.${service}.enable.subdomain = \"${SELECTED_WEB_APPLICATIONS_SUBDOMAIN[${i}]}\";" >> ${CONFIGURATION_PATH} fi @@ -482,8 +494,8 @@ services_config_generation() { i=$((i + 1)) done - if [[ -v SELECTED_WEB_APPLICATIONS_SUBDOMAIN && -n "$SELECTED_DNS_SERVICE" && -n "${SELECTED_WEB_APPLICATIONS_SUBDOMAIN[${i}]}" ]]; then - echo -e " numbus.services.${SELECTED_DNS_SERVICE}.enable.subdomain = \"${SELECTED_WEB_APPLICATIONS_SUBDOMAIN[${i}]}\";" >> ${CONFIGURATION_PATH} + if [[ -v SELECTED_DNS_SERVICE_SUBDOMAIN && -n "${SELECTED_DNS_SERVICE_SUBDOMAIN[0]}" ]]; then + echo -e " numbus.services.${SELECTED_DNS_SERVICE[0]}.enable.subdomain = \"${SELECTED_DNS_SERVICE_SUBDOMAIN[0]}\";" >> ${CONFIGURATION_PATH} fi if [[ "${TARGET_GRAPHICS_RENDERER}" == "true" ]]; then @@ -498,10 +510,10 @@ services_config_generation() { HOME_ASSISTANT_DEVICES+=" \"${TARGET_ZIGBEE_DEVICE}\"" fi - if [[ -n "${FRIGATE_DEVICES}" ]]; then + if [[ -n "${FRIGATE_DEVICES:-}" ]]; then echo -e " numbus.services.frigate.devices = [${FRIGATE_DEVICES} ];" >> ${CONFIGURATION_PATH} fi - if [[ -n "${HOME_ASSISTANT_DEVICES}" ]]; then + if [[ -n "${HOME_ASSISTANT_DEVICES:-}" ]]; then echo -e " numbus.services.home-assistant.devices = [${HOME_ASSISTANT_DEVICES} ];" >> ${CONFIGURATION_PATH} fi } @@ -923,8 +935,8 @@ if [[ "$ACTION_ANSWER" == "[1] 🌐 Deploy NixOS on a remote machine" ]]; then gum confirm "Do you understand and wish to proceed?" || { echo "āŒ Aborting as requested"; exit 1; } strictly_necessary_information necessary_information - setup_ssh hierarchy_preparation + setup_ssh hardware_detection services_selection disks_selection @@ -947,8 +959,8 @@ elif [[ "$ACTION_ANSWER" == "[2] šŸ’½ Deploy NixOS on a remote machine with a fi Launch a console and set up a new user password" gum confirm "Do you understand and wish to proceed?" || { echo "āŒ Aborting as requested"; exit 1; } necessary_information_config - setup_ssh hierarchy_preparation + setup_ssh hardware_detection disks_selection server_config_generation