Commit Graph

71 Commits

Author SHA1 Message Date
Oleks a9d70c58b1 fix(gitea-local-fork): refresh pnpmDeps.hash for v1.26.0-unstable-2026-05-15
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline failed
The previous pin's pnpm-lock.yaml drifted between snapshots; the
cached fetchPnpmDeps output was stale on hosts without a warmed
store, causing ERR_PNPM_NO_OFFLINE_TARBALL on remote builders.
Recomputed via nix build with empty hash, captured the 'got:'
value.
2026-05-15 17:15:07 +03:00
Oleks 0e20e87361 chore(gitea-local-fork): bump to v1.26.0-unstable-2026-05-15
ci/woodpecker/push/arm64 Pipeline failed
ci/woodpecker/push/amd64 Pipeline failed
Picks up oleks/gitea#2 (user-scope and org-scope project board REST
endpoints under /api/v1/users/{username}/projects/... and
/api/v1/orgs/{org}/projects/...) plus the missing MoveProjectIssue
test for repo scope.
2026-05-15 16:38:54 +03:00
Oleks 2af7732077 style: auto-format from pre-push hooks
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline was successful
2026-05-15 13:02:47 +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 cf54f1c94f ci: build gitea-local-fork and push to attic
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline was successful
Add the renamed gitea-local-fork derivation to the Woodpecker
build matrix on x86_64 and aarch64 (the only platforms the
derivation supports — see flake.nix). Resulting closure is
pushed to attic-infra-cache-k3s-1 so subsequent
`just gitea-run` invocations resolve from cache rather than
recompile Go 1.26.3 locally.
2026-05-13 13:39:46 +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 bbf81d6ac5 ci: split workflow per arch to fix cross-arch PVC scheduling
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline was successful
A single-workflow with steps spanning amd64 and arm64 shares one
PVC. The clone step binds the PV to whichever arch ran first, and
the other arch's pod is then permanently Unschedulable (node
affinity mismatch on the PV). Splitting into separate workflow
files gives each arch its own clone, its own PVC, and its own node
binding.
2026-05-12 21:27:34 +03:00
Oleks d5101ea3fe gitea-projects-api: refresh to 1.26.0-unstable-2026-05-12
ci/woodpecker/push/woodpecker Pipeline failed
Pin to gitea fork rev 235248620e05 (tag v1.26.0-unstable-2026-05-12).
Refreshed by nix-update via passthru.updateScript.
2026-05-12 16:21:54 +03:00
Oleks 3dda8347e4 style: auto-format from pre-push hooks
ci/woodpecker/push/woodpecker Pipeline was successful
2026-05-12 00:02:47 +03:00
Oleks 949f0d2153 gitea-projects-api: refresh to 1.26.0-unstable-2026-05-11
Pin to gitea fork rev 20f31b8967a4 (tag v1.26.0-unstable-2026-05-11).
Refreshed by nix-update via passthru.updateScript.
2026-05-12 00:02:46 +03:00
Oleks 45c8bc03e8 gitea-projects-api: support nix-update, add justfile targets
Refactor so `src` is a direct `fetchgit` (instead of a wrapper drv), and
move the package.json engine-strip into a `frontendSrc` derivation that
only fetchPnpmDeps sees. nix-update needs to introspect `src.url` and
`src.rev`; the previous wrapper hid them.

Expose `frontend.pnpmDeps` via passthru so nix-update finds the third
hash. Now `just gitea-update` does the full cycle:
  1. git ls-remote → latest commit on feat/projects-api
  2. set src.hash / pnpmDeps.hash / goModules.vendorHash to fakeHash
  3. nix-build each to capture real hashes
  4. nom build the package for final verification

nix-update rewrites version to nixpkgs `<tag>-unstable-<date>` style. Lose
the descriptive "-projects-api" suffix in the version, but pname is
unchanged so store paths still read `gitea-projects-api-*`.
2026-05-11 22:25:05 +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 80c05b582e ci: make env probes non-fatal, swap free for /proc/meminfo
ci/woodpecker/push/woodpecker Pipeline was successful
Pipeline #41 died with exit 127 on `free -h` — procps isn't in the
nix-ci image. New info() helper runs the command and ignores the exit
code, so missing tools no longer abort the build. Also switched to
/proc/meminfo since it's always available on Linux.
2026-04-29 11:44:50 +03:00
Oleks d95501ed01 style: auto-format from pre-push hooks
ci/woodpecker/push/woodpecker Pipeline failed
2026-04-29 11:38:24 +03:00
Oleks 65101ed034 ci: skip google-antigravity builds
google-antigravity pulls in google-chrome, which transitively builds
liberation-fonts; fontforge segfaults while generating the .ttf files
(pipeline #40). Package definitions stay in the flake for local
builds — re-enable in CI once upstream fontforge is fixed.
2026-04-29 11:38:22 +03:00
Oleks d971b72ba4 ci: stream build logs and add env context
setup.sh now traces each command (set -ex) so /etc/hosts, nix.conf,
and netrc setup are visible in pipeline logs.

build.py replaces capture() with a streaming build() helper for
nix builds: stderr is inherited (live --print-build-logs output)
while stdout is captured for the out path. Also dumps nix version,
uname, disk, and memory at the start so failures have context.
2026-04-29 11:16:57 +03:00
Oleks 44972326e9 ci: drop s390x build, rename steps to amd64/arm64
ci/woodpecker/push/woodpecker Pipeline failed
s390x had no dedicated builder and ran as a cross-compile pinned to
amd64 via nodeSelector, colliding with the x86_64-linux step on the
same node — Woodpecker's k8s backend couldn't create the per-step
secret twice and the workflow failed with either "secrets already
exists" or "Canceled". Disable until a real s390x builder is wired up.

Step names now match the kubernetes.io/arch label they target; the
ci/build.py argument keeps the Nix system tuple (x86_64-linux,
aarch64-linux).
2026-04-29 10:49:55 +03:00
Oleks df96ba5c89 feat: add xontrib-direnv (xonsh-direnv 1.6.5)
ci/woodpecker/push/woodpecker Pipeline failed
2026-04-26 16:51:13 +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 7599dbd981 flake.lock: bump fleet-pins for Nix 2.31 narHash
ci/woodpecker/push/woodpecker Pipeline failed
2026-04-23 00:52:42 +03:00
Oleks 21684819ec ci: fix pod labels — use tag/branch instead of ref (slashes invalid)
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 18:46:04 +02:00
Oleks 3c4fcfc3ed fix: also remove_dir_all in symlink_file for directory-type conflicts
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 18:42:54 +02:00
Oleks 0af380cd9a ci: add commit-ref and pipeline-number pod labels for log tracing
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-16 17:46:06 +02: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 7da15f25ff docs: add README for flake-hub
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-15 18:51:16 +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 b319fe443b style: auto-format from pre-push hooks
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-15 14:51:21 +02:00
Oleks 547d804a81 try: rewrite CI script as Python — xonsh .xsh parser can't handle dict/list literals 2026-03-15 14:51:20 +02:00
Oleks f81e3807a3 try: use dict.get instead of ternary to avoid xonsh parser bug
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-15 14:41:15 +02:00
Oleks 5fe57dc74c try: fix xonsh syntax error — inline conditional to avoid if-without-else parsing bug
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-15 14:27:46 +02:00
Oleks 4a50fe3f31 ci: limit clone to shallow depth without tags
ci/woodpecker/push/woodpecker Pipeline failed
Adds PLUGIN_TAGS=false and PLUGIN_DEPTH=1 to plugin-git clone steps
to avoid fetching all tags on every CI run.
2026-03-15 13:44:03 +02:00
Oleks 2828abdfd4 try: remove stale .woodpecker.yaml that shadowed .woodpecker.yml
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-15 13:41:07 +02:00
Oleks 1bc3afe912 try: remove when filter to debug missing push pipelines 2026-03-15 13:30:17 +02:00
Oleks 486dee4b30 try: trigger CI with repaired webhook 2026-03-15 13:28:24 +02:00
Oleks 67098eb3b7 try: re-trigger CI after webhook repair 2026-03-15 13:27:59 +02:00
Oleks 42380de028 try: trigger CI for attic-client + geesefs build 2026-03-15 13:27:38 +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 776a0e23ea Use nix-ci image with gitea_clone_token for CI builds
ci/woodpecker/tag/woodpecker Pipeline was successful
The nix-ci entrypoint sets up ~/.netrc from GITEA_CLONE_TOKEN
so Nix can fetch private flake inputs like fleet-pins.
v0.2.0
2026-03-15 11:56:02 +02:00
Oleks bf94068432 use nix-ci:latest instead of nixos/nix:latest 2026-03-15 11:38:55 +02:00
Oleks b83bbaaeab style: auto-format from pre-push hooks 2026-03-15 11:25:47 +02:00