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