{ description = "Logos C++ SDK"; inputs.logos-nix.url = "github:logos-co/logos-nix"; inputs.nixpkgs.follows = "logos-nix/nixpkgs"; outputs = { self, nixpkgs, logos-nix }: let systems = [ "aarch64-darwin" "x86_64-darwin" "aarch64-linux" "x86_64-linux" ]; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f { pkgs = import nixpkgs { inherit system; }; }); in { packages = forAllSystems ({ pkgs }: let # Common configuration common = import ./nix/default.nix { inherit pkgs; }; src = ./.; # Individual package components bin = import ./nix/bin.nix { inherit pkgs common src; }; lib = import ./nix/lib.nix { inherit pkgs common src; }; include = import ./nix/include.nix { inherit pkgs common src; }; tests = import ./nix/tests.nix { inherit pkgs common src; }; # Combined SDK package sdk = pkgs.symlinkJoin { name = "logos-cpp-sdk"; paths = [ bin lib include ]; }; in { # Individual outputs logos-cpp-bin = bin; logos-cpp-lib = lib; logos-cpp-include = include; inherit tests; # Combined outputs (for backward compatibility) logos-cpp-sdk = sdk; cpp-generator = bin; # Alias for backward compatibility # Default package default = sdk; } ); checks = forAllSystems ({ pkgs }: let common = import ./nix/default.nix { inherit pkgs; }; src = ./.; tests = import ./nix/tests.nix { inherit pkgs common src; }; in { inherit tests; } ); devShells = forAllSystems ({ pkgs }: { default = pkgs.mkShell { nativeBuildInputs = [ pkgs.cmake pkgs.ninja pkgs.pkg-config ]; buildInputs = [ pkgs.qt6.qtbase pkgs.qt6.qtremoteobjects pkgs.gtest ]; }; }); }; }