From 8b1c25a57935349b595577ca9e5b816f31842c0c Mon Sep 17 00:00:00 2001 From: Snorre Ettrup Altschul Date: Tue, 14 Jan 2025 19:06:14 +0100 Subject: [PATCH] cool shit --- README.md | 168 ++---------------------------------------------------- 1 file changed, 4 insertions(+), 164 deletions(-) diff --git a/README.md b/README.md index 2ddb888..d95adbc 100755 --- a/README.md +++ b/README.md @@ -1,165 +1,5 @@ -# My nixos flake -This is my nixos configuration. +# If your nix config is so great why isn't there a nix config tw- +Second iteration of my nix config. Got tired of the old one not quite working how i liked on my desktop (mainly impermanence not working without disk encryption enaled) -# Installation -To install either run the following script, or follow the instructions. - -```sh -curl https://gitlab.com/SpoodyTheOne/nixos-config/-/raw/master/install.sh -o install.sh -sudo chmod +x install.sh -./install.sh -``` - -## Disko partitioning -### Finding your disk -run `lsblk` to find the name of your drive. In my case it was `/dev/nvme0n1` but other names it can have are `/dev/sd[a-z]` or `/dev/vd[a-z]` if you are installing on a virtual machine. - -### Acquire disko config -run -```sh -curl https://gitlab.com/SpoodyTheOne/nixos-config/-/raw/master/modules/disko/disko-luks.nix -o /tmp/disko.nix -``` -to download the latest version of my disko config - -### Run disko partitioning -This will run my disko config and partition your disk. - -> [!WARNING] -> This command will erase all data on the chosen disk. Make sure you partition the correct disk and that you've backed up anything important on it - -The command to run the config is -```sh -sudo nix --experimental-features "nix-command flakes" \ -run github:nix-community/disko -- \ ---mode disko /tmp/disko.nix \ ---arg device '""' \ ---arg swap-size '""' -``` - -> [!NOTE] -> The swap size can be any number suffixed with the standard K,M,G for gigabytes and such. - -During the installation you will be prompted for a password. This is the password used for unencrypting your disk every time you boot. -You will be prompted twice, once to lock it, and then again to unlock it. - -The device will now be mounted on `/mnt` and should contain the following structure - - /persist - - /boot - - /nix - -## Generate configuration -You need to generate the `hardware-configuration.nix` file for your system. -To do this run - -```sh -sudo nixos-generate-config --no-filesystems --root /mnt -``` - -This will generate a folder called `/mnt/etc/nixos` with the hardware configuration file in it. - -Next step is to move `hardware-configuration.nix` into `/tmp` and then clone the git repo to `/etc/nixos` - -```sh -nix-shell -p git # For the git command -sudo mv /mnt/etc/nixos/hardware-configuration.nix /tmp # Move configuration away -sudo rm -rf /mnt/etc/nixos # Nuke config folder so we can clone -sudo git clone https://gitlab.com/SpoodyTheOne/nixos-config.git /mnt/etc/nixos # Clone config -``` - -## Configuring config -Start by replacing the bootstrap hosts hardware-configuration with your own - -```sh -# Move hardware configuration -sudo mv /tmp/hardware-configuration.nix /mnt/etc/nixos/hosts/bootstrap -# go to /etc/nixos -cd /mnt/etc/nixos -# Add hardware configuration to git for nix to recognize it -sudo git add . -``` - -## Configure users -Go to `/mnt/etc/nixos/flake.nix` and change the config for the bootstrap host disko module to have the same settings you used for setting up your disk. - -```sh -sudo vim /mnt/etc/nixos/flake.nix -``` - -## Install -Now that everything is configured run - -```sh -# Copy configuration to permanent storage so its not nuked on reboot -sudo cp -r /mnt/etc/nixos /mnt/persist -sudo nixos-install --root /mnt --flake /mnt/etc/nixos#bootstrap -``` - -to install everything and then reboot. - -## After reboot -After the reboot you will be prompted for your disk password. After inputting it the system will boot as normal. - -Once booted log in using the user `bootstrap` and the password `1234`. - -Next step, modify the bootstrap host configuration to enable impermanence and change the user and password. Then rebuild and reboot - -```sh -cd /persist/nixos -sudo vim hosts/bootstrap/configuration.nix -``` - -in the config go to imports and uncomment this block - -```nix -# UNCOMMENT AFTER REBOOT -# Delete unwanted files -# (import ../../modules/disko/delete-on-boot.nix { -# inherit lib; -# persistExtraDirectories = [ ]; -# persistExtraFiles = [ ]; -# }) -``` - -Futher down in the file theres a line that says `users.users."bootstrap"`. Modify the string to your desired username and change the following lines in the user - -```sh -# Generate a password and place the output in a file -mkpasswd > /tmp/passwd -``` -Then in vim read the contenst of the password into the hashedPassword field -```vim -:read /tmp/passwd -``` - -The end result should look something like this -```diff -- initialPassword = "1234"; -+ hashedPassword = "$y$j9T$TK08gB8eSmQdGaS2Gfiex/$L2moQMRxYDEiuEeql/MidoQhFBAJC1qnOTx7ChpAOtC"'; -``` - -Move `/persist/nixos/` to `/etc/nixos` and rebuild. Then the installation will be done - -```sh -sudo mv -r /persist/nixos /etc -``` - -Then rebuild -```sh -sudo nix-rebuild switch --flake /persist/nixos#bootstrap -reboot -``` - -Don't worry about all the errors that occur during the rebuild. This only happens the first time after switching to impermanence - -# Post Installation -Once you've installed you're free to create a new host and modify it to your hearts content. You can base it off of my laptop host, it has a lot of nice things - -My config includes an alias for rebuilding the system called `nix-rebuild` for fast iterations - -# Update -In order to update the flake inputs simply run - -```sh -cd /etc/nixos -nix flake update -``` +## AAAAAa +dont use this. *yet*