Nix and stack.yaml organization

This commit is contained in:
Tom McLaughlin 2023-07-08 01:39:10 -07:00
parent 641e7b9ecc
commit 9f57e2c52e
50 changed files with 1732 additions and 1182 deletions

View File

@ -1,108 +0,0 @@
name: CI
on:
push:
branches:
- master
paths-ignore:
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- 'hie.yaml'
- '*.nix'
pull_request:
paths-ignore:
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- 'hie.yaml'
- '*.nix'
jobs:
linux:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
versions:
- stack-yaml: 'stack-8.0.yaml'
- stack-yaml: 'stack-8.2.yaml'
- stack-yaml: 'stack-8.4.yaml'
- stack-yaml: 'stack-8.6.yaml'
- stack-yaml: 'stack-8.8.yaml'
- stack-yaml: 'stack-8.10.yaml'
- stack-yaml: 'stack-9.0.yaml'
- stack-yaml: 'stack-9.2.yaml'
- stack-yaml: 'stack.yaml'
steps:
- uses: actions/checkout@v2
- name: Cache .stack
uses: actions/cache@v2.1.6
with:
path: ~/.stack/snapshots
key: ${{ runner.os }}-${{ matrix.versions.stack-yaml }}-${{ hashFiles(format('./{0}', matrix.versions.stack-yaml)) }}
restore-keys: |
${{ runner.os }}-${{ matrix.versions.stack-yaml }}
- name: Update system dependencies
run: |
sudo apt update
- name: Install system dependencies
run: |
sudo apt install libmagic-dev libgmp-dev libblas-dev liblapack-dev libcairo2-dev libpango1.0-dev libzmq3-dev jq
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: '3.8'
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
- name: Install Stack
run: |
export PATH=$HOME/.local/bin:$PATH
mkdir -p ~/.local/bin
curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
- name: Build dependencies
run: |
# Used to avoid 'source and destination file are the same' error
mv ${{ matrix.versions.stack-yaml }} intermediate-stack.yaml
mv intermediate-stack.yaml stack.yaml
echo "apply-ghc-options: everything" >> stack.yaml
stack setup
stack install gtk2hs-buildtools
stack build hmatrix
stack build --dependencies-only
- name: Run Haskell tests
run: |
set -e
stack build ipython-kernel --flag ipython-kernel:examples
stack test ihaskell --no-terminal
- name: Run integration test
# The test is flaky on GHC 8.0 so we don't run it. As long as the tests
# above pass, it's unlikely that we'll introduce a bug that we will
# only catch through the integration test on this version and not other
# versions.
if: ${{ !contains(fromJSON('["stack-8.0.yaml", "stack-8.2.yaml"]'), matrix.versions.stack-yaml) }}
run: |
set -e
stack build --no-terminal
# Ensure that IHaskell notebook remains unchanged.
# Run the notebook to regenerate the outputs, then compare the new notebook to the old one.
stack install
stack exec -- ihaskell install --stack
test/acceptance.nbconvert.sh stack exec -- jupyter nbconvert

View File

@ -1,48 +1,54 @@
name: "Docker"
name: Docker
on:
push:
branches:
- master
paths:
- '.dockerignore'
- '.github/workflows/docker.yml'
- 'Dockerfile'
- 'LICENSE'
- 'ghc-parser/**'
- 'html/**'
- 'ihaskell-display/**'
- 'ihaskell.cabal'
- 'ipython-kernel/**'
- 'jupyterlab-ihaskell/**'
- 'main/**'
- 'src/**'
- 'stack.yaml'
- '.dockerignore'
- '.github/workflows/docker.yml'
- 'Dockerfile'
- 'LICENSE'
- 'ghc-parser/**'
- 'html/**'
- 'ihaskell-display/**'
- 'ihaskell.cabal'
- 'ipython-kernel/**'
- 'jupyterlab-ihaskell/**'
- 'main/**'
- 'src/**'
- 'stack.yaml'
pull_request:
paths:
- '.dockerignore'
- '.github/workflows/docker.yml'
- 'Dockerfile'
- 'LICENSE'
- 'ghc-parser/**'
- 'html/**'
- 'ihaskell-display/**'
- 'ihaskell.cabal'
- 'ipython-kernel/**'
- 'jupyterlab-ihaskell/**'
- 'main/**'
- 'src/**'
- 'stack.yaml'
- '.dockerignore'
- '.github/workflows/docker.yml'
- 'Dockerfile'
- 'LICENSE'
- 'ghc-parser/**'
- 'html/**'
- 'ihaskell-display/**'
- 'ihaskell.cabal'
- 'ipython-kernel/**'
- 'jupyterlab-ihaskell/**'
- 'main/**'
- 'src/**'
- 'stack.yaml'
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Install Stack
run: |
export PATH=$HOME/.local/bin:$PATH
mkdir -p ~/.local/bin
curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
- uses: actions/checkout@v3
- uses: haskell/actions/setup@v2
name: Setup Haskell Stack
with:
enable-stack: true
stack-version: "latest"
- name: Check Dockerfile GHC version matches
run: |
set -e
@ -53,6 +59,7 @@ jobs:
echo "GHC_VERSION should be ${STACK_GHC_VERSION}"
exit 1
fi
- uses: elgohr/Publish-Docker-Github-Action@v5
with:
name: gibiansky/ihaskell

View File

@ -1,61 +1,72 @@
name: "Nix"
name: Nix
on:
schedule:
- cron: '0 2 * * *'
- cron: '0 2 * * *'
push:
branches:
- master
paths-ignore:
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- '*.yaml'
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- '*.yaml'
pull_request:
paths-ignore:
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- '*.yaml'
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- '*.yaml'
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
versions:
- release: 'release-9.2.nix'
- release: 'release-9.4.nix'
- release: 'release-9.6.nix'
- release: 'release-9.8.nix'
env:
- ihaskell-env-ghc810
- ihaskell-env-ghc90
- ihaskell-env-ghc92
- ihaskell-env-ghc94
- ihaskell-env-ghc96
- ihaskell-env-ghc98
- ihaskell-env-display-ghc810
- ihaskell-env-display-ghc90
- ihaskell-env-display-ghc92
- ihaskell-env-display-ghc94
- ihaskell-env-display-ghc96
- ihaskell-env-display-ghc98
steps:
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v20
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v22
with:
install_url: https://releases.nixos.org/nix/nix-2.13.3/install
- uses: cachix/cachix-action@v12
with:
name: ihaskell
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- run: |
nix-build --keep-going \
-I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/nixos-23.05 \
${{ matrix.versions.release }} \
--arg packages "haskellPackages: [ haskellPackages.ihaskell ]"
- if: matrix.versions.release != 'release-9.8.nix'
run: |
nix-shell \
-I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/nixos-23.05 \
-p jq --run \
'test/acceptance.nbconvert.sh result/bin/jupyter nbconvert'
- name: Build environment ${{matrix.env}}
run: |
nix build .#${{matrix.env}}
- name: Check acceptance test for ${{matrix.env}}
# Disable GHC 9.8 here since we don't have hlint support yet
if: ${{ !contains(fromJSON('["ihaskell-env-ghc98"]'), matrix.env) && !contains(matrix.env, fromJSON('"display"')) }}
run: |
nix build .#checks.x86_64-linux.${{matrix.env}} -L

103
.github/workflows/stack.yml vendored Normal file
View File

@ -0,0 +1,103 @@
name: Stack
on:
push:
paths-ignore:
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- 'hie.yaml'
pull_request:
paths-ignore:
- 'demo/**'
- 'docker/**'
- 'Dockerfile'
- '.dockerignore'
- '.ghci'
- '.gitignore'
- 'images/**'
- 'notebooks/**'
- 'README.md'
- 'hie.yaml'
jobs:
linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
stack-yaml:
# - 'stack/stack-8.2.yaml'
# - 'stack/stack-8.4.yaml'
# - 'stack/stack-8.6.yaml'
- 'stack/stack-8.8.yaml'
- 'stack/stack-8.10.yaml'
- 'stack/stack-9.0.yaml'
- 'stack/stack-9.2.yaml'
- 'stack/stack-9.4.yaml'
- 'stack/stack-9.6.yaml'
- 'stack.yaml'
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v22
with:
install_url: https://releases.nixos.org/nix/nix-2.13.3/install
- uses: haskell/actions/setup@v2
name: Setup Haskell Stack
with:
enable-stack: true
stack-version: "latest"
- uses: actions/cache@v3
name: Cache ~/.stack
with:
path: ~/.stack
key: ${{ runner.os }}-${{ matrix.stack-yaml }}-${{ hashFiles(format('./{0}', matrix.stack-yaml)) }}
- name: Build
run: |
export "NIX_PATH=nixpkgs=$(nix run .#print-nixpkgs-master)"
stack build --nix --stack-yaml ${{matrix.stack-yaml}}
- name: Test
if: ${{ !contains(fromJSON('["stack/stack-8.8.yaml"]'), matrix.stack-yaml) }}
run: |
export "NIX_PATH=nixpkgs=$(nix run .#print-nixpkgs-master)"
stack test --nix --stack-yaml ${{matrix.stack-yaml}}
- name: Run integration test
# The test is flaky on GHC 8.0 so we don't run it. As long as the tests
# above pass, it's unlikely that we'll introduce a bug that we will
# only catch through the integration test on this version and not other
# versions.
if: ${{ !contains(fromJSON('["stack/stack-8.0.yaml", "stack/stack-8.2.yaml"]'), matrix.stack-yaml) }}
run: |
set -e
export "NIX_PATH=nixpkgs=$(nix run .#print-nixpkgs-master)"
nix build .#jupyterlab
export PATH="$(pwd)/result/bin:$(pwd)/.local/bin:$PATH"
stack install --nix --stack-yaml ${{matrix.stack-yaml}}
echo "PATH: $PATH"
echo "jupyter: $(which jupyter)"
echo "ihaskell: $(which ihaskell)"
ihaskell install --stack
jupyter-kernelspec list
# Ensure that IHaskell notebook remains unchanged.
# Run the notebook to regenerate the outputs, then compare the new notebook to the old one.
test/acceptance.nbconvert.sh stack exec --nix --no-nix-pure --stack-yaml ${{matrix.stack-yaml}} -- jupyter nbconvert

View File

@ -1,6 +1,6 @@
# should match the GHC version of the stack.yaml resolver
# checked in CI
ARG GHC_VERSION=9.4.5
ARG GHC_VERSION=9.4.7
FROM haskell:${GHC_VERSION} AS ihaskell_base

139
flake.lock generated
View File

@ -3,27 +3,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1627913399,
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1627913399,
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
@ -48,12 +32,15 @@
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1629481132,
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
"lastModified": 1685518550,
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "997f7efcb746a9c140ce1f13c72263189225f482",
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
"type": "github"
},
"original": {
@ -62,36 +49,18 @@
"type": "github"
}
},
"gitignore": {
"flake": false,
"locked": {
"lastModified": 1611672876,
"narHash": "sha256-qHu3uZ/o9jBHiA3MEKHJ06k7w4heOhA+4HCSIvflRxo=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "211907489e9f198594c0eb0ca9256a1949c9d412",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"hls": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_2",
"gitignore": "gitignore",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1637213318,
"narHash": "sha256-ZgxPwV7t4DyGYP7aXoetq+JHtd73XlOV2fYSflQmOXw=",
"lastModified": 1700698084,
"narHash": "sha256-5HcHQ/GLcPrJk7Dn7xQGb+O5ZwJE/QNj+plWyHNuP38=",
"owner": "haskell",
"repo": "haskell-language-server",
"rev": "311107eabbf0537e0c192b2c377d282505b4eff1",
"rev": "7db6215c6da39b6550d7c1ce6ea5b1bbe6e6dfde",
"type": "github"
},
"original": {
@ -100,69 +69,91 @@
"type": "github"
}
},
"nix-filter": {
"locked": {
"lastModified": 1694857738,
"narHash": "sha256-bxxNyLHjhu0N8T3REINXQ2ZkJco0ABFPn6PIe2QUfqo=",
"owner": "numtide",
"repo": "nix-filter",
"rev": "41fd48e00c22b4ced525af521ead8792402de0ea",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "nix-filter",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1630887066,
"narHash": "sha256-0ecIlrLsNIIa+zrNmzXXmbMBLZlmHU/aWFsa4bq99Hk=",
"lastModified": 1694477507,
"narHash": "sha256-RtUmM5s6vnx1W+tnrGzXArVScJ/IoGmqCLM177k5O5A=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5e47a07e9f2d7ed999f2c7943b0896f5f7321ca3",
"rev": "ff303118b2ec262eb342eab88ae79318fac66d52",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"ref": "haskell-updates",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs23_05": {
"locked": {
"lastModified": 1634515797,
"narHash": "sha256-elgCUC2khtBkOSpE4gDymNvthTZAI4hGI2iNu3YEUkA=",
"lastModified": 1701053011,
"narHash": "sha256-8QQ7rFbKFqgKgLoaXVJRh7Ik5LtI3pyBBCfOnNOGkF0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5f0194220f2402b06f7f79bba6351895facb5acb",
"rev": "5b528f99f73c4fad127118a8c1126b5e003b01a9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"ref": "release-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-utils": [
"hls",
"flake-utils"
],
"nixpkgs": [
"hls",
"nixpkgs"
]
},
"nixpkgsMaster": {
"locked": {
"lastModified": 1624971177,
"narHash": "sha256-Amf/nBj1E77RmbSSmV+hg6YOpR+rddCbbVgo5C7BS0I=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "397f0713d007250a2c7a745e555fa16c5dc8cadb",
"lastModified": 1700608285,
"narHash": "sha256-JAzapARzm6IfwDzBXNgNfFfAG3Fsr15pKLh/bZc7pU4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "86eb3a994ed6f101ed4b3c19025e8133423bcca8",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"hls": "hls",
"nixpkgs": "nixpkgs_2"
"nix-filter": "nix-filter",
"nixpkgs23_05": "nixpkgs23_05",
"nixpkgsMaster": "nixpkgsMaster"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},

184
flake.nix
View File

@ -1,118 +1,104 @@
{
description = "A Haskell kernel for IPython.";
inputs = {
inputs.nixpkgs23_05.url = "github:NixOS/nixpkgs/release-23.05";
inputs.nixpkgsMaster.url = "github:NixOS/nixpkgs/master";
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.hls.url = "github:haskell/haskell-language-server";
inputs.nix-filter.url = "github:numtide/nix-filter";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
hls.url = "github:haskell/haskell-language-server";
outputs = { self, nixpkgs23_05, nixpkgsMaster, flake-utils, hls, nix-filter, ... }:
# "x86_64-darwin" "aarch64-darwin"
flake-utils.lib.eachSystem ["x86_64-linux"] (system: let
baseOverlay = self: super: { inherit nix-filter; };
pkgs23_05 = import nixpkgs23_05 { inherit system; overlays = [baseOverlay]; };
pkgsMaster = import nixpkgsMaster { inherit system; overlays = [baseOverlay]; };
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
};
jupyterlab = pkgsMaster.python3.withPackages (ps: [ ps.jupyterlab ps.notebook ]);
outputs = { self, hls, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachSystem ["x86_64-linux" "x86_64-darwin" "aarch64-darwin"] (system: let
versions = let
mkVersion = pkgsSrc: compiler: overlays: extraArgs: {
name = compiler;
value = (import pkgsSrc { inherit system; overlays = [baseOverlay] ++ overlays; }).callPackage ./nix/release.nix ({
inherit compiler;
} // extraArgs);
};
in
pkgsMaster.lib.listToAttrs [
(mkVersion nixpkgs23_05 "ghc810" [(import ./nix/overlay-8.10.nix)] {})
(mkVersion nixpkgs23_05 "ghc90" [(import ./nix/overlay-9.0.nix)] {})
(mkVersion nixpkgs23_05 "ghc92" [] {})
(mkVersion nixpkgsMaster "ghc94" [(import ./nix/overlay-9.4.nix)] {})
(mkVersion nixpkgsMaster "ghc96" [(import ./nix/overlay-9.6.nix)] {})
(mkVersion nixpkgsMaster "ghc98" [(import ./nix/overlay-9.8.nix)] { enableHlint = false; })
];
pkgs = import nixpkgs {
inherit system;
};
compilerVersionFromHsPkgs = hsPkgs:
pkgs.lib.replaceStrings [ "." ] [ "" ] hsPkgs.ghc.version;
mkEnv = hsPkgs: displayPkgs:
import ./release.nix {
compiler = "ghc${compilerVersionFromHsPkgs hsPkgs}";
nixpkgs = pkgs;
packages = displayPkgs;
envs' = prefix: packages: pkgsMaster.lib.mapAttrs' (version: releaseFn: {
name = prefix + version;
value = (releaseFn {
# Note: this can be changed to other Jupyter systems like jupyter-console
extraEnvironmentBinaries = [ jupyterlab ];
systemPackages = p: with p; [
gnuplot # for the ihaskell-gnuplot runtime
];
inherit packages;
});
}) versions;
# Basic envs with Jupyterlab and IHaskell
envs = envs' "ihaskell-env-" (_: []);
# Envs with Jupyterlab, IHaskell, and all display packages
displayEnvs = envs' "ihaskell-env-display-" (p: with p; map (n: builtins.getAttr n p) (import ./nix/displays.nix));
exes = pkgsMaster.lib.mapAttrs' (envName: env: {
name = builtins.replaceStrings ["-env"] [""] envName;
value = env.ihaskellExe;
}) envs;
devShells = pkgsMaster.lib.mapAttrs' (version: releaseFn: {
name = "ihaskell-dev-" + version;
value = pkgsMaster.callPackage ./nix/mkDevShell.nix {
inherit hls system version;
haskellPackages = (releaseFn {}).haskellPackages;
ihaskellOverlay = (releaseFn {}).ihaskellOverlay;
};
mkExe = hsPkgs: (mkEnv hsPkgs (_:[])).ihaskellExe;
ghcDefault = ghc8107;
ghc884 = pkgs.haskell.packages.ghc884;
ghc8107 = pkgs.haskell.packages.ghc8107;
ghc921 = pkgs.haskell.packages.ghc921;
pythonDevEnv = pkgs.python3.withPackages (p: [p.jupyterlab]);
mkDevShell = hsPkgs:
let
myIHaskell = (mkPackage hsPkgs);
compilerVersion = compilerVersionFromHsPkgs hsPkgs;
myModifier = drv:
pkgs.haskell.lib.addBuildTools drv (with hsPkgs; [
cabal-install
pythonDevEnv
self.inputs.hls.packages.${system}."haskell-language-server-${compilerVersion}"
pkgs.cairo # for the ihaskell-charts HLS dev environment
pkgs.pango # for the ihaskell-diagrams HLS dev environment
pkgs.lapack # for the ihaskell-plot HLS dev environment
pkgs.blas # for the ihaskell-plot HLS dev environment
]);
in (myModifier myIHaskell).envFunc {withHoogle=true;};
mkPackage = hsPkgs:
let
compilerVersion = pkgs.lib.replaceStrings [ "." ] [ "" ] hsPkgs.ghc.version;
in
hsPkgs.developPackage {
root = pkgs.lib.cleanSource ./.;
name = "ihaskell";
returnShellEnv = false;
modifier = pkgs.haskell.lib.dontCheck;
overrides = (mkEnv hsPkgs (_:[])).ihaskellOverlay ;
withHoogle = true;
};
}) versions;
in {
packages = envs // displayEnvs // exes // devShells // rec {
# For easily testing that everything builds
allEnvs = pkgsMaster.linkFarm "ihaskell-envs" envs;
allDisplayEnvs = pkgsMaster.linkFarm "ihaskell-display-envs" displayEnvs;
allExes = pkgsMaster.linkFarm "ihaskell-exes" exes;
allDevShells = pkgsMaster.linkFarm "ihaskell-dev-shells" devShells;
packages = {
# Development environment
ihaskell-dev = mkDevShell ghcDefault;
ihaskell-dev-921 = mkDevShell ghc921;
ihaskell-dev-8107 = mkDevShell ghc8107;
ihaskell-dev-884 = mkDevShell ghc884;
# IHaskell kernel
ihaskell = mkExe ghcDefault;
ihaskell-8107 = mkExe ghc8107;
ihaskell-921 = mkExe ghc921;
# Full Jupyter environment
# I actually wish those would disappear ? let jupyterWith or use deal with it
ihaskell-env = mkEnv ghcDefault (_:[]);
ihaskell-env-8107 = mkEnv ghc8107 (_:[]);
# Full Jupyter environment with all Display modules (build is not incremental)
#
# result/bin/jupyter-lab
#
ihaskell-env-display = mkEnv ghcDefault (p: with p; [
ihaskell-aeson
ihaskell-blaze
ihaskell-charts
ihaskell-diagrams
ihaskell-gnuplot
ihaskell-graphviz
ihaskell-hatex
ihaskell-juicypixels
ihaskell-magic
ihaskell-plot
ihaskell-widgets
]);
# For getting Nix paths in CI
print-nixpkgs-stable = pkgsMaster.writeShellScriptBin "print-nixpkgs-stable.sh" "echo ${pkgs23_05.path}";
print-nixpkgs-master = pkgsMaster.writeShellScriptBin "print-nixpkgs-master.sh" "echo ${pkgsMaster.path}";
inherit jupyterlab;
};
defaultPackage = self.packages.${system}.ihaskell;
# Run the acceptance tests on each env
checks = pkgsMaster.lib.mapAttrs (envName: env:
pkgsMaster.stdenv.mkDerivation {
name = envName + "-check";
src = pkgsMaster.callPackage ./nix/ihaskell-src.nix {};
nativeBuildInputs = with pkgsMaster; [jq bash];
doCheck = true;
checkPhase = ''
mkdir -p home
export HOME=$(pwd)/home
bash ./test/acceptance.nbconvert.sh ${env}/bin/jupyter nbconvert
'';
installPhase = ''
touch $out
'';
}
) envs;
devShell = self.packages.${system}.ihaskell-dev;
defaultPackage = self.packages.${system}.ihaskell-ghc810;
devShell = self.packages.${system}.ihaskell-dev-ghc810;
});
}

View File

@ -299,4 +299,4 @@ promote
-- hasKey :: Field -> Bool
hasKey x = toKey x /= ""
|]
|]

View File

@ -64,13 +64,13 @@
-- specification.
module IHaskell.Display.Widgets.Types where
import Control.Monad (unless, join, when, void,mzero)
import Control.Applicative ((<$>))
import qualified Control.Exception as Ex
import Data.Typeable (Typeable, TypeRep, typeOf)
import Control.Monad (unless, join, when, void,mzero)
import Data.IORef (IORef, readIORef, modifyIORef)
import Data.String
import Data.Text (Text, pack)
import Data.Typeable (Typeable, TypeRep, typeOf)
import System.IO.Error
import System.Posix.IO
import Text.Printf (printf)
@ -904,7 +904,11 @@ noStdin action =
handler e = when (ioeGetErrorType e == InvalidArgument)
(error "Widgets cannot do console input, sorry :)")
in Ex.handle handler $ do
#if MIN_VERSION_unix(2,8,0)
nullFd <- openFd "/dev/null" WriteOnly defaultFileFlags
#else
nullFd <- openFd "/dev/null" WriteOnly Nothing defaultFileFlags
#endif
oldStdin <- dup stdInput
void $ dupTo nullFd stdInput
closeFd nullFd

15
nix/displays.nix Normal file
View File

@ -0,0 +1,15 @@
[
"ihaskell-aeson"
"ihaskell-blaze"
"ihaskell-charts"
"ihaskell-diagrams"
"ihaskell-gnuplot"
"ihaskell-graphviz"
"ihaskell-hatex"
"ihaskell-juicypixels"
"ihaskell-magic"
"ihaskell-plot"
# "ihaskell-rlangqq"
# "ihaskell-static-canvas"
"ihaskell-widgets"
]

41
nix/ihaskell-overlay.nix Normal file
View File

@ -0,0 +1,41 @@
{ callPackage
, haskell
, lib
, compiler
, enableHlint
}:
self: super:
let
ihaskell-src = callPackage ./ihaskell-src.nix {};
displays = let
mkDisplay = display: {
name = display;
value = self.callCabal2nix display "${ihaskell-src}/ihaskell-display/${display}" {};
};
in
builtins.listToAttrs (map mkDisplay (import ./displays.nix));
in
{
ihaskell = let
baseIhaskell = 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 = (_drv.configureFlags or []) ++ (lib.optionals (!enableHlint) [ "-f" "-use-hlint" ]);
});
in
if enableHlint
then baseIhaskell
else baseIhaskell.overrideScope (self: super: { hlint = null; });
ghc-parser = self.callCabal2nix "ghc-parser" (builtins.path { path = ../ghc-parser; name = "ghc-parser-src"; }) {};
ipython-kernel = self.callCabal2nix "ipython-kernel" (builtins.path { path = ../ipython-kernel; name = "ipython-kernel-src"; }) {};
} // displays

19
nix/ihaskell-src.nix Normal file
View File

@ -0,0 +1,19 @@
{ nix-filter
}:
nix-filter {
root = ../.;
include = [
"LICENSE"
"Setup.hs"
"ghc-parser"
"html"
"ihaskell-display"
"ihaskell.cabal"
"ipython-kernel"
"jupyterlab-ihaskell"
"main"
"src"
"test"
];
}

40
nix/mkDevShell.nix Normal file
View File

@ -0,0 +1,40 @@
{ pkgs
, hls
, system
, version
, haskellPackages
, ihaskellOverlay
}:
let
compilerVersion = builtins.substring 3 100 version;
devIHaskell = haskellPackages.developPackage {
root = pkgs.lib.cleanSource ../.;
name = "ihaskell";
returnShellEnv = false;
modifier = pkgs.haskell.lib.dontCheck;
overrides = ihaskellOverlay;
withHoogle = true;
};
devModifier = drv:
pkgs.haskell.lib.addBuildTools drv (with haskellPackages; [
cabal-install
(pkgs.python3.withPackages (p: [p.jupyterlab]))
# Note: HLS support currently doesn't work, because the HLS project has removed
# HLS binaries from their flake; see
# https://github.com/haskell/haskell-language-server/pull/3804
# hls.packages.${system}."haskell-language-server-${compilerVersion}"
pkgs.cairo # for the ihaskell-charts HLS dev environment
pkgs.pango # for the ihaskell-diagrams HLS dev environment
pkgs.lapack # for the ihaskell-plot HLS dev environment
pkgs.blas # for the ihaskell-plot HLS dev environment
]);
in
(devModifier devIHaskell).envFunc {withHoogle=true;}

16
nix/overlay-8.10.nix Normal file
View File

@ -0,0 +1,16 @@
sel: sup: {
haskell = sup.haskell // {
packages = sup.haskell.packages // {
ghc810 = sup.haskell.packages.ghc810.override {
overrides = self: super: {
# Note that singletons-3.x broke the library into separate pieces like
# singletons-th. singletons-3.x will build with GHC 8.10, but we don't have
# the conditional compilation in the cabal file to handle this. The CPP
# in IHaskell.Display.Widgets.Singletons needs updating too.
singletons = self.callHackage "singletons" "2.7" {};
th-desugar = self.callHackage "th-desugar" "1.11" {};
};
};
};
};
}

13
nix/overlay-9.0.nix Normal file
View File

@ -0,0 +1,13 @@
sel: sup: {
haskell = sup.haskell // {
packages = sup.haskell.packages // {
ghc90 = sup.haskell.packages.ghc90.override {
overrides = self: super: {
singletons-base = self.callHackage "singletons-base" "3.0" {};
singletons-th = self.callHackage "singletons-th" "3.0" {};
th-desugar = self.callHackage "th-desugar" "1.12" {};
};
};
};
};
}

20
nix/overlay-9.4.nix Normal file
View File

@ -0,0 +1,20 @@
sel: sup: {
haskell = sup.haskell // {
packages = sup.haskell.packages // {
ghc94 = sup.haskell.packages.ghc94.override {
overrides = self: super: {
ghc-syntax-highlighter = super.callCabal2nix "ghc-syntax-highlighter" (sup.fetchFromGitHub {
owner = "mrkkrp";
repo = "ghc-syntax-highlighter";
# 0.0.10.0
rev = "71ff751eaa6034d4aef254d6bc5a8be4f6595344";
sha256 = "wQmWSuvIJpg11zKl1qOSWpqxjp2DoJwa20vaS2KHypM=";
}) {};
ghc-lib-parser = super.ghc-lib-parser_9_6_3_20231014;
ghc-lib-parser-ex = super.ghc-lib-parser-ex_9_6_0_2;
};
};
};
};
}

35
nix/overlay-9.6.nix Normal file
View File

@ -0,0 +1,35 @@
sel: sup: {
haskell = sup.haskell // {
packages = sup.haskell.packages // {
ghc96 = sup.haskell.packages.ghc96.override {
overrides = self: super: {
ghc-syntax-highlighter = super.callCabal2nix "ghc-syntax-highlighter" (sup.fetchFromGitHub {
owner = "mrkkrp";
repo = "ghc-syntax-highlighter";
# 0.0.10.0
rev = "71ff751eaa6034d4aef254d6bc5a8be4f6595344";
sha256 = "wQmWSuvIJpg11zKl1qOSWpqxjp2DoJwa20vaS2KHypM=";
}) {};
ghc-lib-parser = self.ghc-lib-parser_9_6_3_20231014;
zeromq4-haskell = super.zeromq4-haskell.overrideAttrs (oldAttrs: {
buildInputs = oldAttrs.buildInputs ++ [super.libsodium];
});
# https://github.com/amcphail/plot/pull/23
plot = super.callCabal2nix "plot" (sup.fetchFromGitHub {
owner = "codedownio";
repo = "haskell-plot";
rev = "dfa26022b5815bcd6a5dd6c818fcd2c4d25c6d44";
sha256 = "1snk70l7q98cqflgaqf6l75g4hpcnf284flm9rsmk8kkzd5nnh5k";
}) {};
singletons-base = sup.haskell.lib.dontCheck (self.callHackage "singletons-base" "3.2" {});
singletons-th = self.callHackage "singletons-th" "3.2" {};
th-desugar = self.callHackage "th-desugar" "1.15" {};
};
};
};
};
}

64
nix/overlay-9.8.nix Normal file
View File

@ -0,0 +1,64 @@
sel: sup: {
haskell = sup.haskell // {
packages = sup.haskell.packages // {
ghc98 = sup.haskell.packages.ghc98.override {
overrides = self: super: {
aeson = self.callHackage "aeson" "2.2.1.0" {};
alex = sup.haskell.lib.dontCheck super.alex;
bifunctors = self.callHackage "bifunctors" "5.6.1" {};
doctest = self.callHackage "doctest" "0.22.2" {};
ghc-lib-parser = sup.haskell.lib.overrideCabal (self.callHackage "ghc-lib-parser" "9.8.1.20231009" {}) (_drv: {
postPatch = let
original-a = "cabal-version: 2.0";
replacement-a = "cabal-version: 3.0";
original-b = "license: BSD3";
replacement-b = "license: BSD-3-Clause";
original-c =
"c-sources:\r\n libraries/ghc-heap/cbits/HeapPrim.cmm";
replacement-c =
"cmm-sources:\r\n libraries/ghc-heap/cbits/HeapPrim.cmm";
in ''
substituteInPlace ./ghc-lib-parser.cabal --replace \
'${original-a}' '${replacement-a}'
substituteInPlace ./ghc-lib-parser.cabal --replace \
'${original-b}' '${replacement-b}'
substituteInPlace ./ghc-lib-parser.cabal --replace \
'${original-c}' '${replacement-c}'
'';
});
ghc-lib-parser-ex = super.ghc-lib-parser-ex_9_8_0_0;
ghc-syntax-highlighter = self.callCabal2nix "ghc-syntax-highlighter" (sup.fetchFromGitHub {
owner = "mrkkrp";
repo = "ghc-syntax-highlighter";
rev = "336df42e9185c2e2a91fa71eaa18b51f0f5437de";
sha256 = "0nnpyq3z6c90z3j8xzw2gcj13nhihc7xa0sb4xbbdpxfnidplp9q";
}) {};
haskell-src-meta = sup.haskell.lib.appendPatch (sup.haskell.lib.doJailbreak super.haskell-src-meta) (sup.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/master/patches/haskell-src-meta-0.8.12.patch";
sha256 = "0wn0lnq522bhc65sw02jm448mg5ijdxwgs7gzp9xp6z8ir1a0bzr";
});
here = sup.haskell.lib.doJailbreak (self.callHackage "here" "1.2.14" {});
hourglass = sup.haskell.lib.dontCheck super.hourglass;
hspec = self.callHackage "hspec" "2.11.6" {};
hspec-core = sup.haskell.lib.dontCheck (self.callHackage "hspec-core" "2.11.6" {});
hspec-discover = self.callHackage "hspec-discover" "2.11.6" {};
hspec-expectations = self.callHackage "hspec-expectations" "0.8.4" {};
hspec-meta = self.callHackage "hspec-meta" "2.11.6" {};
lifted-base = sup.haskell.lib.dontCheck super.lifted-base;
semigroupoids = self.callHackage "semigroupoids" "6.0.0.1" {};
shelly = sup.haskell.lib.doJailbreak super.shelly;
tagged = self.callHackage "tagged" "0.8.8" {};
th-abstraction = self.callHackage "th-abstraction" "0.6.0.0" {};
th-lift = self.callHackage "th-lift" "0.8.4" {};
unliftio-core = sup.haskell.lib.doJailbreak super.unliftio-core;
# For display libs (in progress)
statestack = sup.haskell.lib.doJailbreak super.statestack;
# TODO: wait for nixpkgs master to update Hackage pin to have this diagrams-core version
diagrams-core = self.callHackage "diagrams-core" "1.5.1.1" {};
diagrams-lib = sup.haskell.lib.doJailbreak super.diagrams-lib;
};
};
};
};
}

109
nix/release.nix Normal file
View File

@ -0,0 +1,109 @@
{ lib
, buildEnv
, callPackage
, haskell
, makeWrapper
, pkgs
, runCommand
, writeShellScriptBin
# Compiler name as a string, like "ghc92".
# Must be a kernel found within pkgs.haskell.packages.*.
, compiler
# Whether to enable hlint.
, enableHlint ? true
}:
{
# Extra binaries to include in the final environment, like jupyter-lab or jupyter-console.
# Will have their JUPYTER_PATH and PATH environment variables prefixed to tell them about the kernel.
extraEnvironmentBinaries ? []
# Haskell packages to include. First argument is an attrset of available packages.
, packages ? (_: [])
# RTS options passed when invoking IHaskell in the kernelspec.
, rtsopts ? "-M3g -N2"
, staticExecutable ? false
, systemPackages ? (_: [])
}:
let
ihaskellOverlay = callPackage ./ihaskell-overlay.nix { inherit compiler enableHlint; };
# Haskell packages set with IHaskell packages added
haskellPackages = haskell.packages."${compiler}".override (old: {
overrides = lib.composeExtensions
(old.overrides or (_: _: {}))
ihaskellOverlay;
});
# GHC with desired packages. This includes user-configured packages plus IHaskell itself, so
# you can import things like IHaskell.Display
ihaskellEnv = haskellPackages.ghcWithPackages (ps: (packages ps) ++ [ps.ihaskell]);
# ihaskell binary wrapper which adds the "-l" argument
ihaskellGhcLib = writeShellScriptBin "ihaskell" ''
${ihaskellEnv}/bin/ihaskell -l $(${ihaskellEnv}/bin/ghc --print-libdir) "$@"
'';
# Jupyter directory with kernels/haskell/kernel.json, plus logo and kernel.js
jupyterDirKernel = let
kernelFile = {
display_name = "Haskell";
argv = [
"${ihaskellGhcLib}/bin/ihaskell"
"kernel"
"{connection_file}"
"+RTS"
] ++ (lib.splitString " " rtsopts) ++ [
"-RTS"
];
language = "haskell";
};
in
runCommand "ihaskell-kernel" {} ''
export kerneldir=$out/kernels/haskell
mkdir -p $kerneldir
cp ${../html}/* $kerneldir
echo '${builtins.toJSON kernelFile}' > $kerneldir/kernel.json
'';
# Separate Jupyter directory with the "labextensions" dir.
# TODO: just copy this alongside the HTML in jupyterDir?
jupyterDirLabExtensions = runCommand "ihaskell-labextension" {} ''
mkdir -p $out/labextensions/
ln -s ${../jupyterlab-ihaskell/labextension} $out/labextensions/jupyterlab-ihaskell
'';
# Combine the paths in jupyterDirKernel and jupyterDirLabExtensions
ihaskellDataDir = buildEnv {
name = "ihaskell-data-dir-" + compiler;
paths = [ jupyterDirKernel jupyterDirLabExtensions ];
};
in
# Final IHaskell environment:
buildEnv {
name = "ihaskell-with-packages-" + compiler;
nativeBuildInputs = [ makeWrapper ];
paths = [ ihaskellEnv ] ++ extraEnvironmentBinaries;
postBuild = ''
for prg in $out/bin"/"*;do
if [[ -f $prg && -x $prg ]]; then
wrapProgram $prg \
--prefix PATH : "${lib.makeBinPath ([ihaskellEnv] ++ (systemPackages pkgs))}" \
--prefix JUPYTER_PATH : "${ihaskellDataDir}"
fi
done
'';
passthru = {
inherit haskellPackages;
inherit ihaskellOverlay;
# statically linking against haskell libs reduces closure size at the expense
# of startup/reload time, so we make it configurable
ihaskellExe = if staticExecutable
then haskell.lib.justStaticExecutables haskellPackages.ihaskell
else haskell.lib.enableSharedExecutables haskellPackages.ihaskell;
};
}

View File

@ -1,9 +0,0 @@
{ compiler ? "ghc928"
, nixpkgs ? import <nixpkgs> {}
, packages ? (_: [])
, pythonPackages ? (_: [])
, rtsopts ? "-M3g -N2"
, staticExecutable ? false
, systemPackages ? (_: [])
}:
import (./release.nix) { inherit compiler nixpkgs packages pythonPackages rtsopts systemPackages; }

View File

@ -1,122 +0,0 @@
let
nixpkgs-src = builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/tarball/e0990771a605839bc63eaef5edadffb48a040664";
sha256 = "sha256:06ja7660glz88ji311ds98frqgf5780c51m9l6chrmj0gh2zf7k9";
};
in
{ compiler ? "ghc942"
, nixpkgs ? import nixpkgs-src {}
, 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 (_: _: {})) ihaskellOverlay;
});
ihaskellOverlay = (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
'';
});
ghc-parser = self.callCabal2nix "ghc-parser" (builtins.path { path = ./ghc-parser; name = "ghc-parser-src"; }) {};
ghc-syntax-highlighter = let
src = nixpkgs.fetchFromGitHub {
owner = "mrkkrp";
repo = "ghc-syntax-highlighter";
rev = "bbc049904524aae08e6431494f41fe2a288f6259";
sha256 = "sha256-w7AxGsUfqGhh7wrSPppQ2+gPwjvb4mwExJdDOcasAZ4=";
};
in
self.callCabal2nix "ghc-syntax-highlighter" src {};
ipython-kernel = self.callCabal2nix "ipython-kernel" (builtins.path { path = ./ipython-kernel; name = "ipython-kernel-src"; }) {};
hlint = super.hlint_3_5;
zeromq4-haskell = nixpkgs.haskell.lib.addPkgconfigDepend super.zeromq4-haskell nixpkgs.libsodium;
} // 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";
nativeBuildInputs = [ 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 ihaskellOverlay;
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;
}

View File

@ -1,35 +0,0 @@
let
nixpkgs-src = builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/tarball/02c6061679c99546ccff9ca241025134411e13ad";
sha256 = "sha256:03cwv27x1xl9fm2dzdgzm1lz9qimn3w10v8pb7wd4ld459jir8pb";
};
ghcVersion = "ghc963";
overlay = sel: sup: {
haskell = sup.haskell // {
packages = sup.haskell.packages // {
${ghcVersion} = sup.haskell.packages.${ghcVersion}.override {
overrides = self: super: {
ghc-syntax-highlighter = let
src = sel.fetchFromGitHub {
owner = "mrkkrp";
repo = "ghc-syntax-highlighter";
rev = "71ff751eaa6034d4aef254d6bc5a8be4f6595344";
sha256 = "14yahxi4pnjbvcd9r843kn7b36jsjaixd99jswsrh9n8xd59c2f1";
};
in
self.callCabal2nix "ghc-syntax-highlighter" src {};
};
};
};
};
};
in
{ compiler ? ghcVersion
, nixpkgs ? import nixpkgs-src { overlays = [ overlay ]; }
, packages ? (_: [])
, pythonPackages ? (_: [])
, rtsopts ? "-M3g -N2"
, staticExecutable ? false
, systemPackages ? (_: [])
}:
import (./release.nix) { inherit compiler nixpkgs packages pythonPackages rtsopts systemPackages; }

View File

@ -1,166 +0,0 @@
let
nixpkgs-src = builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/tarball/0c086da2bb82029fd00e80bdc117a37a804fd7ff";
sha256 = "sha256:1c02n9i4y49cvyw8fylpsvbhiijdc0pppzgn3qwxw6nyj68i3590";
};
in
{ compiler ? "ghc981"
, nixpkgs ? import nixpkgs-src {}
, 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" "/test" "/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 (_: _: {})) ihaskellOverlay;
});
ihaskellOverlay = (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 = (_drv.configureFlags or []) ++ [ "-f" "-use-hlint" ];
})).overrideScope (self: super: {
hlint = null;
});
ghc-parser = self.callCabal2nix "ghc-parser" (builtins.path { path = ./ghc-parser; name = "ghc-parser-src"; }) {};
ghc-syntax-highlighter = let
src = nixpkgs.fetchFromGitHub {
owner = "mrkkrp";
repo = "ghc-syntax-highlighter";
rev = "336df42e9185c2e2a91fa71eaa18b51f0f5437de";
sha256 = "0nnpyq3z6c90z3j8xzw2gcj13nhihc7xa0sb4xbbdpxfnidplp9q";
};
in
self.callCabal2nix "ghc-syntax-highlighter" src {};
ipython-kernel = self.callCabal2nix "ipython-kernel" (builtins.path { path = ./ipython-kernel; name = "ipython-kernel-src"; }) {};
alex = nixpkgs.haskell.lib.dontCheck super.alex;
# zeromq4-haskell = nixpkgs.haskell.lib.addPkgconfigDepend super.zeromq4-haskell nixpkgs.libsodium;
ghc-lib-parser = nixpkgs.haskell.lib.overrideCabal (self.callHackage "ghc-lib-parser" "9.8.1.20231009" {}) (_drv: {
postPatch = let
original-a = "cabal-version: 2.0";
replacement-a = "cabal-version: 3.0";
original-b = "license: BSD3";
replacement-b = "license: BSD-3-Clause";
original-c =
"c-sources:\r\n libraries/ghc-heap/cbits/HeapPrim.cmm";
replacement-c =
"cmm-sources:\r\n libraries/ghc-heap/cbits/HeapPrim.cmm";
in ''
substituteInPlace ./ghc-lib-parser.cabal --replace \
'${original-a}' '${replacement-a}'
substituteInPlace ./ghc-lib-parser.cabal --replace \
'${original-b}' '${replacement-b}'
substituteInPlace ./ghc-lib-parser.cabal --replace \
'${original-c}' '${replacement-c}'
'';
});
shelly = nixpkgs.haskell.lib.doJailbreak super.shelly;
hourglass = nixpkgs.haskell.lib.dontCheck super.hourglass;
unliftio-core = nixpkgs.haskell.lib.doJailbreak super.unliftio-core;
tagged = self.callHackage "tagged" "0.8.8" {};
th-abstraction = self.callHackage "th-abstraction" "0.6.0.0" {};
th-lift = self.callHackage "th-lift" "0.8.4" {};
hspec-core = nixpkgs.haskell.lib.dontCheck (self.callHackage "hspec-core" "2.11.6" {});
hspec-expectations = self.callHackage "hspec-expectations" "0.8.4" {};
hspec-meta = self.callHackage "hspec-meta" "2.11.6" {};
hspec-discover = self.callHackage "hspec-discover" "2.11.6" {};
hspec = self.callHackage "hspec" "2.11.6" {};
lifted-base = nixpkgs.haskell.lib.dontCheck super.lifted-base;
bifunctors = self.callHackage "bifunctors" "5.6.1" {};
doctest = self.callHackage "doctest" "0.22.2" {};
semigroupoids = self.callHackage "semigroupoids" "6.0.0.1" {};
here = nixpkgs.haskell.lib.doJailbreak (self.callHackage "here" "1.2.14" {});
aeson = self.callHackage "aeson" "2.2.1.0" {};
haskell-src-meta = nixpkgs.haskell.lib.appendPatch (nixpkgs.haskell.lib.doJailbreak super.haskell-src-meta) (nixpkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/master/patches/haskell-src-meta-0.8.12.patch";
sha256 = "0wn0lnq522bhc65sw02jm448mg5ijdxwgs7gzp9xp6z8ir1a0bzr";
});
} // 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 ps.notebook ] ++ 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";
nativeBuildInputs = [ 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 ihaskellOverlay;
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;
}

View File

@ -1,105 +0,0 @@
{ compiler
, nixpkgs ? import <nixpkgs> {}
, 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" "/test" "/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 (_: _: {})) ihaskellOverlay;
});
ihaskellOverlay = (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
'';
});
ghc-parser = self.callCabal2nix "ghc-parser" (builtins.path { path = ./ghc-parser; name = "ghc-parser-src"; }) {};
ipython-kernel = self.callCabal2nix "ipython-kernel" (builtins.path { path = ./ipython-kernel; name = "ipython-kernel-src"; }) {};
} // 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 ps.notebook ] ++ 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";
nativeBuildInputs = [ 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 ihaskellOverlay;
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;
}

View File

@ -1,62 +0,0 @@
resolver: lts-11.22
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-graphviz
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
- ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
ghc-options:
# Eventually we want "$locals": -Wall -Werror
ghc-parser: -Wall -Werror
ihaskell: -Wall -Werror
ihaskell-widgets: -Wall -Werror
allow-newer: true
extra-deps:
- Chart-cairo-1.9.1
- cairo-0.13.6.0
- cubicbezier-0.6.0.5
- diagrams-1.4
- diagrams-cairo-1.4.1
- diagrams-contrib-1.4.2.1
- diagrams-core-1.4.0.1
- diagrams-lib-1.4.2
- diagrams-solve-0.1.1
- diagrams-svg-1.4.1.1
- dual-tree-0.2.1
- fast-math-1.0.2
- glib-0.13.7.1
- gtk2hs-buildtools-0.13.5.4
- magic-1.1
- mfsolve-0.3.2.0
- pango-0.13.6.1
- plot-0.2.3.9
- static-canvas-0.2.0.3
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib

View File

@ -1,49 +0,0 @@
resolver: lts-12.26
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
- ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
extra-deps:
- plot-0.2.3.9
- Chart-cairo-1.9.1
- Chart-1.9.4
- diagrams-cairo-1.4.1
- cairo-0.13.6.0
- pango-0.13.6.1
- glib-0.13.7.1
- gtk2hs-buildtools-0.13.5.4
- magic-1.1
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
ghc-parser: -Wall -Wpartial-fields -Werror
ihaskell: -Wall -Wpartial-fields -Werror
ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib

View File

@ -1,48 +0,0 @@
resolver: lts-14.27
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
# - ./ihaskell-display/ihaskell-plot
# - ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
extra-deps:
- Chart-cairo-1.9.1
- diagrams-cairo-1.4.1
- cairo-0.13.6.0
- pango-0.13.6.1
- glib-0.13.7.1
- gtk2hs-buildtools-0.13.5.4
- magic-1.1
# - plot-0.2.3.9
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
ghc-parser: -Wall -Wpartial-fields -Werror
ihaskell: -Wall -Wpartial-fields -Werror
ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib

View File

@ -1,50 +0,0 @@
resolver: lts-16.23
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
# - ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
extra-deps:
- Chart-cairo-1.9.3
- diagrams-cairo-1.4.1.1
- cairo-0.13.10.0
- pango-0.13.10.0
- glib-0.13.10.0
- gtk2hs-buildtools-0.13.10.0
- magic-1.1
- plot-0.2.3.11
# - static-canvas-0.2.0.3
- vinyl-0.13.0
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib

View File

@ -1,48 +0,0 @@
resolver: lts-19.23 # GHC 9.0.2
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-graphviz
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
# - ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
extra-deps:
- Chart-cairo-1.9.3
- diagrams-cairo-1.4.2
- cairo-0.13.8.2
- pango-0.13.8.2
- glib-0.13.8.2
- plot-0.2.3.11
- statestack-0.3
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib

View File

@ -1,40 +0,0 @@
resolver: lts-20.13
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-graphviz
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
# - ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
enable: false
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib

View File

@ -1,31 +1,21 @@
resolver: lts-21.6
resolver: lts-21.21 # GHC 9.4.7
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-graphviz
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
# - ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
extra-deps:
- Chart-cairo-1.9.3
- diagrams-cairo-1.4.2.1
- cairo-0.13.10.0
- pango-0.13.10.0
- glib-0.13.10.0
- plot-0.2.3.11
- statestack-0.3.1.1
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-graphviz
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
# - ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
@ -33,27 +23,29 @@ ghc-options:
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
extra-deps:
- Chart-cairo-1.9.3
nix:
packages:
- blas
- cairo
- file
- fribidi
- gcc
- gfortran.cc.lib
- libdatrie
- liblapack
- libselinux
- libsepol
- libsodium # Needed by zeromq
- libthai
- ncurses
- pango
- pkg-config
- pcre
- pcre2
- pkgconfig
- util-linux
- xorg.libXdmcp
- zeromq
- zlib
- blas
- cairo
- expat
- file
- fribidi
- gcc
- gfortran.cc.lib
- libdatrie
- liblapack
- libselinux
- libsepol
- libthai
- ncurses
- pango
- pcre
- pcre2.dev
- pkg-config
- util-linux.dev
- xorg.libXdmcp
- zeromq
- zlib

View File

@ -1,6 +1,5 @@
resolver: lts-9.21
flags: {}
packages:
- .
- ./ipython-kernel
@ -27,14 +26,14 @@ ghc-options:
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

View File

@ -2,23 +2,22 @@
resolver: lts-18.27
allow-newer: true
flags: {}
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-graphviz
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
# - ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
- ..
- ../ipython-kernel
- ../ghc-parser
- ../ihaskell-display/ihaskell-aeson
- ../ihaskell-display/ihaskell-blaze
- ../ihaskell-display/ihaskell-charts
- ../ihaskell-display/ihaskell-diagrams
- ../ihaskell-display/ihaskell-gnuplot
- ../ihaskell-display/ihaskell-graphviz
- ../ihaskell-display/ihaskell-hatex
- ../ihaskell-display/ihaskell-juicypixels
- ../ihaskell-display/ihaskell-magic
- ../ihaskell-display/ihaskell-plot
# - ../ihaskell-display/ihaskell-static-canvas
- ../ihaskell-display/ihaskell-widgets
extra-deps:
- active-0.2.0.14
@ -49,14 +48,14 @@ ghc-options:
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkgconfig
- zeromq
- zlib
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

138
stack/stack-8.10.yaml.lock Normal file
View File

@ -0,0 +1,138 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
hackage: active-0.2.0.14@sha256:e618aba4a7881eb85dc1585e0a01230af6b4fbab6693931e4a5d0d3a5b184406,1823
pantry-tree:
sha256: 9326ee3500f7bb1adea18f581dc51ebdb522677d8cddc847a506ba5d328ee723
size: 1017
original:
hackage: active-0.2.0.14
- completed:
hackage: Chart-cairo-1.9.3@sha256:5d6f005b5d3d74453a979eb2c6a1777c92ce02eae9e019abbe03a0e008cb8aea,924
pantry-tree:
sha256: 204f29235d182cc8c8ab40d0a37387e78c1dadc684e190c85e1643521483e681
size: 238
original:
hackage: Chart-cairo-1.9.3
- completed:
hackage: diagrams-1.4@sha256:3e36369e84115b900fd9dcb570672a188339a470eb19ca62170775cd835cf8ca,5483
pantry-tree:
sha256: 8f2ea432c67f4711446942e032be53ed7dc49c1b1dd7d26ff71fbd4d05a02c4d
size: 208
original:
hackage: diagrams-1.4
- completed:
hackage: diagrams-cairo-1.4.1.1@sha256:8b62e90fcb0a2c9343f594940698a148b2e778b203f3297c0bed3097d34b559a,3801
pantry-tree:
sha256: de94736d9aa3f321e9d621667e41ac029f47fe9956ee625eb46920bd9c3c7f80
size: 721
original:
hackage: diagrams-cairo-1.4.1.1
- completed:
hackage: diagrams-contrib-1.4.4@sha256:77c87ab5c780086eca845df233d3b6816a2aed82a80b7f4abe5ce1259801924b,4753
pantry-tree:
sha256: 6f1a006bf528662f4f34e02207571669af6dab6966c64c0558559dfc16c43bf8
size: 11387
original:
hackage: diagrams-contrib-1.4.4
- completed:
hackage: diagrams-core-1.5.0@sha256:8ffd24eb97ce309b41c52e5fa3a8acee5e4063565919eb4d41abb5c219b3d49b,2971
pantry-tree:
sha256: 670806e0af1e31792557a3bc2c4ffe4c39929fea718c3071eb4702c4512c9795
size: 2018
original:
hackage: diagrams-core-1.5.0
- completed:
hackage: diagrams-lib-1.4.4@sha256:1129be254377b926ce2e932113e4bd06256de878d163fbcbacacf1be97bdf3b0,8220
pantry-tree:
sha256: a96099f5e6e4c3236dd2c2dd301e5498a1dd4b968a05dcec144c46eb53e6d912
size: 11604
original:
hackage: diagrams-lib-1.4.4
- completed:
hackage: diagrams-svg-1.4.3@sha256:407ff78cb7bd1f44c68b0059036186f17a281a053901e29d0139ab151e703247,3159
pantry-tree:
sha256: 53c2221ee415d9bfc2f0dd886b67b1edbfdb91f68e809b43cf0bb830fc870ad7
size: 475
original:
hackage: diagrams-svg-1.4.3
- completed:
hackage: cairo-0.13.8.1@sha256:1938aaeb5d3504678d995774dfe870f6b66cbd43d336b692fa8779b23b2b67a9,4075
pantry-tree:
sha256: 8f6344da4c578a4dd3a49c333e2158b695bfae32a74d34a76bbc6e531b70c95c
size: 2830
original:
hackage: cairo-0.13.8.1
- completed:
hackage: pango-0.13.8.1@sha256:877b121c0bf87c96d3619effae6751ecfd74b7f7f3227cf3fde012597aed5ed9,3917
pantry-tree:
sha256: eec456a3d16f1a9305196a86a7c49a6f2cfe1b041a50b02059dc4898a07a3bd9
size: 1506
original:
hackage: pango-0.13.8.1
- completed:
hackage: glib-0.13.8.1@sha256:42670daf0c85309281e08ba8559df75daa2e3be642e79fdfa781bef5e59658b0,3156
pantry-tree:
sha256: 1167575db8823b7a9f5fbaebdbc0ea5cef54301e442754ec256ba9371bd388e7
size: 1625
original:
hackage: glib-0.13.8.1
- completed:
hackage: gtk2hs-buildtools-0.13.8.3@sha256:207229eee7abff12aba2740b32131522086275e46f2e72a0f5bbc3cb781e9d4d,5304
pantry-tree:
sha256: 1f93c6dbf2573503c48019fdf9f4662dcac494beaecccaea1873ec901eb2152f
size: 3588
original:
hackage: gtk2hs-buildtools-0.13.8.3
- completed:
hackage: plot-0.2.3.11@sha256:9564d62da798b74a5ab875996f45adf1c3071e161247faa9a9d1b036e6634a4a,4413
pantry-tree:
sha256: 2b9cb15fa582d3cdc9f43e6ffaf401e36535909b3620c5f54bd9b7cca5dfeb44
size: 2704
original:
hackage: plot-0.2.3.11
- completed:
hackage: statestack-0.3@sha256:437941f253bc7a6d8321e67938667bae53d7765b256a45976accadd85f6e1703,1146
pantry-tree:
sha256: 5b0ba98ac695eccbba33aae8eccf2b6dd8aa3d16d38db65e9e4c231aaa5e4082
size: 272
original:
hackage: statestack-0.3
- completed:
hackage: dual-tree-0.2.2.1@sha256:9ff31e461d873ae74ba51d93b454c0c4094726d7cb78a0c454394c965e83539d,2830
pantry-tree:
sha256: 70ea91862ac301648d63e9c69d0ff8154b1d3c9c632d224d4002c027861ec33e
size: 387
original:
hackage: dual-tree-0.2.2.1
- completed:
hackage: monoid-extras-0.6@sha256:fabcab0a59ac48d8f271016cf8190b21969b202c760df2db85add2fef93d38b4,2197
pantry-tree:
sha256: b07d7eef465c7cbc2f5c8368ef98b8a746166cb6953c1f51643f9fba6ead99e0
size: 1187
original:
hackage: monoid-extras-0.6
- completed:
hackage: svg-builder-0.1.1@sha256:87d09f56d5630ce126574e9f00d1adc7f53dda58270e689f5883431db3ba4b3a,1591
pantry-tree:
sha256: 1185b1d09ed186b0b3c5b2dc3d9422830c79c3eaa1342f751e5c66d07c397754
size: 535
original:
hackage: svg-builder-0.1.1
- completed:
hackage: force-layout-0.4.0.6@sha256:9270e4333ac3bac705d1ed742523b31849dfa7df48a3721f98e2ac05bc07dbd0,1321
pantry-tree:
sha256: 062299837db65635bbdd24ad621bf08e25e0e67f0adfbf2a2021a4d65822f014
size: 276
original:
hackage: force-layout-0.4.0.6
snapshots:
- completed:
sha256: 79a786674930a89301b0e908fad2822a48882f3d01486117693c377b8edffdbe
size: 590102
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/27.yaml
original: lts-18.27

61
stack/stack-8.2.yaml Normal file
View File

@ -0,0 +1,61 @@
resolver: lts-11.22
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-graphviz
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
- ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
ghc-options:
# Eventually we want "$locals": -Wall -Werror
ghc-parser: -Wall -Werror
ihaskell: -Wall -Werror
ihaskell-widgets: -Wall -Werror
allow-newer: true
extra-deps:
- Chart-cairo-1.9.1
- cairo-0.13.6.0
- cubicbezier-0.6.0.5
- diagrams-1.4
- diagrams-cairo-1.4.1
- diagrams-contrib-1.4.2.1
- diagrams-core-1.4.0.1
- diagrams-lib-1.4.2
- diagrams-solve-0.1.1
- diagrams-svg-1.4.1.1
- dual-tree-0.2.1
- fast-math-1.0.2
- glib-0.13.7.1
- gtk2hs-buildtools-0.13.5.4
- magic-1.1
- mfsolve-0.3.2.0
- pango-0.13.6.1
- plot-0.2.3.9
- static-canvas-0.2.0.3
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

103
stack/stack-8.2.yaml.lock Normal file
View File

@ -0,0 +1,103 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
hackage: static-canvas-0.2.0.3@sha256:3ad170c6efbd26b981fe66f4c4a85e515c200c675e3f2c6603da7d64e84bc8f5,1768
pantry-tree:
sha256: b61e591e6028dc284ed5ed22f9bab9fcfe9034288741dcc26d0eae79b140031c
size: 563
original:
hackage: static-canvas-0.2.0.3
- completed:
hackage: diagrams-1.4@sha256:3e36369e84115b900fd9dcb570672a188339a470eb19ca62170775cd835cf8ca,5483
pantry-tree:
sha256: 8f2ea432c67f4711446942e032be53ed7dc49c1b1dd7d26ff71fbd4d05a02c4d
size: 208
original:
hackage: diagrams-1.4
- completed:
hackage: diagrams-cairo-1.4@sha256:268fc389290424fbb0c4c207e4e09cb1ef7e652269ea63cd3d746da2f8a041c0,3869
pantry-tree:
sha256: f94fe112eeb6d0b1be6af93c56bfe8f16d0ea63a99b50c9aa38476a8363ae420
size: 721
original:
hackage: diagrams-cairo-1.4
- completed:
hackage: diagrams-lib-1.4.2@sha256:3ac3821d32a87501328c34d9f4f6ee1ee7b50c3a3ca0ddf4c6beeb1fa847313b,8104
pantry-tree:
sha256: 5d375f02f07a6fea645becec4f94c0ff5866791168cbdb632eccc8c7c3f01eb3
size: 11529
original:
hackage: diagrams-lib-1.4.2
- completed:
hackage: magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928
pantry-tree:
sha256: 8fd594932f36cdf6a93266c48248a6c516d2aa237cd023eed6935ccee7ed230b
size: 535
original:
hackage: magic-1.1
- completed:
hackage: diagrams-contrib-1.4.2.1@sha256:553feab6969b3a65169bce2a548fb415b0e617baae9f72324a373030a825fc0a,4501
pantry-tree:
sha256: f803b132eceba65ef98425d1205c0031183660c60c44d52e2bea43d221c61328
size: 10858
original:
hackage: diagrams-contrib-1.4.2.1
- completed:
hackage: diagrams-core-1.4.0.1@sha256:a60809ab07c9977d0c6fbbaeeabaa6df44e751b6c9ef2cd1a9b1beb1e9c87c37,2888
pantry-tree:
sha256: 45703e055dcfbc3c26939fddb6fe8bdf0b271f8d0992fd7f6ce1d366f190e519
size: 2018
original:
hackage: diagrams-core-1.4.0.1
- completed:
hackage: diagrams-solve-0.1.1@sha256:8ed66891bb42f9cd5e77b02a0f8ebaa91a2363a82a007313f90c7f57806688fa,1713
pantry-tree:
sha256: eb09d6fe6c342061bc83bbdbe702692eae33b7d7e691a29e7112499a537494d3
size: 469
original:
hackage: diagrams-solve-0.1.1
- completed:
hackage: diagrams-svg-1.4.1.1@sha256:a33bc07c73d4051230203a7bdbebbbdc4d5011c0efaa3fef9cb9afa65e120119,3104
pantry-tree:
sha256: 63a3f42f4866fa6cd954456c3ac5e58337fba4ba0bd383bd375751932a366c4c
size: 475
original:
hackage: diagrams-svg-1.4.1.1
- completed:
hackage: dual-tree-0.2.1@sha256:842d3190984106fac7980a7320568b2dcd4145460a9299a05c8d078d4a79de58,2686
pantry-tree:
sha256: f7efa5a7dbdbb70d4df51c299c27ba1909a86f02717a4a9e952dcaeb73f0fb31
size: 387
original:
hackage: dual-tree-0.2.1
- completed:
hackage: cubicbezier-0.6.0.5@sha256:a0e96070684203c828882d709e165f6adc89aa8e2ffd482bd14184df73c365f7,2293
pantry-tree:
sha256: 083acda7f3f4516f509ee85bc7ffd9aa91b2b0f3f40e3ccdeb94cc7f465ef82a
size: 1029
original:
hackage: cubicbezier-0.6.0.5
- completed:
hackage: mfsolve-0.3.2.0@sha256:b63176f6adeb4ffa021a7c67211aa46ab101715cc592adaade1233cc92a45342,1196
pantry-tree:
sha256: d200c397b5770a9d8161fb023d4d0f13aa65b3d5953845f6449b4132bfb46168
size: 262
original:
hackage: mfsolve-0.3.2.0
- completed:
hackage: fast-math-1.0.2@sha256:91181eb836e54413cc5a841e797c42b2264954e893ea530b6fc4da0dccf6a8b7,1387
pantry-tree:
sha256: f22194924e26d3a27faef9cc9943ebb703c508d8ee9c9c7507618e39d62853af
size: 421
original:
hackage: fast-math-1.0.2
snapshots:
- completed:
sha256: 341870ac98d8a9f8f77c4adf2e9e0b22063e264a7fbeb4c85b7af5f380dac60e
size: 527836
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/11/22.yaml
original: lts-11.22

48
stack/stack-8.4.yaml Normal file
View File

@ -0,0 +1,48 @@
resolver: lts-12.26
packages:
- .
- ./ipython-kernel
- ./ghc-parser
- ./ihaskell-display/ihaskell-aeson
- ./ihaskell-display/ihaskell-blaze
- ./ihaskell-display/ihaskell-charts
- ./ihaskell-display/ihaskell-diagrams
- ./ihaskell-display/ihaskell-gnuplot
- ./ihaskell-display/ihaskell-hatex
- ./ihaskell-display/ihaskell-juicypixels
- ./ihaskell-display/ihaskell-magic
- ./ihaskell-display/ihaskell-plot
- ./ihaskell-display/ihaskell-static-canvas
- ./ihaskell-display/ihaskell-widgets
extra-deps:
- plot-0.2.3.9
- Chart-cairo-1.9.1
- Chart-1.9.4
- diagrams-cairo-1.4.1
- cairo-0.13.6.0
- pango-0.13.6.1
- glib-0.13.7.1
- gtk2hs-buildtools-0.13.5.4
- magic-1.1
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
ghc-parser: -Wall -Wpartial-fields -Werror
ihaskell: -Wall -Wpartial-fields -Werror
ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

40
stack/stack-8.4.yaml.lock Normal file
View File

@ -0,0 +1,40 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
hackage: magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928
pantry-tree:
sha256: 8fd594932f36cdf6a93266c48248a6c516d2aa237cd023eed6935ccee7ed230b
size: 535
original:
hackage: magic-1.1
- completed:
hackage: Chart-1.9@sha256:f41568b6b3704f66c2ec163295b430ab7d798f91de426c2d5aba747d1135cd9b,2855
pantry-tree:
sha256: aaf8b3f35af0012324865cb24c7989dfc794e8dab3eb2152e949cf5243a451ca
size: 3031
original:
hackage: Chart-1.9
- completed:
hackage: Chart-cairo-1.9@sha256:82875639be230c9406dbea650647b2dc94b11060160d6dad2c98551bb23d544f,877
pantry-tree:
sha256: 3eef9a2fdb682a95f5a60e66258d5b6036e9b8c19a7260f626ddda2d30113055
size: 238
original:
hackage: Chart-cairo-1.9
- completed:
hackage: plot-0.2.3.9@sha256:85d157a5c1fef7068ffb74137bb56475f18c93c35f57bf76b38d95d46930fed0,4342
pantry-tree:
sha256: bc80948074253bd37c2b02dbae92b8cf28474f26ae6edbb5ec34cd6b5445e7f9
size: 2704
original:
hackage: plot-0.2.3.9
snapshots:
- completed:
sha256: 95f014df58d0679b1c4a2b7bf2b652b61da8d30de5f571abb0d59015ef678646
size: 509471
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/12/26.yaml
original: lts-12.26

47
stack/stack-8.6.yaml Normal file
View File

@ -0,0 +1,47 @@
resolver: lts-14.27
packages:
- ..
- ../ipython-kernel
- ../ghc-parser
- ../ihaskell-display/ihaskell-aeson
- ../ihaskell-display/ihaskell-blaze
- ../ihaskell-display/ihaskell-charts
- ../ihaskell-display/ihaskell-diagrams
- ../ihaskell-display/ihaskell-gnuplot
- ../ihaskell-display/ihaskell-hatex
- ../ihaskell-display/ihaskell-juicypixels
- ../ihaskell-display/ihaskell-magic
# - ../ihaskell-display/ihaskell-plot
# - ../ihaskell-display/ihaskell-static-canvas
- ../ihaskell-display/ihaskell-widgets
extra-deps:
- Chart-cairo-1.9.1
- diagrams-cairo-1.4.1
- cairo-0.13.6.0
- pango-0.13.6.1
- glib-0.13.7.1
- gtk2hs-buildtools-0.13.5.4
- magic-1.1
# - plot-0.2.3.9
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
ghc-parser: -Wall -Wpartial-fields -Werror
ihaskell: -Wall -Wpartial-fields -Werror
ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

61
stack/stack-8.6.yaml.lock Normal file
View File

@ -0,0 +1,61 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
hackage: Chart-cairo-1.9.1@sha256:85605a4663f319e482bbd208c1e44c3cc8e0ec094fcd41b6afa3db4ce60635b0,925
pantry-tree:
sha256: 832739931c5d84c3c7b357782dd75cda9548a496f0be21cd1163e2b5e14fd89c
size: 238
original:
hackage: Chart-cairo-1.9.1
- completed:
hackage: diagrams-cairo-1.4.1@sha256:e08f15a15146da9222344fbc433ccd6103c0a7f1e9dfe21bb1e3d3e36ad83947,3820
pantry-tree:
sha256: d046241de911d534c4b554d24090412cedeffb46e92cb5fb3884b5c667f5fc72
size: 721
original:
hackage: diagrams-cairo-1.4.1
- completed:
hackage: cairo-0.13.6.0@sha256:a9122d48957a2dbb5a177e5068b850efa1e99bb22c68eb2571165c3c945a8dd6,4187
pantry-tree:
sha256: 180df55408086398e9901a6bcb2720da6fcecac5f57abcdb4df1251a686f1bb7
size: 2830
original:
hackage: cairo-0.13.6.0
- completed:
hackage: pango-0.13.6.1@sha256:177c9b6d865dc8f1634742497c6807a7c37a11e86c0dc93fbc047981d546738a,3881
pantry-tree:
sha256: 216bb39cdc265804f6ddd30c00c82ab156c17dcf8577b85527c287a21b4cb9fb
size: 1506
original:
hackage: pango-0.13.6.1
- completed:
hackage: glib-0.13.7.1@sha256:b517bbbc46f8bd72a8c97fb1d6769705a9b0d006f7cff8b3dc85948511817b11,3120
pantry-tree:
sha256: d7218c2ed9890d7b07030601980f62a57d5e888f656db5f32c3017ec7551a0d2
size: 1625
original:
hackage: glib-0.13.7.1
- completed:
hackage: gtk2hs-buildtools-0.13.5.4@sha256:0f18b0103fa7a3cbc28edc6a97bdaf08e1f9bd273ef26d2ad498630ec6d0ac9c,5288
pantry-tree:
sha256: df6fdd3aaf8b9d3dd420b5c5906751d7399f1999607b396141d1493c76472e1b
size: 3588
original:
hackage: gtk2hs-buildtools-0.13.5.4
- completed:
hackage: magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928
pantry-tree:
sha256: 8fd594932f36cdf6a93266c48248a6c516d2aa237cd023eed6935ccee7ed230b
size: 535
original:
hackage: magic-1.1
snapshots:
- completed:
sha256: 7ea31a280c56bf36ff591a7397cc384d0dff622e7f9e4225b47d8980f019a0f0
size: 524996
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/14/27.yaml
original: lts-14.27

49
stack/stack-8.8.yaml Normal file
View File

@ -0,0 +1,49 @@
resolver: lts-16.31 # GHC 8.8.4
packages:
- ..
- ../ipython-kernel
- ../ghc-parser
- ../ihaskell-display/ihaskell-aeson
- ../ihaskell-display/ihaskell-blaze
- ../ihaskell-display/ihaskell-charts
- ../ihaskell-display/ihaskell-diagrams
- ../ihaskell-display/ihaskell-gnuplot
- ../ihaskell-display/ihaskell-hatex
- ../ihaskell-display/ihaskell-juicypixels
- ../ihaskell-display/ihaskell-magic
- ../ihaskell-display/ihaskell-plot
# - ../ihaskell-display/ihaskell-static-canvas
- ../ihaskell-display/ihaskell-widgets
extra-deps:
- Chart-cairo-1.9.3
- diagrams-cairo-1.4.1.1
- cairo-0.13.10.0
- pango-0.13.10.0
- glib-0.13.10.0
- gtk2hs-buildtools-0.13.10.0
- magic-1.1
- plot-0.2.3.11
# - static-canvas-0.2.0.3
- vinyl-0.13.0
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

75
stack/stack-8.8.yaml.lock Normal file
View File

@ -0,0 +1,75 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
hackage: Chart-cairo-1.9.3@sha256:5d6f005b5d3d74453a979eb2c6a1777c92ce02eae9e019abbe03a0e008cb8aea,924
pantry-tree:
sha256: 204f29235d182cc8c8ab40d0a37387e78c1dadc684e190c85e1643521483e681
size: 238
original:
hackage: Chart-cairo-1.9.3
- completed:
hackage: diagrams-cairo-1.4.1.1@sha256:8b62e90fcb0a2c9343f594940698a148b2e778b203f3297c0bed3097d34b559a,3801
pantry-tree:
sha256: de94736d9aa3f321e9d621667e41ac029f47fe9956ee625eb46920bd9c3c7f80
size: 721
original:
hackage: diagrams-cairo-1.4.1.1
- completed:
hackage: cairo-0.13.10.0@sha256:388f39af90d50b920cad70612046041a7ffd7f5b60721862c0c797ecddf7e902,4153
pantry-tree:
sha256: a5d7014b0df2600377d061185b104f755274935554e723e2b7b600b85ffc7ae2
size: 2831
original:
hackage: cairo-0.13.10.0
- completed:
hackage: pango-0.13.10.0@sha256:4c7fc6187aadc2f3905a8fae7318ceccbb2af88134922536e3f4cae8640978dc,4081
pantry-tree:
sha256: acff0fc47176a959f14703e86704a0b5935aaabe84db245d03086061879179cf
size: 1506
original:
hackage: pango-0.13.10.0
- completed:
hackage: glib-0.13.10.0@sha256:e136db5cb19cbec17f823e919a0b44c12e50a90296d03c9d0c54761200611267,3171
pantry-tree:
sha256: 2e513e6a9b5d5fa1603f832bfda6dee4cb3d77425aff4e9ec5a38682c8818d8b
size: 1625
original:
hackage: glib-0.13.10.0
- completed:
hackage: gtk2hs-buildtools-0.13.10.0@sha256:ae8d2779835e29eb72f2ab1697901dba23adc45ccf197c7a51daaa5056869644,5305
pantry-tree:
sha256: 059d57676c2557bbf31c93189fb983ae0a7747fec8830395f88f4badfb90c12d
size: 3588
original:
hackage: gtk2hs-buildtools-0.13.10.0
- completed:
hackage: magic-1.1@sha256:3a31ca1c49fa5f6a857f647471739bd240a6020af6ae43e71fb72201fc482fa2,928
pantry-tree:
sha256: 8fd594932f36cdf6a93266c48248a6c516d2aa237cd023eed6935ccee7ed230b
size: 535
original:
hackage: magic-1.1
- completed:
hackage: plot-0.2.3.11@sha256:9564d62da798b74a5ab875996f45adf1c3071e161247faa9a9d1b036e6634a4a,4413
pantry-tree:
sha256: 2b9cb15fa582d3cdc9f43e6ffaf401e36535909b3620c5f54bd9b7cca5dfeb44
size: 2704
original:
hackage: plot-0.2.3.11
- completed:
hackage: vinyl-0.13.0@sha256:0f247cd3f8682b30881a07de18e6fec52d540646fbcb328420049cc8d63cd407,3724
pantry-tree:
sha256: 860fb95820b595161cdbdec5f376100ebae2d14e5ef0dbe311546202f7525d01
size: 1857
original:
hackage: vinyl-0.13.0
snapshots:
- completed:
sha256: 637fb77049b25560622a224845b7acfe81a09fdb6a96a3c75997a10b651667f6
size: 534126
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/16/31.yaml
original: lts-16.31

47
stack/stack-9.0.yaml Normal file
View File

@ -0,0 +1,47 @@
resolver: lts-19.33 # GHC 9.0.2
packages:
- ..
- ../ipython-kernel
- ../ghc-parser
- ../ihaskell-display/ihaskell-aeson
- ../ihaskell-display/ihaskell-blaze
- ../ihaskell-display/ihaskell-charts
- ../ihaskell-display/ihaskell-diagrams
- ../ihaskell-display/ihaskell-gnuplot
- ../ihaskell-display/ihaskell-graphviz
- ../ihaskell-display/ihaskell-hatex
- ../ihaskell-display/ihaskell-juicypixels
- ../ihaskell-display/ihaskell-magic
- ../ihaskell-display/ihaskell-plot
# - ../ihaskell-display/ihaskell-static-canvas
- ../ihaskell-display/ihaskell-widgets
extra-deps:
- Chart-cairo-1.9.3
- diagrams-cairo-1.4.2
- cairo-0.13.8.2
- pango-0.13.8.2
- glib-0.13.8.2
- plot-0.2.3.11
- statestack-0.3
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

61
stack/stack-9.0.yaml.lock Normal file
View File

@ -0,0 +1,61 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
hackage: Chart-cairo-1.9.3@sha256:5d6f005b5d3d74453a979eb2c6a1777c92ce02eae9e019abbe03a0e008cb8aea,924
pantry-tree:
sha256: 204f29235d182cc8c8ab40d0a37387e78c1dadc684e190c85e1643521483e681
size: 238
original:
hackage: Chart-cairo-1.9.3
- completed:
hackage: diagrams-cairo-1.4.2@sha256:42807c226188653ab668baceab8fa2245149ed1fc9df595f6e77613ed1259424,3799
pantry-tree:
sha256: 02aadeb755a93b3a777c6efb597ef33a5a5c2ebcf28e4de7404ce8f1c23e7f1c
size: 721
original:
hackage: diagrams-cairo-1.4.2
- completed:
hackage: cairo-0.13.8.2@sha256:ef1709c3c4d2c6d68a9a51d9f220dccc0745f6468d2d0868c15a7ecdf8f325a1,4078
pantry-tree:
sha256: d6a9b3a15bc2e7b53fda331279cfdbc299fbf0c4be2ee8c1b6b79b924b6fdeb4
size: 2830
original:
hackage: cairo-0.13.8.2
- completed:
hackage: pango-0.13.8.2@sha256:d4057ebddade4cde3e25d7755b5e030e7a7e56fe7365afd37916a7bba46d3fd9,3917
pantry-tree:
sha256: 10c335853e1d43e0b7426b33e8ddbdb90b3e318ebec4d58f0726a2f4cfb2e1c9
size: 1506
original:
hackage: pango-0.13.8.2
- completed:
hackage: glib-0.13.8.2@sha256:f44b829e741b3c3244d523f60b058701dfc067ff64c2ba61d43be4cccfc2663d,3156
pantry-tree:
sha256: 2442a22152231a94e2f1ecfe7ddc0f4e5fb2d5ae116b371508a448bd3312ef06
size: 1625
original:
hackage: glib-0.13.8.2
- completed:
hackage: plot-0.2.3.11@sha256:9564d62da798b74a5ab875996f45adf1c3071e161247faa9a9d1b036e6634a4a,4413
pantry-tree:
sha256: 2b9cb15fa582d3cdc9f43e6ffaf401e36535909b3620c5f54bd9b7cca5dfeb44
size: 2704
original:
hackage: plot-0.2.3.11
- completed:
hackage: statestack-0.3@sha256:437941f253bc7a6d8321e67938667bae53d7765b256a45976accadd85f6e1703,1146
pantry-tree:
sha256: 5b0ba98ac695eccbba33aae8eccf2b6dd8aa3d16d38db65e9e4c231aaa5e4082
size: 272
original:
hackage: statestack-0.3
snapshots:
- completed:
sha256: 6d1532d40621957a25bad5195bfca7938e8a06d923c91bc52aa0f3c41181f2d4
size: 619204
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/33.yaml
original: lts-19.33

38
stack/stack-9.2.yaml Normal file
View File

@ -0,0 +1,38 @@
resolver: lts-20.26 # GHC 9.2.8
packages:
- ..
- ../ipython-kernel
- ../ghc-parser
- ../ihaskell-display/ihaskell-aeson
- ../ihaskell-display/ihaskell-blaze
- ../ihaskell-display/ihaskell-charts
- ../ihaskell-display/ihaskell-diagrams
- ../ihaskell-display/ihaskell-gnuplot
- ../ihaskell-display/ihaskell-graphviz
- ../ihaskell-display/ihaskell-hatex
- ../ihaskell-display/ihaskell-juicypixels
- ../ihaskell-display/ihaskell-magic
- ../ihaskell-display/ihaskell-plot
# - ../ihaskell-display/ihaskell-static-canvas
- ../ihaskell-display/ihaskell-widgets
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
nix:
packages:
- blas
- cairo
- file
- gcc
- gfortran.cc.lib
- liblapack
- ncurses
- pango
- pkg-config
- zeromq
- zlib

12
stack/stack-9.2.yaml.lock Normal file
View File

@ -0,0 +1,12 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages: []
snapshots:
- completed:
sha256: 5a59b2a405b3aba3c00188453be172b85893cab8ebc352b1ef58b0eae5d248a2
size: 650475
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/26.yaml
original: lts-20.26

51
stack/stack-9.4.yaml Normal file
View File

@ -0,0 +1,51 @@
resolver: lts-21.21 # GHC 9.4.7
packages:
- ..
- ../ipython-kernel
- ../ghc-parser
- ../ihaskell-display/ihaskell-aeson
- ../ihaskell-display/ihaskell-blaze
- ../ihaskell-display/ihaskell-charts
- ../ihaskell-display/ihaskell-diagrams
- ../ihaskell-display/ihaskell-gnuplot
- ../ihaskell-display/ihaskell-graphviz
- ../ihaskell-display/ihaskell-hatex
- ../ihaskell-display/ihaskell-juicypixels
- ../ihaskell-display/ihaskell-magic
- ../ihaskell-display/ihaskell-plot
# - ../ihaskell-display/ihaskell-static-canvas
- ../ihaskell-display/ihaskell-widgets
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
extra-deps:
- Chart-cairo-1.9.3
nix:
packages:
- blas
- cairo
- expat
- file
- fribidi
- gcc
- gfortran.cc.lib
- libdatrie
- liblapack
- libselinux
- libsepol
- libthai
- ncurses
- pango
- pcre
- pcre2.dev
- pkg-config
- util-linux.dev
- xorg.libXdmcp
- zeromq
- zlib

19
stack/stack-9.4.yaml.lock Normal file
View File

@ -0,0 +1,19 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
hackage: Chart-cairo-1.9.3@sha256:5d6f005b5d3d74453a979eb2c6a1777c92ce02eae9e019abbe03a0e008cb8aea,924
pantry-tree:
sha256: 204f29235d182cc8c8ab40d0a37387e78c1dadc684e190c85e1643521483e681
size: 238
original:
hackage: Chart-cairo-1.9.3
snapshots:
- completed:
sha256: 7d4b649cf368f9076d8aa049aa44efe58950971d105892734e9957b2a26a2186
size: 640060
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/21.yaml
original: lts-21.21

55
stack/stack-9.6.yaml Normal file
View File

@ -0,0 +1,55 @@
resolver: nightly-2023-11-23 # GHC 9.6.3
packages:
- ..
- ../ipython-kernel
- ../ghc-parser
- ../ihaskell-display/ihaskell-aeson
- ../ihaskell-display/ihaskell-blaze
- ../ihaskell-display/ihaskell-charts
- ../ihaskell-display/ihaskell-diagrams
- ../ihaskell-display/ihaskell-gnuplot
- ../ihaskell-display/ihaskell-graphviz
- ../ihaskell-display/ihaskell-hatex
- ../ihaskell-display/ihaskell-juicypixels
- ../ihaskell-display/ihaskell-magic
- ../ihaskell-display/ihaskell-plot
# - ../ihaskell-display/ihaskell-static-canvas
- ../ihaskell-display/ihaskell-widgets
ghc-options:
# Eventually we want "$locals": -Wall -Wpartial-fields -Werror
# ghc-parser: -Wall -Wpartial-fields -Werror
# ihaskell: -Wall -Wpartial-fields -Werror
# ihaskell-widgets: -Wall -Wpartial-fields -Werror
extra-deps:
# https://github.com/amcphail/plot/pull/23
- git: https://github.com/codedownio/haskell-plot.git
commit: dfa26022b5815bcd6a5dd6c818fcd2c4d25c6d44
allow-newer: true
nix:
packages:
- blas
- cairo
- expat
- file
- fribidi
- gcc
- gfortran.cc.lib
- libdatrie
- liblapack
- libselinux
- libsepol
- libthai
- ncurses
- pango
- pcre
- pcre2.dev
- pkg-config
- util-linux.dev
- xorg.libXdmcp
- zeromq
- zlib

23
stack/stack-9.6.yaml.lock Normal file
View File

@ -0,0 +1,23 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages:
- completed:
commit: dfa26022b5815bcd6a5dd6c818fcd2c4d25c6d44
git: https://github.com/codedownio/haskell-plot.git
name: plot
pantry-tree:
sha256: f79914b2d62db05a5aa7e1c36ef5fc887270582255172433449ef252aa1d1057
size: 2855
version: 0.2.3.11
original:
commit: dfa26022b5815bcd6a5dd6c818fcd2c4d25c6d44
git: https://github.com/codedownio/haskell-plot.git
snapshots:
- completed:
sha256: 3a1d76b27b77ecf9541ee3723756ff85d7bca58340a6858e760a1d7ef4d055bd
size: 698983
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2023/11/23.yaml
original: nightly-2023-11-23