mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-05 02:13:55 +00:00
* Fix: Expose only serena scripts in Nix package, exclude Python interpreter Modified flake.nix to use a wrapper derivation that filters the virtual environment to expose only serena-specific executables (serena, serena-mcp-server, index-project) while excluding the Python interpreter and other venv binaries. The full virtual environment is still accessible via 'nix build .#serena-env' for development purposes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Remove deprecated commands from Nix package exports This change removes serena-mcp-server and index-project from the default Nix package outputs, exposing only the serena command. These commands are deprecated and will be removed soon, so they should not be part of the public package interface. Addresses PR review feedback requesting to expose only the serena command. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
113 lines
2.8 KiB
Nix
113 lines
2.8 KiB
Nix
{
|
|
description = "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & Agno integration)";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
|
|
flake-utils = {
|
|
url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
pyproject-nix = {
|
|
url = "github:pyproject-nix/pyproject.nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
uv2nix = {
|
|
url = "github:pyproject-nix/uv2nix";
|
|
inputs = {
|
|
pyproject-nix.follows = "pyproject-nix";
|
|
nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
pyproject-build-systems = {
|
|
url = "github:pyproject-nix/build-system-pkgs";
|
|
inputs = {
|
|
pyproject-nix.follows = "pyproject-nix";
|
|
uv2nix.follows = "uv2nix";
|
|
nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
};
|
|
|
|
outputs = {
|
|
nixpkgs,
|
|
uv2nix,
|
|
pyproject-nix,
|
|
pyproject-build-systems,
|
|
flake-utils,
|
|
...
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (system: let
|
|
pkgs = import nixpkgs {inherit system;};
|
|
|
|
inherit (pkgs) lib;
|
|
|
|
workspace = uv2nix.lib.workspace.loadWorkspace {workspaceRoot = ./.;};
|
|
|
|
overlay = workspace.mkPyprojectOverlay {
|
|
sourcePreference = "wheel"; # or sourcePreference = "sdist";
|
|
};
|
|
|
|
pyprojectOverrides = final: prev: {
|
|
# Add setuptools for packages that need it during build
|
|
ruamel-yaml-clib = prev.ruamel-yaml-clib.overrideAttrs (old: {
|
|
nativeBuildInputs = (old.nativeBuildInputs or []) ++ [
|
|
final.setuptools
|
|
];
|
|
});
|
|
};
|
|
|
|
python = pkgs.python311;
|
|
|
|
pythonSet =
|
|
(pkgs.callPackage pyproject-nix.build.packages {
|
|
inherit python;
|
|
}).overrideScope
|
|
(
|
|
lib.composeManyExtensions [
|
|
pyproject-build-systems.overlays.default
|
|
overlay
|
|
pyprojectOverrides
|
|
]
|
|
);
|
|
in rec {
|
|
formatter = pkgs.alejandra;
|
|
|
|
packages = {
|
|
serena-env = pythonSet.mkVirtualEnv "serena-env" workspace.deps.default;
|
|
serena = pkgs.runCommand "serena" {} ''
|
|
mkdir -p $out/bin
|
|
ln -s ${packages.serena-env}/bin/serena $out/bin/serena
|
|
'';
|
|
default = packages.serena;
|
|
};
|
|
|
|
apps.default = {
|
|
type = "app";
|
|
program = "${packages.default}/bin/serena";
|
|
};
|
|
|
|
devShells = {
|
|
default = pkgs.mkShell {
|
|
packages = [
|
|
python
|
|
pkgs.uv
|
|
];
|
|
env =
|
|
{
|
|
UV_PYTHON_DOWNLOADS = "never";
|
|
UV_PYTHON = python.interpreter;
|
|
}
|
|
// lib.optionalAttrs pkgs.stdenv.isLinux {
|
|
LD_LIBRARY_PATH = lib.makeLibraryPath pkgs.pythonManylinuxPackages.manylinux1;
|
|
};
|
|
shellHook = ''
|
|
unset PYTHONPATH
|
|
'';
|
|
};
|
|
};
|
|
});
|
|
}
|