aboutsummaryrefslogtreecommitdiffstats
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.zip
Fix(bootstrap): Only set environment variables once
Diffstat (limited to '')
-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