Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 50 lines 1.2 kB view raw
1{ 2 lib, 3 symlinkJoin, 4 makeWrapper, 5}: 6 7unwrapped: 8 9pkgsSpec: 10 11let 12 mods = if lib.isFunction pkgsSpec then pkgsSpec unwrapped.pkgs else pkgsSpec; 13in 14 15if builtins.length mods == 0 then 16 unwrapped 17else 18 symlinkJoin { 19 name = unwrapped.name + "-with-mods"; 20 21 paths = [ unwrapped ] ++ mods; 22 23 nativeBuildInputs = [ makeWrapper ]; 24 25 postBuild = '' 26 if [ -x $out/bin/cataclysm ]; then 27 wrapProgram $out/bin/cataclysm \ 28 --add-flags "--datadir $out/share/cataclysm-dda/" 29 fi 30 if [ -x $out/bin/cataclysm-tiles ]; then 31 wrapProgram $out/bin/cataclysm-tiles \ 32 --add-flags "--datadir $out/share/cataclysm-dda/" 33 fi 34 35 # Launch the wrapped program 36 replaceProgram() { 37 cp "$1" "''${1}.bk" 38 unlink "$1" 39 mv "''${1}.bk" "$1" 40 sed -i "$1" -e "s,${builtins.storeDir}/.\+\(/bin/cataclysm-tiles\),$out\1," 41 } 42 for script in "$out/share/applications/cataclysm-dda.desktop" \ 43 "$out/Applications/Cataclysm.app/Contents/MacOS/Cataclysm.sh" 44 do 45 if [ -e "$script" ]; then 46 replaceProgram "$script" 47 fi 48 done 49 ''; 50 }