# Kris's Nix You should end up with: - NixOS using this repo from `/etc/nixos` - the automatically-created user `kris` - the default desktop config from this flake ## What This Repo Does This repo configures: - the default desktop machine - a separate server host DO NOT use `#server`, this build the server! ## Before You Start You need: - a NixOS installer - internet access - your disks partitioned and mounted - this repo _(`git@tangled.sh:kris.darkworld.download/nix`)_ ## Disk Layout This repo now uses `disko` for the default desktop host. The current declarative layout is: ```text disk = /dev/nvme0n1 ESP = 2G FAT32 mounted at /boot root disk = remaining space as btrfs subvols = /, /home, /nix ``` Mount options are declared in the disko config: - `/` with `compress=zstd` - `/home` with `compress=zstd` - `/nix` with `compress=zstd,noatime` If `/dev/nvme0n1` is not the disk you want to wipe and install to, edit [`hosts/default/disko.nix`](/home/ralsei/config/hosts/default/disko.nix) before running the installer. RAHHHHH IM NOT WRITING STUFF ANYMORE PLZ JUST TRY TO FIGURE OUT THE STEPS URSELF THX ## Fresh Install ### 1. Boot the NixOS installer Use the normal installer ISO. ### 2. Clone the repo in the installer From the live installer: ```bash nix-shell -p git rm -rf /etc/nixos git clone git@tangled.sh:kris.darkworld.download/nix /etc/nixos ``` ### 3. Let disko partition and mount the target disk Run: ```bash nix --extra-experimental-features 'nix-command flakes' run github:nix-community/disko -- --mode destroy,format,mount /etc/nixos#default ``` This will: - partition the disk - format it - create the btrfs subvolumes - mount everything under `/mnt` This is destructive. ### 4. Generate hardware config Run: ```bash nixos-generate-config --root /mnt ``` Then replace the generated target config with this repo while keeping the generated hardware file: ```bash cp /mnt/etc/nixos/hardware-configuration.nix /tmp/hardware-configuration.nix rm -rf /mnt/etc/nixos git clone git@tangled.sh:kris.darkworld.download/nix /mnt/etc/nixos cp /tmp/hardware-configuration.nix /mnt/etc/nixos/hardware-configuration.nix ``` ## Install The System ### 5. Run the install From the live environment: ```bash nixos-install --flake /mnt/etc/nixos#default ``` If Nix complains about flakes: ```bash nix --extra-experimental-features 'nix-command flakes' run nixpkgs#nixos-install -- --flake /mnt/etc/nixos#default ``` ### 6. Reboot After install finishes: ```bash reboot ``` ## First Boot ### 7. Log in as `kris` The config creates the main user for you during install. After boot, log into the installed system as: ```text kris ``` ### 8. Verify the repo location Make sure the config is really here: ```bash ls /etc/nixos ``` You should see: - `flake.nix` - `flake.lock` - `hosts` - `modules` ### 9. Rebuild once from the installed system Run: ```bash sudo nixos-rebuild switch --flake /etc/nixos#default ``` ## Manual Restore After Install Nix does not fully restore everything by itself. Some things still need to be copied back manually. ### 10. Recreate normal user folders Run: ```bash mkdir -p /home/kris/Pictures mkdir -p /home/kris/Pictures/Screenshots mkdir -p /home/kris/Pictures/Wallpapers mkdir -p /home/kris/Pictures/Deltarune mkdir -p /home/kris/Downloads mkdir -p /home/kris/Desktop mkdir -p /home/kris/Documents mkdir -p /home/kris/Projects ``` ### 11. Restore Quickshell project This config expects the Deltarune Quickshell project here: ```text /home/kris/Projects/DeltaruneQuickshell ``` If it is missing, restore or clone it there. ### 12. Restore non-declarative assets Copy back these if you want the setup to look correct: - `~/Pictures/Wallpapers` - `~/Pictures/Deltarune` - `~/.local/share/fonts` - `~/.local/share/icons` - `~/.local/share/deltarunequickshell` Important: - screenshots are optional - the desktop can boot without all of this, but it will not look right ### 13. Restore private assets and secrets If you use them, restore things like: - SSH keys - Git auth - cloudflare credentials - Bitwarden/KeePass databases - any private art or shell assets ## Useful Commands Rebuild: ```bash sudo nixos-rebuild switch --flake /etc/nixos#default ``` Update flake inputs: ```bash cd /etc/nixos nix flake update ``` Check current git state: ```bash git -C /etc/nixos status ``` ## If Something Is Broken ### Quickshell missing Make sure: - the package is installed by Nix - `/home/kris/Projects/DeltaruneQuickshell` exists ### Rice looks wrong You probably forgot to restore: - fonts - icons/cursors - wallpapers - Quickshell runtime state ### Build fails because of hardware config Make sure this file exists: ```text /etc/nixos/hardware-configuration.nix ``` ### Git push fails Your local SSH config may be cursed. If needed, bypass system SSH config: ```bash git -c core.sshCommand='ssh -F /dev/null' push ``` ## TL;DR If you want the shortest version: ```bash nix-shell -p git rm -rf /etc/nixos git clone git@tangled.sh:kris.darkworld.download/nix /etc/nixos nix --extra-experimental-features 'nix-command flakes' run github:nix-community/disko -- --mode destroy,format,mount /etc/nixos#default nixos-generate-config --root /mnt cp /mnt/etc/nixos/hardware-configuration.nix /tmp/hardware-configuration.nix rm -rf /mnt/etc/nixos git clone git@tangled.sh:kris.darkworld.download/nix /mnt/etc/nixos cp /tmp/hardware-configuration.nix /mnt/etc/nixos/hardware-configuration.nix nixos-install --flake /mnt/etc/nixos#default reboot ``` Then restore: - `/home/kris/Projects/DeltaruneQuickshell` - `~/.local/share/fonts` - `~/.local/share/icons` - your wallpapers and pictures