From 54dcc710a4c246cba16b9f6f397fc770558b28cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Go=C5=82=C4=99biewski?= Date: Mon, 17 Oct 2022 22:22:53 +0200 Subject: [PATCH] Move to nix flakes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Paweł Szulc --- cabal.project | 8 + default.nix | 26 --- flake.lock | 419 +++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 41 +++++ haskell-pkgs.nix | 20 --- shell.nix | 33 ---- stack.yaml | 2 +- stack.yaml.lock | 8 +- 8 files changed, 473 insertions(+), 84 deletions(-) create mode 100644 cabal.project delete mode 100644 default.nix create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 haskell-pkgs.nix delete mode 100644 shell.nix diff --git a/cabal.project b/cabal.project new file mode 100644 index 00000000..fc36b5e6 --- /dev/null +++ b/cabal.project @@ -0,0 +1,8 @@ +-- Bump this if you need newer packages +index-state: 2022-05-06T00:00:00Z + +packages: ./. + +write-ghc-environment-files: never + +test-show-details: streaming diff --git a/default.nix b/default.nix deleted file mode 100644 index 3cb43caf..00000000 --- a/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ pkgs ? import ./haskell-pkgs.nix -, haskellCompiler ? "ghc8107" -}: -pkgs.haskell-nix.cabalProject { - src = pkgs.haskell-nix.haskellLib.cleanGit { - name = "stylish-haskell"; - src = ./.; - }; - - compiler-nix-name = haskellCompiler; - - # need to make Cabal reinstallable, otherwise Haskell.nix uses the - # version of Cabal that ships with the compiler even when that would - # violate the constraint in stylish-haskell.cabal - # - # (eg nix-build failed because it tried to use Cabal-3.2.1.0 while - # stylish-haskell needs Cabal >= 3.4 && < 3.7) - # - # See haskell-nix issue #1337 for details: - # https://github.com/input-output-hk/haskell.nix/issues/1337 - modules = [ - ({ lib, ... }: { - options.nonReinstallablePkgs = lib.mkOption { apply = lib.remove "Cabal"; }; - }) - ]; -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..4aa8b3f1 --- /dev/null +++ b/flake.lock @@ -0,0 +1,419 @@ +{ + "nodes": { + "HTTP": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "cabal-32": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34": { + "flake": false, + "locked": { + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cardano-shell": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1656065134, + "narHash": "sha256-oc6E6ByIw3oJaIyc67maaFcnjYOz1mMcOtHxbEf9NwQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bee6a7250dd1b01844a2de7e02e4df7d8a0a206c", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1655169375, + "narHash": "sha256-Ge0kmsjxQzQce1iVtOO+iHiNyER5xmQtHqLRXPWfotk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "552673bfb94b63a3c2ab03350b934fc94f59d40f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "nix-tools": "nix-tools", + "nixpkgs": [ + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1655209625, + "narHash": "sha256-qzm6vZYt/nxgBF2IStU69gx+96nrC/8BjNdrfUVkyfY=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "2739817902bf38180a1447776157db856a0f7e46", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "old-ghc-nix": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "haskellNix": "haskellNix", + "nixpkgs": [ + "haskellNix", + "nixpkgs-unstable" + ] + } + }, + "stackage": { + "flake": false, + "locked": { + "lastModified": 1655082887, + "narHash": "sha256-GwahSird+3NzFiXAfJn1NJ2Y2U+fed23vxwcMLAdvA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "a44d81d4624b6ced12e69b739219652087836bd8", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..13d51dbd --- /dev/null +++ b/flake.nix @@ -0,0 +1,41 @@ +{ + nixConfig.bash-prompt = "[nix-develop-stylish-haskell:] "; + description = "stylish-haskell"; + inputs = { + flake-utils.url = "github:numtide/flake-utils"; + haskellNix.url = "github:input-output-hk/haskell.nix"; + nixpkgs.follows = "haskellNix/nixpkgs-unstable"; + }; + + outputs = { self, nixpkgs, flake-utils, haskellNix }: + flake-utils.lib.eachSystem [ "x86_64-linux" ] (system: + let + deferPluginErrors = true; + overlays = [ + haskellNix.overlay + (final: prev: { + # This overlay adds our project to pkgs + stylish-haskell = + final.haskell-nix.project' { + src = ./.; + compiler-nix-name = "ghc922"; + projectFileName = "stack.yaml"; + modules = [{ + packages = { }; + }]; + shell.buildInputs = with pkgs; [ + cabal-install + ghcid + hlint + nixpkgs-fmt + ]; + }; + }) + ]; + pkgs = import nixpkgs { inherit system overlays; inherit (haskellNix) config; }; + flake = pkgs.stylish-haskell.flake { }; + in + flake // { + defaultPackage = flake.packages."stylish-haskell:lib:stylish-haskell"; + }); +} diff --git a/haskell-pkgs.nix b/haskell-pkgs.nix deleted file mode 100644 index c9e68dce..00000000 --- a/haskell-pkgs.nix +++ /dev/null @@ -1,20 +0,0 @@ -let - # Fetch the latest haskell.nix and import its default.nix - haskellNix = import - (builtins.fetchTarball { - url = "https://github.com/input-output-hk/haskell.nix/archive/cc40a24585ccba274dc9a5af96d5506034e0d658.tar.gz"; - }) - { }; - - # haskell.nix provides access to the nixpkgs pins which are used by our CI, - # hence you will be more likely to get cache hits when using these. - # But you can also just use your own, e.g. ''. - nixpkgsSrc = haskellNix.sources.nixpkgs-2111; - - # haskell.nix provides some arguments to be passed to nixpkgs, including some - # patches and also the haskell.nix functionality itself as an overlay. - nixpkgsArgs = haskellNix.nixpkgsArgs; - - # import nixpkgs with overlays -in -import nixpkgsSrc nixpkgsArgs diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 5a904c47..00000000 --- a/shell.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ pkgs ? import ./haskell-pkgs.nix }: -let - hsPkgs = import ./. { inherit pkgs; }; -in -hsPkgs.shellFor { - # Include only the *local* packages of your project. - # packages = ps: with ps; [ - # ]; - - # Builds a Hoogle documentation index of all dependencies, - # and provides a "hoogle" command to search the index. - # withHoogle = true; - - # You might want some extra tools in the shell (optional). - # Some common tools can be added with the `tools` argument - tools = { - cabal = "3.6.2.0"; - hlint = "3.3.6"; - haskell-language-server = "1.6.1.1"; - }; - # See overlays/tools.nix for more details - - # Some you may need to get some other way. - buildInputs = [ - pkgs.ghcid - pkgs.nixpkgs-fmt - pkgs.stylish-haskell - ]; - - # Prevents cabal from choosing alternate plans, so that - # *all* dependencies are provided by Nix. - exactDeps = true; -} diff --git a/stack.yaml b/stack.yaml index fc8736f9..f45e32f9 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-19.12 +resolver: nightly-2022-06-06 extra-deps: - 'ghc-lib-parser-9.2.2.20220307' diff --git a/stack.yaml.lock b/stack.yaml.lock index 1756650b..a37ede18 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -20,7 +20,7 @@ packages: hackage: ghc-lib-parser-ex-9.2.0.3 snapshots: - completed: - size: 619158 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/12.yaml - sha256: d4d7a4ac80485f3c21d0c6bfe5e7a21c3f71ca4fdfea022f98574047ebb58ebb - original: lts-19.12 + size: 605110 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/6/6.yaml + sha256: 26ea900ee8601fee24ff84981e92f304d384c73ee32d5504299133b5eb177e87 + original: nightly-2022-06-06