poly1305

The Poly1305 message authentication code (docs.ppad.tech/poly1305).
git clone git://git.ppad.tech/poly1305.git
Log | Files | Refs | README | LICENSE

flake.nix (2508B)


      1 {
      2   description = "A pure Haskell Poly1305 message authentication code.";
      3 
      4   inputs = {
      5     ppad-base16 = {
      6       type = "git";
      7       url  = "git://git.ppad.tech/base16.git";
      8       ref  = "master";
      9       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     10     };
     11     ppad-fixed = {
     12       type = "git";
     13       url  = "git://git.ppad.tech/fixed.git";
     14       ref  = "master";
     15       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     16     };
     17     ppad-nixpkgs = {
     18       type = "git";
     19       url  = "git://git.ppad.tech/nixpkgs.git";
     20       ref  = "master";
     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-fixed
     28             }:
     29     flake-utils.lib.eachDefaultSystem (system:
     30       let
     31         lib = "ppad-poly1305";
     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         fixed = ppad-fixed.packages.${system}.default;
     45         fixed-llvm =
     46           hlib.addBuildTools
     47             (hlib.enableCabalFlag fixed "llvm")
     48             [ llvm clang ];
     49 
     50         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
     51           ppad-base16 = base16-llvm;
     52           ppad-fixed  = fixed-llvm;
     53           ${lib} = new.callCabal2nixWithOptions lib ./. "--enable-profiling" {
     54             ppad-fixed = new.ppad-fixed;
     55           };
     56         });
     57 
     58         cc    = pkgs.stdenv.cc;
     59         ghc   = hpkgs.ghc;
     60         cabal = hpkgs.cabal-install;
     61       in
     62         {
     63           packages.default = hpkgs.${lib};
     64 
     65           devShells.default = hpkgs.shellFor {
     66             packages = p: [
     67               (hlib.doBenchmark p.${lib})
     68             ];
     69 
     70             buildInputs = [
     71               cabal
     72               cc
     73               llvm
     74             ];
     75 
     76             doBenchmark = true;
     77 
     78             shellHook = ''
     79               PS1="[${lib}] \w$ "
     80               echo "entering ${system} shell, using"
     81               echo "cc:    $(${cc}/bin/cc --version)"
     82               echo "ghc:   $(${ghc}/bin/ghc --version)"
     83               echo "cabal: $(${cabal}/bin/cabal --version)"
     84               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
     85             '';
     86           };
     87         }
     88       );
     89 }
     90