{ haskellPackages, lib, stdenv, ... }: let ghcExeOptions = lib.concatStringsSep " " ghcFlags; ghcFlags = [ "-O" "-Wall" "-Widentities" "-Wincomplete-record-updates" "-Wincomplete-uni-patterns" # "-Wmissing-export-lists" "-Wmissing-home-modules" "-Wpartial-fields" "-Wredundant-constraints" "-threaded" "-rtsopts" "-with-rtsopts=-N" # src "-i./src" "-main-is Game" ]; haddockOptions = lib.concatStringsSep " " haddockFlags; haddockFlags = [ "--html" "--odir docs" "--optghc=-i./src" "src/Game/Main.hs" ]; ghcPackages = p: [ p.GLFW-b p.linear p.OpenGL ]; in stdenv.mkDerivation { pname = "haskengl"; version = "0.1.0"; src = ./.; nativeBuildInputs = [ (haskellPackages.ghcWithPackages ghcPackages) ]; buildInputs = [ ]; configurePhase = '' ''; buildPhase = '' ghc ${ghcExeOptions} ./src/Game.hs -o ./Main haddock ${haddockOptions} ''; installPhase = '' mkdir -p $out/bin cp ./Main $out/bin/hs-game cp ./docs $out/docs -r ''; meta = { homepage = "https://mtgmonkey.net"; license = lib.licenses.wtfpl; mainProgram = "hs-game"; platforms = ["x86_64-linux"]; }; }