diff --git a/.github/workflows/hvega-ci.yml b/.github/workflows/hvega-ci.yml index 5ade5cea..c2314e57 100644 --- a/.github/workflows/hvega-ci.yml +++ b/.github/workflows/hvega-ci.yml @@ -26,19 +26,19 @@ jobs: cabal: ["latest"] os: [ubuntu-latest] - ghc-version: ["9.6", "9.4", "9.2", "9.0", "8.10"] + ghc-version: ["9.10", "9.8", "9.6", "9.4"] include: - os: macOS-latest - ghc-version: '9.4' + ghc-version: '9.6' - os: windows-latest - ghc-version: '9.4' + ghc-version: '9.6' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/main' - - uses: haskell/actions/setup@v2 + - uses: haskell-actions/setup@v2 id: setup-haskell-cabal name: Setup Haskell with: @@ -84,6 +84,11 @@ jobs: run: | cabal test all + #- name: Cabal check + # working-directory: ./hvega + # run: | + # cabal check + # test the hvega/stack.yaml setup (so need to keep the versions up to date) stack: name: stack / ghc ${{ matrix.ghc }} @@ -91,13 +96,13 @@ jobs: strategy: matrix: stack: ["latest"] - ghc: ["9.4"] + ghc: ["9.6"] steps: - uses: actions/checkout@v3 if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/main' - - uses: haskell/actions/setup@v2 + - uses: haskell-actions/setup@v2 name: Setup Haskell Stack with: ghc-version: ${{ matrix.ghc }} diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..6bc678b5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,25 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1731890469, + "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5083ec887760adfe12af64830a66807423a859a7", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..a1ff7bc0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,58 @@ +{ + # inspired by: https://serokell.io/blog/practical-nix-flakes#packaging-existing-applications + description = "explore hvega and IHaskell"; + + inputs = { + nixpkgs.url = "nixpkgs"; + # IHaskell.url = "github:IHaskell/IHaskell"; + }; + + # outputs = { self, nixpkgs, IHaskell }: + outputs = { self, nixpkgs }: + let + supportedSystems = [ "x86_64-linux" "x86_64-darwin" ]; + # supportedSystems = [ "x86_64-linux" ]; + forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); + nixpkgsFor = forAllSystems (system: import nixpkgs { + inherit system; + overlays = [ self.overlay ]; + }); + in + { + overlay = (final: prev: { + hvega = final.haskellPackages.callCabal2nix "hvega" ./hvega {}; + ihaskell-hvega = final.haskellPackages.callCabal2nix "ihaskell-hvega" ./ihaskell-hvega {}; + }); + packages = forAllSystems (system: { + hvega = nixpkgsFor.${system}.hvega; + ihaskell-hvega = nixpkgsFor.${system}.ihaskell-hvega; + }); + # what do we want for the defaultPackage here? + defaultPackage = forAllSystems (system: self.packages.${system}.hvega); + checks = self.packages; + devShell = forAllSystems (system: let haskellPackages = nixpkgsFor.${system}.haskellPackages; + in haskellPackages.shellFor { + packages = p: [self.packages.${system}.hvega + self.packages.${system}.ihaskell-hvega]; + # withHoogle = true; + withHoogle = false; # faster ... + buildInputs = with haskellPackages; [ + haskell-language-server + hlint + cabal-install + ihaskell + nixpkgsFor.${system}.jupyter + ]; + # Change the prompt to show that you are in a devShell + shellHook = '' + echo -e "*** \e[1;32mWelcome to hvega development\e[0m ***" + ghc --version + cabal --version + hlint --version + echo -e "IHaskell: `ihaskell --version`" + echo -e "" + export PS1='hvegadev:\A \e[1;34m\w\e[0m ' + ''; + }); + }; +} diff --git a/hvega/flake.lock b/hvega/flake.lock index c278c7ef..6bc678b5 100644 --- a/hvega/flake.lock +++ b/hvega/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1703499205, - "narHash": "sha256-lF9rK5mSUfIZJgZxC3ge40tp1gmyyOXZ+lRY3P8bfbg=", + "lastModified": 1731890469, + "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870", + "rev": "5083ec887760adfe12af64830a66807423a859a7", "type": "github" }, "original": { diff --git a/hvega/flake.nix b/hvega/flake.nix index a88ff649..3e2dc449 100644 --- a/hvega/flake.nix +++ b/hvega/flake.nix @@ -24,7 +24,8 @@ devShell = forAllSystems (system: let haskellPackages = nixpkgsFor.${system}.haskellPackages; in haskellPackages.shellFor { packages = p: [self.packages.${system}.hvega]; - withHoogle = true; + # withHoogle = true; + withHoogle = false; buildInputs = with haskellPackages; [ haskell-language-server hlint diff --git a/hvega/stack.yaml b/hvega/stack.yaml index 6f1e4426..b21148dd 100644 --- a/hvega/stack.yaml +++ b/hvega/stack.yaml @@ -5,4 +5,4 @@ packages: extra-deps: [] -resolver: lts-21.2 +resolver: lts-22.42 diff --git a/ihaskell-hvega/flake.lock b/ihaskell-hvega/flake.lock index c278c7ef..6bc678b5 100644 --- a/ihaskell-hvega/flake.lock +++ b/ihaskell-hvega/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1703499205, - "narHash": "sha256-lF9rK5mSUfIZJgZxC3ge40tp1gmyyOXZ+lRY3P8bfbg=", + "lastModified": 1731890469, + "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870", + "rev": "5083ec887760adfe12af64830a66807423a859a7", "type": "github" }, "original": { diff --git a/ihaskell-hvega/flake.nix b/ihaskell-hvega/flake.nix index 8490cef1..e1e838a3 100644 --- a/ihaskell-hvega/flake.nix +++ b/ihaskell-hvega/flake.nix @@ -27,7 +27,8 @@ devShell = forAllSystems (system: let haskellPackages = nixpkgsFor.${system}.haskellPackages; in haskellPackages.shellFor { packages = p: [self.packages.${system}.ihaskell-hvega]; - withHoogle = true; + # withHoogle = true; + withHoogle = false; buildInputs = with haskellPackages; [ haskell-language-server hlint diff --git a/nix/sources.json b/nix/sources.json index 9322c8c1..bb245f14 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -5,10 +5,10 @@ "homepage": null, "owner": "gibiansky", "repo": "IHaskell", - "rev": "c547ee2fdc0a09cf4129b19292147fec38527a55", - "sha256": "0ail2r2kn1zlsny6f4sjrw6zs9kfj69ip82cf46da7kn2rv155cn", + "rev": "bf7d4cb2be3d9dd5fb7d6875a998245a725e8fb2", + "sha256": "0zzb7jn4hl3iv1xz85a38fm0iis3r43hn48qwvj4zgvsv4la4m0x", "type": "tarball", - "url": "https://github.com/gibiansky/IHaskell/archive/c547ee2fdc0a09cf4129b19292147fec38527a55.tar.gz", + "url": "https://github.com/gibiansky/IHaskell/archive/bf7d4cb2be3d9dd5fb7d6875a998245a725e8fb2.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "niv": { @@ -17,22 +17,22 @@ "homepage": "https://github.com/nmattia/niv", "owner": "nmattia", "repo": "niv", - "rev": "914aba08a26cb10538b84d00d6cfb01c9776d80c", - "sha256": "0gx316gc7prjay5b0cr13x4zc2pdbiwxkfkpjvrlb2rml80lm4pm", + "rev": "55422d6f2618cd2195eeafa3f16ae63fde723c15", + "sha256": "1s6m41hhsydf3lw6ihksc904vcpyd5agwiqq8hb8plyqvsyn74ba", "type": "tarball", - "url": "https://github.com/nmattia/niv/archive/914aba08a26cb10538b84d00d6cfb01c9776d80c.tar.gz", + "url": "https://github.com/nmattia/niv/archive/55422d6f2618cd2195eeafa3f16ae63fde723c15.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "release-23.05", + "branch": "release-23.11", "description": "Nix Packages collection", "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09798f0dd4c11b431765275893d9d395c1e203b8", - "sha256": "0722086ipwl49a1dxqc4clz3yqa7086a41ya3f2hf67gnnk4xr7q", + "rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5", + "sha256": "1f5d2g1p6nfwycpmrnnmc2xmcszp804adp16knjvdkj8nz36y1fg", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/09798f0dd4c11b431765275893d9d395c1e203b8.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/205fd4226592cc83fd4c0885a3e4c9c400efabb5.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } }