Skip to content

Commit 7c0201b

Browse files
authored
Add support for .env shells to flake.nix (#3322)
The main motivation for this change is to enable development of HLS plugins by generating a `.env` shell for every package in this repository. Example usage: ```ShellSession $ nix develop .#haskell-language-server-dev-env.hls-fourmolu-plugin ``` This is a plain shell, though, without any tooling installed, identical to the one that Nixpkgs provides by default.
1 parent 5a8ccdb commit 7c0201b

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

flake.lock

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,10 @@
362362

363363
src = null;
364364
};
365+
366+
mkEnvShell = hpkgs:
367+
pkgs.lib.mapAttrs (name: value: hpkgs.${name}.env) pkgs.hlsSources;
368+
365369
# Create a hls executable
366370
# Copied from https://github.com/NixOS/nixpkgs/blob/210784b7c8f3d926b7db73bdad085f4dc5d79428/pkgs/development/tools/haskell/haskell-language-server/withWrapper.nix#L16
367371
mkExe = hpkgs:
@@ -394,14 +398,23 @@
394398
haskell-language-server-942-dev-nix = mkDevShellWithNixDeps ghc942 "cabal.project";
395399
};
396400

401+
# The default shell provided by Nixpkgs for a Haskell package (i.e. the
402+
# one that comes in the `.env` attribute)
403+
envShells = {
404+
haskell-language-server-dev-env = mkEnvShell ghcDefault;
405+
haskell-language-server-902-dev-env = mkEnvShell ghc902;
406+
haskell-language-server-924-dev-env = mkEnvShell ghc924;
407+
haskell-language-server-942-dev-env = mkEnvShell ghc942;
408+
};
409+
397410
allPackages = {
398411
haskell-language-server = mkExe ghcDefault;
399412
haskell-language-server-902 = mkExe ghc902;
400413
haskell-language-server-924 = mkExe ghc924;
401414
haskell-language-server-942 = mkExe ghc942;
402415
};
403416

404-
devShells = simpleDevShells // nixDevShells // {
417+
devShells = simpleDevShells // nixDevShells // envShells // {
405418
default = simpleDevShells.haskell-language-server-dev;
406419
};
407420

0 commit comments

Comments
 (0)