aead

Pure Haskell AEAD-ChaCha20-Poly1305 (docs.ppad.tech/aead).
git clone git://git.ppad.tech/aead.git
Log | Files | Refs | README | LICENSE

flake.nix (3053B)


      1 {
      2   description = "A pure Haskell AEAD-ChaCha20-Poly1305 construction.";
      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-chacha = {
     12       type = "git";
     13       url  = "git://git.ppad.tech/chacha.git";
     14       ref  = "master";
     15       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     16       inputs.ppad-base16.follows = "ppad-base16";
     17     };
     18     ppad-poly1305 = {
     19       type = "git";
     20       url  = "git://git.ppad.tech/poly1305.git";
     21       ref  = "master";
     22       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     23       inputs.ppad-base16.follows = "ppad-base16";
     24     };
     25     ppad-nixpkgs = {
     26       type = "git";
     27       url  = "git://git.ppad.tech/nixpkgs.git";
     28       ref  = "master";
     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
     36             , ppad-chacha, ppad-poly1305
     37             }:
     38     flake-utils.lib.eachDefaultSystem (system:
     39       let
     40         lib = "ppad-aead";
     41 
     42         pkgs = import nixpkgs { inherit system; };
     43         hlib  = pkgs.haskell.lib;
     44         llvm  = pkgs.llvmPackages_19.llvm;
     45         clang = pkgs.llvmPackages_19.clang;
     46 
     47         base16 = ppad-base16.packages.${system}.default;
     48         base16-llvm =
     49           hlib.addBuildTools
     50             (hlib.enableCabalFlag base16 "llvm")
     51             [ llvm clang ];
     52 
     53         chacha = ppad-chacha.packages.${system}.default;
     54         chacha-llvm =
     55           hlib.addBuildTools
     56             (hlib.enableCabalFlag chacha "llvm")
     57             [ llvm clang ];
     58 
     59         poly1305 = ppad-poly1305.packages.${system}.default;
     60         poly1305-llvm =
     61           hlib.addBuildTools
     62             (hlib.enableCabalFlag poly1305 "llvm")
     63             [ llvm clang ];
     64 
     65         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
     66           ppad-base16 = base16-llvm;
     67           ppad-chacha = chacha-llvm;
     68           ppad-poly1305 = poly1305-llvm;
     69           ${lib} = new.callCabal2nixWithOptions lib ./. "--enable-profiling" {
     70             ppad-poly1305 = new.ppad-poly1305;
     71           };
     72         });
     73 
     74         cc    = pkgs.stdenv.cc;
     75         ghc   = hpkgs.ghc;
     76         cabal = hpkgs.cabal-install;
     77       in
     78         {
     79           packages.default = hpkgs.${lib};
     80 
     81           devShells.default = hpkgs.shellFor {
     82             packages = p: [
     83               (hlib.doBenchmark p.${lib})
     84             ];
     85 
     86             buildInputs = [
     87               cabal
     88               cc
     89               llvm
     90             ];
     91 
     92             doBenchmark = true;
     93 
     94             shellHook = ''
     95               PS1="[${lib}] \w$ "
     96               echo "entering ${system} shell, using"
     97               echo "cc:    $(${cc}/bin/cc --version)"
     98               echo "ghc:   $(${ghc}/bin/ghc --version)"
     99               echo "cabal: $(${cabal}/bin/cabal --version)"
    100               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
    101             '';
    102           };
    103         }
    104       );
    105 }
    106