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