35 Commits

Author SHA1 Message Date
Oleks f8053537a9 feat(antigravity): update to v2.0 split; expose ide, ide-no-fhs, cli; add all to CI warming
ci/woodpecker/push/amd64 Pipeline failed
ci/woodpecker/push/arm64 Pipeline was canceled
2026-06-05 12:34:25 +03:00
Oleks 55594fd632 refactor(s390x): export rustc-symlink overlay + add formatter; refresh pins
Lift the s390x rustc symlink_file patch overlay into overlays.s390xRustcSymlink
so nixos-ci consumes one definition (patch travels with it) instead of
duplicating it. Add nixfmt-rfc-style formatter. Refresh fleet-pins + parity
inputs to HEAD so the lock collapses to a single nixpkgs (1c3fe55).
2026-06-04 22:49:48 +03:00
Oleks b797aefb28 refactor(ci): retrofit onto parity-lib mkAtticClosurePublish (#200)
ci/woodpecker/push/amd64 Pipeline failed
ci/woodpecker/push/arm64 Pipeline was successful
Replace the bespoke ci/publish.py attic-push logic with parity-lib's
mkAtticClosurePublish builder (attic-closure archetype, cluster#104,
emmett#44). Adds the parity input (locked at d265a79) and wires the
per-arch package closures through builders.mkAtticClosurePublish, with
the endpoint (nix-cache-upload.oleks.space) and passEntry
(infra/attic/ci_token) overridden so the attic push is byte-for-byte the
pre-parity behaviour.

.woodpecker/{amd64,arm64}.yaml thinned to PUBLISH=1 nix run .#publish /
.#publish-aarch64-linux so CI and a local run share one audited impl.
Dead ci/publish.py + ci/build.py removed.

pipeline-doctor: 9 passed / 0 failed / 0 warned.
2026-06-03 10:58:06 +03:00
Oleks 0fd4cfe83d style: auto-format from pre-push hooks
ci/woodpecker/push/amd64 Pipeline failed
ci/woodpecker/push/arm64 Pipeline failed
2026-06-02 09:22:45 +03:00
Oleks 9d80f47625 ci: local-pipeline parity via stage/publish flake apps (cluster#192, emmett#44)
attic-closure archetype: no parity-lib builder exists for attic pushes, so
wrap the existing per-arch package build in ci/publish.py (woodpecker-peek
pattern) and expose `nix run .#{stage,publish}-amd64` + `.#publish`.

Two-halves rule: STAGE nix-builds every package in the arch list into the
local store (emmett-buildable); PUBLISH additionally attic-pushes each
closure. Local runs DRY-RUN unless --push/PUBLISH=1; CI sets PUBLISH=1.

The .woodpecker/{amd64,arm64}.yaml now call the same ci/publish.py so CI
and local runs can't drift. arm64 stays node-bound (no emmett cross path),
so it has no local-parity app. ci/build.py becomes a forwarding shim.
2026-06-02 09:22:39 +03:00
Oleks 26bdad6d1b Wire oleks/mcp-chrome into flake-hub
ci/woodpecker/push/amd64 Pipeline failed
ci/woodpecker/push/arm64 Pipeline was canceled
Adds mcp-chrome as a flake input (mirroring the woodpecker-peek pattern)
and re-exposes two packages: mcp-chrome-wasm-simd (proven green, ~22 s)
and mcp-chrome-extension (KNOWN-BROKEN under nix-daemon; exposed for
local builds but kept out of the CI matrix to avoid red pipelines).

CI warms attic with mcp-chrome-wasm-simd on x86_64-linux and aarch64-linux
only; s390x cross and Darwin are out of scope.

Closes oleks/mcp-chrome#5.
2026-05-27 10:15:36 +03:00
Oleks ac58ade9da add woodpecker-peek input + cache to attic via CI
ci/woodpecker/push/amd64 Pipeline was canceled
ci/woodpecker/push/arm64 Pipeline was canceled
Re-exposes oleks/woodpecker-peek as packages.<sys>.woodpecker-peek for
x86_64-linux and aarch64-linux, and adds it to ci/build.py so the
amd64/arm64 workflows push the closure to attic-infra-cache-k3s-1.
Consumers (emmett) then set services.woodpecker-peek.package = pkgs.woodpecker-peek
and pull the cached binary instead of rebuilding.
2026-05-24 18:16:23 +03:00
Oleks b38558cdcf added stalewood
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline was successful
2026-05-22 23:16:19 +03:00
Oleks ca88d13535 nix-deps: re-expose github:manelinux/nix-deps through the hub
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline was successful
Adds nix-deps as an input following our nixpkgs and re-exports its
package via mkPackages (gated to native x86_64/aarch64, since its
flake only emits eachDefaultSystem and would break the s390x cross).

Also adds .gitignore for build result symlinks.
2026-05-19 16:32:05 +03:00
Oleks 7d58ed23a4 metamcp: package v2.4.22 as a NixOS-deployable service
Single-derivation pnpm/Turbo monorepo build producing:
  - metamcp           full orchestrator (waits for PG, runs drizzle
                      migrations, launches backend :12009 + frontend :12008)
  - metamcp-backend   bare backend launcher
  - metamcp-frontend  Next.js standalone server.js launcher

Notes:
  - Upstream pins packageManager: pnpm@9.0.0; rewrite to match the nixpkgs
    pnpm (Turbo requires the field but won't fight a matching version).
  - Frontend uses next.config 'output: standalone'; we copy .next/static
    and public/ into the standalone tree since Next doesn't.
  - HOSTNAME defaults to 0.0.0.0 (override with METAMCP_HOSTNAME) — Next
    standalone otherwise inherits the system hostname and is unreachable
    on 127.0.0.1.
2026-05-15 13:02:47 +03:00
Oleks ef014a9116 chore: rename gitea-projects-api → gitea-local-fork
The fork tracked by this derivation is no longer a single-feature
branch ("feat/projects-api") but the integration tip of Oleks's
local gitea fork ($HOME/projects/gitea, branch oleks/main), carrying
upstream/main + PR #37518 Projects REST API + a CI gate + fork-local
commits. Reflect the broader scope in the package and attribute name,
and document the local fork path + branch in the derivation header.
2026-05-13 13:39:39 +03:00
Oleks c462cee781 gitea-projects-api: package fork carrying upstream PR #37518
Builds oleks/gitea feat/projects-api (Gitea 1.27.0-dev + Projects REST API)
as `nix build .#gitea-projects-api`. Exposes `out` (binary) and `data`
(templates, options, frontend bundle, locale files) matching the layout
nixpkgs' `services.gitea` module expects.

Notes:
- Pins Go 1.26.3 (built from upstream src) because the fork's go.mod
  requires it, while pinned nixpkgs only has 1.26.0.
- Patches package.json to drop engines.pnpm before fetchPnpmDeps runs:
  gitea wants pnpm >= 11, but nixpkgs only packages pnpm 10. The
  pnpm-lock.yaml is v9 (forward-compatible) so pnpm 10 produces the
  same install closure.
- Platforms: x86_64-linux, aarch64-linux (skipped on s390x cross since
  the frontend pnpm step has no s390x toolchain).
2026-05-11 20:32:36 +03:00
Oleks e3e8c6f5e3 feat: add xontribs, hyprspace, and gcc15-fixes overlay
ci/woodpecker/push/woodpecker Pipeline failed
- packages/xontribs.nix: xontrib-prompt-starship, -broot, -term-integrations
  wheels for use with `programs.xonsh.extraPackages` (or xonsh.override)
- packages/hyprspace.nix + hyprspace flake input (flake=false): rebuild
  plugin against the consumer's hyprland; exposed via overlays.hyprspace
- overlays/gcc15-fixes.nix: hotdoc/kitty/libsecret/xdg-desktop-portal/afdko
  workarounds so fleet nodes on the same pin can opt in with one line
- flake.nix: lift overlays out of eachSystem to the root (overlays.default
  was previously nested per-system, which doesn't match flake schema)
2026-04-23 23:25:03 +03:00
Oleks 4e2bb71ed5 feat: add xontribs, hyprspace, and gcc15-fixes overlay
ci/woodpecker/push/woodpecker Pipeline failed
- packages/xontribs.nix: xontrib-prompt-starship, -broot, -term-integrations
  wheels for use with `programs.xonsh.extraPackages` (or xonsh.override)
- packages/hyprspace.nix + hyprspace flake input (flake=false): rebuild
  plugin against the consumer's hyprland; exposed via overlays.hyprspace
- overlays/gcc15-fixes.nix: hotdoc/kitty/libsecret/xdg-desktop-portal/afdko
  workarounds so fleet nodes on the same pin can opt in with one line
- flake.nix: lift overlays out of eachSystem to the root (overlays.default
  was previously nested per-system, which doesn't match flake schema)
2026-04-23 20:18:35 +03:00
Oleks 9a4b7eaa11 style: auto-format from pre-push hooks
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 14:39:37 +02:00
Oleks 0d46839c04 fix: override both rustc-unwrapped and rustc wrapper for symlink_file patch to propagate 2026-03-16 14:39:36 +02:00
Oleks 4b5e5eec2d fix: override rustc-unwrapped (not wrapper) for symlink_file patch to actually apply
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 14:32:36 +02:00
Oleks cc57704fe0 fix: use double-quoted sed to avoid Nix string escaping issue in rustc patch
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 13:36:29 +02:00
Oleks cfa685cf91 fix: patch symlink_file method body for rustc 1.93 s390x cross-compile
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 00:21:11 +02:00
Oleks 8e628dad9c feat: export mold for s390x cross-compilation
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 00:07:54 +02:00
Oleks ce394ed7b8 style: auto-format from pre-push hooks
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-15 20:19:54 +02:00
Oleks cb45365285 feat: export rustc, cargo, rustfmt, sccache for s390x
Adds rustc bootstrap patch to fix symlink_file "File exists" panic
during s390x cross-compilation (lib.rs:1823). Removes existing
destination before creating symlink.
2026-03-15 20:19:53 +02:00
Oleks 80fb557b73 fix: export nix 2.28 (with s390x overlays) instead of nix 2.31 (broken)
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-15 16:35:49 +02:00
Oleks bf0191b68e feat: export nix package for s390x cross-compilation
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-15 15:51:12 +02:00
Oleks 20740d8735 Add ruff.toml to exclude .xsh files from ruff linting
Ruff cannot parse xonsh syntax ($(), @()), so xonsh scripts
must be excluded via force-exclude.
2026-03-15 13:10:00 +02:00
Oleks 49fd58b363 Add attic-client (s390x) and geesefs to flake-hub, rewrite CI in xonsh
Move attic-client s390x cross-compilation from building/s390x/attic-client-s390x
and geesefs from building/s390x/geesefs-s390x into flake-hub. Replace ci/build.sh
with ci/build.xsh. All packages now built and pushed to attic via the existing
Woodpecker pipeline on push to main.
2026-03-15 13:09:05 +02:00
Oleks d832787e8b Switch xonsh source from PyPI to GitHub tag, add Woodpecker CI
ci/woodpecker/tag/woodpecker Pipeline failed
Use fetchFromGitHub with tag = version so the version string and
source are inherently linked via rec. Adds .woodpecker.yaml to
build all flake packages on tag push.
2026-03-15 11:25:43 +02:00
Oleks e72bc456ce Wrap xonsh with extraPackages support for NixOS module compatibility
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-14 15:47:31 +02:00
Oleks 727ec77656 Cross-compile s390x packages from x86_64-linux
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-14 00:11:35 +02:00
Oleks 98f46a8ab7 Cross-compile s390x packages from x86_64-linux 2026-03-14 00:11:09 +02:00
Oleks ae7905a5f5 Add custom system list: x86_64-linux, aarch64-linux, s390x-linux 2026-03-13 01:01:35 +02:00
Oleks 2e91b76026 Add multi-arch support using flake-utils 2026-03-13 01:00:27 +02:00
Oleks defab066bd Pin nixpkgs to fleet-pins for consistency 2026-03-13 00:35:15 +02:00
Oleks ef49e03f76 Refactor: consolidate packages into flake-hub 2026-03-13 00:31:12 +02:00
Oleks 18ff5e1de5 Initial flake hub – oleks 2026-03-12 19:53:43 +02:00