Nix flake reproducing MacBook software capabilities for x86_64 NixOS laptops
- pi coding agent (from sscoble/pi-mono Forgejo mirror) - qmd vault search (via bunx @tobilu/qmd) - zsh + oh-my-zsh + developer tooling - home-manager config for sscoble user - Forgejo Action to check pi version drift daily |
||
|---|---|---|
| .forgejo/workflows | ||
| home | ||
| modules | ||
| flake.nix | ||
| README.md | ||
Scobleclaw Laptop Config
Nix flake that reproduces MacBook software capabilities on an x86_64 NixOS laptop.
What it installs
| Tool | Purpose | Source |
|---|---|---|
| pi | Coding agent (TUI) | sscoble/pi-mono (Forgejo mirror of badlogic/pi-mono) |
| qmd | Vault search | @tobilu/qmd (npm, wrapped via bunx) |
| git | Version control | nixpkgs |
| nodejs | JavaScript runtime | nixpkgs |
| bun | Fast JS runtime + bundler | nixpkgs |
| zsh | Shell (+ oh-my-zsh, autosuggestions, syntax highlighting) | nixpkgs |
| python3 + uv | Python tooling | nixpkgs |
| docker | Containers | nixpkgs |
| tailscale | Mesh VPN | nixpkgs |
| ripgrep, fd, jq, bat, eza, delta | Modern CLI tools | nixpkgs |
| tmux | Terminal multiplexer | nixpkgs |
| nerd fonts | JetBrains Mono, Fira Code | nixpkgs |
First-time setup (new laptop)
# 1. Install NixOS (minimal ISO)
# 2. Clone this repo
git clone https://os.scoble.me/forgejo/sscoble/laptop-config.git ~/laptop-config
# 3. First build (this will fail — copy the npmDepsHash from error output)
nix build ~/laptop-config#pi-coding-agent
# 4. Edit flake.nix: set npmDepsHash to the value from step 3
# 5. Rebuild system
sudo nixos-rebuild switch --flake ~/laptop-config#laptop
# 6. Restore personal configs
# Copy from backup:
# ~/.pi/agent/SYSTEM.md
# ~/.pi/agent/models.json
# ~/.pi/agent/mcp.json
# ~/.pi/agent/settings.json
# ~/.ssh/id_ed25519
Updating pi
The pi-mono repo is mirrored from upstream and syncs every 24h.
# Force a mirror sync (on n97-mini)
ssh n97-mini 'sudo -u forgejo forgejo admin repo sync --config /var/lib/forgejo/custom/conf/app.ini sscoble/pi-mono'
Repo structure
laptop-config/
├── flake.nix # Main entry: overlay, nixosConfig, devShell
├── modules/
│ └── laptop.nix # NixOS system module (packages, shell, fonts, SSH)
├── home/
│ └── sscoble.nix # home-manager user config (git, tools, pi dirs)
└── README.md
Forgejo Actions
An action keeps pi up to date — when upstream badlogic/pi-mono releases a new tag, the Forgejo mirror picks it up automatically. A scheduled workflow in this repo checks for tag drift daily.