Bugfixes. Added previous run detection.

This commit is contained in:
Raphaël Numbus
2026-03-08 16:06:37 +01:00
parent 7b9f651317
commit 25315a2f5d
+37 -25
View File
@@ -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