بنقرة واحدة
nix-deploy
Deploy NixOS/Darwin configuration to local or remote host using justfile commands
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Deploy NixOS/Darwin configuration to local or remote host using justfile commands
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Add an AeroSpace window rule to assign an app/window to a workspace (macOS only)
Create or update secrets using Infisical (preferred) or legacy agenix files
Re-encrypt all secrets after modifying .age files or changing host keys
Decrypt and view the contents of an .age secret file
Analyze project from URL/path and auto-detect build system to create Nix package
Add a new project to ruinage with DNS, Caddy, Gatus, and deployment
| name | nix-deploy |
| description | Deploy NixOS/Darwin configuration to local or remote host using justfile commands |
| compatibility | Requires nix, just |
| metadata | {"author":"ruinous.ai","version":"2.0","domain":"deployment"} |
| parameters | {"hostname":{"type":"select","description":"Target host to deploy to (defaults to current host if omitted)","required":false,"options":[{"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)"},{"label":"Enter other...","description":"Specify a different host"}]},"dry_run":{"type":"select","description":"Whether to perform a dry-build first","required":false,"default":"Yes","options":[{"label":"Yes (Recommended)","description":"Verify build before deploying"},{"label":"No","description":"Deploy directly"}]}} |
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