aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix')
-rw-r--r--nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix47
1 files changed, 47 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix b/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix
new file mode 100644
index 00000000000..a73c320f9c6
--- /dev/null
+++ b/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix
@@ -0,0 +1,47 @@
+{ lib, symlinkJoin, makeWrapper }:
+
+unwrapped:
+
+pkgsSpec:
+
+let
+ mods = if lib.isFunction pkgsSpec
+ then pkgsSpec unwrapped.pkgs
+ else pkgsSpec;
+in
+
+if builtins.length mods == 0
+then unwrapped
+else symlinkJoin {
+ name = unwrapped.name + "-with-mods";
+
+ paths = [ unwrapped ] ++ mods;
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ postBuild = ''
+ if [ -x $out/bin/cataclysm ]; then
+ wrapProgram $out/bin/cataclysm \
+ --add-flags "--datadir $out/share/cataclysm-dda/"
+ fi
+ if [ -x $out/bin/cataclysm-tiles ]; then
+ wrapProgram $out/bin/cataclysm-tiles \
+ --add-flags "--datadir $out/share/cataclysm-dda/"
+ fi
+
+ # Launch the wrapped program
+ replaceProgram() {
+ cp "$1" "''${1}.bk"
+ unlink "$1"
+ mv "''${1}.bk" "$1"
+ sed -i "$1" -e "s,/nix/store/.\+\(/bin/cataclysm-tiles\),$out\1,"
+ }
+ for script in "$out/share/applications/cataclysm-dda.desktop" \
+ "$out/Applications/Cataclysm.app/Contents/MacOS/Cataclysm.sh"
+ do
+ if [ -e "$script" ]; then
+ replaceProgram "$script"
+ fi
+ done
+ '';
+}