1
0
Fork 0
mirror of https://github.com/tboerger/nixos-config synced 2024-06-09 04:46:03 +02:00

fix: better handling for partitioning

This commit is contained in:
Thomas Boerger 2022-02-20 18:30:31 +01:00
parent f7ff1dcec9
commit b379af2bac
No known key found for this signature in database
GPG Key ID: 09745AFF9D63C79B
5 changed files with 217 additions and 206 deletions

View File

@ -17,50 +17,12 @@ chmod u=rw,g=,o= $HOME/.ssh/id_*
## Prepare
## Midgard
### Bootstrap
```console
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/partitions)" midgard
nixos-install --root /mnt --flake github:tboerger/nixos-config\#midgard
```
### Updates
If the repository had been cloned you could just execute `make switch`,
otherwise there is still this long option to update the deployment:
```console
nixos-rebuild switch \
--flake github:tboerger/nixos-config\#midgard
```
## Utgard
### Bootstrap
```console
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/partitions)" utgard
nixos-install --root /mnt --flake github:tboerger/nixos-config\#utgard
```
### Updates
If the repository had been cloned you could just execute `make switch`,
otherwise there is still this long option to update the deployment:
```console
nixos-rebuild switch \
--flake github:tboerger/nixos-config\#utgard
```
## Asgard
### Bootstrap
```console
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/partitions)" asgard
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/asgard-partitions)"
nixos-install --root /mnt --flake github:tboerger/nixos-config\#asgard
```
@ -74,6 +36,25 @@ nixos-rebuild switch \
--flake github:tboerger/nixos-config\#asgard
```
## Utgard
### Bootstrap
```console
bash -c "$(curl -fsSL https://raw.githubusercontent.com/tboerger/nixos-config/master/scripts/utgard-partitions)"
nixos-install --root /mnt --flake github:tboerger/nixos-config\#utgard
```
### Updates
If the repository had been cloned you could just execute `make switch`,
otherwise there is still this long option to update the deployment:
```console
nixos-rebuild switch \
--flake github:tboerger/nixos-config\#utgard
```
## Security
If you find a security issue please contact thomas@webhippie.de first.

View File

@ -69,18 +69,6 @@
overlay = import ./overlays;
nixosConfigurations = {
midgard = {
system = "x86_64-linux";
inherit inputs;
modules = [
inputs.homemanager.nixosModules.home-manager
inputs.agenix.nixosModules.age
sharedNixosConfiguration
./machines/midgard
./profiles/thomas
];
};
utgard = {
system = "x86_64-linux";
inherit inputs;
@ -105,6 +93,18 @@
./profiles/thomas
];
};
midgard = {
system = "aarch64-linux";
inherit inputs;
modules = [
inputs.homemanager.nixosModules.home-manager
inputs.agenix.nixosModules.age
sharedNixosConfiguration
./machines/midgard
./profiles/thomas
];
};
};
midgard = self.nixosConfigurations.midgard.system;

99
scripts/asgard-partitions Executable file
View File

@ -0,0 +1,99 @@
#!/usr/bin/env bash
set -eo pipefail
if [ "${EUID}" -ne 0 ]; then
echo "Please run as root"
exit 1
fi
while true; do
read -p "Are you sure you want to wipe all partitions? " awnser
case ${awnser} in
[Yy]*)
break
;;
[Nn]*)
exit
;;
*)
echo "Please answer yes or no!"
;;
esac
done
echo "----> Drop existing partitions"
sgdisk --zap-all /dev/sda
sgdisk -og /dev/sda
sgdisk --zap-all /dev/sdb
sgdisk -og /dev/sdb
sgdisk --zap-all /dev/sdc
sgdisk -og /dev/sdc
sgdisk --zap-all /dev/sdd
sgdisk -og /dev/sdd
sgdisk --zap-all /dev/sde
sgdisk -og /dev/sde
echo "-----> Create boot partition"
sgdisk -n 0:0:+1G -t 0:ef00 -c 0:boot /dev/sde
echo "-----> Create root partition"
sgdisk -n 0:0:0 -t 0:8300 -c 0:data /dev/sde
echo "-----> Create data pv"
pvcreate /dev/disk/by-partlabel/data
echo "-----> Create data vg"
vgcreate system /dev/disk/by-partlabel/data
echo "-----> Create swap volume"
lvcreate --size 24G --name swap system
echo "-----> Create root volume"
lvcreate --size 50G --name root system
echo "-----> Create home volume"
lvcreate --size 50G --name home system
echo "-----> Enable swap partition"
mkswap -L swap /dev/system/swap
swapon /dev/system/swap
echo "-----> Create root filesystem"
mkfs.ext4 -L root /dev/system/root
echo "-----> Mount root filesystem"
mount -t ext4 /dev/system/root /mnt
echo "-----> Create home filesystem"
mkfs.ext4 -L home /dev/system/home
echo "-----> Mount home filesystem"
mkdir /mnt/home
mount -t ext4 /dev/system/home /mnt/home
echo "-----> Create boot filesystem"
mkfs.vfat -n boot /dev/disk/by-partlabel/boot
echo "-----> Wait for boot"
sleep 3
echo "-----> Mount boot filesystem"
mkdir /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
echo "-----> Create tank partition"
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sda
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdb
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdc
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdd
echo "-----> Create raid volume"
mdadm --create /dev/md0 --level=1 --raid-devices=4 /dev/sda1 /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=4 /dev/sdc1 /dev/sdd1
echo "-----> Create tank pv"
pvcreate /dev/md0 /dev/md1
echo "-----> Create tank vg"
vgcreate tank /dev/md0 /dev/md1

View File

@ -1,155 +0,0 @@
#!/usr/bin/env bash
set -eo pipefail
if [ "${#}" -ne 1 ]; then
echo "Missing host name!"
exit 1
fi
if [ "${EUID}" -ne 0 ]; then
echo "Please run as root"
exit 1
fi
while true; do
read -p "Are you sure you want to wipe all partitions? " awnser
case ${awnser} in
[Yy]*)
break
;;
[Nn]*)
exit
;;
*)
echo "Please answer yes or no!"
;;
esac
done
case "${1}" in
"utgard")
SWAP_SIZE=24G
ROOT_SIZE=50G
HOME_SIZE=50G
ROOT_DISK=/dev/sda
echo "----> Drop existing partitions"
sgdisk --zap-all /dev/sda
sgdisk -og /dev/sda
sgdisk --zap-all /dev/sdb
sgdisk -og /dev/sdb
;;
"asgard")
SWAP_SIZE=24G
ROOT_SIZE=50G
HOME_SIZE=50G
ROOT_DISK=/dev/sde
echo "----> Drop existing partitions"
sgdisk --zap-all /dev/sda
sgdisk -og /dev/sda
sgdisk --zap-all /dev/sdb
sgdisk -og /dev/sdb
sgdisk --zap-all /dev/sdc
sgdisk -og /dev/sdc
sgdisk --zap-all /dev/sdd
sgdisk -og /dev/sdd
sgdisk --zap-all /dev/sde
sgdisk -og /dev/sde
;;
*)
SWAP_SIZE=24G
ROOT_SIZE=50G
HOME_SIZE=50G
ROOT_DISK=/dev/sda
echo "----> Drop existing partitions"
sgdisk --zap-all /dev/sda
sgdisk -og /dev/sda
;;
esac
echo "-----> Create boot partition"
sgdisk -n 0:0:+1G -t 0:ef00 -c 0:boot ${ROOT_DISK}
echo "-----> Create root partition"
sgdisk -n 0:0:0 -t 0:8300 -c 0:data ${ROOT_DISK}
echo "-----> Create data pv"
pvcreate /dev/disk/by-partlabel/data
echo "-----> Create data vg"
vgcreate system /dev/disk/by-partlabel/data
echo "-----> Create swap volume"
lvcreate --size ${SWAP_SIZE} --name swap system
echo "-----> Create root volume"
lvcreate --size ${ROOT_SIZE} --name root system
echo "-----> Create home volume"
lvcreate --size ${HOME_SIZE} --name home system
echo "-----> Enable swap partition"
mkswap -L swap /dev/system/swap
swapon /dev/system/swap
echo "-----> Create root filesystem"
mkfs.ext4 -L root /dev/system/root
echo "-----> Mount root filesystem"
mount -t ext4 /dev/system/root /mnt
echo "-----> Create home filesystem"
mkfs.ext4 -L home /dev/system/home
echo "-----> Mount home filesystem"
mkdir /mnt/home
mount -t ext4 /dev/system/home /mnt/home
echo "-----> Create boot filesystem"
mkfs.vfat -n boot /dev/disk/by-partlabel/boot
echo "-----> Wait for boot"
sleep 3
echo "-----> Mount boot filesystem"
mkdir /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
case "${1}" in
"utgard")
echo "-----> Create tank partition"
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdb
echo "-----> Create tank pv"
pvcreate /dev/disk/by-partlabel/tank
echo "-----> Create tank vg"
vgcreate tank /dev/disk/by-partlabel/tank
;;
"asgard")
echo "-----> Create tank partition"
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sda
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdb
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdc
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdd
echo "-----> Create raid volume"
mdadm --create /dev/md0 --level=1 --raid-devices=4 /dev/sda1 /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=4 /dev/sdc1 /dev/sdd1
echo "-----> Create tank pv"
pvcreate /dev/md0 /dev/md1
echo "-----> Create tank vg"
vgcreate tank /dev/md0 /dev/md1
;;
esac

86
scripts/utgard-partitions Executable file
View File

@ -0,0 +1,86 @@
#!/usr/bin/env bash
set -eo pipefail
if [ "${EUID}" -ne 0 ]; then
echo "Please run as root"
exit 1
fi
while true; do
read -p "Are you sure you want to wipe all partitions? " awnser
case ${awnser} in
[Yy]*)
break
;;
[Nn]*)
exit
;;
*)
echo "Please answer yes or no!"
;;
esac
done
echo "----> Drop existing partitions"
sgdisk --zap-all /dev/sda
sgdisk -og /dev/sda
sgdisk --zap-all /dev/sdb
sgdisk -og /dev/sdb
echo "-----> Create boot partition"
sgdisk -n 0:0:+1G -t 0:ef00 -c 0:boot /dev/sda
echo "-----> Create root partition"
sgdisk -n 0:0:0 -t 0:8300 -c 0:data /dev/sda
echo "-----> Create data pv"
pvcreate /dev/disk/by-partlabel/data
echo "-----> Create data vg"
vgcreate system /dev/disk/by-partlabel/data
echo "-----> Create swap volume"
lvcreate --size 24G --name swap system
echo "-----> Create root volume"
lvcreate --size 50G --name root system
echo "-----> Create home volume"
lvcreate --size 50G --name home system
echo "-----> Enable swap partition"
mkswap -L swap /dev/system/swap
swapon /dev/system/swap
echo "-----> Create root filesystem"
mkfs.ext4 -L root /dev/system/root
echo "-----> Mount root filesystem"
mount -t ext4 /dev/system/root /mnt
echo "-----> Create home filesystem"
mkfs.ext4 -L home /dev/system/home
echo "-----> Mount home filesystem"
mkdir /mnt/home
mount -t ext4 /dev/system/home /mnt/home
echo "-----> Create boot filesystem"
mkfs.vfat -n boot /dev/disk/by-partlabel/boot
echo "-----> Wait for boot"
sleep 3
echo "-----> Mount boot filesystem"
mkdir /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
echo "-----> Create tank partition"
sgdisk -n 0:0:0 -t 0:8300 -c 0:tank /dev/sdb
echo "-----> Create tank pv"
pvcreate /dev/disk/by-partlabel/tank
echo "-----> Create tank vg"
vgcreate tank /dev/disk/by-partlabel/tank