{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, ... }@inputs: inputs.flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; subpackages = pkgs.lib.filterAttrs (nm: _: builtins.pathExists ./${nm}/packages.nix) (builtins.readDir ./.); lcq = builtins.mapAttrs (nm: _: (import ./${nm}/packages.nix) pkgs lcq) subpackages; defaultShell = { nativeBuildInputs = [ # pkgs.musl pkgs.valgrind pkgs.universal-ctags ]; buildInputs = []; }; shells = builtins.mapAttrs (nm: d: pkgs.mkShell { hardeningDisable = ["all"]; NIX_ENFORCE_NO_NATIVE = "0"; nativeBuildInputs = defaultShell.nativeBuildInputs ++ d.native.nativeBuildInputs; buildInputs = defaultShell.buildInputs ++ d.native.buildInputs; }) lcq; in { isPackage = p: (builtins.readDir ./${p}) ? "packages.nix"; packages = lcq; devShells = { default = pkgs.mkShell { hardeningDisable = ["all"]; NIX_ENFORCE_NO_NATIVE = "0"; inherit (defaultShell) nativeBuildInputs buildInputs; }; } // shells; } ); }