fork of https://github.com/sourcegraph/zoekt
1let
2 # Pin a specific version of universal-ctags to the same version as in cmd/symbols/ctags-install-alpine.sh.
3 ctags-overlay = (self: super: {
4 universal-ctags = super.universal-ctags.overrideAttrs (old: {
5 version = "5.9.20220403.0";
6 src = super.fetchFromGitHub {
7 owner = "universal-ctags";
8 repo = "ctags";
9 rev = "f95bb3497f53748c2b6afc7f298cff218103ab90";
10 sha256 = "sha256-pd89KERQj6K11Nue3YFNO+NLOJGqcMnHkeqtWvMFk38=";
11 };
12 # disable checks, else we get `make[1]: *** No rule to make target 'optlib/cmake.c'. Stop.`
13 doCheck = false;
14 checkFlags = [ ];
15 });
16 });
17 # Pin a specific version of nixpkgs to ensure we get the same packages.
18 pkgs = import
19 (fetchTarball {
20 url =
21 "https://github.com/NixOS/nixpkgs/archive/6f38b43c8c84c800f93465b2241156419fd4fd52.tar.gz";
22 sha256 = "0xw3y3jx1bcnwsc0imacbp5m8f51b66s9h8kk8qnfbckwv67dhgd";
23 })
24 { overlays = [ ctags-overlay ]; };
25 # pkgs.universal-ctags installs the binary as "ctags", not "universal-ctags"
26 # like zoekt expects.
27 ctagsWrapper = pkgs.writeScriptBin "universal-ctags" ''
28 #!${pkgs.stdenv.shell}
29 exec ${pkgs.universal-ctags}/bin/ctags "$@"
30 '';
31
32in pkgs.mkShell {
33 name = "zoekt";
34
35 nativeBuildInputs = [
36 pkgs.go_1_19
37
38 # zoekt-git-index
39 pkgs.git
40
41 # Used to index symbols
42 ctagsWrapper
43 pkgs.universal-ctags
44 ];
45}