{ description = "Build Project Archimedes"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; imgui = { url = "github:ocornut/imgui?ref=docking"; flake = false; }; }; outputs = { self, nixpkgs, imgui }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; in { Archimedes = pkgs.stdenvNoCC.mkDerivation { name = "Archimedes"; src = ./src; #imgui = inputs.imgui; nativeBuildInputs = with pkgs; [ gcc ]; buildInputs = with pkgs; [ glfw glew ]; buildPhase = '' g++ \ *.cpp \ -lGL -lglfw -lGLEW \ -o $name ''; installPhase = '' mkdir -p $out/bin cp $name $out/bin ''; }; TestMenu = pkgs.stdenvNoCC.mkDerivation { name = "TestMenu"; src = ./.; nativeBuildInputs = with pkgs; [ gcc ]; buildPhase = '' g++ \ modules/TestMenu/src/*.cpp src/App.cpp \ -fpic -shared \ -I src \ -o $name ''; installPhase = '' mkdir -p $out/bin cp $name $out/bin ''; }; Print = pkgs.stdenvNoCC.mkDerivation { name = "Print"; src = ./.; nativeBuildInputs = with pkgs; [ gcc ]; buildPhase = '' g++ \ modules/Print/src/*.cpp src/App.cpp \ -fpic -shared \ -I src -I include \ -o $name ''; installPhase = '' mkdir -p $out/bin cp $name $out/bin ''; }; Window = pkgs.stdenvNoCC.mkDerivation { name = "Window"; src = ./.; nativeBuildInputs = with pkgs; [ gcc ]; buildInputs = with pkgs; [ glfw glew ]; buildPhase = '' g++ \ modules/Window/src/*.cpp modules/Window/src/WindowImpl/GLFW/*.cpp src/App.cpp \ -fpic -shared \ -I src -I include \ -lGL -lglfw -lGLEW \ -o $name ''; installPhase = '' mkdir -p $out/bin cp $name $out/bin ''; }; MainGUI = pkgs.stdenvNoCC.mkDerivation { name = "MainGUI"; src = ./.; inherit imgui; nativeBuildInputs = with pkgs; [ gcc ]; buildPhase = '' g++ \ modules/MainGUI/src/*.cpp src/App.cpp \ -fpic -shared \ -I src -I include \ -o $name ''; installPhase = '' mkdir -p $out/bin cp $name $out/bin ''; }; packages.${system}.default = self.Archimedes; }; }