From d83657c9d0398cc240d1bf6aa187ff60116e5947 Mon Sep 17 00:00:00 2001 From: quantenzitrone Date: Thu, 12 Feb 2026 04:09:55 +0100 Subject: [PATCH 1/2] storebackup: rename from storeBackup, enable structuredAttrs upstream package is called storeBackup, so lowercase to fit package naming conventions other distros call the package storebackup or storeBackup https://repology.org/project/storebackup --- .../st/{storeBackup => storebackup}/CVE-2020-7040.patch | 0 pkgs/by-name/st/{storeBackup => storebackup}/package.nix | 5 ++--- pkgs/top-level/aliases.nix | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) rename pkgs/by-name/st/{storeBackup => storebackup}/CVE-2020-7040.patch (100%) rename pkgs/by-name/st/{storeBackup => storebackup}/package.nix (98%) diff --git a/pkgs/by-name/st/storeBackup/CVE-2020-7040.patch b/pkgs/by-name/st/storebackup/CVE-2020-7040.patch similarity index 100% rename from pkgs/by-name/st/storeBackup/CVE-2020-7040.patch rename to pkgs/by-name/st/storebackup/CVE-2020-7040.patch diff --git a/pkgs/by-name/st/storeBackup/package.nix b/pkgs/by-name/st/storebackup/package.nix similarity index 98% rename from pkgs/by-name/st/storeBackup/package.nix rename to pkgs/by-name/st/storebackup/package.nix index 388c59b2302a..025b26f581a4 100644 --- a/pkgs/by-name/st/storeBackup/package.nix +++ b/pkgs/by-name/st/storebackup/package.nix @@ -25,11 +25,10 @@ let in stdenv.mkDerivation (finalAttrs: { - version = "3.5.2"; + pname = "storebackup"; - pname = "store-backup"; - + __structuredAttrs = true; enableParallelBuilding = true; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 09eb7d582112..3abc17151424 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -2123,6 +2123,7 @@ mapAliases { steamPackages.steam-fhsenv = throw "'steamPackages.steam-fhsenv' has been renamed to/replaced by 'steam'"; # Converted to throw 2025-10-27 steamPackages.steam-fhsenv-small = throw "'steamPackages.steam-fhsenv-small' has been renamed to/replaced by 'steam'"; # Converted to throw 2025-10-27 steamPackages.steamcmd = throw "'steamPackages.steamcmd' has been renamed to/replaced by 'steamcmd'"; # Converted to throw 2025-10-27 + storeBackup = storebackup; # Added 2026-07-05 StormLib = throw "'StormLib' has been renamed to/replaced by 'stormlib'"; # Converted to throw 2025-10-27 strawberry-qt5 = throw "strawberry-qt5 has been replaced by strawberry"; # Converted to throw 2025-07-19 strawberry-qt6 = throw "strawberry-qt6 has been replaced by strawberry"; # Added 2025-07-19 From e739993feadb32f641e22e1d9848a7521eb75dc9 Mon Sep 17 00:00:00 2001 From: quantenzitrone Date: Sun, 5 Jul 2026 04:34:58 +0200 Subject: [PATCH 2/2] storebackup: enable strictDeps, split phases the result only changes in the outpath (creating diff in all wrapped binaries) and in some of the shebangs due to relying on patchShebangs instead of manually patching them with sed --- pkgs/by-name/st/storebackup/package.nix | 40 ++++++++++++++++++++----- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/pkgs/by-name/st/storebackup/package.nix b/pkgs/by-name/st/storebackup/package.nix index 025b26f581a4..19f5dcb61ed2 100644 --- a/pkgs/by-name/st/storebackup/package.nix +++ b/pkgs/by-name/st/storebackup/package.nix @@ -9,6 +9,7 @@ diffutils, writeScriptBin, bzip2, + runtimeShellPackage, }: # quick usage: @@ -22,6 +23,8 @@ let dummyMount = writeScriptBin "mount" "#!${stdenv.shell}"; + + perl' = perl.withPackages (p: [ p.DBFile ]); in stdenv.mkDerivation (finalAttrs: { @@ -31,8 +34,18 @@ stdenv.mkDerivation (finalAttrs: { __structuredAttrs = true; enableParallelBuilding = true; + strictDeps = true; nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ perl ]; + nativeInstallCheckInputs = [ + diffutils + perl' + ]; + buildInputs = [ + perl' + which + bzip2 + runtimeShellPackage + ]; src = fetchurl { url = "mirror://savannah/storebackup/storeBackup-${finalAttrs.version}.tar.bz2"; @@ -45,15 +58,20 @@ stdenv.mkDerivation (finalAttrs: { ]; installPhase = '' + runHook preInstall + mkdir -p $out/scripts mv * $out mv $out/_ATTENTION_ $out/doc mv $out/{correct.sh,cron-storebackup} $out/scripts - find $out -name "*.pl" | xargs sed -i \ - -e 's@/bin/pwd@${coreutils}/bin/pwd@' \ - -e 's@/bin/sync@${coreutils}/bin/sync@' \ - -e '1 s@/usr/bin/env perl@${perl.withPackages (p: [ p.DBFile ])}/bin/perl@' + runHook postInstall + ''; + + preFixup = '' + find $out -name "*.pl" -print0 | xargs --null sed -i \ + -e 's@/bin/pwd@${coreutils}/bin/pwd@g' \ + -e 's@/bin/sync@${coreutils}/bin/sync@g' for p in $out/bin/* do wrapProgram "$p" --prefix PATH ":" "${ @@ -63,8 +81,12 @@ stdenv.mkDerivation (finalAttrs: { ] }" done + ''; + + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck - patchShebangs $out # do a dummy test ensuring this works PATH=$PATH:${dummyMount}/bin @@ -84,7 +106,7 @@ stdenv.mkDerivation (finalAttrs: { $out/bin/storeBackup.pl --sourceDir "$source" --backupDir backup latestBackup=backup/default/$(ls -1 backup/default | sort | tail -n 1) $out/bin/storeBackupRecover.pl -b "$latestBackup" -t restored -r / - ${diffutils}/bin/diff -r "$source" restored + diff -r "$source" restored # storeBackupCheckSource should return 0 $out/bin/storeBackupCheckSource.pl -s "$source" -b "$latestBackup" @@ -98,7 +120,7 @@ stdenv.mkDerivation (finalAttrs: { rm -fr restored } - testDir=$TMP/testDir + testDir=$HOME/testDir mkdir $testDir echo X > $testDir/X @@ -120,6 +142,8 @@ stdenv.mkDerivation (finalAttrs: { backupRestore 'test 3: backup, restore' $out backupRestore 'test 4: backup diffutils to same backup locations, restore' ${diffutils} } + + runHook postInstallCheck ''; meta = {