flake.nix (3158B)
1 { 2 description = "A Haskell implementation of BOLT #7."; 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-secp256k1 = { 19 type = "git"; 20 url = "git://git.ppad.tech/secp256k1.git"; 21 ref = "master"; 22 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 23 inputs.ppad-sha256.follows = "ppad-sha256"; 24 }; 25 ppad-sha256 = { 26 type = "git"; 27 url = "git://git.ppad.tech/sha256.git"; 28 ref = "master"; 29 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 30 }; 31 ppad-nixpkgs = { 32 type = "git"; 33 url = "git://git.ppad.tech/nixpkgs.git"; 34 ref = "master"; 35 }; 36 flake-utils.follows = "ppad-nixpkgs/flake-utils"; 37 nixpkgs.follows = "ppad-nixpkgs/nixpkgs"; 38 }; 39 40 outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs 41 , ppad-bolt1, ppad-bolt9, ppad-secp256k1, ppad-sha256 }: 42 flake-utils.lib.eachDefaultSystem (system: 43 let 44 lib = "ppad-bolt7"; 45 46 pkgs = import nixpkgs { inherit system; }; 47 hlib = pkgs.haskell.lib; 48 llvm = pkgs.llvmPackages_19.llvm; 49 clang = pkgs.llvmPackages_19.clang; 50 51 bolt1 = ppad-bolt1.packages.${system}.default; 52 bolt9 = ppad-bolt9.packages.${system}.default; 53 54 secp256k1 = ppad-secp256k1.packages.${system}.default; 55 secp256k1-llvm = 56 hlib.addBuildTools 57 (hlib.enableCabalFlag secp256k1 "llvm") 58 [ llvm clang ]; 59 60 sha256 = ppad-sha256.packages.${system}.default; 61 sha256-llvm = 62 hlib.addBuildTools 63 (hlib.enableCabalFlag sha256 "llvm") 64 [ llvm clang ]; 65 66 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 67 ppad-bolt1 = bolt1; 68 ppad-bolt9 = bolt9; 69 ppad-secp256k1 = secp256k1-llvm; 70 ppad-sha256 = sha256-llvm; 71 ${lib} = new.callCabal2nix lib ./. { 72 ppad-bolt1 = new.ppad-bolt1; 73 ppad-secp256k1 = new.ppad-secp256k1; 74 ppad-sha256 = new.ppad-sha256; 75 }; 76 }); 77 78 cc = pkgs.stdenv.cc; 79 ghc = hpkgs.ghc; 80 cabal = hpkgs.cabal-install; 81 in 82 { 83 packages.default = hpkgs.${lib}; 84 85 packages.haddock = hpkgs.${lib}.doc; 86 87 devShells.default = hpkgs.shellFor { 88 packages = p: [ 89 (hlib.doBenchmark p.${lib}) 90 ]; 91 92 buildInputs = [ 93 cabal 94 cc 95 llvm 96 clang 97 ]; 98 99 shellHook = '' 100 PS1="[${lib}] \w$ " 101 echo "entering ${system} shell, using" 102 echo "cc: $(${cc}/bin/cc --version)" 103 echo "ghc: $(${ghc}/bin/ghc --version)" 104 echo "cabal: $(${cabal}/bin/cabal --version)" 105 ''; 106 }; 107 } 108 ); 109 }