nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 mkYarnPackage,
4 fetchYarnDeps,
5 fetchFromGitHub,
6 jq,
7}:
8
9mkYarnPackage rec {
10 name = "awk-language-server";
11 version = "0.10.6";
12
13 src = fetchFromGitHub {
14 owner = "Beaglefoot";
15 repo = "awk-language-server";
16 tag = "server-${version}";
17 hash = "sha256-YtduDfMAUAoQY9tgyhgERFwx9TEgD52KdeHnX2MrjjI=";
18 sparseCheckout = [ "server" ];
19 postFetch = ''
20 # combine both yarn lock files
21 tail -n+4 $out/server/yarn.lock >> $out/yarn.lock
22
23 # recontextualize server/package.json to be one folder up
24 sed -i 's|\./|./server/|' $out/server/package.json
25
26 # combine both package.json files
27 ${lib.getExe jq} -s '.[0] * .[1]' \
28 $out/server/package.json \
29 $out/package.json \
30 > package.json
31 mv -f package.json $out/
32 '';
33 };
34
35 packageJSON = ./package.json;
36 yarnLock = ./yarn.lock;
37
38 offlineCache = fetchYarnDeps {
39 yarnLock = ./yarn.lock;
40 hash = "sha256-PaebqpXQGBxqcaxun8zi6TPeIgHmY+2fjsE/3LaWPN8=";
41 };
42
43 distPhase = "true";
44
45 buildPhase = ''
46 runHook preBuild
47
48 export HOME=$(mktemp -d)
49 yarn --offline build:server
50
51 runHook postBuild
52 '';
53
54 postInstall = ''
55 chmod +x $out/bin/awk-language-server
56 '';
57
58 passthru.updateScript = ./update.sh;
59
60 meta = {
61 description = "Language Server for AWK and associated VSCode client extension";
62 homepage = "https://github.com/Beaglefoot/awk-language-server";
63 license = lib.licenses.mit;
64 maintainers = with lib.maintainers; [ mathiassven ];
65 mainProgram = "awk-language-server";
66 };
67}