diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 0301e446..13e958bd 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -34,7 +34,6 @@ jobs: strategy: matrix: versions: - - release: 'release-8.10.nix' - release: 'release-9.0.nix' - release: 'release-9.2.nix' steps: @@ -46,14 +45,14 @@ jobs: signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' - run: | nix-build --keep-going \ - -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/nixos-21.11 \ + -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/nixos-22.05 \ ${{ matrix.versions.release }} \ --arg packages "haskellPackages: [ haskellPackages.ihaskell ]" # release-9.2.nix doesn't include HLint support so the test fails - if: ${{ matrix.versions.release != 'release-9.2.nix' }} run: | nix-shell \ - -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/nixos-21.11 \ + -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/nixos-22.05 \ -p jq --run \ 'test/acceptance.nbconvert.sh result/bin/jupyter nbconvert' diff --git a/release-8.10.nix b/release-8.10.nix deleted file mode 100644 index 0f408db7..00000000 --- a/release-8.10.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ compiler ? "ghc8107" -, nixpkgs ? import {} -, packages ? (_: []) -, pythonPackages ? (_: []) -, rtsopts ? "-M3g -N2" -, staticExecutable ? false -, systemPackages ? (_: []) -}: - import (./release.nix) { inherit compiler nixpkgs packages pythonPackages rtsopts systemPackages; } diff --git a/release-9.0.nix b/release-9.0.nix index b6042d31..a4c0069e 100644 --- a/release-9.0.nix +++ b/release-9.0.nix @@ -1,11 +1,5 @@ -let - nixpkgs-src = builtins.fetchTarball { - url = "https://github.com/NixOS/nixpkgs/tarball/4869c88626382a01ed59b161afe99d9e164bd8a1"; - sha256 = "03ncnw0p28j5jsp5dh66jl003x81jhkh2larwkq3fvsbkai4x0kn"; - }; -in -{ compiler ? "ghc901" -, nixpkgs ? import nixpkgs-src {} +{ compiler ? "ghc902" +, nixpkgs ? import {} , packages ? (_: []) , pythonPackages ? (_: []) , rtsopts ? "-M3g -N2" diff --git a/release-9.2.nix b/release-9.2.nix index 20d41c7e..7b57f16b 100644 --- a/release-9.2.nix +++ b/release-9.2.nix @@ -1,114 +1,9 @@ -let - # https://github.com/NixOS/nixpkgs/pull/144758 - nixpkgs-src = builtins.fetchTarball { - url = "https://github.com/NixOS/nixpkgs/tarball/207243f7c9ca642af5c7f6bc0e7dcbd32890b411"; - sha256 = "099311cml687zm3mi9pqabd5c46nl2ydg2akidfj4a2w59pl39kn"; - }; -in - -{ compiler ? "ghc921" -, nixpkgs ? import nixpkgs-src {} +{ compiler ? "ghc922" +, nixpkgs ? import {} , packages ? (_: []) , pythonPackages ? (_: []) , rtsopts ? "-M3g -N2" , staticExecutable ? false , systemPackages ? (_: []) }: - -let - ihaskell-src = nixpkgs.nix-gitignore.gitignoreSource - [ "**/*.ipynb" "**/*.nix" "**/*.yaml" "**/*.yml" "**/\.*" "/Dockerfile" "/README.md" "/cabal.project" "/images" "/notebooks" "/requirements.txt" ] - ./.; - displays = self: builtins.listToAttrs ( - map - (display: { name = "ihaskell-${display}"; value = self.callCabal2nix display "${ihaskell-src}/ihaskell-display/ihaskell-${display}" {}; }) - [ "aeson" "blaze" "charts" "diagrams" "gnuplot" "graphviz" "hatex" "juicypixels" "magic" "plot" "rlangqq" "static-canvas" "widgets" ]); - haskellPackages = nixpkgs.haskell.packages."${compiler}".override (old: { - overrides = nixpkgs.lib.composeExtensions (old.overrides or (_: _: {})) (self: super: { - ihaskell = (nixpkgs.haskell.lib.overrideCabal ( - self.callCabal2nix "ihaskell" ihaskell-src {}) (_drv: { - preCheck = '' - export HOME=$TMPDIR/home - export PATH=$PWD/dist/build/ihaskell:$PATH - export GHC_PACKAGE_PATH=$PWD/dist/package.conf.inplace/:$GHC_PACKAGE_PATH - ''; - configureFlags = (old.configureFlags or []) ++ [ "-f" "-use-hlint" ]; - })).overrideScope (self: super: { - hlint = null; - }); - ghc-parser = self.callCabal2nix "ghc-parser" ./ghc-parser {}; - ipython-kernel = self.callCabal2nix "ipython-kernel" ./ipython-kernel {}; - - aeson = super.aeson_2_0_1_0; - } // displays self); - }); - # statically linking against haskell libs reduces closure size at the expense - # of startup/reload time, so we make it configurable - ihaskellExe = if staticExecutable - then nixpkgs.haskell.lib.justStaticExecutables haskellPackages.ihaskell - else nixpkgs.haskell.lib.enableSharedExecutables haskellPackages.ihaskell; - ihaskellEnv = haskellPackages.ghcWithPackages packages; - jupyterlab = nixpkgs.python3.withPackages (ps: [ ps.jupyterlab ] ++ pythonPackages ps); - ihaskellGhcLibFunc = exe: env: nixpkgs.writeShellScriptBin "ihaskell" '' - ${exe}/bin/ihaskell -l $(${env}/bin/ghc --print-libdir) "$@" - ''; - ihaskellKernelFileFunc = ihaskellGhcLib: rtsopts: { - display_name = "Haskell"; - argv = [ - "${ihaskellGhcLib}/bin/ihaskell" - "kernel" - "{connection_file}" - "+RTS" - ] ++ (nixpkgs.lib.splitString " " rtsopts) ++ [ - "-RTS" - ]; - language = "haskell"; - }; - ihaskellKernelSpecFunc = ihaskellKernelFile: nixpkgs.runCommand "ihaskell-kernel" {} '' - export kerneldir=$out/kernels/haskell - mkdir -p $kerneldir - cp ${./html}/* $kerneldir - echo '${builtins.toJSON ihaskellKernelFile}' > $kerneldir/kernel.json - ''; - ihaskellLabextension = nixpkgs.runCommand "ihaskell-labextension" {} '' - mkdir -p $out/labextensions/ - ln -s ${./jupyterlab-ihaskell/labextension} $out/labextensions/jupyterlab-ihaskell - ''; - ihaskellDataDirFunc = ihaskellKernelSpec: ihaskellLabextension: nixpkgs.buildEnv { - name = "ihaskell-data-dir"; - paths = [ ihaskellKernelSpec ihaskellLabextension ]; - }; - ihaskellBuildEnvFunc = { ihaskellEnv, jupyterlab, systemPackages, ihaskellDataDir }: nixpkgs.buildEnv { - name = "ihaskell-with-packages"; - buildInputs = [ nixpkgs.makeWrapper ]; - paths = [ ihaskellEnv jupyterlab ]; - postBuild = '' - for prg in $out/bin"/"*;do - if [[ -f $prg && -x $prg ]]; then - wrapProgram $prg \ - --prefix PATH : "${nixpkgs.lib.makeBinPath ([ihaskellEnv] ++ (systemPackages nixpkgs))}" \ - --prefix JUPYTER_PATH : "${ihaskellDataDir}" - fi - done - ''; - passthru = { - inherit haskellPackages; - inherit ihaskellExe; - inherit ihaskellEnv; - inherit ihaskellLabextension; - inherit jupyterlab; - inherit ihaskellGhcLibFunc; - inherit ihaskellKernelFileFunc; - inherit ihaskellKernelSpecFunc; - inherit ihaskellDataDirFunc; - inherit ihaskellBuildEnvFunc; - }; - }; -in ihaskellBuildEnvFunc { - inherit ihaskellEnv jupyterlab systemPackages; - ihaskellDataDir = let - ihaskellGhcLib = ihaskellGhcLibFunc ihaskellExe ihaskellEnv; - ihaskellKernelFile = ihaskellKernelFileFunc ihaskellGhcLib rtsopts; - ihaskellKernelSpec = ihaskellKernelSpecFunc ihaskellKernelFile; - in ihaskellDataDirFunc ihaskellKernelSpec ihaskellLabextension; -} + import (./release.nix) { inherit compiler nixpkgs packages pythonPackages rtsopts systemPackages; }