chacha

The ChaCha20 stream cipher (docs.ppad.tech/chacha).
git clone git://git.ppad.tech/chacha.git
Log | Files | Refs | README | LICENSE

flake.nix (2041B)


      1 {
      2   description = "A pure Haskell ChaCha stream cipher.";
      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-nixpkgs = {
     12       type = "git";
     13       url  = "git://git.ppad.tech/nixpkgs.git";
     14       ref  = "master";
     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             }:
     23     flake-utils.lib.eachDefaultSystem (system:
     24       let
     25         lib = "ppad-chacha";
     26 
     27         pkgs = import nixpkgs { inherit system; };
     28         hlib  = pkgs.haskell.lib;
     29         llvm  = pkgs.llvmPackages_19.llvm;
     30         clang = pkgs.llvmPackages_19.clang;
     31 
     32         base16 = ppad-base16.packages.${system}.default;
     33         base16-llvm =
     34           hlib.addBuildTools
     35             (hlib.enableCabalFlag base16 "llvm")
     36             [ llvm clang ];
     37 
     38         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
     39           ppad-base16 = base16-llvm;
     40           ${lib} = new.callCabal2nixWithOptions lib ./. "--enable-profiling" {};
     41         });
     42 
     43         cc    = pkgs.stdenv.cc;
     44         ghc   = hpkgs.ghc;
     45         cabal = hpkgs.cabal-install;
     46       in
     47         {
     48           packages.default = hpkgs.${lib};
     49 
     50           devShells.default = hpkgs.shellFor {
     51             packages = p: [
     52               (hlib.doBenchmark p.${lib})
     53             ];
     54 
     55             buildInputs = [
     56               cabal
     57               cc
     58               llvm
     59             ];
     60 
     61             doBenchmark = true;
     62 
     63             shellHook = ''
     64               PS1="[${lib}] \w$ "
     65               echo "entering ${system} shell, using"
     66               echo "cc:    $(${cc}/bin/cc --version)"
     67               echo "ghc:   $(${ghc}/bin/ghc --version)"
     68               echo "cabal: $(${cabal}/bin/cabal --version)"
     69               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
     70             '';
     71           };
     72         }
     73       );
     74 }
     75