Begin Repo
This commit is contained in:
134
flake.nix
Normal file
134
flake.nix
Normal file
@@ -0,0 +1,134 @@
|
||||
{
|
||||
description = "Build Project Terminal";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
imgui.url = "github:ocornut/imgui?ref=docking";
|
||||
imgui.flake = false;
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, imgui }@inputs:
|
||||
let
|
||||
|
||||
system = "x86_64-linux";
|
||||
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
renderer = "vulkan";
|
||||
|
||||
window = "sdl2";
|
||||
|
||||
in {
|
||||
|
||||
packages.${system}.default = pkgs.stdenv.mkDerivation {
|
||||
|
||||
name = "Terminal";
|
||||
|
||||
inherit system;
|
||||
|
||||
src = ./.;
|
||||
|
||||
imgui = inputs.imgui;
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
] 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 '''';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp *.spv $out/bin
|
||||
cp $name $out/bin
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
shaders = pkgs.stdenv.mkDerivation {
|
||||
|
||||
name = "Terminal";
|
||||
|
||||
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
|
||||
'';
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user