mirror of
https://github.com/instructkr/claw-code.git
synced 2026-10-14 02:26:07 +08:00
116 lines
3.3 KiB
Nix
116 lines
3.3 KiB
Nix
{
|
|
description = "claw-code: Claude Code CLI agent harness in Rust";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
rust-overlay = {
|
|
url = "github:oxalica/rust-overlay";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils, rust-overlay }:
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
overlays = [ (import rust-overlay) ];
|
|
pkgs = import nixpkgs {
|
|
inherit system overlays;
|
|
};
|
|
|
|
# Build inputs needed for Rust and the project
|
|
buildInputs = with pkgs; [
|
|
pkg-config
|
|
openssl
|
|
ca-certificates
|
|
git
|
|
];
|
|
|
|
# Runtime inputs for the dev environment
|
|
nativeBuildInputs = with pkgs; [
|
|
(rust-bin.stable.latest.default.override {
|
|
extensions = [ "rust-src" ];
|
|
targets = [ ];
|
|
})
|
|
cargo-edit
|
|
cargo-expand
|
|
cargo-watch
|
|
];
|
|
|
|
# Derivation to build the claw binary
|
|
clawBinary = pkgs.rustPlatform.buildRustPackage {
|
|
pname = "claw";
|
|
version = (builtins.fromTOML (builtins.readFile ./rust/Cargo.toml)).workspace.package.version;
|
|
|
|
src = ./rust;
|
|
|
|
# Hash of all the dependencies in Cargo.lock
|
|
# This needs to be updated when dependencies change
|
|
# Run: nix flake update
|
|
cargoLock = {
|
|
lockFile = ./rust/Cargo.lock;
|
|
};
|
|
|
|
cargoBuildFlags = [ "-p" "rusty-claude-cli" ];
|
|
|
|
buildInputs = buildInputs ++ (with pkgs; [
|
|
openssl
|
|
]);
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
];
|
|
|
|
meta = with pkgs.lib; {
|
|
description = "Claude Code CLI: agent harness with Rust implementation";
|
|
homepage = "https://github.com/ultraworkers/claw-code";
|
|
license = licenses.mit;
|
|
platforms = platforms.unix;
|
|
};
|
|
};
|
|
|
|
in
|
|
{
|
|
# Provide the claw binary as a package
|
|
packages.claw = clawBinary;
|
|
packages.default = clawBinary;
|
|
|
|
# Development shell for contributors
|
|
devShells.default = pkgs.mkShell {
|
|
name = "claw-dev";
|
|
inherit buildInputs nativeBuildInputs;
|
|
|
|
shellHook = ''
|
|
echo "Claw Code development environment"
|
|
echo "Run 'cargo build -p rusty-claude-cli' to build the claw binary"
|
|
echo "Run 'cargo test --workspace' to run tests"
|
|
echo "Run 'scripts/fmt.sh' to format code"
|
|
'';
|
|
|
|
# Make sure we have the right Rust toolchain
|
|
RUSTUP_TOOLCHAIN = "stable";
|
|
};
|
|
|
|
# Alternative shell with additional development tools
|
|
devShells.full = pkgs.mkShell {
|
|
name = "claw-dev-full";
|
|
inherit buildInputs nativeBuildInputs;
|
|
|
|
nativeBuildInputs = nativeBuildInputs ++ (with pkgs; [
|
|
clippy
|
|
rustfmt
|
|
mold
|
|
lldb
|
|
]);
|
|
|
|
shellHook = ''
|
|
echo "Claw Code full development environment (with extra tools)"
|
|
echo "Available tools: clippy, rustfmt, mold (linker), lldb (debugger)"
|
|
'';
|
|
|
|
RUSTUP_TOOLCHAIN = "stable";
|
|
};
|
|
}
|
|
);
|
|
}
|