trying out change with formatter
This commit is contained in:
35
flake.lock
generated
35
flake.lock
generated
@@ -16,6 +16,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735554305,
|
||||||
|
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"pyproject-build-systems": {
|
"pyproject-build-systems": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -67,9 +83,28 @@
|
|||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"pyproject-build-systems": "pyproject-build-systems",
|
"pyproject-build-systems": "pyproject-build-systems",
|
||||||
"pyproject-nix": "pyproject-nix",
|
"pyproject-nix": "pyproject-nix",
|
||||||
|
"treefmt-nix": "treefmt-nix",
|
||||||
"uv2nix": "uv2nix"
|
"uv2nix": "uv2nix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742303424,
|
||||||
|
"narHash": "sha256-2R7cGdcA2npQQcIWu2cTlU63veTzwVZe78BliIuJT00=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "b3b938ab8ba2e8a0ce9ee9b30ccfa5e903ae5753",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"uv2nix": {
|
"uv2nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|||||||
259
flake.nix
259
flake.nix
@@ -1,148 +1,143 @@
|
|||||||
{
|
{
|
||||||
description = "Flake that contains an overlay with some mcp servers";
|
description = "Flake that contains an overlay with some mcp servers";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
|
||||||
|
|
||||||
pyproject-nix.url = "github:pyproject-nix/pyproject.nix";
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
pyproject-nix.inputs.nixpkgs.follows = "nixpkgs";
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||||
|
|
||||||
uv2nix = {
|
|
||||||
url = "github:pyproject-nix/uv2nix";
|
|
||||||
inputs.pyproject-nix.follows = "pyproject-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
pyproject-build-systems = {
|
pyproject-nix.url = "github:pyproject-nix/pyproject.nix";
|
||||||
url = "github:pyproject-nix/build-system-pkgs";
|
pyproject-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.pyproject-nix.follows = "pyproject-nix";
|
|
||||||
inputs.uv2nix.follows = "uv2nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Uncomment and set correct URL when available
|
uv2nix = {
|
||||||
# mcp-servers = {
|
url = "github:pyproject-nix/uv2nix";
|
||||||
# url = "github:your-org/mcp-servers";
|
inputs.pyproject-nix.follows = "pyproject-nix";
|
||||||
# flake = false;
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# };
|
};
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, ... }@inputs:
|
pyproject-build-systems = {
|
||||||
let
|
url = "github:pyproject-nix/build-system-pkgs";
|
||||||
supportedSystems = [ "x86_64-linux"];
|
inputs.pyproject-nix.follows = "pyproject-nix";
|
||||||
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
|
inputs.uv2nix.follows = "uv2nix";
|
||||||
pkgsFor = system: nixpkgs.legacyPackages.${system}.extend(
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
nixpkgs.lib.composeManyExtensions (
|
};
|
||||||
[] ++ builtins.attrValues self.overlays
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
buildUvServers = { pkgs }:
|
# Uncomment and set correct URL when available
|
||||||
let
|
# mcp-servers = {
|
||||||
inherit (pkgs.callPackage inputs.pyproject-nix.build.util {}) mkApplication;
|
# url = "github:your-org/mcp-servers";
|
||||||
workspace = inputs.uv2nix.lib.workspace.loadWorkspace { workspaceRoot = ./.; };
|
# flake = false;
|
||||||
overlay = workspace.mkPyprojectOverlay {
|
# };
|
||||||
sourcePreference = "wheel";
|
};
|
||||||
};
|
|
||||||
python = pkgs.python313;
|
|
||||||
pyprojectOverrides = final: prev: {
|
|
||||||
sgmllib3k = prev.sgmllib3k.overrideAttrs (old: {
|
|
||||||
nativeBuildInputs =
|
|
||||||
old.nativeBuildInputs or [ ] ++ (
|
|
||||||
final.resolveBuildSystem {
|
|
||||||
setuptools-scm = [ ];
|
|
||||||
setuptools = [ ];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
pythonSet = (pkgs.callPackage inputs.pyproject-nix.build.packages {
|
|
||||||
inherit python;
|
|
||||||
}).overrideScope (
|
|
||||||
nixpkgs.lib.composeManyExtensions [
|
|
||||||
inputs.pyproject-build-systems.overlays.default
|
|
||||||
overlay
|
|
||||||
pyprojectOverrides
|
|
||||||
]
|
|
||||||
);
|
|
||||||
venv = (pythonSet.mkVirtualEnv "uv-mcp-envs" workspace.deps.default).overrideAttrs(old: {
|
|
||||||
venvIgnoreCollisions = [ "*" ];
|
|
||||||
});
|
|
||||||
in {
|
|
||||||
arxiv-mcp-server = mkApplication {
|
|
||||||
inherit venv;
|
|
||||||
package = pythonSet.arxiv-mcp-server;
|
|
||||||
};
|
|
||||||
basic-memory-server = mkApplication {
|
|
||||||
inherit venv;
|
|
||||||
package = pythonSet.basic-memory;
|
|
||||||
};
|
|
||||||
mcp-text-editor = mkApplication {
|
|
||||||
inherit venv;
|
|
||||||
package = pythonSet.mcp-text-editor;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Build function for MCP servers
|
outputs =
|
||||||
buildMcpServer = { pkgs }:
|
{ self, nixpkgs, ... }@inputs:
|
||||||
pkgs.stdenv.mkDerivation {
|
let
|
||||||
pname = "mcp-servers";
|
supportedSystems = [ "x86_64-linux" ];
|
||||||
version = "0.1.0";
|
pkgsFor =
|
||||||
src = inputs.mcp-servers;
|
system:
|
||||||
nativeBuildInputs = [ pkgs.nodejs pkgs.makeWrapper ];
|
nixpkgs.legacyPackages.${system}.extend (
|
||||||
|
nixpkgs.lib.composeManyExtensions ([ ] ++ builtins.attrValues self.overlays)
|
||||||
|
);
|
||||||
|
eachSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f (pkgsFor system));
|
||||||
|
|
||||||
buildPhase = ''
|
buildUvServers = (
|
||||||
export HOME=$(mktemp -d)
|
pkgs:
|
||||||
ls -alhR
|
let
|
||||||
echo "starting to build..."
|
inherit (pkgs.callPackage inputs.pyproject-nix.build.util { }) mkApplication;
|
||||||
npm ci --no-audit --no-fund --loglevel verbose
|
workspace = inputs.uv2nix.lib.workspace.loadWorkspace { workspaceRoot = ./.; };
|
||||||
'';
|
overlay = workspace.mkPyprojectOverlay {
|
||||||
|
sourcePreference = "wheel";
|
||||||
|
};
|
||||||
|
python = pkgs.python313;
|
||||||
|
pyprojectOverrides = final: prev: {
|
||||||
|
sgmllib3k = prev.sgmllib3k.overrideAttrs (old: {
|
||||||
|
nativeBuildInputs =
|
||||||
|
old.nativeBuildInputs or [ ]
|
||||||
|
++ (final.resolveBuildSystem {
|
||||||
|
setuptools-scm = [ ];
|
||||||
|
setuptools = [ ];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
pythonSet =
|
||||||
|
(pkgs.callPackage inputs.pyproject-nix.build.packages {
|
||||||
|
inherit python;
|
||||||
|
}).overrideScope
|
||||||
|
(
|
||||||
|
nixpkgs.lib.composeManyExtensions [
|
||||||
|
inputs.pyproject-build-systems.overlays.default
|
||||||
|
overlay
|
||||||
|
pyprojectOverrides
|
||||||
|
]
|
||||||
|
);
|
||||||
|
venv = (pythonSet.mkVirtualEnv "uv-mcp-envs" workspace.deps.default).overrideAttrs (_old: {
|
||||||
|
venvIgnoreCollisions = [ "*" ];
|
||||||
|
});
|
||||||
|
in
|
||||||
|
{
|
||||||
|
arxiv-mcp-server = mkApplication {
|
||||||
|
inherit venv;
|
||||||
|
package = pythonSet.arxiv-mcp-server;
|
||||||
|
};
|
||||||
|
basic-memory-server = mkApplication {
|
||||||
|
inherit venv;
|
||||||
|
package = pythonSet.basic-memory;
|
||||||
|
};
|
||||||
|
mcp-text-editor = mkApplication {
|
||||||
|
inherit venv;
|
||||||
|
package = pythonSet.mcp-text-editor;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
installPhase = ''
|
# Build function for MCP servers
|
||||||
mkdir -p $out/lib $out/bin
|
|
||||||
cp -r . $out/lib
|
|
||||||
cp -r node_modules/bin $out/bin
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
treefmtEval = eachSystem (pkgs: inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix);
|
||||||
# Formatting
|
|
||||||
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixpkgs-fmt);
|
|
||||||
|
|
||||||
# Overlays
|
in
|
||||||
overlays.default = final: prev: {
|
{
|
||||||
custom-servers = buildUvServers {
|
# Formatting
|
||||||
pkgs = prev;
|
# formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixpkgs-fmt);
|
||||||
};
|
formatter = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
|
||||||
|
|
||||||
};
|
# for `nix flake check`
|
||||||
|
checks = eachSystem (pkgs: {
|
||||||
|
formatting = treefmtEval.${pkgs.system}.config.build.check self;
|
||||||
|
});
|
||||||
|
|
||||||
# Packages
|
# Overlays
|
||||||
# packages = forAllSystems (system:
|
overlays.default = _final: prev: {
|
||||||
# let
|
custom-servers = buildUvServers prev;
|
||||||
# pkgs = pkgsFor system;
|
};
|
||||||
# in buildUvServers {
|
|
||||||
# pkgs = pkgs;
|
|
||||||
# }
|
|
||||||
#);
|
|
||||||
|
|
||||||
# Development shell
|
# Packages
|
||||||
devShells = forAllSystems (system:
|
# packages = forAllSystems (system:
|
||||||
let pkgs = pkgsFor system;
|
# let
|
||||||
uv-servers = buildUvServers { inherit pkgs; };
|
# pkgs = pkgsFor system;
|
||||||
in {
|
# in buildUvServers {
|
||||||
default = pkgs.mkShell {
|
# pkgs = pkgs;
|
||||||
packages = [
|
# }
|
||||||
pkgs.python313
|
#);
|
||||||
pkgs.uv
|
|
||||||
pkgs.nodejs
|
# Development shell
|
||||||
pkgs.node2nix
|
devShells = eachSystem (
|
||||||
uv-servers.arxiv-mcp-server
|
pkgs:
|
||||||
uv-servers.mcp-text-editor
|
let
|
||||||
uv-servers.basic-memory-server
|
uv-servers = buildUvServers pkgs;
|
||||||
];
|
in
|
||||||
};
|
{
|
||||||
}
|
default = pkgs.mkShell {
|
||||||
);
|
packages = [
|
||||||
};
|
pkgs.python313
|
||||||
|
pkgs.uv
|
||||||
|
pkgs.nodejs
|
||||||
|
pkgs.node2nix
|
||||||
|
uv-servers.arxiv-mcp-server
|
||||||
|
uv-servers.mcp-text-editor
|
||||||
|
uv-servers.basic-memory-server
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
18
treefmt.nix
Normal file
18
treefmt.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# treefmt.nix
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
projectRootFile = "treefmt.nix";
|
||||||
|
settings.global.excludes = [
|
||||||
|
"*.toml"
|
||||||
|
"*.txt"
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.deadnix.enable = true;
|
||||||
|
programs.mdsh.enable = true;
|
||||||
|
programs.nixfmt.enable = true;
|
||||||
|
programs.shellcheck.enable = true;
|
||||||
|
programs.shfmt.enable = true;
|
||||||
|
programs.yamlfmt.enable = true;
|
||||||
|
programs.just.enable = true;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user