{ pkgs, inputs ? null, ... }: let # Upstream opencode v1.1.60 strictly requires Bun ^1.3.9 but nixpkgs provides 1.3.8 # We patch package.json to match the environment version to fix the build opencode = inputs.opencode.packages.${pkgs.system}.opencode.overrideAttrs (old: { postPatch = (old.postPatch or "") + '' substituteInPlace package.json --replace-fail '"packageManager": "bun@1.3.9"' '"packageManager": "bun@1.3.8"' # Skip bun version check in script - nixpkgs provides 1.3.8 while upstream requires ^1.3.9 substituteInPlace packages/script/src/index.ts --replace-fail \ 'if (!semver.satisfies(process.versions.bun, expectedBunVersionRange))' \ 'if (false && !semver.satisfies(process.versions.bun, expectedBunVersionRange))' ''; }); in { # Custom packages registry # Each package is defined in its own directory under pkgs/ beads = pkgs.callPackage ./beads {}; sidecar = pkgs.callPackage ./sidecar {}; td = pkgs.callPackage ./td {}; code2prompt = pkgs.callPackage ./code2prompt {}; hyprpaper-random = pkgs.callPackage ./hyprpaper-random {}; launch-webapp = pkgs.callPackage ./launch-webapp {}; mem0 = pkgs.callPackage ./mem0 {}; msty-studio = pkgs.callPackage ./msty-studio {}; n8n = pkgs.callPackage ./n8n {}; pomodoro-timer = pkgs.callPackage ./pomodoro-timer {}; rofi-project-opener = pkgs.callPackage ./rofi-project-opener {}; stt-ptt = pkgs.callPackage ./stt-ptt {}; tuxedo-backlight = pkgs.callPackage ./tuxedo-backlight {}; zellij-ps = pkgs.callPackage ./zellij-ps {}; # Imported from flake inputs inherit opencode; opencode-desktop = pkgs.callPackage ./opencode-desktop {inherit inputs;}; }