From c4e7178003c5f7471d5e78161828f326e5a1940b Mon Sep 17 00:00:00 2001
From: Alexander Foremny <aforemny@posteo.de>
Date: Sun, 23 Feb 2025 18:43:34 +0100
Subject: hybdrid shell

---
 default.nix | 107 ++++++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 68 insertions(+), 39 deletions(-)

(limited to 'default.nix')

diff --git a/default.nix b/default.nix
index 25a1cc0..490b01d 100644
--- a/default.nix
+++ b/default.nix
@@ -1,4 +1,20 @@
-{ pkgs ? import sources.nixpkgs { overlays = [ (import ./pkgs { }) ]; }
+{ pkgs ? import sources.nixpkgs {
+    overlays = [
+      (import ./pkgs { })
+      (self: super: {
+        haskell = super.haskell // {
+          packageOverrides = self.lib.composeManyExtensions [
+            super.haskell.packageOverrides
+            (self: super: {
+              ghcWithPackages = super.ghcWithPackages.override {
+                installDocumentation = false; # XXX true (default)
+              };
+            })
+          ];
+        };
+      })
+    ];
+  }
 , sources ? import ./nix/sources.nix
 }:
 let
@@ -9,44 +25,57 @@ in
 rec {
   inherit (haskellPackages) acms;
   inherit (jsHaskellPackages) frontend;
-  shell = haskellPackages.shellFor {
-    packages = _: [
-      haskellPackages.acms
-      haskellPackages.autotypes
-      haskellPackages.frontend
-    ];
-    buildInputs = [
-      haskellPackages.astore
-      haskellPackages.autotypes
-      haskellPackages.cabal-install
-      haskellPackages.haskell-language-server
-      haskellPackages.ormolu
-      pkgs.pkg-config
-      pkgs.niv
-      (pkgs.writeScriptBin "reload" ''
-        set -efu
-        ${haskellPackages.ghcid.bin}/bin/ghcid -c \
-          '${haskellPackages.cabal-install}/bin/cabal new-repl' \
-          -T ':run Main.main'
-      '')
-      (pkgs.writeScriptBin "acms" ''
-        set -efu
-        exec ${haskellPackages.cabal-install}/bin/cabal run acms -- "$@"
-      '')
-      (pkgs.writeScriptBin "format" ''
-        set -efu
-        git ls-files | grep .hs$ | while read -r fn; do
-          ${haskellPackages.ormolu}/bin/ormolu -i "$fn" || :
-        done
-      '')
-      (pkgs.writeScriptBin "git-hook-precommit" ''
-        set -efux
-        cd ${lib.escapeShellArg (toString ./.)}
-        nix-build . -A acms -A frontend --no-out-link
-        nix-build tests.nix --no-out-link
-      '')
+  shell = pkgs.mkShell {
+    inputsFrom = [
+      (jsHaskellPackages.shellFor {
+        packages = _: [
+          jsHaskellPackages.acms
+          jsHaskellPackages.autotypes
+          jsHaskellPackages.frontend
+        ];
+      })
+      (haskellPackages.shellFor {
+        packages = _: [
+          haskellPackages.acms
+          haskellPackages.autotypes
+          haskellPackages.frontend
+        ];
+        withHoogle = true;
+        withHaddock = true;
+      })
+      (pkgs.mkShell {
+        buildInputs = [
+          haskellPackages.astore
+          haskellPackages.autotypes
+          haskellPackages.cabal-install
+          haskellPackages.haskell-language-server
+          haskellPackages.ormolu
+          pkgs.niv
+          pkgs.pkg-config
+          (pkgs.writeScriptBin "reload" ''
+            set -efu
+            ${haskellPackages.ghcid.bin}/bin/ghcid -c \
+              '${haskellPackages.cabal-install}/bin/cabal new-repl' \
+              -T ':run Main.main'
+          '')
+          (pkgs.writeScriptBin "acms" ''
+            set -efu
+            exec ${haskellPackages.cabal-install}/bin/cabal run acms -- "$@"
+          '')
+          (pkgs.writeScriptBin "format" ''
+            set -efu
+            git ls-files | grep .hs$ | while read -r fn; do
+              ${haskellPackages.ormolu}/bin/ormolu -i "$fn" || :
+            done
+          '')
+          (pkgs.writeScriptBin "git-hook-precommit" ''
+            set -efux
+            cd ${lib.escapeShellArg (toString ./.)}
+            nix-build . -A acms -A frontend --no-out-link
+            nix-build tests.nix --no-out-link
+          '')
+        ];
+      })
     ];
-    withHoogle = true;
-    withHaddock = true;
   };
 }
-- 
cgit v1.2.3