# import stage args { pkgs ? import , shell ? pkgs.mkShell, modules ? [ ], auto ? true, ... }: # shell creation args { services ? { }, imports ? [ ], serviceDefs ? { }, ... }@args: let # filter ides args out # for passthrough to mkShell shellArgs = builtins.removeAttrs args [ "services" "serviceDefs" "imports" ]; # include some premade services baseModules = [ ./modules/redis.nix ]; # eval the config eval = pkgs.lib.evalModules { modules = [ # ides ./lib/ides.nix # service config and build params (_: { inherit services serviceDefs auto; _buildIdes.shellFn = shell; _buildIdes.shellArgs = shellArgs; }) ] ++ baseModules ++ modules ++ imports; specialArgs = { inherit pkgs; }; class = "ides"; }; in eval.config._buildIdes.shell