73 lines
1.8 KiB
Nix
73 lines
1.8 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "nixpkgs/nixpkgs-unstable";
|
|
};
|
|
outputs = {nixpkgs, ...}: let
|
|
system = "x86_64-linux";
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
debugGhcOptions = pkgs.lib.concatStringsSep " " (debugGhcFlags ++ commonGhcFlags);
|
|
debugGhcFlags = [
|
|
"-O0"
|
|
"-Wall"
|
|
"-Widentities"
|
|
"-Wincomplete-record-updates"
|
|
"-Wincomplete-uni-patterns"
|
|
# "-Wmissing-export-lists"
|
|
"-Wmissing-home-modules"
|
|
"-Wpartial-fields"
|
|
"-Wredundant-constraints"
|
|
"-threaded"
|
|
"-rtsopts"
|
|
"-with-rtsopts=-N"
|
|
"-main-is Game"
|
|
];
|
|
haddockOptions = pkgs.lib.concatStringsSep " " haddockFlags;
|
|
haddockFlags = [
|
|
"--html"
|
|
"--odir docs"
|
|
"--optghc=-i./src"
|
|
"src/Game.hs"
|
|
];
|
|
releaseGhcOptions = pkgs.lib.concatStringsSep " " (releaseGhcFlags ++ commonGhcFlags);
|
|
releaseGhcFlags = [
|
|
"-O2"
|
|
"-threaded"
|
|
"-rtsopts"
|
|
"-with-rtsopts=-N"
|
|
"-main-is Game"
|
|
];
|
|
noHaddockOptions = "";
|
|
commonGhcFlags = [
|
|
"-i./src"
|
|
];
|
|
ghcPackages = p: [
|
|
p.GLFW-b
|
|
p.linear
|
|
p.OpenGL
|
|
];
|
|
in {
|
|
packages.${system} = {
|
|
debug = pkgs.callPackage ./package.nix {
|
|
ghcOptions = debugGhcOptions;
|
|
haddockOptions = noHaddockOptions;
|
|
inherit ghcPackages;
|
|
};
|
|
release = pkgs.callPackage ./package.nix {
|
|
ghcOptions = releaseGhcOptions;
|
|
haddockOptions = noHaddockOptions;
|
|
inherit ghcPackages;
|
|
};
|
|
docs = pkgs.callPackage ./package.nix {
|
|
ghcOptions = "--version";
|
|
inherit haddockOptions;
|
|
inherit ghcPackages;
|
|
};
|
|
default = pkgs.callPackage ./package.nix {
|
|
ghcOptions = releaseGhcOptions;
|
|
inherit haddockOptions;
|
|
inherit ghcPackages;
|
|
};
|
|
};
|
|
};
|
|
}
|