summary refs log tree commit diff
path: root/pkgs/tools/graphics/ldgallery/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/graphics/ldgallery/default.nix')
-rw-r--r--pkgs/tools/graphics/ldgallery/default.nix53
1 files changed, 53 insertions, 0 deletions
diff --git a/pkgs/tools/graphics/ldgallery/default.nix b/pkgs/tools/graphics/ldgallery/default.nix
new file mode 100644
index 00000000000..77acafcb812
--- /dev/null
+++ b/pkgs/tools/graphics/ldgallery/default.nix
@@ -0,0 +1,53 @@
+{ lib, pkgs, makeWrapper, haskellPackages, haskell, pandoc, imagemagick7 }:
+
+with lib;
+with haskell.lib;
+
+let
+  ldgallery-viewer = pkgs.callPackage ./viewer { };
+  inherit (haskellPackages) ldgallery-compiler;
+
+in
+
+# making sure that the versions of the compiler and viewer parts are in sync
+assert ldgallery-compiler.version == versions.majorMinor ldgallery-viewer.version;
+
+justStaticExecutables (overrideCabal ldgallery-compiler (oldAttrs: {
+  pname = "ldgallery"; # bundled viewer + compiler
+
+  buildTools = (oldAttrs.buildTools or []) ++ [ makeWrapper pandoc ];
+
+  prePatch = ''
+    # add viewer dist to data
+    ln -s "${ldgallery-viewer}/share/ldgallery/viewer" "data/"
+
+    ${oldAttrs.prePatch or ""}
+  '';
+
+  postInstall = ''
+    ${oldAttrs.postInstall or ""}
+
+    # wrapper for runtime dependencies registration
+    wrapProgram "$out/bin/ldgallery" \
+      --prefix PATH : ${lib.makeBinPath [ imagemagick7 ]}
+
+    # bash completion
+    mkdir -p "$out/share/bash-completion/completions"
+    "$out/bin/ldgallery" \
+      --help=bash \
+      > "$out/share/bash-completion/completions/ldgallery"
+
+    # man pages
+    mkdir -p $out/share/man/man{1,7}
+    ln -s ${ldgallery-viewer}/share/man/man7/* "$out/share/man/man7/"
+    pandoc --standalone --to man \
+      "../ldgallery-quickstart.7.md" \
+      --output "$out/share/man/man7/ldgallery-quickstart.7"
+    pandoc --standalone --to man \
+      "ldgallery.1.md" \
+      --output "$out/share/man/man1/ldgallery.1"
+  '';
+
+  # other package metadata (maintainer, description, license, ...)
+  # are inherited from the compiler package
+}))