nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at master 89 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 nativeBuildInputs = [ protobuf ]; 31 32 cargoBuildFlags = [ 33 "--package" 34 pname 35 ]; 36 37 cargoTestFlags = cargoBuildFlags; 38 39 meta = { 40 description = "Fast, collaborative live terminal sharing over the web"; 41 homepage = "https://github.com/ekzhang/sshx"; 42 changelog = "https://github.com/ekzhang/sshx/releases/tag/v${version}"; 43 license = lib.licenses.mit; 44 maintainers = with lib.maintainers; [ 45 pinpox 46 ]; 47 mainProgram = pname; 48 }; 49 } 50 // args 51 ); 52in 53{ 54 sshx = mkSshxPackage { 55 pname = "sshx"; 56 cargoHash = "sha256-QftBUGDQvCSHoOBLnEzNOe1dMTpVTvMDXNp5qZr0C2M="; 57 }; 58 59 sshx-server = mkSshxPackage rec { 60 pname = "sshx-server"; 61 cargoHash = "sha256-QftBUGDQvCSHoOBLnEzNOe1dMTpVTvMDXNp5qZr0C2M="; 62 63 postPatch = '' 64 substituteInPlace crates/sshx-server/src/web.rs \ 65 --replace-fail 'ServeDir::new("build")' 'ServeDir::new("${passthru.web.outPath}")' \ 66 --replace-fail 'ServeFile::new("build/spa.html")' 'ServeFile::new("${passthru.web.outPath}/spa.html")' 67 ''; 68 69 passthru.web = buildNpmPackage { 70 pname = "sshx-web"; 71 72 inherit 73 version 74 src 75 ; 76 77 postPatch = '' 78 substituteInPlace vite.config.ts \ 79 --replace-fail 'execSync("git rev-parse --short HEAD").toString().trim()' '"${src.rev}"' 80 ''; 81 82 npmDepsHash = "sha256-QdgNtQMjK229QzB5LbCry1hKVPon8IWUnj+v5L7ydfI="; 83 84 installPhase = '' 85 cp -r build $out 86 ''; 87 }; 88 }; 89}