Commit Graph

97 Commits

Author SHA1 Message Date
johno f026cb5e65 Fix nixpkgs-unstable import in overlay 2026-05-11 21:00:32 -07:00
johno c12ef9e01e Update stremio-linux-shell to use unstable for Rust 1.92+ 2026-05-11 20:57:29 -07:00
johno d74a8a4a39 Add stremio-linux-shell from master branch 2026-05-11 20:54:59 -07:00
johno 398c5fcc8a feat(kodi): replace stremio with stremio-linux-shell and add scale factor support
CI / check (push) Successful in 12m31s
CI / build-and-cache (push) Failing after 7m29s
CI / Build & Push OpenClaw Image (push) Successful in 41m26s
Migrate from Qt-based stremio to Rust/CEF-based stremio-linux-shell.
Add stremioScaleFactor option (uses --force-device-scale-factor) for
4K TV display scaling. Set to 2.0 on boxy and gym-box.
2026-05-11 19:47:18 -07:00
johno 590b5e71fa feat(openclaw): add runtime closure meta-package for Harmonia caching
Creates openclaw-runtime-closure as a symlinkJoin of all runtime dependencies (nodejs_22, kubectl, jq, git, emacs, tsx, tea, python3.withPackages pymupdf, qmd) that will be pushed to the Harmonia binary cache by CI and pulled into the PVC by the init container at pod startup.

This meta-package enables the thin Docker image architecture where:
- The Docker image stays small (~1.5GB vs 2.7GB) with only /app, nix, and basics
- Runtime deps are fetched from Harmonia at pod startup via nix copy --from
- CI push is fast (thin image) and runtime deps are cached separately

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-21 17:12:50 -07:00
johno 9904d1c11d fix: nix-deck infinite recursion + add custom-qmd to CI
CI / check (push) Successful in 2m56s
CI / build-and-cache (push) Successful in 4m37s
CI / Build & Push OpenClaw Image (push) Failing after 11m45s
CI / Deploy OpenClaw to Cluster (push) Has been skipped
- Add specialArgs to nix-deck (was missing nixpkgs-unstable, causing
  infinite recursion when roles/local-inference evaluated it)
- Move local-inference import out of roles/default.nix: its module-level
  disabledModules/imports conflict with nix-deck's unstable-based nixpkgs
- Import local-inference directly in zix790prors (the only machine that
  enables it)
- Add custom-qmd and custom-opencode to CI build-and-cache packages
2026-04-19 22:13:04 -07:00
johno e3348e3319 feat: add QMD v2.1.0 as Nix package, bake into openclaw image
CI / check (push) Failing after 1m41s
CI / build-and-cache (push) Has been skipped
CI / Build & Push OpenClaw Image (push) Has been skipped
CI / Deploy OpenClaw to Cluster (push) Has been skipped
- packages/qmd: buildNpmPackage with Node.js 22 (not Bun) to avoid
  native module ABI issues with better-sqlite3 and sqlite-vec
- Vendored package-lock.json (QMD ships bun.lock, not npm lockfile)
- packages/openclaw-image: adds qmd + tsx to image contents
- packages/default.nix: rec attrset so openclaw-image can inherit qmd
- flake.nix: expose custom-qmd package output for CI caching
2026-04-19 20:52:26 -07:00
johno 3faad15a02 feat(openclaw): add Nix-built Docker image with app extraction from upstream
Pure Nix buildLayeredImage that extracts /app from upstream ghcr.io/openclaw/openclaw
via manifest-aware Python script. Avoids fromImage which breaks Debian
dynamic linker by shadowing /lib -> usr/lib symlink.

Includes: nix, nodejs_22, kubectl, jq, curl, git, emacs, python3+pymupdf, tea.
Custom NSS with node user (UID 1000). Replicated docker-entrypoint.sh.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-19 16:38:04 -07:00
johno 5a82554884 feat(opencode): add oh-my-openagent plugin with omo config for ollama-cloud/glm-5.1
CI / check (push) Failing after 2m8s
CI / build-and-cache (push) Has been skipped
Configure oh-my-openagent (omo) plugin for multi-agent orchestration
using ollama-cloud and local llama-swap providers. Primary model is
ollama-cloud/glm-5.1 with fallback chains. Add runtime fallback,
background task concurrency limits, and disable incompatible agents
(hephaestus, multimodal-looker).
2026-04-17 13:43:08 -07:00
johno 10efafd92e feat(local-inference): replace ollama with llama-swap + llama.cpp on zix790prors
- Add local-inference NixOS role using llama-swap (from nixpkgs-unstable)
  with llama.cpp (CUDA-enabled, from nixpkgs-unstable)
- Serves Qwen3.6-35B-A3B via HuggingFace auto-download with --cpu-moe
- Add nixosSpecialArgs for nixpkgs-unstable module access
- Configure opencode with llama-local provider pointing to zix790prors:8080
- Update gptel from Ollama backend to OpenAI-compatible llama-swap backend
- Remove ollama service from zix790prors
2026-04-16 15:20:37 -07:00
johno 8ac79169d9 feat: add gym-box
CI / check (push) Successful in 2m0s
CI / build-and-cache (push) Has been cancelled
2026-04-10 16:43:33 -07:00
johno 962fd35a83 Fix nix flake check warnings and errors
CI / check (push) Successful in 3m38s
CI / build-and-cache (push) Failing after 1h26m28s
- Move nextcloud-talk-desktop to x86_64-linux-only block (fixes aarch64 eval error)
- Remove duplicate deps from plasma-bigscreen (auto-injected by mkKdeDerivation)
- Replace nixfmt-rfc-style with nixfmt (deprecated alias)
- Set programs.git.signing.format = null (adopt new default)
- Add meta.description to all flake apps
2026-04-08 13:09:41 -07:00
johno a823caf369 Remove beads/gastown/perles/dolt
CI / check (push) Failing after 12m14s
CI / build-and-cache (push) Has been cancelled
2026-04-08 11:47:11 -07:00
johno 785561367e Add opencode package and install via base role
CI / check (push) Successful in 2m50s
CI / build-and-cache (push) Failing after 8m7s
- Add packages/opencode with pre-built binaries from GitHub releases (v1.4.0)
- Support all 4 platforms (aarch64-darwin, x86_64-darwin, x86_64-linux, aarch64-linux)
- Add update-opencode flake app for automated version bumps
- Install opencode via home.roles.base so it's available on all machines
- Reformat flake.nix and packages with nixfmt
2026-04-08 11:33:40 -07:00
ash-bot 827da51214 ci: add patched nextcloud-talk-desktop to binary cache
CI / check (pull_request) Successful in 2m41s
CI / build-and-cache (pull_request) Has been skipped
Includes the Wayland screen sharing patch (from ash/talk-desktop-wayland-screenshare)
and adds custom-nextcloud-talk-desktop to CI build-and-cache pipeline.
2026-03-16 08:56:40 -07:00
ash-bot d2ebe7083c boxy: replace Kodi with Plasma Bigscreen
Add plasma-bigscreen role with package built from upstream master
(not yet in nixpkgs, tracking NixOS/nixpkgs#428077).

Changes:
- New role: roles/plasma-bigscreen/ (module + package derivation)
- boxy configuration: swap roles.kodi for roles.plasma-bigscreen
- Keeps all existing functionality: Jellyfin, Stremio, Firefox,
  KDE Connect, app-launcher-server, AVR volume control (kodi user)
- Autologins to plasma-bigscreen-wayland session instead of plasma

NOTE: First build will fail with a hash mismatch on the source
fetch — copy the correct sha256 from the error into package.nix.
Some dep attribute names may also need adjustment on first build.
2026-03-16 08:48:38 -07:00
johno a77352fd81 feat: add perles to CI binary cache
CI / check (push) Successful in 2m32s
CI / build-and-cache (push) Successful in 2m31s
Extract shared package definition, add to flake packages output
and CI workflow so perles gets built and cached by Harmonia.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:32:13 -07:00
johno-square 433b41590b Update flake inputs, deduplicate beads/gastown package definitions
CI / check (push) Successful in 3m39s
CI / build-and-cache (push) Has been cancelled
- Update beads and gastown flake inputs and vendorHashes
- Remove merged-upstream patches for gastown and beads
- Deduplicate beads/gastown build definitions in home role by using
  callPackage to reference shared packages/ definitions
- Pin dolt to v1.82.4 (gastown requires >= 1.82.4)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-09 15:30:08 -07:00
johno-square 8fd702cad0 Add pi-coding-agent package, simplify Go builds with unstable.buildGoModule
CI / build-and-cache (push) Has been cancelled
CI / check (push) Has been cancelled
- Add pi-coding-agent package (v0.55.4) with multi-platform support
- Replace custom Go 1.25.6 override with nixpkgs-unstable buildGoModule
  for beads and perles builds
- Update flake inputs: beads, nixpkgs-unstable, perles
- Update vendor hashes for beads and perles
- Add pi-coding-agent to development role
2026-03-04 11:32:50 -08:00
johno d4d7769e51 fix(zix790prors): set Sway output to 164.9Hz for AW3423DWF
CI / check (push) Failing after 38m14s
CI / build-and-cache (push) Has been cancelled
The monitor refresh rate was only configured via xrandr session commands,
which have no effect on Wayland/Sway sessions, leaving it at 60Hz.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 18:02:44 -08:00
johno-square c39f711662 chore: update beads 0.49.6→0.52.0 and gastown, make gastown a proper flake
CI / check (push) Successful in 6m4s
CI / build-and-cache (push) Successful in 8m20s
- beads: update to 0.52.0 (16af00d7), refresh vendorHash
- gastown: update to 35157d02, remove flake=false now that upstream has flake.nix
- gastown: add inputs.nixpkgs.follows and inputs.beads.follows to deduplicate deps
- Clean up stale comments

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-18 09:44:11 -08:00
mayor 1a57eb737c Allow insecure qtwebengine for stremio in CI
CI / build-and-cache (push) Has been cancelled
CI / check (push) Has been cancelled
qtwebengine-5.15.19 is marked insecure but stremio requires it.
Add to permittedInsecurePackages for the pkgsQt import.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 14:49:09 -08:00
mayor b6ae5e92b3 Add qt-pinned-stremio to CI cache
CI / check (push) Failing after 13m32s
CI / build-and-cache (push) Has been skipped
Stremio uses qt5webengine, so it benefits from the separate
nixpkgs-qt input to avoid rebuild churn.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 14:27:28 -08:00
mayor 3588fe97c6 Add nix-deck kernel to CI cache
CI / build-and-cache (push) Has been cancelled
CI / check (push) Has been cancelled
The Steam Deck (nix-deck) kernel from Jovian-NixOS is expensive to
build. Pre-building it in CI saves significant time on updates.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 14:26:03 -08:00
johno da18500660 fix(kodi): use qt-pinned for stremio to avoid qtwebengine rebuilds
- Add permittedInsecurePackages to qt-pinned config in flake.nix
- Use qt-pinned.stremio instead of pkgs.stremio
- Update warning message to reference nixpkgs-qt

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-12 22:35:44 -08:00
mayor 4b5fec04fe Add beads and gastown to CI cache, consolidate CI workflow
CI / check (push) Successful in 3m55s
CI / build-and-cache (push) Failing after 2m29s
- Add packages/beads and packages/gastown with shared definitions
- Expose custom-beads and custom-gastown in flake packages output
- Consolidate CI from matrix (8 parallel jobs) to single job with loop
- Saves ~12 minutes of redundant nix-setup time per run
- Uses ::group:: for collapsible log sections per package

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-12 21:40:21 -08:00
mayor d799bd2d32 fix: expose custom packages as flake outputs for CI caching
CI / build-and-cache (custom-app-launcher-server) (push) Has been cancelled
CI / build-and-cache (custom-claude-code) (push) Has been cancelled
CI / build-and-cache (custom-mcrcon-rbw) (push) Has been cancelled
CI / build-and-cache (custom-rclone-torbox-setup) (push) Has been cancelled
CI / build-and-cache (custom-tea-rbw) (push) Has been cancelled
CI / build-and-cache (qt-pinned-jellyfin-media-player) (push) Has been cancelled
CI / check (push) Has been cancelled
Add packages output with:
- custom-* packages from packages/
- qt-pinned-jellyfin-media-player

Update CI to use hyphenated names (flake attrs can't have dots)
2026-02-12 21:11:48 -08:00
johno-square 945864edbe chore: update flake inputs and claude-code to 2.1.32 2026-02-11 08:24:23 -08:00
johno 03f169284d feat(flake): add nixpkgs-qt input for qt5webengine packages
Add separate nixpkgs input for qt5webengine-dependent packages like
jellyfin-media-player. This input updates on a separate Renovate
schedule from main nixpkgs to avoid massive qt5webengine rebuilds
when updating other packages.

- Add nixpkgs-qt input pinned to nixos-25.11
- Create pkgs.qt-pinned overlay namespace

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 14:35:35 -08:00
johno-square 87f6d5c759 feat(deps): update beads to 0.49.1 with dolt server mode, claude-code to 2.1.30
CI / check (push) Successful in 5m17s
beads:
- Pin to commit 93965b4a (last before Go 1.25.6 requirement)
- Build locally with corrected vendorHash (upstream default.nix is stale)
- Enables dolt server mode support (gt-1mf.3)

claude-code: 2.1.19 → 2.1.30

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 14:56:24 -08:00
johno-square a851c2551c fix(deps): update gastown patch and pin beads to Go 1.24 compatible version
CI / check (push) Successful in 5m25s
- Update gastown-fix-agent-bead-address-title.patch line numbers (326→315)
  for current upstream gastown source
- Remove obsolete gastown patches (rig-prefix, copydir-symlinks) that are
  now handled upstream
- Pin beads to 55e733c (v0.47.2) which uses Go 1.24.0 - newer versions
  require Go 1.25.6 which isn't in nixpkgs-unstable yet
- Remove beads-search-query-optimization.patch as it targets newer code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 13:18:46 -08:00
johno-square 346c031278 Match darwin configuration name to actual hostname
CI / check (push) Successful in 3m33s
Use uppercase BLKFV4YF49KT7 so darwin-rebuild --flake ./ works without
explicitly specifying the configuration name.
2026-01-27 11:32:53 -08:00
johno-square 8e8b5f4304 chore(machines): remove tart-agent-sandbox config
CI / check (push) Successful in 5m44s
Pivoted to Docker container approach for agent sandboxing instead of
Tart VMs due to networking issues with Cloudflare WARP.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:54:33 -08:00
johno-square a46d11a770 feat(machines): add tart-agent-sandbox VM config
CI / check (push) Successful in 4m26s
NixOS configuration for running LLM agents in isolated Tart VMs on
Apple Silicon. Includes:
- Headless server setup with SSH access
- Agent user with passwordless sudo
- Docker support
- Dev tools for cloning large repos
- Git config optimized for large repositories

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 09:24:47 -08:00
johno-square d92e4b3ddf feat(development): add perles TUI for beads 2026-01-26 17:22:28 -08:00
johno-square a39416c9db chore: switch beads and gastown to upstream GitHub repos 2026-01-26 17:10:37 -08:00
johno c82358d586 gastown and beads: switch to git+https
CI / check (push) Successful in 6m19s
2026-01-25 12:07:59 -08:00
johno-square 933612da4c update beads and gastown 2026-01-23 17:10:06 -08:00
johno 2cdc15163c fix(flake): apply claude-code overlay to all platforms
CI / check (push) Failing after 2m17s
The custom claude-code overlay (for GCS-based builds) was only being
applied to darwinModules. Extract to shared customUnstableOverlays and
apply to nixosModules and nixosModulesUnstable as well.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:35:14 -08:00
johno 737f2b09e4 chore(flake): update gastown to gitea fork with timeout fix
CI / check (push) Failing after 4m16s
Point gastown input to local Gitea fork which includes:
- Increased ClaudeStartTimeout from 60s to 120s
- Fixes intermittent refinery/polecat startup timeouts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 10:34:01 -08:00
johno c258eafe34 fix: apply claude-code overlay to NixOS modules
CI / check (push) Successful in 4m11s
The custom claude-code package (from GCS) was only being applied to
darwinModules, causing NixOS systems to use the older version from
nixpkgs-unstable instead of the updated version from packages/claude-code.

Extract claudeCodeOverlay as a shared definition and apply it to all
module sets: nixosModules, nixosModulesUnstable, and darwinModules.

Executed-By: mayor
Role: mayor
2026-01-19 10:28:11 -08:00
johno 03d0b76f97 feat: switch gastown input to local Gitea fork
CI / check (push) Successful in 5m9s
Fork includes mayor startup protocol fix for escalation checking.
2026-01-19 08:58:23 -08:00
johno cc305af899 feat(dev): add gastown multi-agent workspace manager
- Add gastown flake input (non-flake, source only)
- Build gastown package using buildGoModule in development role
- Configure renovate for daily updates of gastown and beads
- Binary: gt (Gas Town CLI by Steve Yegge)
2026-01-17 13:14:12 -08:00
johno 4bb71d0b7e Remove wixos (WSL) configuration
CI / check (push) Successful in 3m0s
WSL is no longer used. This removes:
- machines/wixos/ directory and configuration.nix
- nixos-wsl input from flake.nix
- nixosConfigurations.wixos output
- References to wixos in AGENTS.md and .goosehints

Implements bead: nixos-configs-2mk
2026-01-13 18:02:36 -08:00
johno a14ff9be4d fix(flake): Remove duplicate home-manager imports from wixos and zix790prors
CI / check (pull_request) Successful in 5m36s
CI / check (push) Has been cancelled
The nixosModules list already includes inputs.home-manager.nixosModules.home-manager,
so these individual configuration imports were redundant.
2026-01-13 16:37:41 -08:00
johno bbcb13881f refactor(flake): Consolidate overlay configurations into shared functions
Extract duplicated overlay and home-manager configuration code into two
reusable factory functions:

- mkBaseOverlay: Creates the base overlay with unstable pkgs, custom
  packages, and bitwarden-desktop compatibility. Accepts optional
  unstableOverlays parameter for darwin-specific customizations.

- mkHomeManagerConfig: Creates home-manager configuration with shared
  settings (useGlobalPkgs, useUserPackages, doom-emacs module). Accepts
  sharedModules parameter for platform-specific modules like plasma-manager.

This reduces code duplication across nixosModules, nixosModulesUnstable,
and darwinModules, making the flake easier to maintain and extend.

Implements bead: nixos-configs-ek5
2026-01-10 13:15:57 -08:00
johno 79ff0b8aa4 feat: Move bootstrap/build-liveusb scripts to flake apps
- Move bootstrap.sh to scripts/ and add as flake app
- Move build-liveusb.sh to scripts/ and add as flake app
- Update usage comments to show nix run commands
- Improve build-liveusb.sh with better error handling (set -euo pipefail)
- Remove emojis from output messages for cleaner log output

Scripts can now be run consistently via:
  nix run .#bootstrap -- <hostname>
  nix run .#build-liveusb

Implements bead: nixos-configs-bli
2026-01-10 13:06:52 -08:00
johno 4fe531f87f feat(emacs): Add prebuilt Doom option using nix-doom-emacs-unstraightened
Implement pre-built Doom Emacs packages for the live USB image, eliminating
the need to run `doom sync` after first boot.

Changes:
- Add nix-doom-emacs-unstraightened flake input
- Add homeModule to all three module sets (nixos, unstable, darwin)
- Add `prebuiltDoom` option to emacs role (default: false)
- Enable prebuiltDoom for live-usb configuration
- Pin custom packages in packages.el for deterministic builds:
  - claude-code-ide, gptel-tool-library, beads

When prebuiltDoom=true, all Doom packages are compiled at nix build time
using emacs-overlay. The doom configuration is stored in the nix store
(read-only), and no `doom sync` is required at runtime.

This is ideal for:
- Live USB images
- Immutable/reproducible systems
- Offline deployments

Closes: nixos-configs-1wd
2026-01-10 12:33:40 -08:00
johno ff1fb245ac Add home-manager integration for john-endesktop server
Create home-server.nix with minimal development-focused configuration
enabling base, emacs, development, and tmux roles. Update flake.nix
to wire up home-manager for the johno user on the server.
2026-01-10 12:15:12 -08:00
johno 19ee298b71 Add beads Claude plugin installation via home-manager
- Add beadsRepo reference from flake input
- Add activation script to install beads as marketplace plugin
- Updates known_marketplaces.json and config.json declaratively
2026-01-08 19:21:58 -08:00