summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix91
1 files changed, 91 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..5783646
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,91 @@
+{
+ 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"
+ ]
+ ++ commonGhcFlags;
+ 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 Main"
+ ]
+ ++ commonGhcFlags;
+ noHaddockOptions = "";
+ commonGhcFlags = [
+ "-i./src"
+ "-threaded"
+ "-rtsopts"
+ "-with-rtsopts=-N"
+ "-main-is Main"
+ ];
+ ghcPackages = p: [
+ ];
+ buildDeps = [
+ pkgs.pkg-config
+ pkgs.wayland-protocols
+ pkgs.wayland-scanner
+
+ pkgs.egl-wayland
+ pkgs.libGL
+ pkgs.libxkbcommon
+ pkgs.wayland
+ pkgs.xorg.libX11
+ pkgs.xorg.libXcursor
+ pkgs.xorg.libXi
+ pkgs.xorg.libXrandr
+ ];
+ in {
+ packages.${system} = {
+ debug = pkgs.callPackage ./package.nix {
+ ghcOptions = debugGhcOptions;
+ haddockOptions = noHaddockOptions;
+ inherit ghcPackages;
+ inherit buildDeps;
+ };
+ release = pkgs.callPackage ./package.nix {
+ ghcOptions = releaseGhcOptions;
+ haddockOptions = noHaddockOptions;
+ inherit ghcPackages;
+ inherit buildDeps;
+ };
+ docs = pkgs.callPackage ./package.nix {
+ ghcOptions = "--version";
+ inherit haddockOptions;
+ inherit ghcPackages;
+ inherit buildDeps;
+ };
+ default = pkgs.callPackage ./package.nix {
+ ghcOptions = releaseGhcOptions;
+ inherit haddockOptions;
+ inherit ghcPackages;
+ inherit buildDeps;
+ };
+ };
+ };
+}