]> Git — Sourcephile - julm/AoC-2020.git/blob - flake.nix
pin down Nixpkgs
[julm/AoC-2020.git] / flake.nix
1 {
2 #inputs.nixpkgs.url = "flake:nixpkgs"; # Reuse any local nixpkgs, at cost of reproductibility
3 inputs.nixpkgs.url = "github:NixOS/nixpkgs/8585991bfb629edda1e42c191bef935d9d70d690";
4 inputs.flake-utils.url = "github:numtide/flake-utils";
5 outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem (system: let
6 pkgs = inputs.nixpkgs.legacyPackages.${system};
7 ghc = null; # Use default ghc, but could have been ghc901
8 haskellPackages =
9 if ghc == null
10 then pkgs.haskellPackages
11 else pkgs.haskell.packages.${ghc};
12 hs = haskellPackages.extend (with pkgs.haskell.lib; hfinal: hprev: {
13 "AoC202004" = hfinal.callCabal2nix "AoC2020" ./Day04 {};
14 });
15 in rec {
16 devShell = hs.shellFor {
17 packages = p: [ p."AoC202004" ];
18 withHoogle = false;
19 nativeBuildInputs = [
20 hs.cabal-install
21 hs.haskell-language-server
22 #hs.hpc
23 ];
24 buildInputs = [
25 #hs.ghcid
26 #hs.ormolu
27 #hs.hlint
28 #pkgs.nixpkgs-fmt
29 ];
30 };
31 packages = {
32 "Day04" = hs."AoC202004";
33 };
34 defaultApp = {
35 type = "app";
36 program = (pkgs.writeShellScript "run" ''
37 cd ${inputs.self}
38 ${pkgs.gnumake}/bin/make run
39 '').outPath;
40 };
41 apps = pkgs.lib.genAttrs [
42 "Day04"
43 ] (day: {
44 type = "app";
45 program = "${packages.Day04}/bin/Day";
46 }
47 );
48 }
49 );
50 }