{ nixpkgs ? import {}, compiler ? "ghc843", doBenchmark ? false }: let inherit (nixpkgs) pkgs; provideOldHaskellAttributeNames = true; aff = with haskellPackages; callPackage( { mkDerivation, base, bytestring, clock, containers, fetchgit, glib , linear, monad-loops, monad-parallel, mtl, OpenGL, stdenv , stm, text, uuid, vector }: mkDerivation { pname = "affection"; version = "0.0.0.9"; src = fetchgit { url = "https://github.com/nek0/affection"; sha256 = "16s1i0aa5xzrxliynfs1c0s7pb9pmmpyan8v6968hyx4h377b1p6"; rev = "a6c314f3ac1b5fd9ccc2fbe8fe54b153b27c84c9"; fetchSubmodules = true; }; configureFlags = [ "-fdebug" ]; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ base bytestring clock containers glib linear monad-loops monad-parallel mtl OpenGL sdl stm text uuid vector ]; homepage = "https://github.com/nek0/affection#readme"; description = "A simple Game Engine using SDL"; license = stdenv.lib.licenses.lgpl3; }) {}; sdl = with haskellPackages; callPackage( { mkDerivation, base, bytestring, deepseq, exceptions, linear , StateVar, stdenv, text, transformers, vector, weigh, pkgconfig }: mkDerivation { pname = "sdl2"; version = "2.4.1.0"; sha256 = "21a569c0c19f8ff2bbe1cf1d3eb32f65e8143806de353cedd240df5e9d088b5c"; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; libraryHaskellDepends = [ base bytestring exceptions linear StateVar text transformers vector ]; buildDepends = [ pkgconfig ]; librarySystemDepends = [ nixpkgs.SDL2 pkgconfig ]; libraryPkgconfigDepends = [ nixpkgs.SDL2 pkgconfig ]; testHaskellDepends = [ base deepseq linear vector weigh ]; doCheck = false; description = "Both high- and low-level bindings to the SDL library (version 2.0.4+)."; license = stdenv.lib.licenses.bsd3; }) {}; nano = with haskellPackages; callPackage( { mkDerivation, base, bytestring, c2hs, containers, fetchgit , glew, hspec, inline-c, libGL, libGLU, QuickCheck, stdenv, text , vector }: mkDerivation { pname = "nanovg"; version = "0.6.0.0"; src = fetchgit { url = "https://github.com/nek0/nanovg-hs.git"; sha256 = "1lh7y7n97md585y7wic4sn240ifpdmcgfrvyvmmdngaz4s8zy47f"; rev = "09b613ab382e73e401ed8c2bbf936b39a92a17e1"; fetchSubmodules = true; }; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ base bytestring containers text vector ]; librarySystemDepends = [ glew libGL libGLU ]; libraryPkgconfigDepends = [ glew ]; libraryToolDepends = [ c2hs ]; testHaskellDepends = [ base containers hspec inline-c QuickCheck ]; homepage = "https://github.com/cocreature/nanovg-hs"; description = "Haskell bindings for nanovg"; license = stdenv.lib.licenses.isc; }) {}; f = { mkDerivation, algebraic-graphs, astar, base , bytestring, containers, ecstasy, JuicyPixels, JuicyPixels-extra , linear, matrix, mtl, OpenGL, random, stdenv, stm , text, unordered-containers, vector, pkgconfig }: mkDerivation { pname = "tracer-game"; version = "0.0.0.0"; src = ./.; isLibrary = false; isExecutable = true; executableHaskellDepends = [ aff algebraic-graphs astar base bytestring containers ecstasy JuicyPixels JuicyPixels-extra linear matrix mtl nano OpenGL random sdl stm text unordered-containers vector pkgconfig ]; enableExecutableProfiling = true; license = stdenv.lib.licenses.gpl3; }; haskellPackages = pkgs.haskellPackages; variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id; drv = variant (haskellPackages.callPackage f {}); in if pkgs.lib.inNixShell then drv.env else drv