tx

Minimal transaction primitives (docs.ppad.tech/tx).
git clone git://git.ppad.tech/tx.git
Log | Files | Refs | README | LICENSE

flake.nix (2570B)


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