feat(goose-cli): add package and update configurations

- Added `goose-cli` package definition and metadata in `unstable` overlay.
- Updated `default.nix` under `aarch64-darwin` to include `goose-cli` in system packages.
- Removed commented out packages and cleaned up unused lines for better clarity and maintainability.
This commit is contained in:
Harald Hoyer 2025-03-29 10:26:42 +01:00
parent d0910f964b
commit 9f6e703c9e
3 changed files with 83 additions and 4 deletions

View file

@ -5,7 +5,7 @@ final: prev: {
ollama
open-webui
claude-code
goose-cli
aider-chat
;
goose-cli = channels.unstable.callPackage ./goose.nix { };
}

View file

@ -0,0 +1,80 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchurl
, rustPlatform
, dbus
, xorg
, pkg-config
, writableTmpDirAsHomeHook
, nix-update-script
, llvmPackages
,
}:
let
gpt-4o-tokenizer = fetchurl {
url = "https://huggingface.co/Xenova/gpt-4o/resolve/31376962e96831b948abe05d420160d0793a65a4/tokenizer.json";
hash = "sha256-Q6OtRhimqTj4wmFBVOoQwxrVOmLVaDrgsOYTNXXO8H4=";
meta.license = lib.licenses.unfree;
};
claude-tokenizer = fetchurl {
url = "https://huggingface.co/Xenova/claude-tokenizer/resolve/cae688821ea05490de49a6d3faa36468a4672fad/tokenizer.json";
hash = "sha256-wkFzffJLTn98mvT9zuKaDKkD3LKIqLdTvDRqMJKRF2c=";
meta.license = lib.licenses.unfree;
};
in
rustPlatform.buildRustPackage rec {
pname = "goose-cli";
version = "1.0.16";
src = fetchFromGitHub {
owner = "block";
repo = "goose";
tag = "v${version}";
hash = "sha256-fwywPX+tmfECno7x7cCExc2SoASZ6XzOzaVciMBkiBk=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-Gu+mMFzOkswTbm1AygkaZynW7c+9vHZHTMFUNMWWiEg=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dbus ] ++ lib.optionals stdenv.hostPlatform.isLinux [ xorg.libxcb ];
env.LIBCLANG_PATH = "${lib.getLib llvmPackages.libclang}/lib";
preBuild = ''
mkdir -p tokenizer_files/Xenova--gpt-4o tokenizer_files/Xenova--claude-tokenizer
ln -s ${gpt-4o-tokenizer} tokenizer_files/Xenova--gpt-4o/tokenizer.json
ln -s ${claude-tokenizer} tokenizer_files/Xenova--claude-tokenizer/tokenizer.json
'';
nativeCheckInputs = [ writableTmpDirAsHomeHook ];
__darwinAllowLocalNetworking = true;
checkFlags =
[
# need dbus-daemon
"--skip=config::base::tests::test_multiple_secrets"
"--skip=config::base::tests::test_secret_management"
# Observer should be Some with both init project keys set
"--skip=tracing::langfuse_layer::tests::test_create_langfuse_observer"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# Lazy instance has previously been poisoned
"--skip=jetbrains::tests::test_capabilities"
"--skip=jetbrains::tests::test_router_creation"
];
passthru.updateScript = nix-update-script { };
meta = {
description = "Open-source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM";
homepage = "https://github.com/block/goose";
mainProgram = "goose";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ cloudripper ];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
}

View file

@ -2,7 +2,6 @@
with lib.metacfg;
{
homebrew = {
enable = true;
brews = [
@ -29,8 +28,6 @@ with lib.metacfg;
};
environment.systemPackages = with pkgs; [
# iterm2
# azure-cli
kubectl
kubectx
k9s
@ -44,6 +41,8 @@ with lib.metacfg;
qemu
claude-code
nodejs
goose-cli
aider-chat
];
users.users.harald.shell = pkgs.fish;