{ nixpkgs ? , static ? false , compiler ? "default" , doBenchmark ? false , system ? builtins.currentSystem }: let basepkgs = import nixpkgs { inherit system; }; pkgs = if static then basepkgs.pkgsStatic else basepkgs.pkgs; ghc = if static then pkgs.haskell.packages.integer-simple.ghc901 else if compiler == "default" then pkgs.haskellPackages else pkgs.haskell.packages.${compiler}; variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id; drv = variant (override (ghc.callPackage ./bisc.nix {})); override = drv: pkgs.haskell.lib.overrideCabal drv (old: with pkgs.lib; { buildTools = [ pkgs.installShellFiles ]; configureFlags = optional static "-f static"; buildFlags = optionals static [ "--ld-option=-lstdc++" "--ld-option=-lsnappy" ]; postInstall = '' # generate completion $out/bin/bisc --bash-completion-script "$out/bin/bisc" > bisc.bash $out/bin/bisc --fish-completion-script "$out/bin/bisc" > bisc.fish $out/bin/bisc --zsh-completion-script "$out/bin/bisc" > bisc.zsh installShellCompletion bisc.{bash,fish,zsh} installManPage man/*.[0-9] ''; postFixup = optionalString static "rm -r $out/nix-support"; }); in if pkgs.lib.inNixShell then drv.env else drv