diff --git a/default.nix b/default.nix index 06dc489..542d938 100644 --- a/default.nix +++ b/default.nix @@ -147,7 +147,10 @@ with rec # version from `package.yaml` and create a dummy module that we inject in the # `ghci` command. niv-devshell = haskellPackages.shellFor { - buildInputs = [ pkgs.nixpkgs-fmt ]; + buildInputs = [ + pkgs.nixpkgs-fmt + pkgs.ormolu + ]; packages = ps: [ ps.niv ]; shellHook = '' repl_for() { diff --git a/nix/default.nix b/nix/default.nix index a4d3eee..9e5889c 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -1,9 +1,14 @@ { sources ? import ./sources.nix }: +let + ormoluCompiler = "ghc865"; +in import sources.nixpkgs { overlays = [ (_: pkgs: { inherit sources; }) (_: pkgs: { nixpkgs-fmt = import pkgs.sources.nixpkgs-fmt {}; }) (_: pkgs: { termtosvg = pkgs.callPackage ./termtosvg.nix {}; }) + (import ./haskell-overlay.nix { inherit ormoluCompiler; }) + (_: pkgs: { ormolu = pkgs.haskell.packages."${ormoluCompiler}".ormolu; }) ]; config = {}; } diff --git a/nix/haskell-overlay.nix b/nix/haskell-overlay.nix new file mode 100644 index 0000000..b4a3248 --- /dev/null +++ b/nix/haskell-overlay.nix @@ -0,0 +1,14 @@ +{ ormoluCompiler }: self: super: + +let + ormolu = import super.sources.ormolu { pkgs = self; inherit ormoluCompiler; }; +in +{ + haskell = super.haskell // { + packages = super.haskell.packages // { + "${ormolu.ormoluCompiler}" = super.haskell.packages.${ormolu.ormoluCompiler}.override { + overrides = ormolu.ormoluOverlay; + }; + }; + }; +} diff --git a/nix/sources.json b/nix/sources.json index acd8a53..9883fd6 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -23,6 +23,18 @@ "url": "https://github.com/nix-community/nixpkgs-fmt/archive/2a64f4b6a597d0d62004ffcec3ae4fd83cd1efc8.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, + "ormolu": { + "branch": "master", + "description": "A formatter for Haskell source code", + "homepage": null, + "owner": "tweag", + "repo": "ormolu", + "rev": "22839ed74c9964578ae3b2af5c693f605ac8a687", + "sha256": "055z8p8kl80fr50crcvy2djk3qg2x34p8pa7kihxlcj9wrhsijyy", + "type": "tarball", + "url": "https://github.com/tweag/ormolu/archive/22839ed74c9964578ae3b2af5c693f605ac8a687.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + }, "termtosvg": { "branch": "develop", "description": "Record terminal sessions as SVG animations",