init by ai

This commit is contained in:
2026-04-07 02:34:03 +02:00
commit 0cec50d607
23 changed files with 2803 additions and 0 deletions

141
QUICKREF.md Normal file
View File

@@ -0,0 +1,141 @@
# Quick Reference
Common commands and patterns for your portable NixOS setup.
## Deployment
| Action | Command |
|--------|---------|
| **Rebuild NixOS** | `sudo nixos-rebuild switch --flake .#laptop` |
| **Rebuild Home** | `home-manager switch --flake .#myusername@linux` |
| **Both** | `sudo nixos-rebuild switch --flake .#laptop` + `home-manager switch --flake .#myusername@linux` |
| **Test (no apply)** | `sudo nixos-rebuild test --flake .#laptop` |
| **Activate Home (test)** | `home-manager build --flake .#myusername@linux` |
| **Check validity** | `nix flake check` |
| **Show outputs** | `nix flake show` |
| **Update inputs** | `nix flake update` |
| **Update one input** | `nix flake update nixpkgs` |
## Secrets
| Action | Command |
|--------|---------|
| **Generate age key** | `age-keygen -o -f ~/.config/sops/age/keys.txt` |
| **Get public key** | `age-keygen -y ~/.config/sops/age/keys.txt` |
| **Edit secrets** | `sops secrets/secrets.yaml` |
| **View secrets** | `sops -d secrets/secrets.yaml` |
| **Re-encrypt after .sops.yaml change** | `sops -e secrets/secrets.yaml > temp && mv temp secrets/secrets.yaml` |
## Development
| Action | Command |
|--------|---------|
| **Enter dev shell** | `nix develop` |
| **Format Nix files** | `nixpkgs-fmt .` |
| **Check for syntax errors** | `nix flake check` |
| **Evaluate flake** | `nix eval .#` |
| **Get derivation path** | `nix derivation show .#youruser@linux` |
## Utilities
| Action | Command |
|--------|---------|
| **List installed packages** | `nix-store -q --requisites /run/current-system` |
| **Find broken symlinks** | `nix store gc --print-roots` |
| **Clear old generations** | `sudo nix-collect-garbage -d` |
| **Clear user generations** | `nix-collect-garbage -d` |
| **Check disk usage** | `du -sh /nix` |
## Files to Edit for Common Tasks
| Task | File |
|------|------|
| **Change hostname** | `hosts/laptop/default.nix` (networking.hostName) |
| **Add system packages** | `nixos/default.nix` |
| **Add user packages** | `home/default.nix` |
| **Change shell** | `nixos/modules/shell.nix` (custom.shell.defaultShell) |
| **Enable languages** | `hosts/laptop/default.nix` (custom.development.languages) |
| **Add Git config** | `home/modules/git.nix` |
| **Customize Neovim** | `home/modules/editor.nix` |
| **Add SSH keys** | `secrets/secrets.yaml` (encrypted) |
| **Change username** | `flake.nix`, `home/default.nix`, `nixos/modules/system.nix` |
## Enable Features by Module
```bash
# Edit hosts/laptop/default.nix:
# Development tools
custom.development.enable = true;
custom.development.languages = [ "rust" "python" "nodejs" "go" "ruby" ];
# Shell setup
custom.shell.enable = true;
custom.shell.defaultShell = "zsh"; # or bash, fish
# System module
custom.system.enable = true;
```
## Debugging
| Problem | Solution |
|---------|----------|
| **Can't find package** | Check nixpkgs: `nix search nixpkgs mycpackage` |
| **Module import error** | Check imports in default.nix: `nix flake check` |
| **Config won't build** | Get detailed error: `nix flake show 2>&1 \| tail -50` |
| **Secrets not decrypting** | Verify: `sops -d secrets/secrets.yaml` |
| **Home-manager conflicts** | Backup old config: `mv ~/.bashrc ~/.bashrc.bak` |
| **Stuck rebuild** | Kill and retry: `sudo killall nixos-rebuild` |
## Git Workflow
```bash
# After making changes:
git add -A
git commit -m "Update: description"
git push
# On another machine:
git pull
sudo nixos-rebuild switch --flake .#laptop
```
## Multi-Machine Example
```bash
# Add new host
mkdir -p hosts/workstation
cp hosts/laptop/default.nix hosts/workstation/default.nix
# Add to flake.nix (copy laptop configuration block and update names)
# Deploy to new machine
sudo nixos-rebuild switch --flake .#workstation
```
## One-Liner Installers
```bash
# Fresh NixOS to existing machine
git clone <repo> ~/nix-config && cd ~/nix-config && sudo nixos-rebuild switch --flake .#laptop
# Home manager on non-NixOS
curl https://nixos.org/channels/nixos-unstable/latest-nixos-*-linux/default.nix && \
nix run home-manager -- init --switch --flake .#myusername@linux
# Update everything
nix flake update && sudo nixos-rebuild switch --flake .#laptop && \
home-manager switch --flake .#myusername@linux
```
## Tips
- ✅ Always commit `flake.lock` for reproducibility
- ✅ Use `lib.mkDefault` for overridable settings
- ✅ Keep secrets encrypted with sops
- ✅ Test with `test` before `switch`
- ✅ Use `--build-on-remote` for slower machines
- ✅ Check `flake check` before rebuilding
- ✅ Keep separate host configs for different machines
- ✅ Use `home-manager generations` to rollback if needed