# sam/nixos (NixOS + Home Manager config) This repo contains a reproducible NixOS + Home Manager setup for: - 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/ ---