rewrite flake.nix

This commit is contained in:
2025-03-08 00:02:27 -06:00
parent cc09288a8e
commit e5e1cf1454

164
flake.nix
View File

@@ -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
'';
};
};
}