sha512

Pure Haskell SHA-512, HMAC-SHA512 (docs.ppad.tech/sha512).
git clone git://git.ppad.tech/sha512.git
Log | Files | Refs | README | LICENSE

flake.nix (2202B)


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