# conf All the config files for packs. Every pack is built and installed according to a config file. A config file is supposed to be a simple shell script setting some variables and functions. It's not supposed to execute any command, which is important, as it is executed by both the building process on the building device and the flashing process on the flashing device. All the config files are named as `defconf-[name].txt` where `[name]` is the argument you'll pass to `build.sh` to build a pack using that config file. The `resdl-download.txt` file is a special config that is read by `update.sh` to download all the relevant dynamic assets. The rest of the files here are code snippets you might find useful to put in install actions. For making your own pack and config file, check `conf/custom-conf.md`. ## Variables in defconf files - `variant`: The name that will be in the filename of the released zip as well as will be shown on installation. It does not have to be related to the name of the defconf file (for example the `defconf-unlp.txt` file has variant "Backend" and creates the `MinMicroG-Backend-*-*.zip` package). Any string without whitespace will do. - `ver`: The version number of the package, which is shown in the release filename and during installation. It can be anything except whitespace, but for convenience is integers along with decimals. - `verc`: The version code for the package. It's only really used in Magisk installations's `mod.prop`, where Magisk compares it to decide if a version of the module is newer than the installed version. It strictly has to be an integer. - `date`: The date of releasing the specific pack version, shown on installation. - `minsdk`: The minimum Android SDK version the pack supports fully. It'll still install below that, but will show a warning to the user. - `modprop`: The variable containing the entirety of Magisk's `mod.prop`, which will appear in your installed modules. Nothing really important here except `verc`, which is described above, and `id`, which has to be the same as `modname` variable from `update-binary`. - `stuff`, `stuff_arch`, `stuff_sdk`, `stuff_arch_sdk`: Stuff variables are really space/tab-separated lists of all the objects (Relative to the root of the zip during flashing, or relative to either `res` or `resdl` directories in the build process) that are installed to be installed to device. It is going to be put through a for loop, so no whitespace is to be used in a single entry. Luckily, android system files aren't supposed to have spaces in their names/paths. For files in `stuff`, the file with that path is grabbed directly from `res` or `resdl` (in ascending priority), while for the other arrays, the files are grabbed from `$(dirname [path])/-*-/$(basename [path])`. - `stuff_util`: Same whitespace-separated list as above, but for things that should be grabbed from `res` or `resdl` during building, but not placed during installation. Could be used for extra tools used in the hook funcs. - `stuff_other`, `stuff_old`: Just lists of stuff from other packs and stuff that used to be in any of the packs that I made for organisation. They have no purpose other than to be merged in `stuff_uninstall`. - `stuff_uninstall`: Everything in this list is removed from system during a system installation and uninstallation. Should include everything in the pack, along with anything that used to be in it and anything that might be from alternative conflicting packs. - `stuff_debloat`: Anything not from these packs that might conflict with it. For example GApps, other location providers, etc. They are removed (and backed up) during a system install and pseudo-debloated during a Magisk install. - `stuff_perm`: Subdirectories of `/system` on which permission are to be applied in case of a system installation. This variable exists because perming the whole system takes too long. ## Functions in defconf files - `pre_build_actions()` - `post_build_actions()` - `pre_install_actions()` - `post_install_actions()` - `pre_uninstall_actions()` - `post_uninstall_actions()` Pretty self explanatory. Leave them blank with a `return 0` if there's no use for them, not having them at all will cause errors. ## Variables in `resdl-conf.txt` - `stuff_repos`: List of FDroid format app repositories that are to be downloaded and their contents used by `update.sh`. First column has their names, which are to be unique and are the key to access them in `stuff_download`. Second column is the URL, to which appending "/index-v1.jar" should result in an object downloadable by `curl`. - `stuff_download`: List of actual objects that are put into `resdl` by `update.sh`. First column is the filepath inside `resdl` that it should be put in. Second column is the source that it comes from, which is one of `local`, `direct`, `github`, `gitlab`, or `repo`. Other columns depend upon the source and any extra columns are ignored. For `local`, third column is a path resolved against the repo directory from which the file is `cp`'d to the destination. For `direct`, the third column is a URL that must be downloadable using `curl`. For `github` and `gitlab`, the third column is `[repo owner]/[repo name]` from which the newest file is grabbed from the releases page, optionally filtering only for the regex-enabled suffix in the fourth column if provided. For repo, it's the `[repo key]/[package name]` of which the latest APK is grabbed, optionally filtering for the arch and minimum SDK if provided in the third column in the format `ARCH:SDK` (one of these variables can be ommitted but not the colon). ## Functions in resdl-conf file - `pre_update_actions()` - `post_update_actions()` Again, they speak for themselves.