From bc8ca82ea5432adbe80527ba23fb1ff8b37009c0 Mon Sep 17 00:00:00 2001 From: tzlil Date: Sat, 15 Apr 2023 16:17:50 +0300 Subject: improve flake --- flake.nix | 88 ++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 32 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index f513119..3812ed2 100644 --- a/flake.nix +++ b/flake.nix @@ -1,37 +1,61 @@ + { inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; - treefmt-nix.url = "github:numtide/treefmt-nix"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + flake-utils = { + url = "github:numtide/flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = inputs: - inputs.flake-parts.lib.mkFlake { inherit inputs; } { - systems = [ "x86_64-linux" ]; - imports = [ - inputs.treefmt-nix.flakeModule - ]; - - perSystem = { pkgs, ... }: { - packages.default = pkgs.haskellPackages.callCabal2nix "example" ./. { }; - - devShells.default = pkgs.haskellPackages.shellFor { - packages = ps: [ ]; - buildInputs = with pkgs.haskellPackages; [ - cabal-install - haskell-language-server - megaparsec - stack + outputs = { flake-utils, nixpkgs, self }: + flake-utils.lib.eachDefaultSystem + (system: + let + config = {}; + + overlays = [ + # This is an overlay we apply on top of Nixpkgs with some of our + # own packages defined. + (final: prev: { + # A Haskell package set with our own overrides and packages defined. + myHaskellPackages = final.haskellPackages.override { + overrides = hfinal: hprev: { + # This is our local Haskell package. + package = + hfinal.callCabal2nix "package" ./. {}; + }; + }; + + # This is just a convenient shortcut to our package from the + # top-level of Nixpkgs. We're also applying the + # justStaticExecutables function to our package in order to + # reduce the size of the output derivation. + package = + final.haskell.lib.compose.justStaticExecutables + final.myHaskellPackages.package; + + # A Haskell development shell for our package that includes + # things like cabal and HLS. + myDevShell = final.myHaskellPackages.shellFor { + packages = p: [ p.package ]; + + nativeBuildInputs = [ + final.cabal-install + final.haskellPackages.haskell-language-server + ]; + }; + }) ]; - }; - treefmt = { - projectRootFile = "flake.nix"; - programs.nixpkgs-fmt.enable = true; - programs.cabal-fmt.enable = true; - programs.ormolu.enable = true; - programs.hlint.enable = true; - programs.ormolu.package = pkgs.haskellPackages.fourmolu; - }; - }; - }; -} + + # Our full Nixpkgs with the above overlay applied. + pkgs = import nixpkgs { inherit config overlays system; }; + in + { + packages.default = pkgs.package; + + devShells.default = pkgs.myDevShell; + } + ); +} \ No newline at end of file -- cgit 1.4.1