From cd62a67e85c1a791078f81f892bce5113be336b9 Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Sat, 16 Sep 2023 16:54:02 +0200 Subject: new install mini --- common.nix | 2 +- mini/hardware-configuration.nix | 14 +++--- mini/install.txt | 102 ++++++++++++++++++++++++++++++++++++++++ neko/install.txt | 4 ++ 4 files changed, 113 insertions(+), 9 deletions(-) create mode 100644 mini/install.txt diff --git a/common.nix b/common.nix index 5e0a92a..b242c1d 100644 --- a/common.nix +++ b/common.nix @@ -207,6 +207,7 @@ in chromium clamav clinfo + config.boot.kernelPackages.perf efibootmgr filelight firefox @@ -418,7 +419,6 @@ in krita libjxl libreoffice - linuxKernel.packages.linux_latest_libre.perf neochat nmap okteta diff --git a/mini/hardware-configuration.nix b/mini/hardware-configuration.nix index 648b234..ff2b0f9 100644 --- a/mini/hardware-configuration.nix +++ b/mini/hardware-configuration.nix @@ -20,24 +20,22 @@ }; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/90AD-64A8"; + { device = "/dev/disk/by-uuid/F404-531A"; fsType = "vfat"; }; - boot.initrd.luks.devices."crypt-disk1".device = "/dev/disk/by-uuid/2244e83d-eb7a-4e42-8632-9ba4586f240c"; - boot.initrd.luks.devices."crypt-disk1".allowDiscards = true; - boot.initrd.luks.devices."crypt-disk1".bypassWorkqueues = true; + boot.initrd.luks.devices."crypt-system".device = "/dev/disk/by-uuid/22c208e6-579b-4d34-8f83-83aa4a7ab1c3"; fileSystems."/nix" = - { device = "/dev/mapper/crypt-disk1"; + { device = "/dev/mapper/crypt-system"; fsType = "btrfs"; - options = [ "subvol=nix" "noatime" "compress=zstd" ]; + options = [ "subvol=nix" "noatime" "nodiratime" ]; }; fileSystems."/data" = - { device = "/dev/mapper/crypt-disk1"; + { device = "/dev/mapper/crypt-system"; fsType = "btrfs"; - options = [ "subvol=data" "noatime" "compress=zstd" ]; + options = [ "subvol=data" "noatime" "nodiratime" ]; }; fileSystems."/home" = diff --git a/mini/install.txt b/mini/install.txt new file mode 100644 index 0000000..b97ee60 --- /dev/null +++ b/mini/install.txt @@ -0,0 +1,102 @@ +# Defining some helper variables (these will be used in later code +# blocks as well, so make sure to use the same terminal session or +# redefine them later) +DISK=/dev/disk/by-id/nvme-CT4000P3PSSD8_2325E6E63746 +HOST=mini + +# ensure 4k sector size +nvme format --lbaf=1 --force $DISK +nvme id-ns -H $DISK + +sleep 5 + +# kill old data +sgdisk --zap-all $DISK +blkdiscard -v $DISK +wipefs -a $DISK +gdisk -l $DISK + +# create partitions +parted $DISK -- mklabel gpt +sgdisk -n 1:0:+1024M -c 1:"EFI System Partition" -t 1:EF00 $DISK +sgdisk -n 2:0:0 -c 2:"Linux" -t 2:8e00 $DISK +parted $DISK -- set 1 boot on + +sleep 5 + +# take a look +cat /proc/partitions + +# boot partition +mkfs.fat -F 32 -n EFIBOOT $DISK-part1 + +# create the crypto containers +cryptsetup luksFormat --sector-size 4096 --batch-mode --verify-passphrase $DISK-part2 + +sleep 5 + +# open them, set right options persistently +cryptsetup luksOpen --allow-discards --perf-no_read_workqueue --perf-no_write_workqueue --persistent $DISK-part2 crypt-system + +sleep 5 +lsblk --fs + +# create btrfs with fast & strong checksumming and fast mounting +mkfs.btrfs -f --csum xxhash --features block-group-tree /dev/mapper/crypt-system + +sleep 5 +btrfs filesystem show + +# create all the volumes +mount /dev/mapper/crypt-system /mnt +btrfs subvolume create /mnt/data +btrfs subvolume create /mnt/nix + +sleep 5 +btrfs subvolume list /mnt + +# umount again, we will only use explicit subvolumes +umount /mnt + +# prepare install +mount -t tmpfs none /mnt + +# Create directories to mount file systems on +mkdir -p /mnt/{data,nix,home,boot,root,etc/nixos} + +# mount the ESP +mount $DISK-part1 /mnt/boot + +# mount volumes +mount -o subvol=data,noatime,nodiratime /dev/mapper/crypt-system /mnt/data +mount -o subvol=nix,noatime,nodiratime /dev/mapper/crypt-system /mnt/nix + +# bind mount persistent stuff to data +mkdir -p /mnt/{data/home,data/root,data/nixos/$HOST} +mount --bind /mnt/data/home /mnt/home +mount --bind /mnt/data/root /mnt/root +mount --bind /mnt/data/nixos/$HOST /mnt/etc/nixos + +# take a look +mount + +# configure +nixos-generate-config --root /mnt + +# save /mnt/etc/nixos/hardware-configuration.nix /mnt/etc/nixos/configuration.nix + +cp /mnt/etc/nixos/hardware-configuration.nix /tmp +cp /mnt/etc/nixos/configuration.nix /tmp + +# copy data + +rsync --checksum -vaR --delete /data /mnt + +# install + +nixos-install --no-root-passwd --root /mnt + +# unmount all stuff + +umount -Rl /mnt +cryptsetup luksClose crypt-system diff --git a/neko/install.txt b/neko/install.txt index 755da88..419e442 100644 --- a/neko/install.txt +++ b/neko/install.txt @@ -96,6 +96,10 @@ nixos-install --no-root-passwd --root /mnt umount -Rl /mnt cryptsetup luksClose crypt-system +# +# after install tasks for extra file systems +# + # create projects disk DD=/dev/disk/by-id/nvme-Samsung_SSD_980_PRO_2TB_S69ENF0R846614L -- cgit v1.2.3