lol
at 25.11-pre 92 lines 2.1 kB view raw
1{ 2 lib, 3 callPackage, 4 rustPlatform, 5 fetchFromGitHub, 6 protobuf, 7 buildNpmPackage, 8}: 9let 10 version = "0.4.1"; 11 12 src = fetchFromGitHub { 13 owner = "ekzhang"; 14 repo = "sshx"; 15 tag = "v${version}"; 16 hash = "sha256-+IHV+dJb/j1/tmdqDXo6bqhvj3nBQ7i4AsUeHFA3+NU="; 17 }; 18 19 mkSshxPackage = 20 { pname, cargoHash, ... }@args: 21 rustPlatform.buildRustPackage ( 22 rec { 23 inherit 24 pname 25 version 26 src 27 cargoHash 28 ; 29 30 useFetchCargoVendor = true; 31 32 nativeBuildInputs = [ protobuf ]; 33 34 cargoBuildFlags = [ 35 "--package" 36 pname 37 ]; 38 39 cargoTestFlags = cargoBuildFlags; 40 41 meta = { 42 description = "Fast, collaborative live terminal sharing over the web"; 43 homepage = "https://github.com/ekzhang/sshx"; 44 changelog = "https://github.com/ekzhang/sshx/releases/tag/v${version}"; 45 license = lib.licenses.mit; 46 maintainers = with lib.maintainers; [ 47 pinpox 48 kranzes 49 ]; 50 mainProgram = pname; 51 }; 52 } 53 // args 54 ); 55in 56{ 57 sshx = mkSshxPackage { 58 pname = "sshx"; 59 cargoHash = "sha256-QftBUGDQvCSHoOBLnEzNOe1dMTpVTvMDXNp5qZr0C2M="; 60 }; 61 62 sshx-server = mkSshxPackage rec { 63 pname = "sshx-server"; 64 cargoHash = "sha256-QftBUGDQvCSHoOBLnEzNOe1dMTpVTvMDXNp5qZr0C2M="; 65 66 postPatch = '' 67 substituteInPlace crates/sshx-server/src/web.rs \ 68 --replace-fail 'ServeDir::new("build")' 'ServeDir::new("${passthru.web.outPath}")' \ 69 --replace-fail 'ServeFile::new("build/spa.html")' 'ServeFile::new("${passthru.web.outPath}/spa.html")' 70 ''; 71 72 passthru.web = buildNpmPackage { 73 pname = "sshx-web"; 74 75 inherit 76 version 77 src 78 ; 79 80 postPatch = '' 81 substituteInPlace vite.config.ts \ 82 --replace-fail 'execSync("git rev-parse --short HEAD").toString().trim()' '"${src.rev}"' 83 ''; 84 85 npmDepsHash = "sha256-QdgNtQMjK229QzB5LbCry1hKVPon8IWUnj+v5L7ydfI="; 86 87 installPhase = '' 88 cp -r build $out 89 ''; 90 }; 91 }; 92}