base58

Pure Haskell base58, base58check encoding/decoding (docs.ppad.tech/base58).
git clone git://git.ppad.tech/base58.git
Log | Files | Refs | README | LICENSE

flake.nix (2419B)


      1 {
      2   description = "Pure Haskell base58 and base58check encodings.";
      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-base16.follows = "ppad-base16";
     21       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     22     };
     23     flake-utils.follows = "ppad-nixpkgs/flake-utils";
     24     nixpkgs.follows = "ppad-nixpkgs/nixpkgs";
     25   };
     26 
     27   outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs
     28             , ppad-base16, ppad-sha256
     29             }:
     30     flake-utils.lib.eachDefaultSystem (system:
     31       let
     32         lib = "ppad-base58";
     33 
     34         pkgs = import nixpkgs { inherit system; };
     35         hlib = pkgs.haskell.lib;
     36         llvm  = pkgs.llvmPackages_15.llvm;
     37 
     38         base16 = ppad-base16.packages.${system}.default;
     39 
     40         sha256 = ppad-sha256.packages.${system}.default;
     41         sha256-llvm =
     42           hlib.addBuildTools
     43             (hlib.enableCabalFlag sha256 "llvm")
     44             [ llvm ];
     45 
     46         hpkgs = pkgs.haskell.packages.ghc981.extend (new: old: {
     47           ppad-base16 = base16;
     48           ppad-sha256 = sha256-llvm;
     49           ${lib} = new.callCabal2nixWithOptions lib ./. "--enable-profiling" {
     50             ppad-base16 = new.ppad-base16;
     51             ppad-sha256 = new.ppad-sha256;
     52           };
     53         });
     54 
     55         cc    = pkgs.stdenv.cc;
     56         ghc   = hpkgs.ghc;
     57         cabal = hpkgs.cabal-install;
     58       in
     59         {
     60           packages.default = hpkgs.${lib};
     61 
     62           devShells.default = hpkgs.shellFor {
     63             packages = p: [
     64               (hlib.doBenchmark p.${lib})
     65             ];
     66 
     67             buildInputs = [
     68               cabal
     69               cc
     70               llvm
     71             ];
     72 
     73             doBenchmark = true;
     74 
     75             shellHook = ''
     76               PS1="[${lib}] \w$ "
     77               echo "entering ${system} shell, using"
     78               echo "cc:    $(${cc}/bin/cc --version)"
     79               echo "ghc:   $(${ghc}/bin/ghc --version)"
     80               echo "cabal: $(${cabal}/bin/cabal --version)"
     81               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
     82             '';
     83           };
     84         }
     85       );
     86 }
     87