about summary refs log tree commit diff stats
path: root/bootstrap
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-07-02 13:01:36 +0200
committerSoispha <soispha@vhack.eu>2023-07-10 16:44:20 +0200
commiteb6a837828134ef034a6ee9b0feec197c52f8bc7 (patch)
treeed4dc09af0182e058534866935974bfba3f6f5f4 /bootstrap
parentFix(system/disks): Add remainder about bootable option (diff)
downloadnixos-config-eb6a837828134ef034a6ee9b0feec197c52f8bc7.tar.gz
nixos-config-eb6a837828134ef034a6ee9b0feec197c52f8bc7.zip
Fix(bootstrap): Only set environment variables once
Diffstat (limited to 'bootstrap')
-rwxr-xr-xbootstrap/01_activate7
-rwxr-xr-xbootstrap/01_install40
-rwxr-xr-xbootstrap/02_setup5
-rwxr-xr-xbootstrap/03_config_setup2
-rwxr-xr-xbootstrap/99_ensure_config_variables207
5 files changed, 129 insertions, 132 deletions
diff --git a/bootstrap/01_activate b/bootstrap/01_activate
index b46e9145..32bdfe28 100755
--- a/bootstrap/01_activate
+++ b/bootstrap/01_activate
@@ -5,16 +5,15 @@ SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
 
 . %SCRIPT_ENSURE_CONFIG_VARIABLES
 
-nix run github:nix-community/disko -- --flake "git+https://codeberg.org/soispha/nixos-config#$NIX_HOST" --mode mount --experimental-features 'nix-command flakes';
+nix run github:nix-community/disko -- --flake "git+https://codeberg.org/soispha/nixos-config#$NIX_HOST" --mode mount --experimental-features 'nix-command flakes'
 
 msg "Finished mounting"
 
 case "$ACTIVATE_TO_SETUP" in
     "yes")
-        nix run "git+https://codeberg.org/soispha/nixos-config#setup" --experimental-features 'nix-command flakes';
-        ;;
-    *)
+        nix run "git+https://codeberg.org/soispha/nixos-config#setup" --experimental-features 'nix-command flakes'
         ;;
+    *) ;;
 esac
 
 # vim: ft=sh
diff --git a/bootstrap/01_install b/bootstrap/01_install
index 2c8fa108..f1d5cc6f 100755
--- a/bootstrap/01_install
+++ b/bootstrap/01_install
@@ -6,14 +6,14 @@ SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
 INSTALL=y . %SCRIPT_ENSURE_CONFIG_VARIABLES
 
 msg "Important information:"
-msg2 "Choose disk id is: $NIX_DISK";
+msg2 "Choose disk id is: $NIX_DISK"
 warning "This information needs to be entered in the host configuration BEFORE rebuilding it. Otherwise you'll have to wait for a 1 h cooldown!"
-info_applied=false;
-while [ "$info_applied" = false ];do
+info_applied=false
+while [ "$info_applied" = false ]; do
     readp "Have you updated your chosen host with the choose disk id? [N/y]: " result
     case $result in
         [Yy])
-            info_applied=true;
+            info_applied=true
             ;;
         *)
             warning "You won't be able to boot, if you don't update it!"
@@ -22,24 +22,24 @@ while [ "$info_applied" = false ];do
 done
 
 msg "Started creating filesystem..."
-nix run github:nix-community/disko -- --flake "git+https://codeberg.org/soispha/nixos-config#$NIX_HOST" --mode disko --experimental-features 'nix-command flakes';
+nix run github:nix-community/disko -- --flake "git+https://codeberg.org/soispha/nixos-config#$NIX_HOST" --mode disko --experimental-features 'nix-command flakes'
 msg "Finished mounting and generating btrfs subvolumes"
 
 msg "Creating swapfile..."
-msg2 "$(btrfs filesystem mkswapfile --size "$(free -m | awk '{if (NR==2) {printf "%sm\n", $2 + 500}}')" /mnt/swap/swapfile)";
+msg2 "$(btrfs filesystem mkswapfile --size "$(free -m | awk '{if (NR==2) {printf "%sm\n", $2 + 500}}')" /mnt/swap/swapfile)"
 msg "Finished creating swapfile!"
 
 msg "Important information:"
-msg2 "Swapfile UUID is: $(findmnt -no UUID -T /mnt/swap/swapfile)";
-msg2 "Swapfile resume offset is: $(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)";
+msg2 "Swapfile UUID is: $(findmnt -no UUID -T /mnt/swap/swapfile)"
+msg2 "Swapfile resume offset is: $(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)"
 warning "This information needs to be entered in the host configuration BEFORE rebuilding it. Otherwise the system won't boot!"
 
-info_applied=false;
-while [ "$info_applied" = false ];do
+info_applied=false
+while [ "$info_applied" = false ]; do
     readp "Have you updated your chosen host with this information? [N/y]: " result
     case $result in
         [Yy])
-            info_applied=true;
+            info_applied=true
             ;;
         *)
             warning "You won't be able to boot, if you don't update it!"
@@ -48,36 +48,34 @@ while [ "$info_applied" = false ];do
 done
 
 msg "Checking for incompatibilities..."
-ssd_or_hdd="$(cat /sys/block/"$(basename "$(readlink -f "$NIX_DISK")" | tr -d '\n')"/queue/rotational)";
+ssd_or_hdd="$(cat /sys/block/"$(basename "$(readlink -f "$NIX_DISK")" | tr -d '\n')"/queue/rotational)"
 case "$ssd_or_hdd" in
     0)
         msg2 "You seem to use a ssd."
-        trim_support=$(lsblk --bytes --json --discard | jq --arg name "$disk" '.blockdevices | .[] | select(.name == $name) | (.["disc-gran"] + .["disc-max"]) != 0');
+        trim_support=$(lsblk --bytes --json --discard | jq --arg name "$disk" '.blockdevices | .[] | select(.name == $name) | (.["disc-gran"] + .["disc-max"]) != 0')
         case $trim_support in
             "true")
-                msg2 "Yay, your ssd supports trim, go on and activate it";
+                msg2 "Yay, your ssd supports trim, go on and activate it"
                 ;;
             "false")
-                msg2 "Nay, your ssd doesn't support trim";
+                msg2 "Nay, your ssd doesn't support trim"
                 ;;
             *)
-                warning "Your ssd doesn't seem to exists, if this bothers you please open an issue.'";
+                warning "Your ssd doesn't seem to exists, if this bothers you please open an issue.'"
                 ;;
         esac
         ;;
     1)
-        msg2 "You seem to use a hdd there is nothing you have to do";
+        msg2 "You seem to use a hdd there is nothing you have to do"
         ;;
     *)
         warning "There is no indicator, which shows, which drive your are using.\n This means, that you have to check yourself, which optimizations you should activate."
         ;;
 esac
 
-
 case "$INSTALL_TO_SETUP" in
     "yes")
-        nix run "git+https://codeberg.org/soispha/nixos-config#setup" --experimental-features 'nix-command flakes';
-        ;;
-    *)
+        nix run "git+https://codeberg.org/soispha/nixos-config#setup" --experimental-features 'nix-command flakes'
         ;;
+    *) ;;
 esac
diff --git a/bootstrap/02_setup b/bootstrap/02_setup
index 68affe85..48109d43 100755
--- a/bootstrap/02_setup
+++ b/bootstrap/02_setup
@@ -17,8 +17,7 @@ chmod 700 /mnt/srv/home
 
 case "$SETUP_TO_CONFIG_SETUP" in
     "yes")
-        nix run "git+https://codeberg.org/soispha/nixos-config#config_setup" --experimental-features 'nix-command flakes';
-        ;;
-    *)
+        nix run "git+https://codeberg.org/soispha/nixos-config#config_setup" --experimental-features 'nix-command flakes'
         ;;
+    *) ;;
 esac
diff --git a/bootstrap/03_config_setup b/bootstrap/03_config_setup
index c3e7e07e..ec58877f 100755
--- a/bootstrap/03_config_setup
+++ b/bootstrap/03_config_setup
@@ -3,11 +3,9 @@
 # shellcheck source=/dev/null
 SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
 
-
 # clone packer.nvim to the needed dir, for the nvim install to work
 git clone --depth 1 https://github.com/wbthomason/packer.nvim /mnt/srv/home/soispha/.local/share/nvim/site/pack/packer/start/packer.nvim
 
 nixos-enter --command 'nvim -c "PackerSync" -c "qall" -u "/mnt/srv/home/soispha/.config/nvim/init.lua" --headless'
 
-
 # vim: ft=sh
diff --git a/bootstrap/99_ensure_config_variables b/bootstrap/99_ensure_config_variables
index 89961150..b2ca9792 100755
--- a/bootstrap/99_ensure_config_variables
+++ b/bootstrap/99_ensure_config_variables
@@ -3,117 +3,120 @@
 # shellcheck source=/dev/null
 SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
 
-if ! [ "$NIX_HOST" ]; then
-    msg "Select a host:"
-    _hosts=$(mktmp)
-    curl https://codeberg.org/soispha/nixos-config/raw/branch/prime/flake/nixosConfigurations/default.nix 2>/dev/null | awk -F '"' '/hosts = /{for (i=2;i<NF;i+=2) {print $i}}' > "$_hosts"
+if ! [ "$NIX_ENVIRONMENT_VARIABLES_SET" ]; then
+    if ! [ "$NIX_HOST" ]; then
+        msg "Select a host:"
+        _hosts=$(mktmp)
+        curl https://codeberg.org/soispha/nixos-config/raw/branch/prime/flake/nixosConfigurations/default.nix 2> /dev/null | awk -F '"' '/hosts = /{for (i=2;i<NF;i+=2) {print $i}}' > "$_hosts"
 
-    while ! grep "$host" "$_hosts" > /dev/null || [ "$(printf "%s" "$host" | wc -c)" -eq 0 ]; do
-        i=1
-        while read -r host_read; do
-            printf "%4s) %s \n" "$i" "$host_read"
-            i=$((i + 1))
-        done < "$_hosts"
-        printf "%4s) Exit\n" "q"
-        readp "Enter a option: " host
+        while ! grep "$host" "$_hosts" > /dev/null || [ "$(printf "%s" "$host" | wc -c)" -eq 0 ]; do
+            i=1
+            while read -r host_read; do
+                printf "%4s) %s \n" "$i" "$host_read"
+                i=$((i + 1))
+            done < "$_hosts"
+            printf "%4s) Exit\n" "q"
+            readp "Enter a option: " host
 
-        [ "$host" = "q" ] && exit 1
-        host=$(awk -v i="$host" '{if (NR==i) {print $0}}' "$_hosts")
-        if ! grep "$host" "$_hosts" > /dev/null || [ "$(printf "%s" "$host" | wc -c)" -eq 0 ]; then
-            warning "No host selected. Select a host to continue.\n"
-        fi
-    done
+            [ "$host" = "q" ] && exit 1
+            host=$(awk -v i="$host" '{if (NR==i) {print $0}}' "$_hosts")
+            if ! grep "$host" "$_hosts" > /dev/null || [ "$(printf "%s" "$host" | wc -c)" -eq 0 ]; then
+                warning "No host selected. Select a host to continue.\n"
+            fi
+        done
 
-    export NIX_HOST="$host"
-fi
-if ! [ "$NIX_DISK" ] && [ "$NIX_INSTALL" ]; then
-    available_disks="$(mktmp)"
-    lsblk -J | jq '.[] | map(.name) | [foreach .[] as $item ({item: null, index: -1}; {$item, index: (.index + 1)})]' > "$available_disks"
+        export NIX_HOST="$host"
+    fi
+    if ! [ "$NIX_DISK" ] && [ "$NIX_INSTALL" ]; then
+        available_disks="$(mktmp)"
+        lsblk -J | jq '.[] | map(.name) | [foreach .[] as $item ({item: null, index: -1}; {$item, index: (.index + 1)})]' > "$available_disks"
 
-    [ "$(jq '.[]' "$available_disks" | wc -l)" -eq 0 ] && die "No disks found"
-    msg "Select a disk to format:"
+        [ "$(jq '.[]' "$available_disks" | wc -l)" -eq 0 ] && die "No disks found"
+        msg "Select a disk to format:"
 
-    i=9999 # nobody will have so many disks attached
+        i=9999 # nobody will have so many disks attached
 
-    while ! jq -e --argjson i "$i" '.[$i]' "$available_disks" > /dev/null 2>&1; do
-        for _disk in $(jq -c '.[]' "$available_disks"); do
-            printf "%4s) %s \n" "$(echo "$_disk" | jq '.index')" "$(echo "$_disk" | jq '.item' | tr -d "\"")"
+        while ! jq -e --argjson i "$i" '.[$i]' "$available_disks" > /dev/null 2>&1; do
+            for _disk in $(jq -c '.[]' "$available_disks"); do
+                printf "%4s) %s \n" "$(echo "$_disk" | jq '.index')" "$(echo "$_disk" | jq '.item' | tr -d "\"")"
+            done
+            printf "%4s) Exit\n" "q"
+            readp "Enter a option: " _disk
+
+            if [ "$_disk" = "q" ]; then
+                exit 1
+            else
+                i="$_disk"
+            fi
+            if jq -e --argjson i "$i" 'nth($i)' "$available_disks" > /dev/null 2>&1; then
+                _disk=$(mktmp)
+                jq -e --argjson i "$i" 'nth($i)' "$available_disks" > "$_disk"
+            else
+                warning "No disk selected. Select a disk to continue.\n"
+            fi
         done
-        printf "%4s) Exit\n" "q"
-        readp "Enter a option: " _disk
 
-        if [ "$_disk" = "q" ]; then
-            exit 1
-        else
-            i="$_disk"
-        fi
-        if jq -e --argjson i "$i" 'nth($i)' "$available_disks" > /dev/null 2>&1; then
-            _disk=$(mktmp)
-            jq -e --argjson i "$i" 'nth($i)' "$available_disks" > "$_disk"
-        else
-            warning "No disk selected. Select a disk to continue.\n"
-        fi
-    done
+        warn "All data on disk $(jq '.item' "$_disk") will be deleted."
+        readp "Continue with this disk? [N/y]: " result
+        case "$result" in
+            [Yy])
+                msg "Great, continuing..."
+                _disk="$(jq '.item' "$_disk" | tr -d "\"")"
+                _disk_serial="$(udevadm info --query=all --name="$_disk" | grep ID_SERIAL= | awk 'BEGIN{FS="="}{print $2}')"
+                case "$_disk" in
+                    "nvme*")
+                        _nix_disk="nvme-$_disk_serial"
+                        ;;
+                    "sd*")
+                        _nix_disk="ata-$_disk_serial"
+                        ;;
+                    *)
+                        die "Disk with name '$_disk' and serial '$_disk_serial' not yet supported!"
+                        ;;
+                esac
+                export NIX_DISK="$_nix_disk"
+                ;;
+            *)
+                msg "Sure, keep your data"
+                exit 1
+                ;;
+        esac
+    fi
 
-    warn "All data on disk $(jq '.item' "$_disk") will be deleted."
-    readp "Continue with this disk? [N/y]: " result
-    case "$result" in
-        [Yy])
-            msg "Great, continuing..."
-            _disk="$(jq '.item' "$_disk" | tr -d "\"")"
-            _disk_serial="$(udevadm info --query=all --name="$_disk" | grep ID_SERIAL= | awk 'BEGIN{FS="="}{print $2}')";
-            case "$_disk" in
-                "nvme*")
-                    _nix_disk="nvme-$_disk_serial";
-                    ;;
-                "sd*")
-                    _nix_disk="ata-$_disk_serial";
-                    ;;
-                *)
-                    die "Disk with name '$_disk' and serial '$_disk_serial' not yet supported!"
-                    ;;
-            esac
-            export NIX_DISK="$_nix_disk"
-            ;;
-        *)
-            msg "Sure, keep your data"
-            exit 1
-            ;;
-    esac
-fi
-
-if ! [ "$ACTIVATE_TO_SETUP" ] && ! [ "$INSTALL" ]; then
-    readp "Do you want to continue with nixos-install after activation? [N/y]: " result
-    case $result in
-        [Yy])
-            export ACTIVATE_TO_SETUP=yes;
-            ;;
-        *)
-            export ACTIVATE_TO_SETUP=no;
-            ;;
-    esac
-fi
-if ! [ "$INSTALL_TO_SETUP" ] && [ "$INSTALL" ]; then
-    readp "Do you want to continue with nixos-install after disk formatting? [N/y]: " result
-    case $result in
-        [Yy])
-            export INSTALL_TO_SETUP=yes;
-            ;;
-        *)
-            export INSTALL_TO_SETUP=no;
-            ;;
-    esac
-fi
-if ! [ "$SETUP_TO_CONFIG_SETUP" ]; then
-    readp "Do you want to continue with the user configuration setup after setup? [N/y]: " result;
-    case $result in
-        [Yy])
-            export SETUP_TO_CONFIG_SETUP=yes;
-            ;;
-        *)
-            export SETUP_TO_CONFIG_SETUP=no;
-            ;;
-    esac
+    if ! [ "$ACTIVATE_TO_SETUP" ] && ! [ "$INSTALL" ]; then
+        readp "Do you want to continue with nixos-install after activation? [N/y]: " result
+        case $result in
+            [Yy])
+                export ACTIVATE_TO_SETUP=yes
+                ;;
+            *)
+                export ACTIVATE_TO_SETUP=no
+                ;;
+        esac
+    fi
+    if ! [ "$INSTALL_TO_SETUP" ] && [ "$INSTALL" ]; then
+        readp "Do you want to continue with nixos-install after disk formatting? [N/y]: " result
+        case $result in
+            [Yy])
+                export INSTALL_TO_SETUP=yes
+                ;;
+            *)
+                export INSTALL_TO_SETUP=no
+                ;;
+        esac
+    fi
+    if ! [ "$SETUP_TO_CONFIG_SETUP" ]; then
+        readp "Do you want to continue with the user configuration setup after setup? [N/y]: " result
+        case $result in
+            [Yy])
+                export SETUP_TO_CONFIG_SETUP=yes
+                ;;
+            *)
+                export SETUP_TO_CONFIG_SETUP=no
+                ;;
+        esac
+    fi
+    export NIX_ENVIRONMENT_VARIABLES_SET="set";
 fi
 
 # vim: ft=sh