flake.nix (1837B)
1 { 2 description = "Pure Haskell SHA-256 and HMAC-SHA256"; 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-sha256"; 25 26 pkgs = import nixpkgs { inherit system; }; 27 hlib = pkgs.haskell.lib; 28 29 base16 = ppad-base16.packages.${system}.default; 30 31 hpkgs = pkgs.haskell.packages.ghc981.extend (new: old: { 32 ppad-base16 = base16; 33 ${lib} = old.callCabal2nixWithOptions lib ./. "--enable-profiling" { 34 ppad-base16 = new.ppad-base16; 35 }; 36 }); 37 38 cc = pkgs.stdenv.cc; 39 ghc = hpkgs.ghc; 40 cabal = hpkgs.cabal-install; 41 in 42 { 43 packages.default = hpkgs.${lib}; 44 45 devShells.default = hpkgs.shellFor { 46 packages = p: [ 47 (hlib.doBenchmark p.${lib}) 48 ]; 49 50 buildInputs = [ 51 cabal 52 cc 53 ]; 54 55 inputsFrom = builtins.attrValues self.packages.${system}; 56 57 doBenchmark = true; 58 59 shellHook = '' 60 PS1="[${lib}] \w$ " 61 echo "entering ${system} shell, using" 62 echo "cc: $(${cc}/bin/cc --version)" 63 echo "ghc: $(${ghc}/bin/ghc --version)" 64 echo "cabal: $(${cabal}/bin/cabal --version)" 65 ''; 66 }; 67 } 68 ); 69 } 70