diff --git a/flake.nix b/flake.nix index 653193a..912adfb 100755 --- a/flake.nix +++ b/flake.nix @@ -1,134 +1,64 @@ { - description = "Build Project Engine"; + description = "Build Project X-001"; - inputs = { - nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; - imgui.url = "github:ocornut/imgui?ref=docking"; - imgui.flake = false; - }; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + imgui = { + url = "github:ocornut/imgui?ref=docking"; + flake = false; + }; + }; - outputs = { self, nixpkgs, imgui }@inputs: - let - - system = "x86_64-linux"; - - pkgs = nixpkgs.legacyPackages.${system}; - - renderer = "vulkan"; - - window = "sdl2"; - + outputs = { self, nixpkgs, imgui }@inputs: let + system = "x86_64-linux"; + pkgs = import nixpkgs { inherit system; }; in { - packages.${system}.default = pkgs.stdenv.mkDerivation { + packages.${system}.default = pkgs.stdenv.mkDerivation { - name = "Engine"; + name = "Engine"; - inherit system; + src = ./src; - src = ./.; + imgui = inputs.imgui; - imgui = inputs.imgui; + buildInputs = with pkgs; [ + vulkan-headers + vulkan-loader + ]; - + buildPhase = '' + g++ *.cpp -o $name + ''; - buildInputs = with pkgs; if renderer == "vulkan" && window == "sdl2" then [ - tinyobjloader - stb - glm - shaderc - SDL2 - vulkan-headers - vulkan-loader - ] else if renderer == "vulkan" && window == "glfw" then [ - stb - glm - shaderc - glfw - vulkan-headers - vulkan-loader - ] else if renderer == "opengl3" && window == "sdl2" then [ - stb - glm - SDL2 + installPhase = '' + mkdir -p $out/bin + cp *.spv $out/bin + cp $name $out/bin + ''; - ] else if renderer == "opengl3" && window == "glfw" then [ - stb - glm - glfw - ] else []; + }; - buildPhase = if renderer == "vulkan" && window == "sdl2" then - '' - glslc shaders/*.vert -o vert.spv - glslc shaders/*.frag -o frag.spv - g++ src/*.cpp renderer/vulkanRenderer.cpp window/sdl2Window.cpp layers/*.cpp events/*.cpp \ - -I src -I renderer -I window -I layers -I events \ - -I $imgui -I $imgui/backends -I ${pkgs.stb}/include/stb $(sdl2-config --cflags) \ - $imgui/*.cpp $imgui/backends/*sdl2.cpp $imgui/backends/*vulkan.cpp \ - -lSDL2 -lvulkan -o $name -DIMGUI_ENABLE -DSHDR_PATH=$out/bin - '' - else if renderer == "vulkan" && window == "glfw" then - '' - glslc shaders/*.vert -o vert.spv - glslc shaders/*.frag -o frag.spv - g++ src/*.cpp renderer/vulkanRenderer.cpp window/sdl2Window.cpp layers/*.cpp events/*.cpp \ - -I src -I renderer -I window -I layers -I events \ - -I $imgui -I $imgui/backends -I ${pkgs.stb}/include/stb $(sdl2-config --cflags) \ - $imgui/*.cpp $imgui/backends/*sdl2.cpp $imgui/backends/*vulkan.cpp \ - -lSDL2 -lvulkan -o $name -DIMGUI_ENABLE -DSHDR_PATH=$out/bin - '' - else if renderer == "opengl3" && window == "sdl2" then - '' - glslc shaders/*.vert -o vert.spv - glslc shaders/*.frag -o frag.spv - g++ src/*.cpp renderer/vulkanRenderer.cpp window/sdl2Window.cpp layers/*.cpp events/*.cpp \ - -I src -I renderer -I window -I layers -I events \ - -I $imgui -I $imgui/backends -I ${pkgs.stb}/include/stb $(sdl2-config --cflags) \ - $imgui/*.cpp $imgui/backends/*sdl2.cpp $imgui/backends/*vulkan.cpp \ - -lSDL2 -lvulkan -o $name -DIMGUI_ENABLE -DSHDR_PATH=$out/bin - '' - else if renderer == "opengl3" && window == "glfw" then - '' - glslc shaders/*.vert -o vert.spv - glslc shaders/*.frag -o frag.spv - g++ src/*.cpp renderer/vulkanRenderer.cpp window/sdl2Window.cpp layers/*.cpp events/*.cpp \ - -I src -I renderer -I window -I layers -I events \ - -I $imgui -I $imgui/backends -I ${pkgs.stb}/include/stb $(sdl2-config --cflags) \ - $imgui/*.cpp $imgui/backends/*sdl2.cpp $imgui/backends/*vulkan.cpp \ - -lSDL2 -lvulkan -o $name -DIMGUI_ENABLE -DSHDR_PATH=$out/bin - '' else ''''; + shaders = pkgs.stdenv.mkDerivation { - installPhase = '' - mkdir -p $out/bin - cp *.spv $out/bin - cp $name $out/bin - ''; + name = "Engine"; + src = ./modules/shaders; + + buildInputs = with pkgs; [ + shaderc + ]; + + buildPhase = '' + glslc *.vert -o vert.spv + glslc *.frag -o frag.spv + ''; + + installPhase = '' + mkdir -p $out/bin + cp *.spv $out/bin + ''; + + }; }; - - shaders = pkgs.stdenv.mkDerivation { - - name = "Engine"; - - inherit system; - - src = ./.; - - buildInputs = with pkgs; [ - shaderc - ]; - - buildPhase = '' - glslc shaders/*.vert -o vert.spv - glslc shaders/*.frag -o frag.spv - ''; - - installPhase = '' - mkdir -p $out/bin - cp *.spv $out/bin - ''; - - }; - }; }