laptop-config/README.md
Scott Scoble 8155b9b64c Initial: Nix flake reproducing MacBook capabilities on x86_64 NixOS
- 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
2026-05-12 20:13:50 -07:00

2.2 KiB

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.