Update readme
This commit is contained in:
201
README.md
201
README.md
@@ -1,16 +1,189 @@
|
||||
sam/nixos
|
||||
# sam/nixos (NixOS + Home Manager config)
|
||||
|
||||
Host: aspire-laptop
|
||||
- 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)
|
||||
This repo contains a reproducible NixOS + Home Manager setup for:
|
||||
|
||||
Install:
|
||||
- Boot NixOS 25.11 Graphical ISO
|
||||
- Run scripts/install-from-iso.sh (wipes disk)
|
||||
- Clone this repo into /mnt/etc/nixos
|
||||
- Replace hosts/aspire-laptop/hardware-configuration.nix with generated one
|
||||
- nixos-install --flake /mnt/etc/nixos#aspire-laptop
|
||||
- Hostname: `aspire-laptop`
|
||||
- NixOS: `25.11` (flakes)
|
||||
- Home Manager: `25.11`
|
||||
- Desktop: KDE Plasma 6 + Hyprland (selectable at login via SDDM)
|
||||
- Filesystem: Btrfs (root + home subvolumes), zram swap
|
||||
- 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 (Wi‑Fi 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/
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user