Skip to content

Commit 3ee0178

Browse files
committed
add flake
1 parent 73bdea0 commit 3ee0178

2 files changed

Lines changed: 135 additions & 0 deletions

File tree

flake.lock

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
description = "Flake for phphantom-lsp (local development)";
3+
4+
inputs = {
5+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6+
flake-utils.url = "github:numtide/flake-utils";
7+
};
8+
9+
outputs = { self, nixpkgs, flake-utils }:
10+
flake-utils.lib.eachDefaultSystem (system:
11+
let
12+
pkgs = import nixpkgs {
13+
inherit system;
14+
};
15+
16+
manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
17+
in
18+
{
19+
packages.default = self.packages.${system}.phpantom-lsp;
20+
packages.phpantom-lsp = pkgs.rustPlatform.buildRustPackage rec {
21+
pname = manifest.name;
22+
cargoLock.lockFile = ./Cargo.lock;
23+
version = manifest.version;
24+
25+
# Use current directory as the source
26+
src = pkgs.lib.cleanSource ./.;
27+
28+
stubsSrc = pkgs.fetchFromGitHub {
29+
owner = "JetBrains";
30+
repo = "phpstorm-stubs";
31+
rev = "3327932472f512d2eb9e122b19702b335083fd9d";
32+
hash = "sha256-WN5DAvaw4FfHBl2AqSo1OcEthUm3lOpikdB78qy3cyY=";
33+
};
34+
35+
postPatch = ''
36+
mkdir -p stubs/jetbrains
37+
cp -a ${stubsSrc} stubs/jetbrains/phpstorm-stubs
38+
chmod u+wx stubs/jetbrains/phpstorm-stubs
39+
echo "${stubsSrc.rev}" > stubs/jetbrains/phpstorm-stubs/.commit
40+
'';
41+
42+
checkFlags = [
43+
"--test"
44+
"completion_inheritance"
45+
];
46+
47+
passthru.updateScript = pkgs.writeShellScript "update-php-stubs.sh" ''
48+
#! /usr/bin/env nix-shell
49+
#! nix-shell -i bash -p bash curl gnused gnugrep nix-prefetch-git jq
50+
51+
file="${self}/flake.nix"
52+
53+
version="$(grep -oP 'version = "\K[\d\.]+' "$file")"
54+
curl -O "https://raw.githubusercontent.com/AJenbo/phpantom_lsp/refs/tags/$version/stubs.lock"
55+
stubsVersion="$(grep -oP 'commit = "\K[^"]+' ./stubs.lock)"
56+
rm stubs.lock
57+
58+
stubsHash="$(
59+
nix-prefetch-git --rev "$stubsVersion" "https://github.com/JetBrains/phpstorm-stubs.git" \
60+
2> /dev/null \
61+
| jq -r '.hash'
62+
)"
63+
64+
sed -i 's/\(rev = "\)[^"]*/\1'"$stubsVersion"'/' "$file"
65+
sed -i '/stubsSrc/,/}/ s/\(hash = "\)[^"]*/\1'"$stubsHash"'/'
66+
'';
67+
68+
postInstall = ''
69+
mv $out/bin/phpantom_lsp $out/bin/phpantom-lsp
70+
ln -s $out/bin/phpantom-lsp $out/bin/phpantom_lsp
71+
'';
72+
};
73+
});
74+
}

0 commit comments

Comments
 (0)