about summary refs log tree commit diff
path: root/pkgs/applications/editors/yi/yi.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/editors/yi/yi.nix')
-rw-r--r--pkgs/applications/editors/yi/yi.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/applications/editors/yi/yi.nix b/pkgs/applications/editors/yi/yi.nix
new file mode 100644
index 000000000000..ae5e9a83452f
--- /dev/null
+++ b/pkgs/applications/editors/yi/yi.nix
@@ -0,0 +1,63 @@
+{ cabal, alex, binary, Cabal, cautiousFile, concreteTyperep
+, dataDefault, derive, Diff, dlist, dyre, filepath, fingertree
+, glib, gtk, hashable, hint, HUnit, lens, mtl, pango, parsec
+, pointedlist, QuickCheck, random, regexBase, regexTdfa, safe
+, split, tasty, tastyHunit, tastyQuickcheck, time, transformersBase
+, uniplate, unixCompat, unorderedContainers, utf8String, vty
+, xdgBasedir
+, withPango ? true
+
+# User may need extra dependencies for their configuration file so we
+# want to specify it here to have them available when wrapping the
+# produced binary.
+, extraDepends ? [ ]
+}:
+
+cabal.mkDerivation (self: {
+  pname = "yi";
+  version = "0.8.2";
+  sha256 = "18rnyswsdzkh0jdcqfg8pr90mpm6xf11siv598svqkxg12d2qql9";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [
+    binary Cabal cautiousFile concreteTyperep dataDefault derive Diff
+    dlist dyre filepath fingertree hashable hint lens mtl
+    parsec pointedlist QuickCheck random regexBase regexTdfa safe
+    split time transformersBase uniplate unixCompat unorderedContainers
+    utf8String vty xdgBasedir
+  ] ++ (if withPango then [ pango gtk glib ] else [ ]) ++ extraDepends;
+  testDepends = [
+    filepath HUnit QuickCheck tasty tastyHunit tastyQuickcheck
+  ];
+  buildTools = [ alex ];
+  configureFlags = if withPango then "-fpango" else "-f-pango";
+  doCheck = false;
+
+  # https://ghc.haskell.org/trac/ghc/ticket/9170
+  noHaddock = self.ghc.version == "7.6.3";
+
+  # Allows Yi to find the libraries it needs at runtime.
+  postInstall = ''
+    mv $out/bin/yi $out/bin/.yi-wrapped
+    cat - > $out/bin/yi <<EOF
+    #! ${self.stdenv.shell}
+    # Trailing : is necessary for it to pick up Prelude &c.
+    export GHC_PACKAGE_PATH=$(${self.ghc.GHCGetPackages} ${self.ghc.version} \
+                              | sed 's/-package-db\ //g' \
+                              | sed 's/^\ //g' \
+                              | sed 's/\ /:/g')\
+    :$out/lib/ghc-${self.ghc.version}/package.conf.d/yi-$version.installedconf:
+
+    eval exec $out/bin/.yi-wrapped "\$@"
+    EOF
+    chmod +x $out/bin/yi
+  '';
+
+  meta = {
+    homepage = "http://haskell.org/haskellwiki/Yi";
+    description = "The Haskell-Scriptable Editor";
+    license = self.stdenv.lib.licenses.gpl2;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [ self.stdenv.lib.maintainers.fuuzetsu ];
+  };
+})