Deploy NixOS/Darwin configuration to local or remote host using justfile commands
Deploy NixOS or Darwin configuration to a local or remote host.
If parameters are missing from $ARGUMENTS, use mcp_question to gather them:
mcp_question({
questions: [
{
question: "Which host do you want to deploy to?",
header: "Host",
options: [
{ label: "Current host (default)", description: "Deploy to this machine" },
{ label: "chassis", description: "AI development workstation (NixOS)" },
{ label: "framework", description: "NixOS laptop" },
{ label: "monolith", description: "Infrastructure hub" },
{ label: "pilaster", description: "Container server" },
{ label: "zenith", description: "AI containers" },
{ label: "obelisk", description: "GPU compute" },
{ label: "jbookpro", description: "MacBook Pro (Darwin)" },
{ label: "jmacmini", description: "Mac Mini (Darwin)" }
]
},
{
question: "Perform dry-build verification first?",
header: "Dry Run",
options: [
{ label: "Yes (Recommended)", description: "Verify build before deploying" },
{ label: "No", description: "Deploy directly" }
]
}
]
})
Expected $ARGUMENTS format: [hostname] [--no-dry-run]
pilaster - deploy to pilaster with dry-buildmonolith --no-dry-run - deploy directly without verificationSmart check (auto-detects Darwin vs NixOS, local vs remote):
just check [hostname]
If hostname is omitted, uses current host.
Smart deploy (auto-detects local vs remote, Darwin vs Linux):
just deploy [hostname]
If hostname is omitted, uses current host.
After deployment completes:
# For remote hosts, SSH and check
ssh <hostname>.meskill.farm "systemctl status" | head -20
# For services, verify they're running
ssh <hostname>.meskill.farm "systemctl status docker-caddy"
| Host | Role | Platform | |------|------|----------| | monolith | Infrastructure hub, Cloudflared tunnels | NixOS | | pilaster | Container server, databases | NixOS | | zenith | AI containers, testing | NixOS | | obelisk | GPU compute, MicroVMs | NixOS |
| Host | Role | Platform | |------|------|----------| | chassis | AI development workstation | NixOS | | framework | NixOS laptop | NixOS | | jbookpro | MacBook Pro | Darwin | | jmacmini | Mac Mini | Darwin |
# 1. Verify the build
just check pilaster
# 2. Deploy
just deploy pilaster
# 3. Verify container is running
ssh pilaster.meskill.farm "docker ps | grep <container-name>"
# 1. Deploy host with Caddy changes
just deploy <hostname>
# 2. Caddy auto-reloads when Caddyfile changes (via systemd trigger)
# 1. Rekey secrets first
just rekey
# 2. Deploy to host
just deploy <hostname>
Use /deploy-container skill for the complete workflow, which includes:
:latest)just check [host] passes# Check the host configuration exists
ls hosts/<hostname>/configuration.nix
ls hosts/<hostname>/darwin-configuration.nix
# Verify SSH connectivity
ssh <hostname>.meskill.farm "hostname"
# Check if rebuild is stuck
ssh <hostname>.meskill.farm "journalctl -f"
# Darwin rebuilds need sudo
sudo --preserve-env=SSH_AUTH_SOCK darwin-rebuild switch --flake .#<hostname>
# Deploy to current host with verification
/nix-deploy
# Deploy to pilaster with verification
/nix-deploy pilaster
# Deploy to chassis without dry-run
/nix-deploy chassis --no-dry-run
# Deploy to monolith after container changes
/nix-deploy monolith
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer