nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildGoModule,
4 fetchFromGitHub,
5 nix-update-script,
6 nodejs,
7 pnpm_9,
8 fetchPnpmDeps,
9 pnpmConfigHook,
10}:
11
12let
13 pname = "pgrok";
14 version = "1.4.6";
15 src = fetchFromGitHub {
16 owner = "pgrok";
17 repo = "pgrok";
18 tag = "v${version}";
19 hash = "sha256-Meavhgq0xHRAfCgzdazC1wu8aDw39qQCZrVtZUScwgs=";
20 };
21in
22
23buildGoModule {
24 inherit pname version src;
25
26 outputs = [
27 "out"
28 "server"
29 ];
30
31 nativeBuildInputs = [
32 nodejs
33 pnpmConfigHook
34 pnpm_9
35 ];
36
37 env.pnpmDeps = fetchPnpmDeps {
38 inherit
39 pname
40 version
41 src
42 ;
43 pnpm = pnpm_9;
44 fetcherVersion = 1;
45 hash = "sha256-o6wxO8EGRmhcYggJnfxDkH+nbt+isc8bfHji8Hu9YKg=";
46 };
47
48 vendorHash = "sha256-l/tUO7fevi+zUmUp6CQoVNrzMF7LIzbo2Qsa/ez6LiA=";
49
50 ldflags = [
51 "-s"
52 "-w"
53 "-X main.version=${version}"
54 "-X main.commit=unknown"
55 "-X main.date=unknown"
56 ];
57
58 subPackages = [
59 "pgrok/pgrok"
60 "pgrokd/pgrokd"
61 ];
62
63 preBuild = ''
64 pushd pgrokd/web
65
66 pnpm run build
67
68 popd
69
70 # rename packages due to naming conflict
71 mv pgrok/cli/ pgrok/pgrok/
72 mv pgrokd/cli/ pgrokd/pgrokd/
73 '';
74
75 postInstall = ''
76 moveToOutput bin/pgrokd $server
77 '';
78
79 passthru.updateScript = nix-update-script { };
80
81 meta = {
82 description = "Selfhosted TCP/HTTP tunnel, ngrok alternative, written in Go";
83 homepage = "https://github.com/pgrok/pgrok";
84 license = lib.licenses.mit;
85 maintainers = with lib.maintainers; [ marie ];
86 mainProgram = "pgrok";
87 };
88}