see TODO.md for my aspirations ## usage ### install note: I have not tested the following verbatim. It *will* erase the contents of /dev/sdX. Use with caution. 1. create usb with minimal NixOS iso 2. boot from usb 3. create partitions ```console $ #modern partition table $ #WARNING all data on /dev/sdX will be erased. Make sure it is your target $ parted /dev/sdX -- mklabel gpt $ #make root partition $ parted /dev/sdX -- mkpart ESP fat32 1MiB 512MiB $ parted /dev/sdX -- set 1 esp on $ #create store partition $ parted /dev/sdX -- mkpart nix btrfs 512MiB 100GiB $ #if your device is in english, use a period rather than a comma $ parted /dev/sdX -- mkpart root btrfs 100GiB 199,5GiB ``` 4. create filesystems ```console $ #make sure not to get your subvolumes mixed up $ #there should be 3, the first boot and the others 99,5GiB each $ fdisk -l $ #boot partition $ mkfs.fat -F 32 /dev/sdX1 $ #store partition $ mkfs.btrfs /dev/sdX2 $ #root partition $ mkfs.btrfs /dev/sdX3 $ #create root subvolume $ btrfs subvolume create /dev/sdX3/root ``` 5. mount filesystems ```console $ #note the uuid of your disks $ #they will be symlinked to something recognisable $ #don't get them mixed up $ ls -l /dev/disk/by-uuid total 0 lrwxrwxrwx 1 root root 15 Dez 30 11:31 0e586651-36f4-42b0-99b3-3f0704a894d6 -> ../../sdX2 lrwxrwxrwx 1 root root 15 Dez 30 11:31 16c93673-4f0e-4010-a7f4-7ccffb20edb7 -> ../../sdX3 lrwxrwxrwx 1 root root 15 Dez 30 11:31 F425-55BA -> ../../sdX1 $ #now mount the appropriate filesystems using your uuids; these are mine $ mount -o subvol-root /dev/disk/by-uuid/16c93673-4f0e-4010-a7f4-7ccffb20edb7 /mnt $ mkdir -p /mnt/{boot,nix} $ mount -o umask=077 /dev/disk/by-uuid/F425-55BA /mnt/boot $ mount /dev/disk/by-uuid/0e586651-36f4-42b0-99b3-3f0704a894d6 /mnt/nix ``` 6. prepare for installation ```console $ mkdir -p /mnt/etc/nixos $ nixos-generate-config --root /mnt $ cat /mnt/etc/nixos/hardware-configuration.nix $ #note the random flags and stuff in hardware-configuration.nix; you might $ #want to keep a copy around for the time being $ rm /mnt/etc/nixos/* $ #connect to the internet $ nmtui $ git clone https://git.mtgmonkey.net/andromeda/conf /mnt/etc/nixos $ cd /mnt/etc/nixos $ nix-shell -p tree --command tree . ├── configuration.nix ├── flake.lock ├── flake.nix ├── machines │   └── laptop │   ├── hardware-configuration.nix │   └── machine.nix ├── README.md └── users └── andromeda ├── home.nix └── stylix.nix 5 directories, 8 files $ #copy the `laptop` derivation and change all occurences of `laptop` with $ #`your-machine` in `flake.nix` $ cp machines/laptop machines/your-machine -r $ #modify `machines/your-machine/hardware-configuration.nix` by changing the $ #uuids to those of your drives $ #also copy the flags and stuff from `hardware-configuration.nix` generated $ #earlier $ #change the hostname in `machines/your-machine/machine.nix` to your liking. $ #If you want to pull request to my repo, `hostname` *must* be "your-machine" $ #if you want a different user, edit `machines/your-machine/machine.nix` to $ #reflect that. Create the file `users/your-user/home.nix` with your home $ #manager configuration. Add your user's `impermanence` information in $ #`configuration.nix` $ #make sure to give your user an initalPassword, otherwise you won't be able $ #to log in! Later, use a secrets scheme to have a real password $ git add -A ``` 7. install ```console $ cd /mnt/etc/nixos $ nix flake check $ #resolve any errors. You may have forgotten to add things to git, users, $ #machines... $ nixos-install --no-root-password --flake .#your-machine ``` 8. reboot ```console $ systemctl reboot ```