summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Malakhovski <oxij@oxij.org>2023-08-08 17:18:01 +0000
committerAnderson Torres <torres.anderson.85@protonmail.com>2023-08-11 09:20:44 +0000
commit591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd (patch)
tree73149b019a95f280384d180b5b8165e7b11eedaa
parent979f71ba7c542928f8a7029c12da8c9ba16c2787 (diff)
downloadnixpkgs-591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd.tar
nixpkgs-591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd.tar.gz
nixpkgs-591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd.tar.bz2
nixpkgs-591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd.tar.lz
nixpkgs-591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd.tar.xz
nixpkgs-591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd.tar.zst
nixpkgs-591ccfe5b9bd6d9747c264a1aa5d324bc1cdc7dd.zip
treewide: noop: refer to `src.name` or similar where appropriate, part 3: more use cases
This continues where d8f7f6a5cee067b81bfaaa3aa079adb94ed7c01e left off. Similarly
to that commit, this commit this also points `sourceRoot`s to `src.name` and similar
instead of keeping hardcoded names, and edits other derivation attrs do do the same,
where appropriate.

Also, similarly to d8f7f6a5cee067b81bfaaa3aa079adb94ed7c01e some of expressions this
edits use `srcs` attribute with customly-named sources, so they have to be moved
into `let` blocks to keep evaluation efficient (the other, worse, way to do this
would to recurcively refer to `elemAt n finalAttrs.srcs` or, similarly, with `rec`).
-rw-r--r--pkgs/applications/audio/sony-headphones-client/default.nix2
-rw-r--r--pkgs/applications/backup/proxmox-backup-client/default.nix63
-rw-r--r--pkgs/applications/office/libreoffice/darwin/default.nix2
-rw-r--r--pkgs/applications/science/electronics/xyce/default.nix43
-rw-r--r--pkgs/applications/version-management/gitqlient/default.nix4
-rw-r--r--pkgs/data/themes/mojave/default.nix8
-rw-r--r--pkgs/development/compilers/acme/default.nix2
-rw-r--r--pkgs/development/compilers/gcl/2.6.13-pre.nix2
-rw-r--r--pkgs/development/compilers/nextpnr/default.nix44
-rw-r--r--pkgs/development/embedded/fpga/trellis/default.nix39
-rw-r--r--pkgs/development/libraries/bulletml/default.nix27
-rw-r--r--pkgs/development/libraries/freeimage/default.nix7
-rw-r--r--pkgs/development/libraries/libagar/default.nix12
-rw-r--r--pkgs/development/libraries/libagar/libagar_test.nix5
-rw-r--r--pkgs/development/libraries/libagar/srcs.nix10
-rw-r--r--pkgs/development/misc/datafusion/default.nix2
-rw-r--r--pkgs/development/tools/java/jprofiler/default.nix2
-rw-r--r--pkgs/os-specific/linux/trelay/default.nix6
-rw-r--r--pkgs/servers/matrix-synapse/plugins/mjolnir-antispam.nix2
-rw-r--r--pkgs/servers/sql/postgresql/ext/apache_datasketches.nix52
-rw-r--r--pkgs/tools/admin/azure-cli/default.nix6
-rw-r--r--pkgs/tools/archivers/unar/default.nix2
-rw-r--r--pkgs/tools/filesystems/hfsprogs/default.nix25
-rw-r--r--pkgs/tools/graphics/welkin/default.nix2
-rw-r--r--pkgs/tools/misc/ocs-url/default.nix45
-rw-r--r--pkgs/tools/networking/bully/default.nix2
-rw-r--r--pkgs/tools/security/iaito/default.nix47
-rw-r--r--pkgs/tools/security/mpw/default.nix2
28 files changed, 250 insertions, 215 deletions
diff --git a/pkgs/applications/audio/sony-headphones-client/default.nix b/pkgs/applications/audio/sony-headphones-client/default.nix
index 72d22e9fb7e..03fc6299d5c 100644
--- a/pkgs/applications/audio/sony-headphones-client/default.nix
+++ b/pkgs/applications/audio/sony-headphones-client/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ cmake pkg-config copyDesktopItems ];
   buildInputs = [ bluez dbus glew glfw imgui ];
 
-  sourceRoot = "./source/Client";
+  sourceRoot = "./${src.name}/Client";
 
   cmakeFlags = [ "-Wno-dev" ];
 
diff --git a/pkgs/applications/backup/proxmox-backup-client/default.nix b/pkgs/applications/backup/proxmox-backup-client/default.nix
index ad8f6f0f997..49ad9cccc9c 100644
--- a/pkgs/applications/backup/proxmox-backup-client/default.nix
+++ b/pkgs/applications/backup/proxmox-backup-client/default.nix
@@ -16,38 +16,45 @@
   proxmox-backup-client,
 }:
 
-rustPlatform.buildRustPackage rec {
+let
   pname = "proxmox-backup-client";
   version = "3.0.1";
 
-  srcs = [
-    (fetchgit {
-      url = "git://git.proxmox.com/git/proxmox-backup.git";
-      rev = "v${version}";
-      name = "proxmox-backup";
-      hash = "sha256-a6dPBZBBh//iANXoPmOdgxYO0qNszOYI3QtrjQr4Cxc=";
-    })
-    (fetchgit {
-      url = "git://git.proxmox.com/git/proxmox.git";
-      rev = "2a070da0651677411a245f1714895235b1caf584";
-      name = "proxmox";
-      hash = "sha256-WH6oW2MB2yN1Y2zqOuXewI9jHqev/xLcJtb7D1J4aUE=";
-    })
-    (fetchgit {
-      url = "git://git.proxmox.com/git/proxmox-fuse.git";
-      rev = "93099f76b6bbbc8a0bbaca9b459a1ce4dc5e0a79";
-      name = "proxmox-fuse";
-      hash = "sha256-3l0lAZVFQC0MYaqZvB+S+ihb1fTkEgs5i9q463+cbvQ=";
-    })
-    (fetchgit {
-      url = "git://git.proxmox.com/git/pxar.git";
-      rev = "6ad046f9f92b40413f59cc5f4c23d2bafdf141f2";
-      name = "pxar";
-      hash = "sha256-I9kk27oN9BDQpnLDWltjZMrh2yJitCpcD/XAhkmtJUg=";
-    })
-  ];
+  proxmox-backup_src = fetchgit {
+    url = "git://git.proxmox.com/git/proxmox-backup.git";
+    rev = "v${version}";
+    name = "proxmox-backup";
+    hash = "sha256-a6dPBZBBh//iANXoPmOdgxYO0qNszOYI3QtrjQr4Cxc=";
+  };
+
+  proxmox_src = fetchgit {
+    url = "git://git.proxmox.com/git/proxmox.git";
+    rev = "2a070da0651677411a245f1714895235b1caf584";
+    name = "proxmox";
+    hash = "sha256-WH6oW2MB2yN1Y2zqOuXewI9jHqev/xLcJtb7D1J4aUE=";
+  };
+
+  proxmox-fuse_src = fetchgit {
+    url = "git://git.proxmox.com/git/proxmox-fuse.git";
+    rev = "93099f76b6bbbc8a0bbaca9b459a1ce4dc5e0a79";
+    name = "proxmox-fuse";
+    hash = "sha256-3l0lAZVFQC0MYaqZvB+S+ihb1fTkEgs5i9q463+cbvQ=";
+  };
+
+  proxmox-pxar_src = fetchgit {
+    url = "git://git.proxmox.com/git/pxar.git";
+    rev = "6ad046f9f92b40413f59cc5f4c23d2bafdf141f2";
+    name = "pxar";
+    hash = "sha256-I9kk27oN9BDQpnLDWltjZMrh2yJitCpcD/XAhkmtJUg=";
+  };
+in
+
+rustPlatform.buildRustPackage {
+  inherit pname version;
+
+  srcs = [ proxmox-backup_src proxmox_src proxmox-fuse_src proxmox-pxar_src ];
 
-  sourceRoot = "proxmox-backup";
+  sourceRoot = proxmox-backup_src.name;
 
   # These patches are essentially un-upstreamable, due to being "workarounds" related to the
   # project structure.
diff --git a/pkgs/applications/office/libreoffice/darwin/default.nix b/pkgs/applications/office/libreoffice/darwin/default.nix
index 99420d75db9..18b159cf32a 100644
--- a/pkgs/applications/office/libreoffice/darwin/default.nix
+++ b/pkgs/applications/office/libreoffice/darwin/default.nix
@@ -36,7 +36,7 @@ stdenvNoCC.mkDerivation {
   };
 
   nativeBuildInputs = [ undmg ];
-  sourceRoot = "${appName}";
+  sourceRoot = appName;
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/applications/science/electronics/xyce/default.nix b/pkgs/applications/science/electronics/xyce/default.nix
index 06872eae740..4709065e45b 100644
--- a/pkgs/applications/science/electronics/xyce/default.nix
+++ b/pkgs/applications/science/electronics/xyce/default.nix
@@ -31,27 +31,32 @@
 
 assert withMPI -> trilinos.withMPI;
 
+let
+  version = "7.6.0";
+
+  # useing fetchurl or fetchFromGitHub doesn't include the manuals
+  # due to .gitattributes files
+  xyce_src = fetchgit {
+    url = "https://github.com/Xyce/Xyce.git";
+    rev = "Release-${version}";
+    sha256 = "sha256-HYIzmODMWXBuVRZhcC7LntTysuyXN5A9lb2DeCQQtVw=";
+  };
+
+  regression_src = fetchFromGitHub {
+    owner = "Xyce";
+    repo = "Xyce_Regression";
+    rev = "Release-${version}";
+    sha256 = "sha256-uEoiKpYyHmdK7LZ1UNm2d3Jk8+sCwBwB0TCoHilIh74=";
+  };
+in
+
 stdenv.mkDerivation rec {
   pname = "xyce";
-  version = "7.6.0";
+  inherit version;
 
-  srcs = [
-    # useing fetchurl or fetchFromGitHub doesn't include the manuals
-    # due to .gitattributes files
-    (fetchgit {
-      url = "https://github.com/Xyce/Xyce.git";
-      rev = "Release-${version}";
-      sha256 = "sha256-HYIzmODMWXBuVRZhcC7LntTysuyXN5A9lb2DeCQQtVw=";
-    })
-    (fetchFromGitHub {
-      owner = "Xyce";
-      repo = "Xyce_Regression";
-      rev = "Release-${version}";
-      sha256 = "sha256-uEoiKpYyHmdK7LZ1UNm2d3Jk8+sCwBwB0TCoHilIh74=";
-    })
-  ];
+  srcs = [ xyce_src regression_src ];
 
-  sourceRoot = "./Xyce";
+  sourceRoot = "./${xyce_src.name}";
 
   preConfigure = "./bootstrap";
 
@@ -101,7 +106,7 @@ stdenv.mkDerivation rec {
   doCheck = enableTests;
 
   postPatch = ''
-    pushd ../source
+    pushd ../${regression_src.name}
     find Netlists -type f -regex ".*\.sh\|.*\.pl" -exec chmod ugo+x {} \;
     # some tests generate new files, some overwrite netlists
     find . -type d -exec chmod u+w {} \;
@@ -124,7 +129,7 @@ stdenv.mkDerivation rec {
   checkPhase = ''
     XYCE_BINARY="$(pwd)/src/Xyce"
     EXECSTRING="${lib.optionalString withMPI "mpirun -np 2 "}$XYCE_BINARY"
-    TEST_ROOT="$(pwd)/../source"
+    TEST_ROOT="$(pwd)/../${regression_src.name}"
 
     # Honor the TMP variable
     sed -i -E 's|/tmp|\$TMP|' $TEST_ROOT/TestScripts/suggestXyceTagList.sh
diff --git a/pkgs/applications/version-management/gitqlient/default.nix b/pkgs/applications/version-management/gitqlient/default.nix
index 622c0f04513..d7c1e46577e 100644
--- a/pkgs/applications/version-management/gitqlient/default.nix
+++ b/pkgs/applications/version-management/gitqlient/default.nix
@@ -63,8 +63,8 @@ mkDerivation rec {
 
   postUnpack = ''
     for dep in AuxiliarCustomWidgets QPinnableTabWidget QLogger git; do
-      rmdir "source/src/$dep"
-      ln -sf "../../$dep" "source/src/$dep"
+      rmdir "${main_src.name}/src/$dep"
+      ln -sf "../../$dep" "${main_src.name}/src/$dep"
     done
   '';
 
diff --git a/pkgs/data/themes/mojave/default.nix b/pkgs/data/themes/mojave/default.nix
index 0e4bbdbe5aa..82256441fbb 100644
--- a/pkgs/data/themes/mojave/default.nix
+++ b/pkgs/data/themes/mojave/default.nix
@@ -103,7 +103,7 @@ stdenvNoCC.mkDerivation rec {
     done
 
     ${lib.optionalString wallpapers ''
-      for f in ../wallpapers/Mojave{,-timed}.xml; do
+      for f in ../${wallpapers_src.name}/Mojave{,-timed}.xml; do
         substituteInPlace $f --replace /usr $out
       done
     ''}
@@ -123,9 +123,9 @@ stdenvNoCC.mkDerivation rec {
     ${lib.optionalString wallpapers ''
       mkdir -p $out/share/backgrounds/Mojave
       mkdir -p $out/share/gnome-background-properties
-      cp -a ../wallpapers/Mojave*.jpeg $out/share/backgrounds/Mojave/
-      cp -a ../wallpapers/Mojave-timed.xml $out/share/backgrounds/Mojave/
-      cp -a ../wallpapers/Mojave.xml $out/share/gnome-background-properties/
+      cp -a ../${wallpapers_src.name}/Mojave*.jpeg $out/share/backgrounds/Mojave/
+      cp -a ../${wallpapers_src.name}/Mojave-timed.xml $out/share/backgrounds/Mojave/
+      cp -a ../${wallpapers_src.name}/Mojave.xml $out/share/gnome-background-properties/
     ''}
 
     # Replace duplicate files with soft links to the first file in each
diff --git a/pkgs/development/compilers/acme/default.nix b/pkgs/development/compilers/acme/default.nix
index 9aadbd2459b..3f8110b5b5a 100644
--- a/pkgs/development/compilers/acme/default.nix
+++ b/pkgs/development/compilers/acme/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "1dzvip90yf1wg0fhfghn96dwrhg289d06b624px9a2wwy3vp5ryg";
   };
 
-  sourceRoot = "code-0-r${src.rev}/src";
+  sourceRoot = "${src.name}/src";
 
   postPatch = ''
     substituteInPlace Makefile \
diff --git a/pkgs/development/compilers/gcl/2.6.13-pre.nix b/pkgs/development/compilers/gcl/2.6.13-pre.nix
index 3e11738b462..a4d01cba729 100644
--- a/pkgs/development/compilers/gcl/2.6.13-pre.nix
+++ b/pkgs/development/compilers/gcl/2.6.13-pre.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
     sed -e 's/<= obj-date/<= (if (= 0 obj-date) 1 obj-date)/' -i lsp/make.lisp
   '';
 
-  sourceRoot = "gcl/gcl";
+  sourceRoot = "${src.name}/gcl";
 
   # breaks when compiling in parallel
   enableParallelBuilding = false;
diff --git a/pkgs/development/compilers/nextpnr/default.nix b/pkgs/development/compilers/nextpnr/default.nix
index 2f6e4c86ac9..d56f7e71630 100644
--- a/pkgs/development/compilers/nextpnr/default.nix
+++ b/pkgs/development/compilers/nextpnr/default.nix
@@ -11,29 +11,33 @@
 
 let
   boostPython = boost.override { python = python3; enablePython = true; };
-in
-stdenv.mkDerivation rec {
+
   pname = "nextpnr";
   version = "0.6";
 
-  srcs = [
-    (fetchFromGitHub {
-      owner = "YosysHQ";
-      repo  = "nextpnr";
-      rev   = "${pname}-${version}";
-      hash  = "sha256-S6qvTzvkS2tBMvuTpmuCx6h0OcKP5NBbmgRgOpAVtnA=";
-      name  = "nextpnr";
-    })
-    (fetchFromGitHub {
-      owner  = "YosysHQ";
-      repo   = "nextpnr-tests";
-      rev    = "00c55a9eb9ea2e062b51fe0d64741412b185d95d";
-      sha256 = "sha256-83suMftMtnaRFq3T2/I7Uahb11WZlXhwYt6Q/rqi2Yo=";
-      name   = "nextpnr-tests";
-    })
-  ];
+  main_src = fetchFromGitHub {
+    owner = "YosysHQ";
+    repo  = "nextpnr";
+    rev   = "${pname}-${version}";
+    hash  = "sha256-S6qvTzvkS2tBMvuTpmuCx6h0OcKP5NBbmgRgOpAVtnA=";
+    name  = "nextpnr";
+  };
+
+  test_src = fetchFromGitHub {
+    owner  = "YosysHQ";
+    repo   = "nextpnr-tests";
+    rev    = "00c55a9eb9ea2e062b51fe0d64741412b185d95d";
+    sha256 = "sha256-83suMftMtnaRFq3T2/I7Uahb11WZlXhwYt6Q/rqi2Yo=";
+    name   = "nextpnr-tests";
+  };
+in
+
+stdenv.mkDerivation rec {
+  inherit pname version;
+
+  srcs = [ main_src test_src ];
 
-  sourceRoot = "nextpnr";
+  sourceRoot = main_src.name;
 
   nativeBuildInputs
      = [ cmake ]
@@ -66,7 +70,7 @@ stdenv.mkDerivation rec {
   '';
 
   preBuild = ''
-    ln -s ../nextpnr-tests tests
+    ln -s ../${test_src.name} tests
   '';
 
   doCheck = true;
diff --git a/pkgs/development/embedded/fpga/trellis/default.nix b/pkgs/development/embedded/fpga/trellis/default.nix
index 566bf5bdf75..f0ff4a47b4c 100644
--- a/pkgs/development/embedded/fpga/trellis/default.nix
+++ b/pkgs/development/embedded/fpga/trellis/default.nix
@@ -4,28 +4,29 @@ let
   rev = "488f4e71073062de314c55a037ede7cf03a3324c";
   # git describe --tags
   realVersion = "1.2.1-14-g${builtins.substring 0 7 rev}";
+
+  main_src = fetchFromGitHub {
+    owner  = "YosysHQ";
+    repo   = "prjtrellis";
+    inherit rev;
+    hash   = "sha256-Blbu+0rlM/3izbF0XCvkNpSAND0IclWEwK7anzyrpvw=";
+    name   = "trellis";
+  };
+
+  database_src = fetchFromGitHub {
+    owner  = "YosysHQ";
+    repo   = "prjtrellis-db";
+    rev    = "35d900a94ff0db152679a67bf6e4fbf40ebc34aa";
+    hash   = "sha256-r6viR8y9ZjURGNbsa0/YY8lzy9kGzjuu408ntxwpqm0=";
+    name   = "trellis-database";
+  };
+
 in stdenv.mkDerivation rec {
   pname = "trellis";
   version = "unstable-2022-09-14";
 
-  srcs = [
-    (fetchFromGitHub {
-       owner  = "YosysHQ";
-       repo   = "prjtrellis";
-       inherit rev;
-       hash   = "sha256-Blbu+0rlM/3izbF0XCvkNpSAND0IclWEwK7anzyrpvw=";
-       name   = "trellis";
-     })
-
-    (fetchFromGitHub {
-      owner  = "YosysHQ";
-      repo   = "prjtrellis-db";
-      rev    = "35d900a94ff0db152679a67bf6e4fbf40ebc34aa";
-      hash   = "sha256-r6viR8y9ZjURGNbsa0/YY8lzy9kGzjuu408ntxwpqm0=";
-      name   = "trellis-database";
-    })
-  ];
-  sourceRoot = "trellis";
+  srcs = [ main_src database_src ];
+  sourceRoot = main_src.name;
 
   buildInputs = [ boost ];
   nativeBuildInputs = [ cmake python3 ];
@@ -36,7 +37,7 @@ in stdenv.mkDerivation rec {
   ];
 
   preConfigure = ''
-    rmdir database && ln -sfv ${builtins.elemAt srcs 1} ./database
+    rmdir database && ln -sfv ${database_src} ./database
 
     cd libtrellis
   '';
diff --git a/pkgs/development/libraries/bulletml/default.nix b/pkgs/development/libraries/bulletml/default.nix
index 3da05302ac9..8d562b58e24 100644
--- a/pkgs/development/libraries/bulletml/default.nix
+++ b/pkgs/development/libraries/bulletml/default.nix
@@ -9,22 +9,25 @@ let
     sha256 = hash;
   };
 
-in stdenv.mkDerivation {
+  lib_src = fetchurl {
+    url = "http://shinh.skr.jp/libbulletml/libbulletml-${version}.tar.bz2";
+    sha256 = "0yda0zgj2ydgkmby5676f5iiawabxadzh5p7bmy42998sp9g6dvw";
+  };
+
+  cpp_src = fetchurl {
+    url = "http://shinh.skr.jp/d/d_cpp.tar.bz2";
+    sha256 = "1ly9qmbb8q9nyadmdap1gmxs3vkniqgchlv2hw7riansz4gg1agh";
+  };
+in
+
+stdenv.mkDerivation {
   pname = "bulletml";
   inherit version;
 
-  srcs = [
-    (fetchurl {
-      url = "http://shinh.skr.jp/libbulletml/libbulletml-${version}.tar.bz2";
-      sha256 = "0yda0zgj2ydgkmby5676f5iiawabxadzh5p7bmy42998sp9g6dvw";
-    })
-    (fetchurl {
-      url = "http://shinh.skr.jp/d/d_cpp.tar.bz2";
-      sha256 = "1ly9qmbb8q9nyadmdap1gmxs3vkniqgchlv2hw7riansz4gg1agh";
-    })
-  ];
-  sourceRoot = "bulletml";
+  srcs = [ lib_src cpp_src ];
+
   postUnpack = "mv d_cpp bulletml/";
+  sourceRoot = "bulletml";
 
   patches = [
     (debianPatch "fixes" "0cnr968n0h50fjmjijx7idsa2pg2pv5cwy6nvfbkx9z8w2zf0mkl")
diff --git a/pkgs/development/libraries/freeimage/default.nix b/pkgs/development/libraries/freeimage/default.nix
index dd5056ced93..de1b616fc20 100644
--- a/pkgs/development/libraries/freeimage/default.nix
+++ b/pkgs/development/libraries/freeimage/default.nix
@@ -3,7 +3,7 @@
 , libjpeg, jxrlib, pkg-config
 , fixDarwinDylibNames, autoSignDarwinBinariesHook }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
   pname = "freeimage";
   version = "unstable-2021-11-01";
 
@@ -12,7 +12,8 @@ stdenv.mkDerivation {
     rev = "1900";
     sha256 = "rWoNlU/BWKZBPzRb1HqU6T0sT7aK6dpqKPe88+o/4sA=";
   };
-  sourceRoot = "svn-r1900/FreeImage/trunk";
+
+  sourceRoot = "${finalAttrs.src.name}/FreeImage/trunk";
 
   # Ensure that the bundled libraries are not used at all
   prePatch = ''
@@ -74,4 +75,4 @@ stdenv.mkDerivation {
     maintainers = with lib.maintainers; [viric l-as];
     platforms = with lib.platforms; unix;
   };
-}
+})
diff --git a/pkgs/development/libraries/libagar/default.nix b/pkgs/development/libraries/libagar/default.nix
index 28d5e481324..bff80ab996d 100644
--- a/pkgs/development/libraries/libagar/default.nix
+++ b/pkgs/development/libraries/libagar/default.nix
@@ -3,10 +3,14 @@
 , libsndfile, portaudio, libmysqlclient, fontconfig
 }:
 
-let srcs = import ./srcs.nix { inherit fetchurl; }; in
-stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
   pname = "libagar";
-  inherit (srcs) version src;
+  version = "1.5.0";
+
+  src = fetchurl {
+    url = "http://stable.hypertriton.com/agar/agar-${finalAttrs.version}.tar.gz";
+    sha256 = "001wcqk5z67qg0raw9zlwmv62drxiwqykvsbk10q2mrc6knjsd42";
+  };
 
   preConfigure = ''
     substituteInPlace configure.in \
@@ -40,4 +44,4 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ ramkromberg ];
     platforms = with platforms; linux;
   };
-}
+})
diff --git a/pkgs/development/libraries/libagar/libagar_test.nix b/pkgs/development/libraries/libagar/libagar_test.nix
index 96574ca1188..c54a7957f43 100644
--- a/pkgs/development/libraries/libagar/libagar_test.nix
+++ b/pkgs/development/libraries/libagar/libagar_test.nix
@@ -1,11 +1,10 @@
 { lib, stdenv, fetchurl, bsdbuild, libagar, perl, libjpeg, libpng, openssl }:
 
-let srcs = import ./srcs.nix { inherit fetchurl; }; in
 stdenv.mkDerivation {
   pname = "libagar-test";
-  inherit (srcs) version src;
+  inherit (libagar) version src;
 
-  sourceRoot = "agar-1.5.0/tests";
+  sourceRoot = "agar-${libagar.version}/tests";
 
   # Workaround build failure on -fno-common toolchains:
   #   ld: textdlg.o:(.bss+0x0): multiple definition of `someString';
diff --git a/pkgs/development/libraries/libagar/srcs.nix b/pkgs/development/libraries/libagar/srcs.nix
deleted file mode 100644
index 53c6a5b89da..00000000000
--- a/pkgs/development/libraries/libagar/srcs.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ fetchurl }:
-rec {
-  version = "1.5.0";
-
-  src = fetchurl {
-    url = "http://stable.hypertriton.com/agar/agar-${version}.tar.gz";
-    sha256 = "001wcqk5z67qg0raw9zlwmv62drxiwqykvsbk10q2mrc6knjsd42";
-  };
-
-}
diff --git a/pkgs/development/misc/datafusion/default.nix b/pkgs/development/misc/datafusion/default.nix
index ee8c053be6b..4bf6f8caca4 100644
--- a/pkgs/development/misc/datafusion/default.nix
+++ b/pkgs/development/misc/datafusion/default.nix
@@ -17,7 +17,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-TWvbtuLmAdYS8otD2TpVlZx2FJS6DF03U2zM28FNsfc=";
   };
 
-  sourceRoot = "datafusion-cli-source/datafusion-cli";
+  sourceRoot = "${src.name}/datafusion-cli";
 
   cargoSha256 = "sha256-muWWVJDKm4rbpCK0SS7Zj6umFoMKGMScEAd2ZyZ5An8=";
 
diff --git a/pkgs/development/tools/java/jprofiler/default.nix b/pkgs/development/tools/java/jprofiler/default.nix
index 2044771fa9b..3a74e491f0e 100644
--- a/pkgs/development/tools/java/jprofiler/default.nix
+++ b/pkgs/development/tools/java/jprofiler/default.nix
@@ -86,7 +86,7 @@ let
       runHook postUnpack
     '';
 
-    sourceRoot = "${nameApp}";
+    sourceRoot = nameApp;
 
     installPhase = ''
       runHook preInstall
diff --git a/pkgs/os-specific/linux/trelay/default.nix b/pkgs/os-specific/linux/trelay/default.nix
index 48148a0b1a0..aea5b57dfca 100644
--- a/pkgs/os-specific/linux/trelay/default.nix
+++ b/pkgs/os-specific/linux/trelay/default.nix
@@ -2,7 +2,7 @@
 let
   version = "22.03.5";
 in
-stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
   pname = "trelay";
   version = "${version}-${kernel.version}";
 
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
     sparseCheckout = [ "package/kernel/trelay/src" ];
   };
 
-  sourceRoot = "openwrt/package/kernel/trelay/src";
+  sourceRoot = "${finalAttrs.src.name}/package/kernel/trelay/src";
   hardeningDisable = [ "pic" "format" ];
   nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies;
 
@@ -43,4 +43,4 @@ stdenv.mkDerivation {
     platforms = platforms.linux;
     broken = lib.versionOlder kernel.version "5.10";
   };
-}
+})
diff --git a/pkgs/servers/matrix-synapse/plugins/mjolnir-antispam.nix b/pkgs/servers/matrix-synapse/plugins/mjolnir-antispam.nix
index 2cf0f50901b..2d0fa4115cc 100644
--- a/pkgs/servers/matrix-synapse/plugins/mjolnir-antispam.nix
+++ b/pkgs/servers/matrix-synapse/plugins/mjolnir-antispam.nix
@@ -11,7 +11,7 @@ buildPythonPackage rec {
     sha256 = "sha256-/vnojWLpu/fktqPUhAdL1QTESxDwFrBVYAkyF79Fj9w=";
   };
 
-  sourceRoot = "./source/synapse_antispam";
+  sourceRoot = "./${src.name}/synapse_antispam";
 
   buildInputs = [ matrix-synapse ];
 
diff --git a/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix b/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix
index 47873e725c4..e146ec04175 100644
--- a/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix
+++ b/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix
@@ -1,32 +1,38 @@
 { stdenv, lib, fetchFromGitHub, postgresql, boost182, nixosTests }:
 
-stdenv.mkDerivation (finalAttrs: {
-  pname = "apache_datasketches";
+let
   version = "1.6.0";
 
-  srcs = [
-    ( fetchFromGitHub {
-        name   = "datasketches-postgresql";
-        owner  = "apache";
-        repo   = "datasketches-postgresql";
-        rev    = "refs/tags/${finalAttrs.version}";
-        hash   = "sha256-sz94fIe7nyWhjiw8FAm6ZzVpB0sAK5YxUrtbaZt/guA=";
-    })
-    ( fetchFromGitHub {
-        name   = "datasketches-cpp";
-        owner  = "apache";
-        repo   = "datasketches-cpp";
-        rev    = "refs/tags/4.1.0";
-        hash   = "sha256-vPoFzRxOXlEAiiHH9M5S6255ahzaKsGNYS0cdHwrRYw=";
-    })
-  ];
-  sourceRoot = "datasketches-postgresql";
+  main_src = fetchFromGitHub {
+    name   = "datasketches-postgresql";
+    owner  = "apache";
+    repo   = "datasketches-postgresql";
+    rev    = "refs/tags/${version}";
+    hash   = "sha256-sz94fIe7nyWhjiw8FAm6ZzVpB0sAK5YxUrtbaZt/guA=";
+  };
+
+  cpp_src = fetchFromGitHub {
+    name   = "datasketches-cpp";
+    owner  = "apache";
+    repo   = "datasketches-cpp";
+    rev    = "refs/tags/4.1.0";
+    hash   = "sha256-vPoFzRxOXlEAiiHH9M5S6255ahzaKsGNYS0cdHwrRYw=";
+  };
+in
+
+stdenv.mkDerivation {
+  pname = "apache_datasketches";
+  inherit version;
+
+  srcs = [ main_src cpp_src ];
+
+  sourceRoot = main_src.name;
 
   buildInputs = [ postgresql boost182 ];
 
   patchPhase = ''
     runHook prePatch
-    cp -r ../datasketches-cpp .
+    cp -r ../${cpp_src.name} .
     runHook postPatch
   '';
 
@@ -43,10 +49,10 @@ stdenv.mkDerivation (finalAttrs: {
       sql/datasketches_aod_sketch.sql \
       sql/datasketches_req_float_sketch.sql \
       sql/datasketches_quantiles_double_sketch.sql \
-      > sql/datasketches--${finalAttrs.version}.sql
+      > sql/datasketches--${version}.sql
     install -D -m 644 ./datasketches.control -t $out/share/postgresql/extension
     install -D -m 644 \
-      ./sql/datasketches--${finalAttrs.version}.sql \
+      ./sql/datasketches--${version}.sql \
       ./sql/datasketches--1.3.0--1.4.0.sql \
       ./sql/datasketches--1.4.0--1.5.0.sql \
       ./sql/datasketches--1.5.0--1.6.0.sql \
@@ -68,4 +74,4 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ mmusnjak ];
   };
-})
+}
diff --git a/pkgs/tools/admin/azure-cli/default.nix b/pkgs/tools/admin/azure-cli/default.nix
index 786620088a1..958a0fcd9e2 100644
--- a/pkgs/tools/admin/azure-cli/default.nix
+++ b/pkgs/tools/admin/azure-cli/default.nix
@@ -2,10 +2,9 @@
 
 let
   version = "2.50.0";
-  srcName = "azure-cli-${version}-src";
 
   src = fetchFromGitHub {
-    name = srcName;
+    name = "azure-cli-${version}-src";
     owner = "Azure";
     repo = "azure-cli";
     rev = "azure-cli-${version}";
@@ -17,11 +16,12 @@ let
     inherit stdenv src version python3 fetchPypi;
   };
 in
+
 py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {
   pname = "azure-cli";
   inherit version src;
 
-  sourceRoot = "${srcName}/src/azure-cli";
+  sourceRoot = "${src.name}/src/azure-cli";
 
   prePatch = ''
     substituteInPlace setup.py \
diff --git a/pkgs/tools/archivers/unar/default.nix b/pkgs/tools/archivers/unar/default.nix
index 550e1435599..2fdaf2def59 100644
--- a/pkgs/tools/archivers/unar/default.nix
+++ b/pkgs/tools/archivers/unar/default.nix
@@ -67,7 +67,7 @@ stdenv.mkDerivation rec {
 
   dontConfigure = true;
 
-  sourceRoot = "./source/XADMaster";
+  sourceRoot = "./${src.name}/XADMaster";
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/tools/filesystems/hfsprogs/default.nix b/pkgs/tools/filesystems/hfsprogs/default.nix
index cb3cbe5d7f2..2ac17286fb4 100644
--- a/pkgs/tools/filesystems/hfsprogs/default.nix
+++ b/pkgs/tools/filesystems/hfsprogs/default.nix
@@ -1,27 +1,34 @@
 { lib, stdenv, fetchurl, fetchFromGitHub, openssl, libbsd }:
 
-stdenv.mkDerivation rec {
+let
   version = "332.25";
+
+  apple_src = fetchFromGitHub {
+    owner = "apple-oss-distributions";
+    repo = "diskdev_cmds";
+    rev = "diskdev_cmds-${version}";
+    hash = "sha256-cycPGPx2Gbjn4FKGKuQKJkh+dWGbJfy6C+LTz8rrs0A=";
+    name = "diskdev_cmds-${version}";
+  };
+in
+
+stdenv.mkDerivation rec {
   pname = "hfsprogs";
+  inherit version;
+
   srcs = [
     (fetchurl {
       url = "http://ftp.de.debian.org/debian/pool/main/h/hfsprogs/hfsprogs_${version}-11.debian.tar.gz";
       sha256 = "62d9b8599c66ebffbc57ce5d776e20b41341130d9b27341d63bda08460ebde7c";
     })
-    (fetchFromGitHub {
-      owner = "apple-oss-distributions";
-      repo = "diskdev_cmds";
-      rev = "diskdev_cmds-${version}";
-      hash = "sha256-cycPGPx2Gbjn4FKGKuQKJkh+dWGbJfy6C+LTz8rrs0A=";
-      name = sourceRoot;
-    })
+    apple_src
   ];
 
   postPatch = ''
     sed -ie '/sys\/sysctl.h/d' newfs_hfs.tproj/makehfs.c
   '';
 
-  sourceRoot = "diskdev_cmds-" + version;
+  sourceRoot = apple_src.name;
   patches = [ "../debian/patches/*.patch" ];
 
   buildInputs = [ openssl libbsd ];
diff --git a/pkgs/tools/graphics/welkin/default.nix b/pkgs/tools/graphics/welkin/default.nix
index 93677adefe7..111abc745be 100644
--- a/pkgs/tools/graphics/welkin/default.nix
+++ b/pkgs/tools/graphics/welkin/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "1bqh3vam7y805xrmdw7k0ckcfwjg88wypxgv3njkkwyn7kxnfnqp";
   };
 
-  sourceRoot = "welkin-r9638/tags/${version}";
+  sourceRoot = "${src.name}/tags/${version}";
 
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ jre ];
diff --git a/pkgs/tools/misc/ocs-url/default.nix b/pkgs/tools/misc/ocs-url/default.nix
index 0544bb6829e..564c7b81c74 100644
--- a/pkgs/tools/misc/ocs-url/default.nix
+++ b/pkgs/tools/misc/ocs-url/default.nix
@@ -1,24 +1,33 @@
 { lib, stdenv, fetchgit, libsForQt5 }:
 
+let
+  version = "3.1.0";
+
+  main_src = fetchgit {
+    url = "https://www.opencode.net/dfn2/ocs-url.git";
+    rev = "release-${version}";
+    sha256 = "RvbkcSj8iUAHAEOyETwfH+3XnCCY/p8XM8LgVrZxrws=";
+  };
+
+  qtil_src = fetchgit {
+    url = "https://github.com/akiraohgaki/qtil";
+    rev = "v0.4.0";
+    sha256 = "XRSp0F7ggfkof1RNAnQU3+O9DcXDy81VR7NakITOXrw=";
+  };
+in
+
 stdenv.mkDerivation rec {
   pname = "ocs-url";
-  version = "3.1.0";
+  inherit version;
 
-  srcs = [
-    (fetchgit {
-      url = "https://www.opencode.net/dfn2/ocs-url.git";
-      rev = "release-${version}";
-      sha256 = "RvbkcSj8iUAHAEOyETwfH+3XnCCY/p8XM8LgVrZxrws=";
-    })
-
-    (fetchgit {
-      url = "https://github.com/akiraohgaki/qtil";
-      rev = "v0.4.0";
-      sha256 = "XRSp0F7ggfkof1RNAnQU3+O9DcXDy81VR7NakITOXrw=";
-    })
-  ];
+  srcs = [ main_src qtil_src ];
+  sourceRoot = main_src.name;
 
-  sourceRoot = "ocs-url";
+  # We are NOT in $sourceRoot here
+  postUnpack = ''
+    mkdir -p $sourceRoot/lib/qtil
+    cp -r ${qtil_src.name}/* $sourceRoot/lib/qtil/
+  '';
 
   buildInputs = with libsForQt5.qt5; [
     qtbase
@@ -28,12 +37,6 @@ stdenv.mkDerivation rec {
     wrapQtAppsHook
   ];
 
-  # We are NOT in $sourceRoot here
-  postUnpack = ''
-    mkdir -p $sourceRoot/lib/qtil
-    cp -r qtil/* $sourceRoot/lib/qtil/
-  '';
-
   meta = with lib; {
     description = "Open Collaboration System for use with DE store websites";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/networking/bully/default.nix b/pkgs/tools/networking/bully/default.nix
index b49af33cd9e..c82971d8217 100644
--- a/pkgs/tools/networking/bully/default.nix
+++ b/pkgs/tools/networking/bully/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  sourceRoot = "./source/src";
+  sourceRoot = "./${src.name}/src";
 
   installPhase = ''
     install -Dm555 -t $out/bin bully
diff --git a/pkgs/tools/security/iaito/default.nix b/pkgs/tools/security/iaito/default.nix
index 466a9c5ff77..9fcc80ef28b 100644
--- a/pkgs/tools/security/iaito/default.nix
+++ b/pkgs/tools/security/iaito/default.nix
@@ -11,30 +11,35 @@
 , wrapQtAppsHook
 }:
 
-stdenv.mkDerivation rec {
+let
   pname = "iaito";
   version = "5.8.6";
 
-  srcs = [
-    (fetchFromGitHub rec {
-      owner = "radareorg";
-      repo = "iaito";
-      rev = version;
-      hash = "sha256-rl8bOIR0oS6YvZA5pr8oSj7HcKK4YeCjAEi7saVdvk8=";
-      name = repo;
-    })
-    (fetchFromGitHub rec {
-      owner = "radareorg";
-      repo = "iaito-translations";
-      rev = "e66b3a962a7fc7dfd730764180011ecffbb206bf";
-      hash = "sha256-6NRTZ/ydypsB5TwbivvwOH9TEMAff/LH69hCXTvMPp8=";
-      name = repo;
-    })
-  ];
-  sourceRoot = "iaito/src";
+  main_src = fetchFromGitHub rec {
+    owner = "radareorg";
+    repo = pname;
+    rev = version;
+    hash = "sha256-rl8bOIR0oS6YvZA5pr8oSj7HcKK4YeCjAEi7saVdvk8=";
+    name = repo;
+  };
+
+  translations_src = fetchFromGitHub rec {
+    owner = "radareorg";
+    repo = "iaito-translations";
+    rev = "e66b3a962a7fc7dfd730764180011ecffbb206bf";
+    hash = "sha256-6NRTZ/ydypsB5TwbivvwOH9TEMAff/LH69hCXTvMPp8=";
+    name = repo;
+  };
+in
+
+stdenv.mkDerivation rec {
+  inherit pname version;
+
+  srcs = [ main_src translations_src ];
+  sourceRoot = "${main_src.name}/src";
 
   postUnpack = ''
-    chmod -R u+w iaito-translations
+    chmod -R u+w ${translations_src.name}
   '';
 
   postPatch = ''
@@ -60,7 +65,7 @@ stdenv.mkDerivation rec {
   env.NIX_CFLAGS_COMPILE = toString [ "-I" "${radare2.src}/shlr/sdb/include/sdb" ];
 
   postBuild = ''
-    pushd ../../../iaito-translations
+    pushd ../../../${translations_src.name}
     make build -j$NIX_BUILD_CORES PREFIX=$out
     popd
   '';
@@ -73,7 +78,7 @@ stdenv.mkDerivation rec {
     install -m644 -Dt $out/share/applications ../org.radare.iaito.desktop
     install -m644 -Dt $out/share/pixmaps ../img/iaito-o.svg
 
-    pushd ../../../iaito-translations
+    pushd ../../../${translations_src.name}
     make install -j$NIX_BUILD_CORES PREFIX=$out
     popd
 
diff --git a/pkgs/tools/security/mpw/default.nix b/pkgs/tools/security/mpw/default.nix
index d91b92890a7..0fe45039b9b 100644
--- a/pkgs/tools/security/mpw/default.nix
+++ b/pkgs/tools/security/mpw/default.nix
@@ -15,7 +15,7 @@ in stdenv.mkDerivation rec {
     inherit rev;
   };
 
-  sourceRoot = "./source/platform-independent/c/cli";
+  sourceRoot = "./${src.name}/platform-independent/c/cli";
 
   postPatch = ''
     rm build