diff --git a/users/glittershark/xanthous/default.nix b/users/glittershark/xanthous/default.nix index c4260fe25..0b89a50af 100644 --- a/users/glittershark/xanthous/default.nix +++ b/users/glittershark/xanthous/default.nix @@ -1,21 +1,7 @@ -{ nixpkgs ? import ./nixpkgs.nix {} -, pkgs ? nixpkgs.pkgs -, lib ? nixpkgs.lib -, compiler ? "ghc865" -, failOnWarnings ? false +{ pkgs ? (import ../../../. {}).third_party +, lib ? pkgs.lib , ... }: -let - inherit (lib) id; - inherit (pkgs) fetchurl; - all-hies = import (fetchTarball { - url = "https://github.com/infinisil/all-hies/archive/4b6aab017cdf96a90641dc287437685675d598da.tar.gz"; - sha256 = "0ap12mbzk97zmxk42fk8vqacyvpxk29r2wrnjqpx4m2w9g7gfdya"; - }) {}; - hie = all-hies.selection { selector = p: { inherit (p) ghc865; }; }; - xanthous = - (if failOnWarnings then pkgs.haskell.lib.failOnAllWarnings else id) - ((pkgs.haskellPackages - # .extend (import ./haskell-overlay.nix { inherit pkgs; }) - ).callPackage (import ./pkg.nix { inherit pkgs; }) {}); in -xanthous // { inherit hie; } +pkgs.haskell.lib.failOnAllWarnings ( + pkgs.haskellPackages.callPackage (import ./pkg.nix { inherit pkgs; }) {} +) diff --git a/users/glittershark/xanthous/hie.nix b/users/glittershark/xanthous/hie.nix new file mode 100644 index 000000000..c8b1d2b5f --- /dev/null +++ b/users/glittershark/xanthous/hie.nix @@ -0,0 +1,16 @@ +{ pkgs ? (import ../../../. {}).third_party }: + +let + all-hies = (fetchTarball { + url = "https://github.com/infinisil/all-hies/archive/eff5d9a5e1a84150014095494331cf63e59923af.tar.gz"; + sha256 = "19bws9fyjhgiikig86cri05fxz1wrz60n69zrigq5wzbyn4hwv9h"; + }); + + sources = import "${all-hies}/sources.nix"; + build = import "${all-hies}/build.nix"; + +in (build { + glibcName = pkgs.glibc.name; + inherit sources; + ghcVersion = "8.8.3"; +}).combined diff --git a/users/glittershark/xanthous/hie.sh b/users/glittershark/xanthous/hie.sh index 4ea97997c..223a43220 100755 --- a/users/glittershark/xanthous/hie.sh +++ b/users/glittershark/xanthous/hie.sh @@ -1,10 +1,6 @@ #!/usr/bin/env bash +set -euo pipefail -cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1 +cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 -argv=( "$@" ) -argv=( "${argv[@]/\'/\'\\\'\'}" ) -argv=( "${argv[@]/#/\'}" ) -argv=( "${argv[@]/%/\'}" ) - -exec nix-shell --pure --run "exec $(nix-build -o dist/nix/hie -A hie)/bin/hie ${argv[*]}" +exec nix-shell --run "$(nix-build -o dist/bin/hie hie.nix)/bin/hie $*" diff --git a/users/glittershark/xanthous/pkg.nix b/users/glittershark/xanthous/pkg.nix index 91de68ea3..fc303a3ed 100644 --- a/users/glittershark/xanthous/pkg.nix +++ b/users/glittershark/xanthous/pkg.nix @@ -1,16 +1,7 @@ -{ pkgs ? import ./nixpkgs.nix {} }: -let - inherit (builtins) filterSource elem not; - gitignoreSource = (import (pkgs.fetchFromGitHub { - owner = "hercules-ci"; - repo = "gitignore"; - rev = "f9e996052b5af4032fe6150bba4a6fe4f7b9d698"; - sha256 = "0jrh5ghisaqdd0vldbywags20m2cxpkbbk5jjjmwaw0gr8nhsafv"; - # date = 2019-09-18T15:15:15+02:00; - }) { inherit (pkgs) lib; }).gitignoreSource; -in +{ pkgs ? (import ../../../. {}).third_party }: + import (pkgs.haskellPackages.haskellSrc2nix { name = "xanthous"; - src = gitignoreSource ./.; + src = pkgs.gitignoreSource ./.; extraCabal2nixOptions = "--hpack"; }) diff --git a/users/glittershark/xanthous/shell.nix b/users/glittershark/xanthous/shell.nix index b78844c0e..491f0779f 100644 --- a/users/glittershark/xanthous/shell.nix +++ b/users/glittershark/xanthous/shell.nix @@ -1,35 +1,17 @@ -{ nixpkgs ? import ./nixpkgs.nix {} -, pkgs ? nixpkgs.pkgs -, compiler ? "ghc865" -, withHoogle ? true -}: -let - pkg = import ./pkg.nix { inherit pkgs; }; +{ pkgs ? (import ../../../. {}).third_party, ... }: - packageSet = ( - if compiler == "default" - then pkgs.haskellPackages - else pkgs.haskell.packages.${compiler} - ); +(pkgs.haskellPackages.extend (pkgs.haskell.lib.packageSourceOverrides { + xanthous = pkgs.gitignoreSource ./.; +})).shellFor { + packages = p: [p.xanthous]; + withHoogle = true; + buildInputs = with pkgs.haskellPackages; [ + cabal-install + ghc-prof-flamegraph + hp2pretty + ]; - haskellPackages = ( - if withHoogle - then packageSet.override { - overrides = (self: super: { - ghc = super.ghc // { withPackages = super.ghc.withHoogle; }; - ghcWithPackages = self.ghc.withPackages; - } // (import ../../../third_party/haskell_overlay { inherit pkgs; }) - self super); - } - else packageSet - ); - - drv = pkgs.haskell.lib.doBenchmark (haskellPackages.callPackage pkg {}); - - inherit (pkgs.haskell.lib) addBuildTools; -in -(addBuildTools drv (with haskellPackages; [ - cabal-install - ghc-prof-flamegraph - hp2pretty -])).env + nativeBuildInputs = [ + (import ./hie.nix { inherit pkgs; }) + ]; +}