From a77352fd812cfc2d8b7a70f5782a5270f8d2e252 Mon Sep 17 00:00:00 2001 From: John Ogle Date: Tue, 10 Mar 2026 20:32:13 -0700 Subject: [PATCH] feat: add perles to CI binary cache 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 --- .gitea/workflows/ci.yml | 1 + flake.nix | 5 +++++ home/roles/development/default.nix | 22 ++++------------------ packages/perles/default.nix | 25 +++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 18 deletions(-) create mode 100644 packages/perles/default.nix diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 35f6bee..c816710 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -50,6 +50,7 @@ jobs: custom-rclone-torbox-setup custom-beads custom-gastown + custom-perles qt-pinned-jellyfin-media-player qt-pinned-stremio nix-deck-kernel diff --git a/flake.nix b/flake.nix index f208312..f3df729 100644 --- a/flake.nix +++ b/flake.nix @@ -296,6 +296,11 @@ src = inputs.gastown; version = "unstable-${gastownRev}"; }; + "custom-perles" = pkgs.callPackage ./packages/perles { + inherit (pkgs.unstable) buildGoModule; + src = inputs.perles; + version = "unstable-${builtins.substring 0 8 (inputs.perles.rev or "unknown")}"; + }; } // (if system == "x86_64-linux" then { # nix-deck kernel from Jovian-NixOS (Steam Deck) - expensive to build "nix-deck-kernel" = self.nixosConfigurations.nix-deck.config.boot.kernelPackages.kernel; diff --git a/home/roles/development/default.nix b/home/roles/development/default.nix index 67000be..1a37f17 100644 --- a/home/roles/development/default.nix +++ b/home/roles/development/default.nix @@ -18,26 +18,12 @@ let version = "unstable-${gastownRev}"; }; - # Perles - TUI for beads issue tracking (no upstream flake.nix yet) - # Source is tracked via flake input for renovate updates + # Build perles from flake input using shared package definition perlesRev = builtins.substring 0 8 (globalInputs.perles.rev or "unknown"); - perlesPackage = pkgs.unstable.buildGoModule { - pname = "perles"; - version = "unstable-${perlesRev}"; + perlesPackage = pkgs.callPackage ../../../packages/perles { + inherit (pkgs.unstable) buildGoModule; src = globalInputs.perles; - vendorHash = "sha256-A5LE9Cor/DRcJtVpiScSoqDYhJIKyaq0cbK+OGmr4XU="; - doCheck = false; - - ldflags = [ - "-X main.version=${perlesRev}" - ]; - - meta = with lib; { - description = "Perles - Terminal UI for beads issue tracking"; - homepage = "https://github.com/zjrosen/perles"; - license = licenses.mit; - mainProgram = "perles"; - }; + version = "unstable-${perlesRev}"; }; # Fetch the claude-plugins repository (for humanlayer commands/agents) diff --git a/packages/perles/default.nix b/packages/perles/default.nix new file mode 100644 index 0000000..b4633ba --- /dev/null +++ b/packages/perles/default.nix @@ -0,0 +1,25 @@ +# Perles - Terminal UI for beads issue tracking +# Takes src as argument so it can be called from both overlay and flake packages +{ lib +, buildGoModule +, src +, version ? "unknown" +}: + +buildGoModule { + pname = "perles"; + inherit version src; + doCheck = false; + vendorHash = "sha256-A5LE9Cor/DRcJtVpiScSoqDYhJIKyaq0cbK+OGmr4XU="; + + ldflags = [ + "-X main.version=${version}" + ]; + + meta = with lib; { + description = "Perles - Terminal UI for beads issue tracking"; + homepage = "https://github.com/zjrosen/perles"; + license = licenses.mit; + mainProgram = "perles"; + }; +}