diff --git a/flake.nix b/flake.nix index 7c9b3f2..33bded5 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,8 @@ let pkgs = nixpkgs.legacyPackages.${system}; + nixos-lib = import (nixpkgs + "/nixos/lib") {}; + haskellPackages = pkgs.haskellPackages; jailbreakUnbreak = pkg: @@ -18,14 +20,21 @@ packageName = "vulkan-tutorial"; in rec { - packages.${packageName} = # (ref:haskell-package-def) - haskellPackages.callCabal2nix packageName self rec { - # Dependency overrides go here - wavefront = jailbreakUnbreak haskellPackages.wavefront; + packages = rec { + vulkan-tutorial = # (ref:haskell-package-def) + haskellPackages.callCabal2nix packageName self rec { + # Dependency overrides go here + wavefront = jailbreakUnbreak haskellPackages.wavefront; }; + test = import ./test.nix {inherit pkgs vulkan-tutorial;}; defaultPackage = self.packages.${system}.${packageName}; + checks = { + test = import ./test.nix {inherit pkgs; vulkan-tutorial = packages.vulkan-tutorial;}; + #test = flake-utils.lib.mkApp ({ drv = self.packages.${system}.test; }); + }; + devShell = haskellPackages.shellFor { packages = p: [ defaultPackage ]; withHoogle = true; diff --git a/test.nix b/test.nix new file mode 100644 index 0000000..c6dd0e5 --- /dev/null +++ b/test.nix @@ -0,0 +1,46 @@ +{pkgs, vulkan-tutorial, ...}: +pkgs.nixosTest ({ + name = "test"; + nodes = { + machine = { config, pkgs, ...}: { + environment = { + systemPackages = with pkgs; [ + vulkan-tutorial + git + shaderc + vulkan-loader + vulkan-validation-layers + ]; + sessionVariables = { + VK_LAYER_PATH="${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d"; + SDL_VULKAN_LIBRARY="${pkgs.vulkan-loader}/lib/libvulkan.so"; + }; + }; + hardware.opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + }; + services.xserver = { + enable = true; + displayManager.sddm.enable = true; + desktopManager.cinnamon.enable = true; + }; + users.users.test = { + password = "test"; + extraGroups = [ + "wheel" + ]; + isNormalUser = true; + }; + }; + }; + + skipLint = true; + + testScript = '' + start_all() + + machine.shell_interact() + ''; +})