flake.nix (4934B)
1 { 2 description = "A Haskell implementation of BOLT #5."; 3 4 inputs = { 5 ppad-nixpkgs = { 6 type = "git"; 7 url = "git://git.ppad.tech/nixpkgs.git"; 8 ref = "master"; 9 }; 10 ppad-sha256 = { 11 type = "git"; 12 url = "git://git.ppad.tech/sha256.git"; 13 ref = "master"; 14 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 15 }; 16 ppad-fixed = { 17 type = "git"; 18 url = "git://git.ppad.tech/fixed.git"; 19 ref = "master"; 20 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 21 }; 22 ppad-secp256k1 = { 23 type = "git"; 24 url = "git://git.ppad.tech/secp256k1.git"; 25 ref = "master"; 26 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 27 inputs.ppad-sha256.follows = "ppad-sha256"; 28 inputs.ppad-fixed.follows = "ppad-fixed"; 29 }; 30 ppad-ripemd160 = { 31 type = "git"; 32 url = "git://git.ppad.tech/ripemd160.git"; 33 ref = "master"; 34 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 35 }; 36 ppad-tx = { 37 type = "git"; 38 url = "git://git.ppad.tech/tx.git"; 39 ref = "master"; 40 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 41 inputs.ppad-sha256.follows = "ppad-sha256"; 42 }; 43 ppad-bolt9 = { 44 type = "git"; 45 url = "git://git.ppad.tech/bolt9.git"; 46 ref = "master"; 47 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 48 }; 49 ppad-bolt1 = { 50 type = "git"; 51 url = "git://git.ppad.tech/bolt1.git"; 52 ref = "master"; 53 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 54 inputs.ppad-bolt9.follows = "ppad-bolt9"; 55 }; 56 ppad-bolt3 = { 57 type = "git"; 58 url = "git://git.ppad.tech/bolt3.git"; 59 ref = "master"; 60 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 61 inputs.ppad-bolt1.follows = "ppad-bolt1"; 62 inputs.ppad-bolt9.follows = "ppad-bolt9"; 63 inputs.ppad-fixed.follows = "ppad-fixed"; 64 inputs.ppad-sha256.follows = "ppad-sha256"; 65 inputs.ppad-secp256k1.follows = "ppad-secp256k1"; 66 inputs.ppad-ripemd160.follows = "ppad-ripemd160"; 67 inputs.ppad-tx.follows = "ppad-tx"; 68 }; 69 flake-utils.follows = "ppad-nixpkgs/flake-utils"; 70 nixpkgs.follows = "ppad-nixpkgs/nixpkgs"; 71 }; 72 73 outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs 74 , ppad-sha256, ppad-fixed, ppad-secp256k1, ppad-ripemd160 75 , ppad-tx, ppad-bolt9, ppad-bolt1, ppad-bolt3 }: 76 flake-utils.lib.eachDefaultSystem (system: 77 let 78 lib = "ppad-bolt5"; 79 80 pkgs = import nixpkgs { inherit system; }; 81 hlib = pkgs.haskell.lib; 82 llvm = pkgs.llvmPackages_19.llvm; 83 clang = pkgs.llvmPackages_19.clang; 84 85 sha256 = ppad-sha256.packages.${system}.default; 86 sha256-llvm = 87 hlib.addBuildTools 88 (hlib.enableCabalFlag sha256 "llvm") 89 [ llvm clang ]; 90 91 fixed = ppad-fixed.packages.${system}.default; 92 fixed-llvm = 93 hlib.addBuildTools 94 (hlib.enableCabalFlag fixed "llvm") 95 [ llvm clang ]; 96 97 secp256k1 = ppad-secp256k1.packages.${system}.default; 98 secp256k1-llvm = 99 hlib.addBuildTools 100 (hlib.enableCabalFlag secp256k1 "llvm") 101 [ llvm clang ]; 102 103 ripemd160 = ppad-ripemd160.packages.${system}.default; 104 ripemd160-llvm = 105 hlib.addBuildTools 106 (hlib.enableCabalFlag ripemd160 "llvm") 107 [ llvm clang ]; 108 109 tx = ppad-tx.packages.${system}.default; 110 tx-llvm = 111 hlib.addBuildTools 112 (hlib.enableCabalFlag tx "llvm") 113 [ llvm clang ]; 114 115 bolt9 = ppad-bolt9.packages.${system}.default; 116 bolt1 = ppad-bolt1.packages.${system}.default; 117 bolt3 = ppad-bolt3.packages.${system}.default; 118 119 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 120 ppad-sha256 = sha256-llvm; 121 ppad-fixed = fixed-llvm; 122 ppad-secp256k1 = secp256k1-llvm; 123 ppad-ripemd160 = ripemd160-llvm; 124 ppad-tx = tx-llvm; 125 ppad-bolt9 = bolt9; 126 ppad-bolt1 = bolt1; 127 ppad-bolt3 = bolt3; 128 ${lib} = new.callCabal2nix lib ./. { }; 129 }); 130 131 cc = pkgs.stdenv.cc; 132 ghc = hpkgs.ghc; 133 cabal = hpkgs.cabal-install; 134 in 135 { 136 packages.default = hpkgs.${lib}; 137 138 packages.haddock = hpkgs.${lib}.doc; 139 140 devShells.default = hpkgs.shellFor { 141 packages = p: [ 142 (hlib.doBenchmark p.${lib}) 143 ]; 144 145 buildInputs = [ 146 cabal 147 cc 148 llvm 149 clang 150 ]; 151 152 shellHook = '' 153 PS1="[${lib}] \w$ " 154 echo "entering ${system} shell, using" 155 echo "cc: $(${cc}/bin/cc --version)" 156 echo "ghc: $(${ghc}/bin/ghc --version)" 157 echo "cabal: $(${cabal}/bin/cabal --version)" 158 ''; 159 }; 160 } 161 ); 162 }