diff --git a/shell.nix b/shell.nix index 61d18d9..0348d51 100644 --- a/shell.nix +++ b/shell.nix @@ -1,38 +1,35 @@ -# shell.nix +{ nixpkgs ? import {}, compiler ? "default", doBenchmark ? false }: + let - project = import ./default.nix; + + inherit (nixpkgs) pkgs; + + f = { mkDerivation, base, directory, filepath, hakyll, HTTP, lib + , time + }: + mkDerivation { + pname = "nek0-blog"; + version = "0.1.0.0"; + src = ./.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base directory filepath hakyll HTTP time + ]; + homepage = "https://nek0.eu"; + description = "My blog"; + license = "unknown"; + hydraPlatforms = lib.platforms.none; + }; + + haskellPackages = if compiler == "default" + then pkgs.haskellPackages + else pkgs.haskell.packages.${compiler}; + + variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id; + + drv = variant (haskellPackages.callPackage f {}); + in - project.shellFor { - # ALL of these arguments are optional. - # List of packages from the project you want to work on in - # the shell (default is all the projects local packages). - #packages = ps: with ps; [ - # pkga - # pkgb - #]; - - # Builds a Hoogle documentation index of all dependencies, - # and provides a "hoogle" command to search the index. - withHoogle = false; - - # Some common tools can be added with the `tools` argument - tools = { - cabal = "latest"; - hakyll = "latest"; - }; - # See overlays/tools.nix for more details - - # Some you may need to get some other way. - buildInputs = [ (import {}).git ]; - - # Sellect cross compilers to include. - #crossPlatforms = ps: with ps; [ - # ghcjs # Adds support for `js-unknown-ghcjs-cabal build` in the shell - # # mingwW64 # Adds support for `x86_64-W64-mingw32-cabal build` in the shell - #]; - - # Prevents cabal from choosing alternate plans, so that - # *all* dependencies are provided by Nix. - exactDeps = true; - } + if pkgs.lib.inNixShell then drv.env else drv