![screenshot](https://user-images.githubusercontent.com/861439/91829553-e6f3fb00-ec41-11ea-9900-2670f0291ae7.png)
New features
==========
* Added locale helpers in terms of keyboard language/layout.
* `archinstall.list_keyboard_languages()`
* `archinstall.search_keyboard_layout()`
* `archinstall.set_keyboard_language()`
These functions work together to help listing, finding and setting a keyboard layout in terminals. Won't work for X-frontends, but will do for CLI installation methods. Added a language selector-helper-function *(`archinstall.select_language()`)* with a crude search functionality.
Added all this to the guided template.
* Added network helpers in `archinstall.lib.networking`. Mainly adding helpers to detect physical interfaces and MAC-addresses.
* Added a `unattended` example profile
* Support for listing (and filtering) profiles based on MAC-address was added, the `filter_irrelevant_macs` will filter any MAC address profile that doesn't match the current machine.
* `archinstall.Installer()` now has post-installation checks on `__exit__`, so when `Install()` is used in a context manager *(`with archinstall.Installer() as installation`)*, whenever the coder exits that block, the post-installation-steps will run and inform (but not raise) about any missing steps that haven't been completed in order to successfully boot the machine *(checks if the base OS is installed, if root or a super user is created/setup and if a bootloader is installed)*.
* Fixed the `guided` template to check if `root_pw` is set, if it isn't, it will require an additional sudo-user to be created.
* Added `reboot()` as a function *(This is more of a fix, it used to exist but has been re-added)*
* Added `list_profiles()` which lists all current local profiles.
* Profiles now support descriptions by reading the top most comment in the `.py` files.
* Added `enable_service()` to enable services within the installation
* Added a helper function called `activate_ntp()` that simply enables the `ntp.service` and installs the `ntp` package.
* Added `add_custom_mirrors()`. The function appends custom mirrors to `/etc/pacman.conf` based on the syntax:
`{'url': 'http://url.com', 'signcheck': 'Optional', 'signoptions': 'TrustAll', 'name': 'testmirror'}`
* Added `add_custom_mirrors()`. The function appends custom mirrors to `/etc/pacman.conf` based on the syntax:
`{'url': 'http://url.com', 'signcheck': 'Optional', 'signoptions': 'TrustAll', 'name': 'testmirror'}`
* `Application()` profiles now support `.py` scripts as well
* `Application()` and `Profile()` classes now correctly inserts that `archinstall` library path into `sys.path` from where it was installed. This has to be done in order to sub-executed scripts to get the correct version of `archinstall` when doing `import archinstall` in profiles and applications. Otherwise the installed/other libraries might take precedence over `git clone`'d repositories/submodules in projects *(very noticeable in [archinstall_gui](https://github.com/Torxed/archinstall_gui) for instance)*
* Added the `add_AUR_support()` function to enable AUR packages in the mountpoint *(by compiling `yay` and installing it)*
* Added a `yay()` *(and `add_AUR_packages()` pointer to `yay()`)* command for installing AUR packages inside the mountpoint
* Added `enable_AUR()` function to
* Added `run_command` which will run commands inside the installation via `arch-chroot {mountpoint}`
* Added `arch_chroot` which just points to `run_command()`.
* Added a `set_timezone()`
* Fixed `set_locale()` in the `Installer()` class.
* Also added a `mirrors.py` helper to rudimentary set mirror data on the installer host
* `awesome` now has a `.py` profile instead of a `.json`, even tho the `.json` is still there.
* Pre built ISO's are up again
* Examples are now packaged in both pypi and pre-built nuitka3 binary
* Added a `PKGBUILD`
* `archinstall.BlockDevice` now contains a `__dump__` meta function, which can be used with:
py
def json_serial(obj):
elif type(obj) is bytes:
return obj.decode('UTF-8')
elif getattr(obj, "__dump__", None):
return obj.__dump__()
else:
return str(obj)
json.dumps(block_device, default=json_serial)
* Added a `__init__.py` into the main github repo structure, so that cloned repo's can use `from archinstall import *` for instance.
Minor Fixes
=========
* The unattended test-profile reports upstream to inform which commit was installed without user interaction.
* Made `btrfs-progs` optional, won't be installed unless `btrfs` is detected as a filesystem.
* Tweaked the build scripts a bit to fetch a common `VERSION` definition.
* Removed `.json` support, as it's quite convoluted and redundant now that we have *proper* support for `.py` profiles and applications.
* `PKGBUILD` now exists for both `python-archinstall` *(`pip install archinstall` equivilant)* and `archinstall` *(binary compiled version, no need for python to be installed)*
* `set_locale()` now correctly takes the given locale and encoding and hopefully sets locale and encoding separately.
* `add_additional_packages()` now gives a return value from `pacstrap` which it didn't before.
* `install_profile()` now gives a return value from `profile.install()` which it previously didn't.
* `Profile()` and `Application()` now skips looking for the profile/application if absolute paths are given *(hopefully that logic works)*
* Added a `__repr__` for `Application()` so it doesn't look like it's a `Profile()` being installed when printing the object.
* Fixed `desktop.py` which was broken due to string formatting being a bit off.