added steps to the installation script so if it is interrupted, you dont have to restart

This commit is contained in:
pagedmov
2024-10-18 07:00:42 -04:00
parent ca3c8a9b2e
commit d7db940262
4 changed files with 165 additions and 123 deletions

View File

@@ -14,12 +14,12 @@
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/91413e4e-538c-4266-8a4d-bf60ec83e7b9"; { device = "/dev/disk/by-partlabel/disk-main-root";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/nix" = fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/aad759e2-6c39-4350-89b9-07f2bc6eb3cc"; { device = "/dev/disk/by-partlabel/disk-main-ESP";
fsType = "ext4"; fsType = "ext4";
}; };

View File

@@ -35,7 +35,7 @@
content = { content = {
type = "filesystem"; type = "filesystem";
format = "ext4"; format = "ext4";
mountpoint = "/home"; mountpoint = "/nix";
}; };
}; };
root = { root = {

View File

@@ -1,7 +1,22 @@
#!/run/current-system/sw/bin/bash #!/run/current-system/sw/bin/bash
echo "Welcome. This script will install pagedMov's NixOS configuration flake onto your machine."
echo "If this script stops at any point, it will resume from the most recent major step when you call it again."
echo "Call the script with --reset to restart the installation process"
set -e set -e
trap 'echo "Aborting installation."; exit 1' INT trap 'echo "Aborting installation."; exit 1' INT
if [ "$1" = "--reset" ]; then
rm -rf /tmp/reset
fi
if [ ! -f /tmp/install_steps ]; then
echo "0" > /tmp/install_steps
fi
install_step=$(cat /tmp/install_steps)
step_1() {
# set up working directory # set up working directory
mkdir -p /tmp/install_pwd && cd /tmp/install_pwd mkdir -p /tmp/install_pwd && cd /tmp/install_pwd
rm -rf ./* rm -rf ./*
@@ -29,6 +44,7 @@ size=$((size-1))
root_size_default=$(echo "scale=0;$size * 0.10 / 1" | bc) root_size_default=$(echo "scale=0;$size * 0.10 / 1" | bc)
nix_size_default=$(echo "scale=0;$size * 0.35 / 1" | bc) nix_size_default=$(echo "scale=0;$size * 0.35 / 1" | bc)
echo
for part in "root" "nix"; do for part in "root" "nix"; do
echo "You have $size GB remaining to work with on this drive. How big do you want your $part partition?" echo "You have $size GB remaining to work with on this drive. How big do you want your $part partition?"
@@ -38,6 +54,7 @@ for part in "root" "nix"; do
echo "Default value is 35% of hard drive space ($nix_size_default GB)" echo "Default value is 35% of hard drive space ($nix_size_default GB)"
fi fi
echo "Give a positive integer or leave blank to use default value" echo "Give a positive integer or leave blank to use default value"
echo
deciding=true deciding=true
while $deciding; do while $deciding; do
@@ -79,10 +96,12 @@ for part in "root" "nix"; do
esac esac
done done
echo
echo "Final partition sizes:" echo "Final partition sizes:"
echo "root: $root_size GB" echo "root: $root_size GB"
echo "nix: $nix_size GB" echo "nix: $nix_size GB"
echo "home: $size GB" echo "home: $size GB"
echo
sleep 1 sleep 1
@@ -94,24 +113,28 @@ mount /dev/disk/by-partlabel/disk-main-root /mnt
mkdir -p /mnt/nix && mount /dev/disk/by-partlabel/disk-main-nix /mnt/nix mkdir -p /mnt/nix && mount /dev/disk/by-partlabel/disk-main-nix /mnt/nix
mkdir -p /mnt/boot && mount /dev/disk/by-partlabel/disk-main-ESP /mnt/boot mkdir -p /mnt/boot && mount /dev/disk/by-partlabel/disk-main-ESP /mnt/boot
mkdir -p /mnt/home && mount /dev/disk/by-partlabel/disk-main-home /mnt/home mkdir -p /mnt/home && mount /dev/disk/by-partlabel/disk-main-home /mnt/home
}
step_2() {
mkdir -p /mnt/etc mkdir -p /mnt/etc
cd /mnt/etc/ cd /mnt/etc/
[ -d /mnt/etc/nixos ] && rm -rf /mnt/etc/nixos if [ ! -d ./nixos ]; then
git clone https://github.com/pagedMov/pagedmov-nix-cfg.git ./nixos git clone https://github.com/pagedMov/pagedmov-nix-cfg.git ./nixos
echo
echo "Do you want to install the light or heavy configuration?" echo "Do you want to install the light or heavy configuration?"
echo "Light configuration does not include gaming or virtualization features; intended for laptops, etc." echo "Light configuration does not include gaming or virtualization features; intended for laptops, etc."
echo "Heavy config includes gaming and virtualization features; intended for performant desktop environments." echo "Heavy config includes gaming and virtualization features; intended for performant desktop environments."
echo
select config in "Heavy" "Light" "Quit"; do select config in "Heavy" "Light" "Quit"; do
case $config in case $config in
"Desktop") "Heavy")
echo "Installing heavy configuration \`Oganesson\`" echo "Installing heavy configuration \`Oganesson\`"
config="oganesson" config="oganesson"
sleep 0.5 sleep 0.5
break break
;; ;;
"Laptop") "Light")
echo "Installing light configuration \`Mercury\`" echo "Installing light configuration \`Mercury\`"
config="mercury" config="mercury"
sleep 0.5 sleep 0.5
@@ -128,14 +151,17 @@ select config in "Heavy" "Light" "Quit"; do
;; ;;
esac esac
done done
fi
nixos-install --root /mnt --flake /mnt/etc/nixos#"$config" --no-root-password nixos-install --root /mnt --flake /mnt/etc/nixos#"$config" --no-root-password
echo echo
echo "Preliminary installation successful!" echo "Preliminary installation successful!"
echo "Adapting config to your setup..." echo "Beginning secondary installation phase..."
echo echo
}
step_3() {
cp -r /mnt/etc/nixos /mnt/home/pagedmov/.sysflake cp -r /mnt/etc/nixos /mnt/home/pagedmov/.sysflake
rm -rf /mnt/etc/nixos rm -rf /mnt/etc/nixos
ln -s /mnt/home/pagedmov/.sysflake /etc/nixos ln -s /mnt/home/pagedmov/.sysflake /etc/nixos
@@ -150,3 +176,19 @@ echo "INSTALLATION COMPLETE ! !" | toilet -f 3d -w 120 | lolcat -a -s 180
echo "You can now reboot into your new system." echo "You can now reboot into your new system."
echo "The system configuration flake will be found in your home folder under .sysflake" echo "The system configuration flake will be found in your home folder under .sysflake"
echo "/etc/nixos is a symlink leading to the .sysflake folder" echo "/etc/nixos is a symlink leading to the .sysflake folder"
}
next_step() {
((install_step += 1))
echo $install_step > /tmp/install_steps
}
running=true
while $running; do
case $install_step in
0) step_1;next_step;;
1) step_2;next_step;;
2) step_3;next_step;;
3) step_4;next_step;;
esac
done

View File

@@ -14,23 +14,23 @@
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/91413e4e-538c-4266-8a4d-bf60ec83e7b9"; { device = "/dev/disk/by-uuid/a843b14e-5e50-408d-9c23-c691c0efe46c";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/nix" = fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/aad759e2-6c39-4350-89b9-07f2bc6eb3cc"; { device = "/dev/disk/by-uuid/fbf1f87a-5ed4-42bd-943d-67fae6e6537c";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/F529-2C16"; { device = "/dev/disk/by-uuid/8BFD-57A2";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [ "fmask=0077" "dmask=0077" ];
}; };
fileSystems."/home" = fileSystems."/home" =
{ device = "/dev/disk/by-uuid/7edc690b-7e30-49d7-afbe-78354d0f7497"; { device = "/dev/disk/by-uuid/1a3c99c8-5c61-4253-8812-16c5985489f0";
fsType = "ext4"; fsType = "ext4";
}; };