{ description = "A game stub written in Haskell"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; nixos-lib = import (nixpkgs + "/nixos/lib") {}; haskellPackages = pkgs.haskellPackages.override (old: { overrides = final: prev: { wavefront = jailbreakUnbreak prev.wavefront; vulkan-tutorial = vulkan-tutorial; }; }); vulkan-tutorial = # (ref:haskell-package-def) haskellPackages.callCabal2nix packageName self { # Dependency overrides go here #wavefront = jailbreakUnbreak haskellPackages.wavefront; }; jailbreakUnbreak = pkg: pkgs.haskell.lib.doJailbreak (pkgs.haskell.lib.markUnbroken pkg); packageName = "vulkan-tutorial"; in rec { packages.default = haskellPackages.vulkan-tutorial; devShells.default = haskellPackages.shellFor { packages = p: [ p.vulkan-tutorial ]; withHoogle = true; buildInputs = (with haskellPackages; [ haskell-language-server ghcid cabal-install (jailbreakUnbreak wavefront) ]) ++ (with pkgs; [ shaderc vulkan-loader vulkan-validation-layers renderdoc ]); VK_LAYER_PATH="${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d"; SDL_VULKAN_LIBRARY="${pkgs.vulkan-loader}/lib/libvulkan.so"; }; }); }