aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-07-02 11:05:05 +0200
committerSoispha <soispha@vhack.eu>2023-07-10 16:44:17 +0200
commit9a76c7c7db5a1bf1952ff91dd757666903bf5236 (patch)
treeb52e00fe75d8f7fc99509097795b307b0bfcc4f3
parentFix(system/disks): Make ESP bootable (diff)
downloadnixos-config-9a76c7c7db5a1bf1952ff91dd757666903bf5236.zip
Fix(bootstrap): Finished scripts
Diffstat (limited to '')
-rwxr-xr-xbootstrap/01_activate2
-rwxr-xr-xbootstrap/01_install33
-rwxr-xr-xbootstrap/02_setup29
-rwxr-xr-xbootstrap/03_config_setup3
-rwxr-xr-xbootstrap/99_ensure_config_variables41
-rw-r--r--bootstrap/default.nix21
6 files changed, 77 insertions, 52 deletions
diff --git a/bootstrap/01_activate b/bootstrap/01_activate
index b5195d3c..b46e9145 100755
--- a/bootstrap/01_activate
+++ b/bootstrap/01_activate
@@ -5,7 +5,7 @@ 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
+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"
diff --git a/bootstrap/01_install b/bootstrap/01_install
index 5a3acc2d..2c8fa108 100755
--- a/bootstrap/01_install
+++ b/bootstrap/01_install
@@ -5,8 +5,24 @@ SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
INSTALL=y . %SCRIPT_ENSURE_CONFIG_VARIABLES
-msg "started creating filesystem..."
-nix run github:nix-community/disko -- --flake "git+https://codeberg.org/soispha/nixos-config#$NIX_HOST" --mode disko
+msg "Important information:"
+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
+ readp "Have you updated your chosen host with the choose disk id? [N/y]: " result
+ case $result in
+ [Yy])
+ info_applied=true;
+ ;;
+ *)
+ warning "You won't be able to boot, if you don't update it!"
+ ;;
+ esac
+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';
msg "Finished mounting and generating btrfs subvolumes"
msg "Creating swapfile..."
@@ -16,8 +32,6 @@ 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 "Root-disk UUID is: $(lsblk -no UUID -T $DISK_ROOT)";
-msg2 "EFI-disk UUID is: $(lsblk -no UUID -T $DISK_EFI)";
warning "This information needs to be entered in the host configuration BEFORE rebuilding it. Otherwise the system won't boot!"
info_applied=false;
@@ -34,7 +48,7 @@ while [ "$info_applied" = false ];do
done
msg "Checking for incompatibilities..."
-ssd_or_hdd=$(cat /sys/block/$disk/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."
@@ -44,7 +58,7 @@ case "$ssd_or_hdd" in
msg2 "Yay, your ssd supports trim, go on and activate it";
;;
"false")
- msg2 "Nay, your ssd doesn't support trim, go on";
+ msg2 "Nay, your ssd doesn't support trim";
;;
*)
warning "Your ssd doesn't seem to exists, if this bothers you please open an issue.'";
@@ -60,13 +74,10 @@ case "$ssd_or_hdd" in
esac
-readp "Do you want to continue with nixos-install? [N/y]: " result
-case $result in
- [Yy])
+case "$INSTALL_TO_SETUP" in
+ "yes")
nix run "git+https://codeberg.org/soispha/nixos-config#setup" --experimental-features 'nix-command flakes';
;;
*)
- msg "Sure, do it yourself"
- exit 1
;;
esac
diff --git a/bootstrap/02_setup b/bootstrap/02_setup
index a9e534ab..68affe85 100755
--- a/bootstrap/02_setup
+++ b/bootstrap/02_setup
@@ -2,28 +2,10 @@
# shellcheck source=/dev/null
SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
-msg "Select a host-config:"
-hosts=$(mktmp);
-host="";
-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";
+. %SCRIPT_ENSURE_CONFIG_VARIABLES
-while ! grep "$host" "$hosts" > /dev/null || [ "$(printf "%s" "$host" | wc -c)" -eq 0 ]; do
- i=1;
- while read -r ho ; do
- printf "%4s) %s \n" "$i" "$ho";
- 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
-nixos-install --flake git+https://codeberg.org/soispha/nixos-config#${host} --no-root-passwd
+nixos-install --flake git+https://codeberg.org/soispha/nixos-config#"$NIX_HOST" --no-root-passwd
# clone the git config
git clone https://codeberg.org/soispha/nixos-config.git /mnt/srv/etc/nixos
@@ -33,13 +15,10 @@ mkdir --parents /mnt/srv/home
chown 1000:100 --recursive /mnt/srv/home
chmod 700 /mnt/srv/home
-readp "Do you want to continue with the user configuration setup?[N/y]: " result;
-case "$result" in
- [yY])
+case "$SETUP_TO_CONFIG_SETUP" in
+ "yes")
nix run "git+https://codeberg.org/soispha/nixos-config#config_setup" --experimental-features 'nix-command flakes';
;;
*)
- msg "Well, if you want to do everything yourself..."
- exit 1
;;
esac
diff --git a/bootstrap/03_config_setup b/bootstrap/03_config_setup
index 577cb8eb..c3e7e07e 100755
--- a/bootstrap/03_config_setup
+++ b/bootstrap/03_config_setup
@@ -7,6 +7,7 @@ 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
-nvim -c 'PackerSync' -c 'qall' -u '/mnt/srv/home/soispha/.config/nvim/init.lua' --headless
+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 6758b221..89961150 100755
--- a/bootstrap/99_ensure_config_variables
+++ b/bootstrap/99_ensure_config_variables
@@ -1,13 +1,12 @@
#! /usr/bin/env dash
# shellcheck source=/dev/null
-#SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
-SHELL_LIBRARY_VERSION="1.1.4" . /nix/store/m5vww39n11768whvhww00zrgkd3ry0q9-shell_library-v1.1.4/include/lib.sh
+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"
+ 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
@@ -62,7 +61,19 @@ if ! [ "$NIX_DISK" ] && [ "$NIX_INSTALL" ]; then
[Yy])
msg "Great, continuing..."
_disk="$(jq '.item' "$_disk" | tr -d "\"")"
- export NIX_DISK="$_disk"
+ _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"
@@ -82,5 +93,27 @@ if ! [ "$ACTIVATE_TO_SETUP" ] && ! [ "$INSTALL" ]; then
;;
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
# vim: ft=sh
diff --git a/bootstrap/default.nix b/bootstrap/default.nix
index 60c72e6a..f21fabe3 100644
--- a/bootstrap/default.nix
+++ b/bootstrap/default.nix
@@ -3,34 +3,35 @@
sysLib,
...
}: let
+ replacementStrings = {SCRIPT_ENSURE_CONFIG_VARIABLES = "${ensure_config_variables}/bin/ensure_config_variables";};
activate = sysLib.writeShellScriptWithLibrary {
dependencies = builtins.attrValues {inherit (pkgs) jq gawk curl coreutils libuuid nix git;};
name = "activate";
- src = ./01_activate.sh;
- replacementStrings = {SCRIPT_ENSURE_CONFIG_VARIABLES = "${ensure_config_variables}";};
+ src = ./01_activate;
+ inherit replacementStrings;
};
install = sysLib.writeShellScriptWithLibrary {
dependencies = builtins.attrValues {inherit (pkgs) jq dash curl gawk btrfs-progs coreutils libuuid gptfdisk dosfstools toybox nix git;};
name = "install";
- src = ./01_install.sh;
- replacementStrings = {SCRIPT_ENSURE_CONFIG_VARIABLES = "${ensure_config_variables}";};
+ src = ./01_install;
+ inherit replacementStrings;
};
setup = sysLib.writeShellScriptWithLibrary {
dependencies = builtins.attrValues {inherit (pkgs) dash gawk curl git nix gnugrep nixos-install-tools coreutils libuuid;};
name = "setup";
- src = ./02_setup.sh;
- replacementStrings = {SCRIPT_ENSURE_CONFIG_VARIABLES = "${ensure_config_variables}";};
+ src = ./02_setup;
+ inherit replacementStrings;
};
config_setup = sysLib.writeShellScriptWithLibrary {
dependencies = builtins.attrValues {inherit (pkgs) git neovim;};
name = "config_setup";
- src = ./03_config_setup.sh;
- replacementStrings = {SCRIPT_ENSURE_CONFIG_VARIABLES = "${ensure_config_variables}";};
+ src = ./03_config_setup;
+ inherit replacementStrings;
};
ensure_config_variables = sysLib.writeShellScriptWithLibrary {
- dependencies = builtins.attrValues {inherit (pkgs) jq dash;};
+ dependencies = builtins.attrValues {inherit (pkgs) jq dash gnugrep curl;};
name = "ensure_config_variables";
- src = ./99_ensure_config_variables.sh;
+ src = ./99_ensure_config_variables;
};
output = {inherit activate install setup config_setup ensure_config_variables;};
in