{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; in { packages = rec { u01 = pkgs.callPackage ({ stdenv, catch2_3, cmake }: stdenv.mkDerivation { name = "ecg-u01"; src = ./u01; nativeBuildInputs = [ catch2_3 cmake ]; doCheck = true; }) { }; u02 = pkgs.callPackage ({ stdenv, catch2_3, cmake, freeglut, libGL, libGLU }: stdenv.mkDerivation { name = "ecg-u02"; src = ./u02; nativeBuildInputs = [ catch2_3 cmake freeglut libGL libGLU ]; doCheck = true; }) { }; }; devShells.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ catch2_3 cmake freeglut libGL libGLU ]; }; }); }