{ lib, stdenv, buildGoModule, fetchFromGitHub, gitMinimal, installShellFiles , nix-update-script, versionCheckHook, writableTmpDirAsHomeHook, }: buildGoModule (finalAttrs: { pname = "beads"; version = "0.49.1"; src = fetchFromGitHub { owner = "steveyegge"; repo = "beads"; tag = "v${finalAttrs.version}"; hash = "sha256-roOyTMy9nKxH2Bk8MnP4h2CDjStwK6z0ThQhFcM64QI="; }; vendorHash = "sha256-YU+bRLVlWtHzJ1QPzcKJ70f+ynp8lMoIeFlm+29BNPE="; postPatch = '' sed -i 's/go 1.25.6/go 1.25.5/' go.mod ''; subPackages = [ "cmd/bd" ]; ldflags = [ "-s" "-w" ]; nativeBuildInputs = [ installShellFiles ]; nativeCheckInputs = [ gitMinimal writableTmpDirAsHomeHook ]; # Skip security tests on Darwin - they check for /etc/passwd which isn't available in sandbox checkFlags = lib.optionals stdenv.hostPlatform.isDarwin [ "-skip=TestCleanupMergeArtifacts_CommandInjectionPrevention" ]; preCheck = '' export PATH="$out/bin:$PATH" ''; postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' installShellCompletion --cmd bd \ --bash <($out/bin/bd completion bash) \ --fish <($out/bin/bd completion fish) \ --zsh <($out/bin/bd completion zsh) ''; nativeInstallCheckInputs = [ versionCheckHook writableTmpDirAsHomeHook ]; versionCheckProgramArg = "version"; doInstallCheck = true; doCheck = false; passthru.updateScript = nix-update-script { }; meta = { description = "Lightweight memory system for AI coding agents with graph-based issue tracking"; homepage = "https://github.com/steveyegge/beads"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ kedry ]; mainProgram = "bd"; }; })