hmac-drbg

Pure Haskell HMAC-DRBG (docs.ppad.tech/hmac-drbg).
git clone git://git.ppad.tech/hmac-drbg.git
Log | Files | Refs | README | LICENSE

flake.nix (3048B)


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