summary refs log tree commit diff
path: root/pkgs/applications/editors/yi/yi-custom.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/editors/yi/yi-custom.nix')
-rw-r--r--pkgs/applications/editors/yi/yi-custom.nix40
1 files changed, 40 insertions, 0 deletions
diff --git a/pkgs/applications/editors/yi/yi-custom.nix b/pkgs/applications/editors/yi/yi-custom.nix
new file mode 100644
index 00000000000..3dbd4611998
--- /dev/null
+++ b/pkgs/applications/editors/yi/yi-custom.nix
@@ -0,0 +1,40 @@
+# This is a manually-written expression over an in-tree cabal file.
+# It's awkward but this way allows the package user to pass in
+# extraPackages without much extra hassle on their end, similarly how
+# the XMonad service handles it: the difference is that we don't have
+# anything like XMONAD_GHC…
+#
+# The idea is that the user changes their configs using any libraries
+# he likes and then builds it using this expression. Once that's done,
+# ‘reload’ and similar functions should all work as long as the user
+# doesn't need new libraries at which point they should add them to
+# extraPackages and rebuild from the expression.
+{ cabal, yi, extraPackages, makeWrapper, ghcWithPackages }:
+let
+  w = ghcWithPackages (self: [ yi ] ++ extraPackages self);
+  wrappedGhc = w.override { ignoreCollisions = true; };
+in
+cabal.mkDerivation (self: rec {
+  pname = "yi-custom";
+  version = "0.0.0.1";
+  src = ./yi-custom-cabal;
+  isLibrary = true;
+  buildDepends = [ yi ];
+  buildTools = [ makeWrapper ];
+  noHaddock = true;
+  doCheck = false;
+
+  postInstall = ''
+    makeWrapper ${yi}/bin/yi $out/bin/yi \
+      --set NIX_GHC ${wrappedGhc}/bin/ghc \
+      --set NIX_GHC_LIBDIR ${wrappedGhc}/lib/ghc-${self.ghc.version}
+  '';
+  meta = {
+    homepage = "http://haskell.org/haskellwiki/Yi";
+    description = "Wrapper over user-specified Haskell libraries for use in Yi config";
+    license = self.stdenv.lib.licenses.publicDomain;
+    platforms = self.ghc.meta.platforms;
+    maintainers = with self.stdenv.lib.maintainers; [ fuuzetsu ];
+  };
+
+})
\ No newline at end of file