ワンクリックで
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