diff --git a/default.nix b/default.nix index d3a82782..84eb41b3 100644 --- a/default.nix +++ b/default.nix @@ -1,24 +1,13 @@ -{ compiler ? "ghc865", pkgs ? import nix/pkgs.nix }: - let - hlib = pkgs.haskell.lib; - hpkg = pkgs.haskell.packages."${compiler}"; - llvm-hs = import ./nix/llvm-hs.nix; -in - -hpkg.developPackage { - root = ./grin; - overrides = self: super: { - llvm-hs = hlib.dontCheck (self.callCabal2nix "llvm-hs" "${llvm-hs}/llvm-hs" { - llvm-config = pkgs.llvm_7; - }); - llvm-hs-pure = self.callCabal2nix "llvm-hs-pure" "${llvm-hs}/llvm-hs-pure" {}; - llvm-hs-pretty = self.callPackage ./nix/llvm-hs-pretty.nix {}; + haskell = import ./nix/haskell.nix; + llvm-overlay = self: super: { + llvm-config = self.llvm_7; }; - modifier = drv: hlib.addBuildTools drv [ - (import nix/llvm.nix {}) - pkgs.clang_7 - pkgs.llvm_7 - ]; - returnShellEnv = false; -} + extra-overlays = [ llvm-overlay ]; + pkgs = import ./nix/packages.nix (haskell // { + overlays = haskell.overlays ++ extra-overlays; + }); +in + pkgs.haskell-nix.stackProject { + src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; }; + } diff --git a/nix/haskell-nix-src.json b/nix/haskell-nix-src.json new file mode 100644 index 00000000..b7744e52 --- /dev/null +++ b/nix/haskell-nix-src.json @@ -0,0 +1,7 @@ +{ + "url": "https://github.com/input-output-hk/haskell.nix", + "rev": "ebdc0030e6973629c1ed7dba53c1b1d154c3e75e", + "date": "2019-12-11T01:12:46+00:00", + "sha256": "1q25sw8kz7r0wwzq780qq1cgsiy1g7iwnywckixa28psim8rp2nw", + "fetchSubmodules": false +} diff --git a/nix/haskell.nix b/nix/haskell.nix new file mode 100644 index 00000000..0770819d --- /dev/null +++ b/nix/haskell.nix @@ -0,0 +1,8 @@ +let + spec = builtins.fromJSON (builtins.readFile ./haskell-nix-src.json); + haskell-nix-src = builtins.fetchGit { + name = "haskell-lib"; + inherit (spec) url rev; + }; +in + import haskell-nix-src diff --git a/nix/llvm-hs-pretty.nix b/nix/llvm-hs-pretty.nix deleted file mode 100644 index 03b9bb35..00000000 --- a/nix/llvm-hs-pretty.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ mkDerivation, array, base, bytestring, directory, filepath -, llvm-hs, llvm-hs-pure, mtl, prettyprinter, tasty, tasty-golden -, tasty-hspec, tasty-hunit, text, transformers, stdenv -}: -mkDerivation { - pname = "llvm-hs-pretty"; - version = "0.6.1.0"; - sha256 = "12w1rkkaf50jl2vdkyk4xpvjmsxzjbfkdyklaq5p6b8ykw872pda"; - libraryHaskellDepends = [ - array base bytestring llvm-hs-pure prettyprinter text - ]; - testHaskellDepends = [ - base directory filepath llvm-hs llvm-hs-pure mtl tasty tasty-golden - tasty-hspec tasty-hunit text transformers - ]; - description = "A pretty printer for LLVM IR"; - license = stdenv.lib.licenses.mit; - hydraPlatforms = stdenv.lib.platforms.none; -} diff --git a/nix/llvm-hs.nix b/nix/llvm-hs.nix deleted file mode 100644 index ec6dea2c..00000000 --- a/nix/llvm-hs.nix +++ /dev/null @@ -1,7 +0,0 @@ -let - url = "https://github.com/csabahruska/llvm-hs"; - ref = "llvm-7"; - rev = "868e23a13942703255979369defdb49ac57b6866"; - repo = builtins.fetchGit { inherit url ref rev; }; -in - repo diff --git a/nix/llvm.nix b/nix/llvm.nix index a8c389cc..19c19f6d 100644 --- a/nix/llvm.nix +++ b/nix/llvm.nix @@ -1,4 +1,4 @@ -{ pkgs ? import ./pkgs.nix }: +{ pkgs ? import ./packages.nix {} }: pkgs.runCommand "llvm-7-links" diff --git a/nix/packages.nix b/nix/packages.nix new file mode 100644 index 00000000..d9a729f3 --- /dev/null +++ b/nix/packages.nix @@ -0,0 +1,10 @@ +let + commit = "4c6e9a553872366e485766fa8b574b54b15957f8"; + nixpkgs = builtins.fetchTarball { + name = "nixpkgs-19.09"; + url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; + sha256 = "1az9yg2lwwfw3aypi6bdsk7ghld2963vqdp8ajkxciyxdfkaxb3b"; + }; + pkgs = import nixpkgs; +in + pkgs diff --git a/nix/pkgs.nix b/nix/pkgs.nix deleted file mode 100644 index b8a8ec34..00000000 --- a/nix/pkgs.nix +++ /dev/null @@ -1,8 +0,0 @@ -let - commit = "2adf2d615cf8f6c6be49a0e54dc9ebf551dcf70f"; - pinned = builtins.fetchTarball { - name = "nixpkgs-19.09"; - url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; - sha256 = "0w8zgj38di4ssw6s0bxdb9rgksqfszsa3304863xic4bzsvkql9b"; - }; -in import pinned {} diff --git a/shell.nix b/shell.nix index cc2da059..6cc8d1be 100644 --- a/shell.nix +++ b/shell.nix @@ -1,14 +1,12 @@ -{ pkgs ? import nix/pkgs.nix }: - let - compiler = "ghc865"; - hpkg = pkgs.haskell.packages."${compiler}"; - grin = import ./. { inherit compiler pkgs; }; + pkgs = import ./nix/packages.nix {}; + llvm-links = import ./nix/llvm.nix { inherit pkgs; }; + haskellPkgs = import ./.; in - -hpkg.shellFor { - withHoogle = true; - packages = p: [ grin ]; - buildInputs = with hpkg; [ cabal-install ghcid ]; - inherit (grin.env) nativeBuildInputs; -} + haskellPkgs.shellFor { + buildInputs = with pkgs.haskellPackages; [ + llvm-links + hlint + ghcid + ]; + }