{ description = "C3D2 NixOS user module"; inputs = { nixpkgs-lib.url = "github:nix-community/nixpkgs.lib"; nixos-modules = { url = "github:SuperSandro2000/nixos-modules"; inputs.nixpkgs-lib.follows = "nixpkgs-lib"; }; }; outputs = { nixos-modules, nixpkgs-lib, ... }: let inherit (nixpkgs-lib) lib; ls = dir: lib.attrNames (builtins.readDir (./. + "/${dir}")); in { nixosModule = { config, ... }@args: { _module.args = lib.optionalAttrs (!args ? libS) { libS = nixos-modules.lib { inherit lib config; }; }; imports = (dir: map (file: ./. + "/${dir}/${file}") # assume that the nixos-modules repo is already imported if libS exists (lib.remove (lib.optionalString (!args ? libs) "default.nix") (ls dir)) ) "modules"; }; }; }