43 lines
1.3 KiB
Nix
43 lines
1.3 KiB
Nix
{ nixpkgs ? <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
|