Update readme

This commit is contained in:
sam
2026-01-09 20:23:15 +11:00
parent 16f10fa7c5
commit 3fa18ef434

201
README.md
View File

@@ -1,16 +1,189 @@
sam/nixos # sam/nixos (NixOS + Home Manager config)
Host: aspire-laptop This repo contains a reproducible NixOS + Home Manager setup for:
- NixOS 25.11 (flakes)
- Home Manager 25.11
- Plasma 6 + Hyprland via SDDM
- Btrfs root, zram swap
- zsh + kitty
- Neovim config in home/sam/nvim (lazy.nvim downloads plugins, pinned by lazy-lock.json)
Install: - Hostname: `aspire-laptop`
- Boot NixOS 25.11 Graphical ISO - NixOS: `25.11` (flakes)
- Run scripts/install-from-iso.sh (wipes disk) - Home Manager: `25.11`
- Clone this repo into /mnt/etc/nixos - Desktop: KDE Plasma 6 + Hyprland (selectable at login via SDDM)
- Replace hosts/aspire-laptop/hardware-configuration.nix with generated one - Filesystem: Btrfs (root + home subvolumes), zram swap
- nixos-install --flake /mnt/etc/nixos#aspire-laptop - Shell/terminal: zsh + kitty
- Neovim: config stored in this repo; plugins installed by `lazy.nvim`
---
## What you get after install
- A working KDE desktop (Plasma) and Hyprland (choose at login)
- Common CLI tools (git, curl, ripgrep, etc. as defined in NixOS config)
- SSH server enabled (password auth currently enabled)
- Home Manager manages user configuration (zsh, kitty config, Neovim config, etc.)
---
## Requirements
- NixOS 25.11 Graphical ISO USB
- Internet access during install (WiFi or Ethernet)
- Access to this repo (Gitea)
Optional but recommended:
- Disable Secure Boot in BIOS/UEFI (simplifies bootloader and drivers)
---
## Install (wipe disk)
### 1) Boot the NixOS ISO
- Boot from the USB.
- Connect to the internet from the live environment.
### 2) Clone this repo in the live environment
Open a terminal in the live ISO and run (adjust URL if needed):
```bash
git clone ssh://git@gitea.lab.audasmedia.com.au:2222/sam/nixos.git /tmp/nixos
```
### 3) Partition + mount (WIPES THE DISK)
This repo includes a helper script that partitions `/dev/sda` and mounts Btrfs
subvolumes at `/mnt`.
```bash
sudo bash /tmp/nixos/scripts/install-from-iso.sh
```
Read the prompt carefully: this will destroy all data on the target disk.
### 4) Put the repo at `/mnt/etc/nixos`
```bash
sudo rm -rf /mnt/etc/nixos
sudo mkdir -p /mnt/etc
sudo cp -a /tmp/nixos /mnt/etc/nixos
```
### 5) Copy the generated hardware config into the repo
`nixos-generate-config` creates a hardware file based on the laptop.
Copy it into the correct host folder:
```bash
sudo cp -f /mnt/etc/nixos/hardware-configuration.nix \
/mnt/etc/nixos/hosts/aspire-laptop/hardware-configuration.nix
```
### 6) Install NixOS using the flake
```bash
sudo nixos-install --flake /mnt/etc/nixos#aspire-laptop
```
When finished, reboot:
```bash
reboot
```
---
## First boot checklist
### 1) Set the user password (if not already set)
If needed, switch to a TTY with `Ctrl+Alt+F2`, log in as root, then:
```bash
passwd sam
```
### 2) Neovim plugin install (one-time per machine)
This setup uses `lazy.nvim` for plugins. After the system is installed and you
can log in, run:
```bash
nvim --headless "+Lazy! sync" "+qa"
```
Then launch Neovim normally:
```bash
nvim
```
### 3) Tailscale login (if enabled)
```bash
sudo tailscale up
```
---
## Updating / applying changes
### Apply config changes on the machine
From the installed system:
```bash
sudo nixos-rebuild switch --flake /etc/nixos#aspire-laptop
```
### Commit/push your changes
This repo is intended to be the single source of truth:
```bash
cd /etc/nixos
git status
git add -A
git commit -m "Describe change"
git push
```
If `git push` is rejected (remote ahead), use:
```bash
git pull --rebase origin main
git push
```
---
## Adding programs (basic)
There are two places to add packages:
### A) System-wide packages (available for all users)
Edit:
- `hosts/aspire-laptop/configuration.nix`
Add to:
- `environment.systemPackages = with pkgs; [ ... ];`
Then apply:
```bash
sudo nixos-rebuild switch --flake /etc/nixos#aspire-laptop
```
### B) User packages (only for `sam`)
Edit:
- `home/sam/home.nix`
Add to:
- `home.packages = with pkgs; [ ... ];`
Then apply the same rebuild command (Home Manager runs as a NixOS module):
```bash
sudo nixos-rebuild switch --flake /etc/nixos#aspire-laptop
```
---
## Useful docs
- NixOS Manual: https://nixos.org/manual/nixos/stable/
- Home Manager Manual: https://nix-community.github.io/home-manager/
- Flakes: https://nixos.wiki/wiki/Flakes
- Nixpkgs search (packages/options): https://search.nixos.org/
---