/ flake.nix
flake.nix
 1  {
 2    description = "mcp server for arxiv (original code base: https://github.com/blazickjp/arxiv-mcp-server";
 3  
 4    inputs = {
 5      nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 6      flake-utils.url = "github:numtide/flake-utils";
 7    };
 8  
 9    outputs =
10      {
11        self,
12        nixpkgs,
13        flake-utils,
14        ...
15      }:
16      let
17        deps = import ./deps;
18      in
19      flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (
20        system:
21        let
22          pkgs = import nixpkgs {
23            inherit system;
24            config.allowUnfree = true;
25            overlays = [
26              self.overlays.default
27              self.overlays.deps
28            ];
29          };
30        in
31        {
32          packages = (deps.packages pkgs) // {
33            inherit (pkgs) arxiv-mcp-server;
34            default = pkgs.arxiv-mcp-server;
35          };
36        }
37      )
38      // {
39        overlays = {
40          default =
41            final: prev:
42            let
43              mtime = self.lastModifiedDate;
44              date = builtins.substring 2 6 mtime;
45              rev = self.rev or (nixpkgs.lib.warn "Git changes are not committed" (self.dirtyRev or "dirty"));
46              version = "${date}+${builtins.substring 0 8 rev}";
47            in
48            {
49              arxiv-mcp-server = final.callPackage ./default.nix {
50                inherit version;
51              };
52            };
53          deps = deps.overlay;
54        };
55        hydraJobs = self.packages;
56      };
57  }