flake.nix (2582B)
1 { 2 description = "A Haskell implementation of BOLT #2."; 3 4 inputs = { 5 ppad-bolt1 = { 6 type = "git"; 7 url = "git://git.ppad.tech/bolt1.git"; 8 ref = "master"; 9 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 10 inputs.ppad-bolt9.follows = "ppad-bolt9"; 11 }; 12 ppad-bolt9 = { 13 type = "git"; 14 url = "git://git.ppad.tech/bolt9.git"; 15 ref = "master"; 16 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 17 }; 18 ppad-nixpkgs = { 19 type = "git"; 20 url = "git://git.ppad.tech/nixpkgs.git"; 21 ref = "master"; 22 }; 23 ppad-tx = { 24 type = "git"; 25 url = "git://git.ppad.tech/tx.git"; 26 ref = "master"; 27 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 28 }; 29 flake-utils.follows = "ppad-nixpkgs/flake-utils"; 30 nixpkgs.follows = "ppad-nixpkgs/nixpkgs"; 31 }; 32 33 outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs 34 , ppad-bolt1, ppad-bolt9, ppad-tx }: 35 flake-utils.lib.eachDefaultSystem (system: 36 let 37 lib = "ppad-bolt2"; 38 39 pkgs = import nixpkgs { inherit system; }; 40 hlib = pkgs.haskell.lib; 41 llvm = pkgs.llvmPackages_19.llvm; 42 clang = pkgs.llvmPackages_19.clang; 43 44 bolt1 = ppad-bolt1.packages.${system}.default; 45 bolt9 = ppad-bolt9.packages.${system}.default; 46 47 tx = ppad-tx.packages.${system}.default; 48 tx-llvm = 49 hlib.addBuildTools 50 (hlib.enableCabalFlag tx "llvm") 51 [ llvm clang ]; 52 53 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 54 ppad-bolt1 = bolt1; 55 ppad-bolt9 = bolt9; 56 ppad-tx = tx-llvm; 57 ${lib} = new.callCabal2nix lib ./. { 58 ppad-bolt1 = new.ppad-bolt1; 59 ppad-tx = new.ppad-tx; 60 }; 61 }); 62 63 cc = pkgs.stdenv.cc; 64 ghc = hpkgs.ghc; 65 cabal = hpkgs.cabal-install; 66 in 67 { 68 packages.default = hpkgs.${lib}; 69 70 packages.haddock = hpkgs.${lib}.doc; 71 72 devShells.default = hpkgs.shellFor { 73 packages = p: [ 74 (hlib.doBenchmark p.${lib}) 75 ]; 76 77 buildInputs = [ 78 cabal 79 cc 80 llvm 81 clang 82 ]; 83 84 shellHook = '' 85 PS1="[${lib}] \w$ " 86 echo "entering ${system} shell, using" 87 echo "cc: $(${cc}/bin/cc --version)" 88 echo "ghc: $(${ghc}/bin/ghc --version)" 89 echo "cabal: $(${cabal}/bin/cabal --version)" 90 ''; 91 }; 92 } 93 ); 94 }