Merge pull request #271881 from Kranzes/sshx-pkgs

sshx: update, split component and add web to sshx-server

authored by Ilan Joselevich and committed by GitHub 216b111f 4679e365

+83 -53
-53
pkgs/by-name/ss/sshx/package.nix
··· 1 - { lib 2 - , rustPlatform 3 - , fetchFromGitHub 4 - , pkg-config 5 - , protobuf 6 - , zstd 7 - , stdenv 8 - , darwin 9 - }: 10 - 11 - rustPlatform.buildRustPackage rec { 12 - pname = "sshx"; 13 - version = "unstable-2023-11-04"; 14 - 15 - src = fetchFromGitHub { 16 - owner = "ekzhang"; 17 - repo = "sshx"; 18 - rev = "91c82d46cde4d1ffa0ae34e2a9a49911e2e53baa"; 19 - hash = "sha256-X9c7ZKIpWI5EsbkgB8FJWlwQQXHAcPjLKp2Bvo0fo/w="; 20 - }; 21 - 22 - cargoHash = "sha256-mOK5gpPuUKzN5xnJs5nFyslxr9IIHtiCylMP53ObDqg="; 23 - 24 - nativeBuildInputs = [ 25 - pkg-config 26 - protobuf 27 - ]; 28 - 29 - buildInputs = [ 30 - zstd 31 - ] ++ lib.optionals stdenv.isDarwin [ 32 - darwin.apple_sdk.frameworks.Security 33 - ]; 34 - 35 - env = { 36 - ZSTD_SYS_USE_PKG_CONFIG = true; 37 - }; 38 - 39 - outputs = [ "out" "server" ]; 40 - 41 - postInstall = '' 42 - moveToOutput 'bin/sshx' "$out" 43 - moveToOutput 'bin/sshx-server' "$server" 44 - ''; 45 - 46 - meta = with lib; { 47 - description = "Fast, collaborative live terminal sharing over the web"; 48 - homepage = "https://github.com/ekzhang/sshx"; 49 - license = licenses.mit; 50 - maintainers = with maintainers; [ pinpox ]; 51 - mainProgram = "sshx"; 52 - }; 53 - }
···
+79
pkgs/tools/misc/sshx/default.nix
···
··· 1 + { lib 2 + , callPackage 3 + , rustPlatform 4 + , fetchFromGitHub 5 + , protobuf 6 + , darwin 7 + , stdenv 8 + , buildNpmPackage 9 + }: 10 + let 11 + version = "unstable-2023-11-23"; 12 + 13 + src = fetchFromGitHub { 14 + owner = "ekzhang"; 15 + repo = "sshx"; 16 + rev = "2677f7e1fa3b369132cc7f27f6028a04b92ba5cf"; 17 + hash = "sha256-9fo8hNUzJr4gse0J2tw7j+alqE82+y8McADzTkxryWk="; 18 + }; 19 + 20 + mkSshxPackage = { pname, cargoHash, ... }@args: 21 + rustPlatform.buildRustPackage (rec { 22 + inherit 23 + pname 24 + version 25 + src 26 + cargoHash; 27 + 28 + nativeBuildInputs = [ protobuf ]; 29 + buildInputs = lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security; 30 + 31 + cargoBuildFlags = [ "--package" pname ]; 32 + cargoTestFlags = cargoBuildFlags; 33 + 34 + meta = { 35 + description = "Fast, collaborative live terminal sharing over the web"; 36 + homepage = "https://github.com/ekzhang/sshx"; 37 + license = lib.licenses.mit; 38 + maintainers = with lib.maintainers; [ pinpox kranzes ]; 39 + mainProgram = pname; 40 + }; 41 + } // args); 42 + in 43 + { 44 + sshx = mkSshxPackage { 45 + pname = "sshx"; 46 + cargoHash = "sha256-dA5Aen/qANW8si75pj/RsBknvOo3KDyU5UISAmmcfRE="; 47 + }; 48 + 49 + sshx-server = mkSshxPackage rec { 50 + pname = "sshx-server"; 51 + cargoHash = "sha256-1GRWCMXsOzqvORgtwfuywV4wLyX3r4nURhM3Dl5V9Ss="; 52 + 53 + postPatch = '' 54 + substituteInPlace crates/sshx-server/src/web.rs \ 55 + --replace 'ServeDir::new("build")' 'ServeDir::new("${passthru.web.outPath}")' \ 56 + --replace 'ServeFile::new("build/spa.html")' 'ServeFile::new("${passthru.web.outPath}/spa.html")' 57 + ''; 58 + 59 + passthru.web = buildNpmPackage { 60 + pname = "sshx-web"; 61 + 62 + inherit 63 + version 64 + src; 65 + 66 + postPatch = '' 67 + substituteInPlace vite.config.ts \ 68 + --replace 'execSync("git rev-parse --short HEAD").toString().trim()' '"${src.rev}"' 69 + ''; 70 + 71 + npmDepsHash = "sha256-bKePCxo6+n0EG+4tbbMimPedJ0Hu1O8yZsgspmhobOs="; 72 + 73 + installPhase = '' 74 + mkdir -p "$out" 75 + cp -r build/* "$out" 76 + ''; 77 + }; 78 + }; 79 + }
+4
pkgs/top-level/all-packages.nix
··· 13526 13527 sshuttle = callPackage ../tools/security/sshuttle { }; 13528 13529 ssldump = callPackage ../tools/networking/ssldump { }; 13530 13531 sslsplit = callPackage ../tools/networking/sslsplit { };
··· 13526 13527 sshuttle = callPackage ../tools/security/sshuttle { }; 13528 13529 + inherit (callPackages ../tools/misc/sshx { }) 13530 + sshx 13531 + sshx-server; 13532 + 13533 ssldump = callPackage ../tools/networking/ssldump { }; 13534 13535 sslsplit = callPackage ../tools/networking/sslsplit { };