changed mize_module.nix format
This commit is contained in:
81
lib.nix
81
lib.nix
@@ -13,34 +13,7 @@
|
|||||||
}:
|
}:
|
||||||
rec {
|
rec {
|
||||||
|
|
||||||
# get a list of all modules
|
|
||||||
# aka folders with a mize_module.nix in them
|
|
||||||
module_list_drv = path: pkgs.stdenv.mkDerivation {
|
|
||||||
name = "mize_module_list";
|
|
||||||
dontUnpack = true;
|
|
||||||
configurePhase = "";
|
|
||||||
buildPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
touch $out/modules_to_build
|
|
||||||
|
|
||||||
find . -not -type d -name mize_module.nix | while read p
|
|
||||||
(echo "$d/mize_module.nix" >> $out/modules_to_build; echo found module $d/mize_module.nix)
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
findModules = path: let
|
|
||||||
module_list_string = builtins.readFile "${module_list_drv path}/modules_to_build";
|
|
||||||
module_list = pkgs.lib.lists.remove "" (pkgs.lib.strings.splitString "\n" module_list_string);
|
|
||||||
in module_list;
|
|
||||||
|
|
||||||
|
|
||||||
findModulesNix = path: let
|
|
||||||
dirs = builtins.readDir path;
|
|
||||||
filtered_dirs = map (dir: builtins.trace "dir: ${dir}" (dir));
|
|
||||||
module_list = filtered_dirs;
|
|
||||||
in module_list;
|
|
||||||
|
|
||||||
|
|
||||||
getCrossSystem = system: let
|
getCrossSystem = system: let
|
||||||
@@ -62,6 +35,45 @@ rec {
|
|||||||
|
|
||||||
pkgsNative = import nixpkgs { inherit localSystem; overlays = [ rust-overlay.overlays.default ]; };
|
pkgsNative = import nixpkgs { inherit localSystem; overlays = [ rust-overlay.overlays.default ]; };
|
||||||
|
|
||||||
|
# get a list of all modules
|
||||||
|
# aka folders with a mize_module.nix in them
|
||||||
|
module_list_drv = path: pkgs.stdenv.mkDerivation {
|
||||||
|
name = "mize_module_list";
|
||||||
|
dontUnpack = true;
|
||||||
|
configurePhase = "";
|
||||||
|
buildPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
touch $out/modules_to_build
|
||||||
|
|
||||||
|
find ${path} -not -type d -name mize_module.nix | while read p; do
|
||||||
|
(echo "$p" >> $out/modules_to_build; echo "found module $p")
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
mizeMdules = let
|
||||||
|
from_mize_modules_repo = findModules mize_modules;
|
||||||
|
mize_module_path = builtins.getEnv "MIZE_MODULE_PATH";
|
||||||
|
mize_module_no_repo = builtins.getEnv "MIZE_MODULE_NO_REPO";
|
||||||
|
dirs_from_path = pkgs.lib.lists.remove "" (pkgs.lib.strings.splitString ":" mize_module_path);
|
||||||
|
dirs_in_nix_store = map (path: builtins.fetchGit {
|
||||||
|
url = path;
|
||||||
|
}) dirs_from_path;
|
||||||
|
from_env_var = map findModules dirs_in_nix_store;
|
||||||
|
in pkgs.lib.lists.flatten ((if mize_module_no_repo != "" then [] else from_mize_modules_repo) ++ from_env_var);
|
||||||
|
|
||||||
|
|
||||||
|
findModules = path: let
|
||||||
|
module_list_string = builtins.readFile "${module_list_drv path}/modules_to_build";
|
||||||
|
module_list = pkgs.lib.lists.remove "" (pkgs.lib.strings.splitString "\n" module_list_string);
|
||||||
|
getExternals = path: map findModules ((pkgs.callPackage ((import path).externals or (args: [])) {}));
|
||||||
|
in ( builtins.trace "module_list: ${pkgs.lib.strings.concatStringsSep " --- " module_list}" module_list) ++ (map getExternals module_list);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
craneLib =
|
craneLib =
|
||||||
if crossSystem.kernel.name == "windows"
|
if crossSystem.kernel.name == "windows"
|
||||||
then
|
then
|
||||||
@@ -186,13 +198,16 @@ rec {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
buildModule = path: extraArgs: let
|
buildModule = path: extraArgs: pkgs.callPackage ((import path).module or (attrs: null)) ({
|
||||||
pkg = (pkgs.callPackage path {
|
|
||||||
inherit mkSelString craneLib toolchain_version;
|
inherit mkSelString craneLib toolchain_version;
|
||||||
inherit mkMizeModule mkMizeRustModule buildModule findModules crossSystem pkgsCross pkgsNative mkMizeRustShell;
|
inherit mkMizeModule mkMizeRustModule buildModule findModules crossSystem pkgsCross pkgsNative mkMizeRustShell;
|
||||||
mize_version = main-default.version;
|
mize_version = main-default.version;
|
||||||
} // extraArgs );
|
} // extraArgs );
|
||||||
in pkg // {
|
|
||||||
|
buildLib = path: extraArgs: pkgs.callPackage ((import path).lib or (args: {})) {
|
||||||
|
inherit mkSelString craneLib toolchain_version;
|
||||||
|
inherit mkMizeModule mkMizeRustModule buildModule findModules crossSystem pkgsCross pkgsNative mkMizeRustShell;
|
||||||
|
mize_version = main-default.version;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -366,8 +381,10 @@ rec {
|
|||||||
system = crossSystem;
|
system = crossSystem;
|
||||||
|
|
||||||
modulesListDrv = module_list_drv mize_modules;
|
modulesListDrv = module_list_drv mize_modules;
|
||||||
modulesFileList = pkgs.lib.lists.flatten (findModules mize_modules);
|
modulesFileList = mizeMdules;
|
||||||
modulesList = map (mod: (buildModule mod {})) modulesFileList;
|
modulesLibList = map (mod: buildLib mod {}) modulesFileList;
|
||||||
|
modulesLib = pkgs.lib.lists.foldr (a: b: b // a) {} modulesLibList;
|
||||||
|
modulesList = pkgs.lib.lists.remove null (map (mod: (buildModule mod {})) modulesFileList);
|
||||||
|
|
||||||
modules = builtins.listToAttrs ( map ( mod: { name = mod.modName; value = mod; } ) modulesList );
|
modules = builtins.listToAttrs ( map ( mod: { name = mod.modName; value = mod; } ) modulesList );
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user