about summary refs log tree commit diff
path: root/pkgs/applications/version-management
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/version-management')
-rw-r--r--pkgs/applications/version-management/bcompare/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/gh/default.nix6
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix3
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-gone/default.nix22
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix6
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-machete/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-nomad/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-publish/default.nix32
-rw-r--r--pkgs/applications/version-management/git-and-tools/lefthook/default.nix4
-rw-r--r--pkgs/applications/version-management/git-up/default.nix2
-rw-r--r--pkgs/applications/version-management/gitea/default.nix6
-rw-r--r--pkgs/applications/version-management/gitkraken/default.nix8
-rw-r--r--pkgs/applications/version-management/gitlab/data.json10
-rw-r--r--pkgs/applications/version-management/gitlab/gitaly/default.nix4
-rw-r--r--pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix2
-rw-r--r--pkgs/applications/version-management/mercurial/default.nix2
-rw-r--r--pkgs/applications/version-management/monotone/default.nix2
-rw-r--r--pkgs/applications/version-management/p4v/darwin.nix24
-rw-r--r--pkgs/applications/version-management/p4v/default.nix92
-rw-r--r--pkgs/applications/version-management/p4v/linux.nix89
-rw-r--r--pkgs/applications/version-management/reposurgeon/default.nix3
-rw-r--r--pkgs/applications/version-management/sourcehut/default.nix1
-rw-r--r--pkgs/applications/version-management/srvc/default.nix22
23 files changed, 235 insertions, 115 deletions
diff --git a/pkgs/applications/version-management/bcompare/default.nix b/pkgs/applications/version-management/bcompare/default.nix
index bed85a37f544d..fab2780d96440 100644
--- a/pkgs/applications/version-management/bcompare/default.nix
+++ b/pkgs/applications/version-management/bcompare/default.nix
@@ -1,4 +1,4 @@
-{ lib, autoPatchelfHook, bzip2, cairo, coreutils, fetchurl, gdk-pixbuf, glibc, pango, gtk2, kcoreaddons, ki18n, kio, kservice
+{ lib, autoPatchelfHook, bzip2, cairo, fetchurl, gdk-pixbuf, glibc, pango, gtk2, kcoreaddons, ki18n, kio, kservice
 , stdenv, runtimeShell, unzip
 }:
 
diff --git a/pkgs/applications/version-management/git-and-tools/gh/default.nix b/pkgs/applications/version-management/git-and-tools/gh/default.nix
index 4a4367bfdf7e5..6663a52b82881 100644
--- a/pkgs/applications/version-management/git-and-tools/gh/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/gh/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "gh";
-  version = "2.17.0";
+  version = "2.18.0";
 
   src = fetchFromGitHub {
     owner = "cli";
     repo = "cli";
     rev = "v${version}";
-    sha256 = "sha256-2GDhDmk7AVb2DGxibIQM0b7hj2iGvjeLJ4+vAZggxtk=";
+    sha256 = "sha256-MnjUJFylU2YoM3SsxRIjakFKiYkfyVNiCpMc0euu0fc=";
   };
 
-  vendorSha256 = "sha256-TVMFOit2pi+ZVcppzs0iKNXluDW9ZQDH2d7cPSzg+ak=";
+  vendorSha256 = "sha256-XWquL/+47t467kOYpDgMmT7t3hbdCiPQnatRW+VtaYc=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix b/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix
index df6a084bbd754..4141c6c1b6a46 100644
--- a/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-cinnabar/default.nix
@@ -1,5 +1,6 @@
 { stdenv, lib, fetchFromGitHub, autoconf, makeWrapper
 , curl, libiconv, mercurial, zlib
+, CoreServices
 }:
 
 let
@@ -19,7 +20,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ autoconf makeWrapper ];
-  buildInputs = [ curl zlib ] ++ lib.optional stdenv.isDarwin libiconv;
+  buildInputs = [ curl zlib ] ++ lib.optionals stdenv.isDarwin [ libiconv CoreServices ];
 
   # Ignore submodule status failing due to no git in environment.
   makeFlags = [ "SUBMODULE_STATUS=yes" ];
diff --git a/pkgs/applications/version-management/git-and-tools/git-gone/default.nix b/pkgs/applications/version-management/git-and-tools/git-gone/default.nix
index 7a26b38b6b2d3..5bdab4b081ee8 100644
--- a/pkgs/applications/version-management/git-and-tools/git-gone/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-gone/default.nix
@@ -1,29 +1,27 @@
 { lib
 , stdenv
-, fetchFromGitea
+, fetchFromGitHub
 , rustPlatform
-, libiconv
 , Security
 , installShellFiles
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "git-gone";
-  version = "0.4.1";
+  version = "0.4.2";
 
-  src = fetchFromGitea {
-    domain = "codeberg.org";
-    owner = "flausch";
-    repo = pname;
+  src = fetchFromGitHub {
+    owner = "lunaryorn";
+    repo = "git-gone";
     rev = "v${version}";
-    sha256 = "sha256-kqKFs3xvTVHnsLpLC9gjj1dcPChhegmupNrbWy+7C6o=";
+    sha256 = "sha256-aKBNi797aMPawxD+BLpk0sazXz2g0XTzmDpR/mk07no=";
   };
 
-  cargoSha256 = "sha256-8R13eHS69fQ3r3LYlnB3nPTPX7VesUPlAUCmQEpUUdw=";
+  cargoSha256 = "sha256-vO1ePqDIy5HEBauO3OkMCovrgtIVB9biJExw/q89ivE=";
 
   nativeBuildInputs = [ installShellFiles ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
+  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
   postInstall = ''
     installManPage git-gone.1
@@ -31,8 +29,8 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cleanup stale Git branches of merge requests";
-    homepage = "https://codeberg.org/flausch/git-gone";
-    changelog = "https://codeberg.org/flausch/git-gone/raw/tag/v${version}/CHANGELOG.md";
+    homepage = "https://github.com/lunaryorn/git-gone";
+    changelog = "https://github.com/lunaryorn/git-gone/raw/v${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = [ maintainers.marsam ];
   };
diff --git a/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix b/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix
index b85f6d973cf22..97e2cf0537ac9 100644
--- a/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "git-interactive-rebase-tool";
-  version = "2.2.0";
+  version = "2.2.1";
 
   src = fetchFromGitHub {
     owner = "MitMaro";
     repo = pname;
     rev = version;
-    sha256 = "sha256-++KTMzTt84dowoZP+Bc9E/jUS21YN5ybKrlpQUKCir0=";
+    sha256 = "sha256-KqItunxh24jAkvsAMnByS+dhm+wyUqmdF96qEDs/5mI=";
   };
 
-  cargoSha256 = "sha256-OUaP/nDs589FYaGYcleRMTQNu3/q/2wBjHSv2q8OyjA=";
+  cargoSha256 = "sha256-510kNtcSsuXADMmSqu2t0HsnPUS/Jedsfvjnh2k+vDs=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
 
diff --git a/pkgs/applications/version-management/git-and-tools/git-machete/default.nix b/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
index b5c251f247af3..3eb432840f867 100644
--- a/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonApplication rec {
   pname = "git-machete";
-  version = "3.12.0";
+  version = "3.12.5";
 
   src = fetchFromGitHub {
     owner = "virtuslab";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-o4OVA9cv+/JLiTUnDEAI/yj+YmOulFrX5XmlRZAb2vw=";
+    sha256 = "sha256-EC4uI9q/iwX9U/xvyCZ3HAmfGEbKoADLKMx5f30Q9Ys=";
   };
 
   nativeBuildInputs = [ installShellFiles ];
diff --git a/pkgs/applications/version-management/git-and-tools/git-nomad/default.nix b/pkgs/applications/version-management/git-and-tools/git-nomad/default.nix
index f11e978ceafbd..04ba2ca849a6e 100644
--- a/pkgs/applications/version-management/git-and-tools/git-nomad/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-nomad/default.nix
@@ -1,4 +1,4 @@
-{ lib, rustPlatform, fetchFromGitHub }:
+{ lib, stdenv, rustPlatform, fetchFromGitHub, SystemConfiguration }:
 
 rustPlatform.buildRustPackage rec {
   pname = "git-nomad";
@@ -11,6 +11,8 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-1PXAdXafkPOIVzaWjW/RlWHwYhMqPoj0Hj5JmOMUj8A=";
   };
 
+  buildInputs = lib.optionals stdenv.isDarwin [ SystemConfiguration ];
+
   cargoHash = "sha256-ULcdJRla1JwI0y6ngW9xQXjNw2wO48HuAczsNIsJJK0=";
 
   meta = with lib; {
diff --git a/pkgs/applications/version-management/git-and-tools/git-publish/default.nix b/pkgs/applications/version-management/git-and-tools/git-publish/default.nix
new file mode 100644
index 0000000000000..0f0eeff156b06
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/git-publish/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, python, perl, fetchFromGitHub, installShellFiles }:
+stdenv.mkDerivation rec {
+  pname = "git-publish";
+  version = "1.8.1";
+
+  src = fetchFromGitHub {
+    owner = "stefanha";
+    repo = "git-publish";
+    rev = "v${version}";
+    sha256 = "14rz5kli6sz171cvdc46z3z0nnpd57rliwr6nn6vjjc49yyfwgl4";
+  };
+
+  nativeBuildInputs = [ perl installShellFiles ];
+  buildInputs = [ python ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm0755 git-publish $out/bin/git-publish
+    pod2man git-publish.pod > git-publish.1
+    installManPage git-publish.1
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Prepare and store patch revisions as git tags";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.lheckemann ];
+    homepage = "https://github.com/stefanha/git-publish";
+  };
+}
diff --git a/pkgs/applications/version-management/git-and-tools/lefthook/default.nix b/pkgs/applications/version-management/git-and-tools/lefthook/default.nix
index 0359ed7ac6098..7e84a9815d166 100644
--- a/pkgs/applications/version-management/git-and-tools/lefthook/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/lefthook/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "lefthook";
-  version = "1.1.1";
+  version = "1.1.3";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "evilmartians";
     repo = "lefthook";
-    sha256 = "sha256-Ic2AsPFdRk3XdTVGbPBByxcHRAGGQfYoQm9GlgmSvA4=";
+    sha256 = "sha256-TV7ogO7mfRMpLekRAedJsdRJUBbPyxPO9MCoGg6uCno=";
   };
 
   vendorSha256 = "sha256-NTZz0EDIjGdh8dD9jxbNVdWb7NFJsdtnMp7H6Ni0EbQ=";
diff --git a/pkgs/applications/version-management/git-up/default.nix b/pkgs/applications/version-management/git-up/default.nix
index 06a2bb48989ca..0a366827e40d5 100644
--- a/pkgs/applications/version-management/git-up/default.nix
+++ b/pkgs/applications/version-management/git-up/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchurl, pythonPackages, git }:
+{ lib, pythonPackages, git }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "git-up";
diff --git a/pkgs/applications/version-management/gitea/default.nix b/pkgs/applications/version-management/gitea/default.nix
index def74a723a578..9974174c45b6e 100644
--- a/pkgs/applications/version-management/gitea/default.nix
+++ b/pkgs/applications/version-management/gitea/default.nix
@@ -14,12 +14,12 @@
 
 buildGoPackage rec {
   pname = "gitea";
-  version = "1.17.2";
+  version = "1.17.3";
 
   # not fetching directly from the git repo, because that lacks several vendor files for the web UI
   src = fetchurl {
-    url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
-    sha256 = "sha256-pDg+HC3dbWf0RxoLvBtIOaFauP1pUYBOG+Q9cinh3lg=";
+    url = "https://dl.gitea.io/gitea/${version}/gitea-src-${version}.tar.gz";
+    sha256 = "sha256-NUkEgKt5OETo751UHcocPH7lEIgyBf6Rl/Nz0nbNH3g=";
   };
 
   patches = [
diff --git a/pkgs/applications/version-management/gitkraken/default.nix b/pkgs/applications/version-management/gitkraken/default.nix
index 3dea75cc622a3..bce2d3b7cf70b 100644
--- a/pkgs/applications/version-management/gitkraken/default.nix
+++ b/pkgs/applications/version-management/gitkraken/default.nix
@@ -10,24 +10,24 @@ with lib;
 
 let
   pname = "gitkraken";
-  version = "8.8.0";
+  version = "8.9.1";
 
   throwSystem = throw "Unsupported system: ${stdenv.hostPlatform.system}";
 
   srcs = {
     x86_64-linux = fetchzip {
       url = "https://release.axocdn.com/linux/GitKraken-v${version}.tar.gz";
-      sha256 = "sha256-F/uqV6CL/zFERS6nKVD8kEqCZQ2O9AGGzU5uCJ94qwk=";
+      sha256 = "sha256-taz610BIAZm8TB2GQSHLjcDLVjfvtcyLqJ2XBaD6NRE=";
     };
 
     x86_64-darwin = fetchzip {
       url = "https://release.axocdn.com/darwin/GitKraken-v${version}.zip";
-      sha256 = "sha256-TWkwN39SxPRvUUjAPSBxv4octWasjRiA91FNCWRya44=";
+      sha256 = "sha256-TMcXtRO9ANQlmHPULgC/05qrqQC6oN58G3ytokRr/Z8=";
     };
 
     aarch64-darwin = fetchzip {
       url = "https://release.axocdn.com/darwin-arm64/GitKraken-v${version}.zip";
-      sha256 = "sha256-drAj0t8BRUETQ6mZPdHXgkuFAKeYsGLE8oLtf/imHk4=";
+      sha256 = "sha256-vuk0nfl+Ga5yiZWNwDd9o8qOjmiTLe5tQjGhia0bIk0=";
     };
   };
 
diff --git a/pkgs/applications/version-management/gitlab/data.json b/pkgs/applications/version-management/gitlab/data.json
index 36fa987b84636..a5eb46d834af7 100644
--- a/pkgs/applications/version-management/gitlab/data.json
+++ b/pkgs/applications/version-management/gitlab/data.json
@@ -1,15 +1,15 @@
 {
-  "version": "15.4.1",
-  "repo_hash": "sha256-z4J0ia9WxL+tJnoYNBtb6ZMuqGHiyhQ0tc0L8kzj26w=",
+  "version": "15.4.2",
+  "repo_hash": "sha256-KGVZrfrzfIn2ZQJ42FisLvjIGg0+QOnzfjCR6mQHjlM=",
   "yarn_hash": "1r33qrvwf2wmq5c1d2awk9qhk9nzvafqn3drdvnczfv43sda4lg8",
   "owner": "gitlab-org",
   "repo": "gitlab",
-  "rev": "v15.4.1-ee",
+  "rev": "v15.4.2-ee",
   "passthru": {
-    "GITALY_SERVER_VERSION": "15.4.1",
+    "GITALY_SERVER_VERSION": "15.4.2",
     "GITLAB_PAGES_VERSION": "1.62.0",
     "GITLAB_SHELL_VERSION": "14.10.0",
-    "GITLAB_WORKHORSE_VERSION": "15.4.1"
+    "GITLAB_WORKHORSE_VERSION": "15.4.2"
   },
   "vendored_gems": [
     "bundler-checksum",
diff --git a/pkgs/applications/version-management/gitlab/gitaly/default.nix b/pkgs/applications/version-management/gitlab/gitaly/default.nix
index 390581fe44727..32786117c2132 100644
--- a/pkgs/applications/version-management/gitlab/gitaly/default.nix
+++ b/pkgs/applications/version-management/gitlab/gitaly/default.nix
@@ -11,7 +11,7 @@ let
     gemdir = ./.;
   };
 
-  version = "15.4.1";
+  version = "15.4.2";
   package_version = "v${lib.versions.major version}";
   gitaly_package = "gitlab.com/gitlab-org/gitaly/${package_version}";
 
@@ -22,7 +22,7 @@ let
       owner = "gitlab-org";
       repo = "gitaly";
       rev = "v${version}";
-      sha256 = "sha256-7f4TxCI/k2yirQxYI8i/6PXGVDs4x4ncIou1qH0TKAc=";
+      sha256 = "sha256-DBAQ1dJLQ+Xno4e/n1jvgKiHAol/uTMjx6RtZIBwM3w=";
     };
 
     vendorSha256 = "sha256-CUFYHjmOfosM3mfw0qEY+AQcR8U3J/1lU2Ml6wSZ/QM=";
diff --git a/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix b/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix
index cf58ee92860a6..5b6617e0ab70f 100644
--- a/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix
+++ b/pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix
@@ -5,7 +5,7 @@ in
 buildGoModule rec {
   pname = "gitlab-workhorse";
 
-  version = "15.4.1";
+  version = "15.4.2";
 
   src = fetchFromGitLab {
     owner = data.owner;
diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix
index a5c6dc8c27466..feb1063503ff3 100644
--- a/pkgs/applications/version-management/mercurial/default.nix
+++ b/pkgs/applications/version-management/mercurial/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, fetchpatch, python3Packages, makeWrapper, gettext, installShellFiles
+{ lib, stdenv, fetchurl, python3Packages, makeWrapper, gettext, installShellFiles
 , re2Support ? true
 , rustSupport ? stdenv.hostPlatform.isLinux, rustPlatform
 , fullBuild ? false
diff --git a/pkgs/applications/version-management/monotone/default.nix b/pkgs/applications/version-management/monotone/default.nix
index 6f62a381a5045..866146e1d8ffb 100644
--- a/pkgs/applications/version-management/monotone/default.nix
+++ b/pkgs/applications/version-management/monotone/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, fetchFromGitHub, boost, zlib, botan2, libidn
+{ lib, stdenv, fetchFromGitHub, boost, zlib, botan2, libidn
 , lua, pcre, sqlite, perl, pkg-config, expect, less
 , bzip2, gmp, openssl
 , autoreconfHook, texinfo
diff --git a/pkgs/applications/version-management/p4v/darwin.nix b/pkgs/applications/version-management/p4v/darwin.nix
new file mode 100644
index 0000000000000..d3d3568b9f2e2
--- /dev/null
+++ b/pkgs/applications/version-management/p4v/darwin.nix
@@ -0,0 +1,24 @@
+{ stdenv, undmg }:
+
+{ pname, version, src, meta }:
+stdenv.mkDerivation {
+  inherit pname version src meta;
+
+  nativeBuildInputs = [ undmg ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/Applications $out/bin
+
+    # Install Qt applications.
+    for f in p4admin.app p4merge.app p4v.app; do
+      mv $f $out/Applications
+    done
+
+    # Install p4vc separately (it's a tiny shell script).
+    mv p4vc $out/bin
+    substituteInPlace $out/bin/p4vc \
+      --replace /Applications $out/Applications
+  '';
+}
diff --git a/pkgs/applications/version-management/p4v/default.nix b/pkgs/applications/version-management/p4v/default.nix
index 9c804a7459b49..1004661499be2 100644
--- a/pkgs/applications/version-management/p4v/default.nix
+++ b/pkgs/applications/version-management/p4v/default.nix
@@ -1,84 +1,38 @@
 { stdenv
 , fetchurl
 , lib
-, qtbase
-, qtwebengine
-, qtdeclarative
-, qtwebchannel
-, syntax-highlighting
-, openssl
-, xkeyboard_config
-, patchelfUnstable
-, wrapQtAppsHook
-, writeText
+, callPackage
+, libsForQt5
 }:
-let
-  # This abomination exists because p4v calls CRYPTO_set_mem_functions and
-  # expects it to succeed. The function will fail if CRYPTO_malloc has already
-  # been called, which happens at init time via qtwebengine -> ... -> libssh. I
-  # suspect it was meant to work with a version of Qt where openssl is
-  # statically linked or some other library is used.
-  crypto-hack = writeText "crypto-hack.c" ''
-      #include <stddef.h>
-      int CRYPTO_set_mem_functions(
-            void *(*m)(size_t, const char *, int),
-            void *(*r)(void *, size_t, const char *, int),
-            void (*f)(void *, const char *, int)) { return 1; }
-    '';
-
-in stdenv.mkDerivation rec {
-  pname = "p4v";
-  version = "2021.3.2186916";
 
-  src = fetchurl {
-    url = "http://web.archive.org/web/20211118024745/https://cdist2.perforce.com/perforce/r21.3/bin.linux26x86_64/p4v.tgz";
-    sha256 = "1zldg21xq4srww9pcfbv3p8320ghjnh333pz5r70z1gwbq4vf3jq";
+let
+  # Upstream replaces minor versions, so use archived URLs.
+  srcs = {
+    "x86_64-linux" = fetchurl {
+      url = "https://web.archive.org/web/20220902181457id_/https://ftp.perforce.com/perforce/r22.2/bin.linux26x86_64/p4v.tgz";
+      sha256 = "8fdade4aafe25f568a61cfd80823aa90599c2a404b7c6b4a0862c84b07a9f8d2";
+    };
+    "x86_64-darwin" = fetchurl {
+      url = "https://web.archive.org/web/20220902194716id_/https://ftp.perforce.com/perforce/r22.2/bin.macosx1015x86_64/P4V.dmg";
+      sha256 = "c4a9460c0f849be193c68496c500f8a785c740f5bea5b5e7f617969c20be3cd7";
+    };
   };
 
-  dontBuild = true;
-  nativeBuildInputs = [ patchelfUnstable wrapQtAppsHook ];
-
-  ldLibraryPath = lib.makeLibraryPath [
-      stdenv.cc.cc.lib
-      qtbase
-      qtwebengine
-      qtdeclarative
-      qtwebchannel
-      syntax-highlighting
-      openssl
-  ];
-
-  dontWrapQtApps = true;
-  installPhase = ''
-    mkdir $out
-    cp -r bin $out
-    mkdir -p $out/lib
-    cp -r lib/P4VResources $out/lib
-    $CC -fPIC -shared -o $out/lib/libcrypto-hack.so ${crypto-hack}
-
-    for f in $out/bin/*.bin ; do
-      patchelf --set-rpath $ldLibraryPath --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $f
-      # combining this with above breaks rpath (patchelf bug?)
-      patchelf --add-needed libstdc++.so \
-               --add-needed $out/lib/libcrypto-hack.so \
-               --clear-symbol-version _ZNSt20bad_array_new_lengthD1Ev \
-               --clear-symbol-version _ZTVSt20bad_array_new_length \
-               --clear-symbol-version _ZTISt20bad_array_new_length \
-               --clear-symbol-version _ZdlPvm \
-               $f
-      wrapQtApp $f \
-        --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb
-    done
-  '';
+  mkDerivation =
+    if stdenv.isDarwin then callPackage ./darwin.nix { }
+    else libsForQt5.callPackage ./linux.nix { };
+in mkDerivation {
+  pname = "p4v";
+  version = "2022.2.2336701";
 
-  dontFixup = true;
+  src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
 
   meta = {
-    description = "Perforce Visual Client";
+    description = "Perforce Helix Visual Client";
     homepage = "https://www.perforce.com";
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     license = lib.licenses.unfreeRedistributable;
-    platforms = [ "x86_64-linux" ];
-    maintainers = with lib.maintainers; [ nathyong nioncode ];
+    platforms = builtins.attrNames srcs;
+    maintainers = with lib.maintainers; [ impl nathyong nioncode ];
   };
 }
diff --git a/pkgs/applications/version-management/p4v/linux.nix b/pkgs/applications/version-management/p4v/linux.nix
new file mode 100644
index 0000000000000..6a9d6ba6aad4b
--- /dev/null
+++ b/pkgs/applications/version-management/p4v/linux.nix
@@ -0,0 +1,89 @@
+{ stdenv
+, autoPatchelfHook
+, cups
+, dbus
+, fontconfig
+, gccForLibs
+, libX11
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXi
+, libXrandr
+, libXrender
+, libXtst
+, libinput
+, libxcb
+, libxkbcommon
+, nss
+, qttools
+, qtwebengine
+, xcbutilimage
+, xcbutilkeysyms
+, xcbutilrenderutil
+, xcbutilwm
+}:
+
+{ pname, version, src, meta }:
+let
+  unwrapped = stdenv.mkDerivation {
+    pname = "${pname}-unwrapped";
+    inherit version src meta;
+
+    nativeBuildInputs = [ autoPatchelfHook ];
+    buildInputs = [
+      cups
+      dbus
+      fontconfig
+      gccForLibs
+      libX11
+      libXcomposite
+      libXcursor
+      libXdamage
+      libXext
+      libXi
+      libXrandr
+      libXrender
+      libXtst
+      libinput
+      libxcb
+      libxkbcommon
+      nss
+      qttools
+      qtwebengine
+      xcbutilimage
+      xcbutilkeysyms
+      xcbutilrenderutil
+      xcbutilwm
+    ];
+
+    dontBuild = true;
+
+    # Don't wrap the Qt apps; upstream has its own wrapper scripts.
+    dontWrapQtApps = true;
+
+    installPhase = ''
+      mkdir -p $out
+      cp -r bin lib $out
+      addAutoPatchelfSearchPath $out/lib
+    '';
+  };
+in
+stdenv.mkDerivation {
+  inherit pname version;
+
+  # Build a "clean" version of the package so that we don't add extra ".bin" or
+  # configuration files to users' PATHs. We can't easily put the unwrapped
+  # package files in libexec (where they belong, probably) because the upstream
+  # wrapper scripts have the bin directory hardcoded.
+  buildCommand = ''
+    mkdir -p $out/bin
+    for f in p4admin p4merge p4v p4vc; do
+      ln -s ${unwrapped}/bin/$f $out/bin
+    done
+  '';
+  preferLocalBuild = true;
+
+  inherit (unwrapped) meta passthru;
+}
diff --git a/pkgs/applications/version-management/reposurgeon/default.nix b/pkgs/applications/version-management/reposurgeon/default.nix
index fc57024ea20fc..2c7836f1318a9 100644
--- a/pkgs/applications/version-management/reposurgeon/default.nix
+++ b/pkgs/applications/version-management/reposurgeon/default.nix
@@ -1,5 +1,4 @@
-{ lib, stdenv, fetchurl, makeWrapper, buildGoModule, git
-, asciidoctor, ruby
+{ lib, fetchurl, buildGoModule, asciidoctor, ruby
 }:
 
 buildGoModule rec {
diff --git a/pkgs/applications/version-management/sourcehut/default.nix b/pkgs/applications/version-management/sourcehut/default.nix
index aee65dee3bbb8..d5c8a97a5f898 100644
--- a/pkgs/applications/version-management/sourcehut/default.nix
+++ b/pkgs/applications/version-management/sourcehut/default.nix
@@ -1,5 +1,4 @@
 { python3
-, openssl
 , callPackage
 , recurseIntoAttrs
 , nixosTests
diff --git a/pkgs/applications/version-management/srvc/default.nix b/pkgs/applications/version-management/srvc/default.nix
new file mode 100644
index 0000000000000..8e32b42912c0d
--- /dev/null
+++ b/pkgs/applications/version-management/srvc/default.nix
@@ -0,0 +1,22 @@
+{ lib, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "srvc";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "insilica";
+    repo = "rs-srvc";
+    rev = "v${version}";
+    sha256 = "sha256-PBs86cvEacvCt/2JnURL4qKvXGXRZHWaGYrPUSsnt0I=";
+  };
+
+  cargoSha256 = "sha256-5CUbfI67gsINdHcxN8KbIN10Mu90rAU53DbmQ5QotWg=";
+
+  meta = with lib; {
+    description = "Sysrev version control";
+    homepage = "https://github.com/insilica/rs-srvc";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ john-shaffer ];
+  };
+}