deploy: 3ece182d31
This commit is contained in:
commit
76a7f9d4d9
|
|
@ -0,0 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: a6d5ef5bf34b59b03c781f0b1d997b20
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,11 @@
|
|||
.. _archinstall.Installer:
|
||||
|
||||
archinstall.Installer
|
||||
=====================
|
||||
|
||||
The installer is the main class for accessing an installation-instance.
|
||||
You can look at this class as the installation you have or will perform.
|
||||
|
||||
Anything related to **inside** the installation, will be found in this class.
|
||||
|
||||
.. autofunction:: archinstall.Installer
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
.. _archinstall.Plugins:
|
||||
|
||||
Python Plugins
|
||||
==============
|
||||
|
||||
``archinstall`` supports plugins via two methods.
|
||||
|
||||
First method is directly via the ``--plugin`` parameter when running as a CLI tool. This will load a specific plugin locally or remotely via a path.
|
||||
|
||||
The second method is via Python's built in `plugin discovery`_ using `entry points`_ categorized as ``archinstall.plugin``.
|
||||
|
||||
``--plugin`` parameter
|
||||
----------------------
|
||||
|
||||
The parameter has the benefit of being stored in the ``--conf`` state, meaning when re-running an installation — the plugin will automatically be loaded.
|
||||
It's limitation is that it requires an initial path to be known and written and be cumbersome.
|
||||
|
||||
Plugin Discovery
|
||||
----------------
|
||||
|
||||
This method allows for multiple plugins to be loaded with the drawback that they have to be installed beforehand on the system running ``archinstall``.
|
||||
This mainly targets those who build their own ISO's and package specific setups for their needs.
|
||||
|
||||
|
||||
What's supported?
|
||||
-----------------
|
||||
|
||||
Currently the documentation for this is scarse. Until that is resolved, the best way to find supported features is to search the source code for `plugin.on_ <https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code>`_ as this will give a clear indication of which calls are made to plugins.
|
||||
|
||||
How does it work?
|
||||
-----------------
|
||||
|
||||
``archinstall`` plugins use a discovery-driven approach where plugins are queried for certain functions.
|
||||
As an example, if a plugin has the following function:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def on_pacstrap(*packages):
|
||||
...
|
||||
|
||||
The function :code:`archinstall.Pacman().strap(["some packages"])` is hardcoded to iterate plugins and look for :code:`on_pacstrap` in the plugin.
|
||||
If the function exists, :code:`.strap()` will call the plugin's function and replace the initial package list with the result from the plugin.
|
||||
|
||||
The best way to document these calls is currently undecided, as it's hard to document this behavior dynamically.
|
||||
|
||||
Writing your own?
|
||||
-----------------
|
||||
|
||||
The simplest way currently is to look at a reference implementation or the community. Two of these are:
|
||||
|
||||
* `torxed/archinstall-aur <https://github.com/torxed/archinstall-aur>`_
|
||||
* `phisch/archinstall-aur <https://github.com/phisch/archinstall-aur>`_
|
||||
|
||||
And search for `plugin.on_ <https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code>`_ in the code base to find what ``archinstall`` will look for. PR's are welcome to widen the support for this.
|
||||
|
||||
.. _plugin discovery: https://packaging.python.org/en/latest/specifications/entry-points/
|
||||
.. _entry points: https://docs.python.org/3/library/importlib.metadata.html#entry-points
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
.. _custom commands:
|
||||
|
||||
Custom Commands
|
||||
===============
|
||||
|
||||
Custom commands is a configuration entry that allows for executing custom commands post-installation.
|
||||
The commands are executed with `arch-chroot <https://man.archlinux.org/man/extra/arch-install-scripts/arch-chroot.8.en>`_.
|
||||
|
||||
The option takes a list of arguments, an example is:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"custom_commands": [
|
||||
"hostname new-hostname"
|
||||
]
|
||||
}
|
||||
|
||||
The following example will set a new hostname in the installed system.
|
||||
The example is just to illustrate that the command is not run in the ISO but inside the installed system after the base system is installed.
|
||||
|
||||
More examples can be found in the code repository under `examples/ <https://github.com/archlinux/archinstall/tree/e6344f93f7e476d05bbcd642f2ed91fdde545870/examples>`_
|
||||
|
|
@ -0,0 +1,231 @@
|
|||
.. _disk config:
|
||||
|
||||
Disk Configuration
|
||||
==================
|
||||
|
||||
There are only three modes in the ``disk_config`` option. They are described in more detail below.
|
||||
|
||||
"Leave as is"
|
||||
--------------
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"config_type": "pre_mounted_config",
|
||||
"mountpoint": "/mnt/archinstall"
|
||||
}
|
||||
|
||||
This mode will not perform any partitioning what so ever.
|
||||
Instead it relies on what's mounted manually by the user under ``/mnt/archinstall``.
|
||||
|
||||
Given the following disk example:
|
||||
|
||||
.. code-block::
|
||||
|
||||
/mnt/archinstall (/dev/sda2)
|
||||
├── boot (/dev/sda1)
|
||||
└── home (/dev/sda3)
|
||||
|
||||
Running ``archinstall --conf your.json --silent`` where the above JSON is configured. The disk will be left alone — and a working system will be installed to the above folders and mountpoints will be translated into the installed system.
|
||||
|
||||
.. note::
|
||||
|
||||
Some disk layouts can be too complicated to detect, such as RAID setups. Please do report those setups on the `Issue Tracker <https://github.com/archlinux/archinstall>`__ so we can support them.
|
||||
|
||||
Best Effort
|
||||
-----------
|
||||
|
||||
.. warning::
|
||||
|
||||
This mode will wipe data!
|
||||
|
||||
.. note::
|
||||
|
||||
Note that this options is similar to the manual partitioning but is generated through the menu system! And the best effort layout might deviate slightly from some wiki guidelines in order to facilitate some optional configurations at a later stage.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"disk_config": {
|
||||
"config_type": "default_layout",
|
||||
"device_modifications": [
|
||||
{
|
||||
"device": "/dev/sda",
|
||||
"wipe": true,
|
||||
"partitions": "..."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
This mode will attempt to configure a sane default layout on the selected disks.
|
||||
Based on the chosen filesystem, and potential optional settings for said filesystem — different default layouts will be provided.
|
||||
|
||||
Manual Partitioning
|
||||
-------------------
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"disk_config": {
|
||||
"config_type": "manual_partitioning",
|
||||
"device_modifications": [
|
||||
"filesystem struct"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Manual partitioning is the most complex one of the three. It offers you near endless flexibility of how to partition your disk. It integrates against `pyparted <https://github.com/dcantrell/pyparted>`__ and some control logic in ``archinstall`` that deals with creating things like subvolumes and compression.
|
||||
|
||||
Sizes are by default ``sector`` units, but other units are supported.
|
||||
|
||||
The options supplied to ``manual_partitioning`` are dictionary definitions, where the following parameters must exist:
|
||||
|
||||
.. csv-table:: JSON options
|
||||
:file: ./manual_options.csv
|
||||
:widths: 15, 15, 65, 5
|
||||
:escape: !
|
||||
:header-rows: 1
|
||||
|
||||
Each partition definition heavily relies on what filesystem is used.
|
||||
Below follow two of the more common filesystems, anything else will best be described by running ``archinstall`` to generate a desired configuration for the desired filesystem type — and copy the relevant parts for permanent configurations.
|
||||
|
||||
.. warning::
|
||||
|
||||
Important to note that the units and positions in the examples below — are highly user specific!
|
||||
|
||||
FAT32
|
||||
^^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"btrfs": [],
|
||||
"flags": [
|
||||
"boot"
|
||||
],
|
||||
"fs_type": "fat32",
|
||||
"length": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 99982592
|
||||
},
|
||||
"mount_options": [],
|
||||
"mountpoint": "/boot",
|
||||
"obj_id": "369f31a8-2781-4d6b-96e7-75680552b7c9",
|
||||
"start": {
|
||||
"sector_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 512
|
||||
},
|
||||
"total_size": null,
|
||||
"unit": "sectors",
|
||||
"value": 34
|
||||
},
|
||||
"status": "create",
|
||||
"type": "primary"
|
||||
}
|
||||
|
||||
.. note::
|
||||
|
||||
The ``Boot`` flag will make ``archinstall`` automatically set the correct ESP partition GUID if the system is booted with ``EFI`` support. The GUID will then be set to ``C12A7328-F81F-11D2-BA4B-00A0C93EC93B``.
|
||||
|
||||
EXT4
|
||||
^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"btrfs": [],
|
||||
"flags": [],
|
||||
"fs_type": "ext4",
|
||||
"length": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 15805127360
|
||||
},
|
||||
"mount_options": [],
|
||||
"mountpoint": "/",
|
||||
"obj_id": "3e75d045-21a4-429d-897e-8ec19a006e8b",
|
||||
"start": {
|
||||
"sector_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 512
|
||||
},
|
||||
"total_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 16106127360
|
||||
},
|
||||
"unit": "MB",
|
||||
"value": 301
|
||||
},
|
||||
"status": "create",
|
||||
"type": "primary"
|
||||
}
|
||||
|
||||
BTRFS
|
||||
^^^^^
|
||||
|
||||
The BTRFS filesystem is inherently more complicated, thus the options are a bit more involved.
|
||||
This example contains both subvolumes and compression.
|
||||
|
||||
.. note::
|
||||
|
||||
Note that the ``"mountpoint": null`` is used for the overall partition, and instead individual subvolumes have mountpoints set.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"btrfs": [
|
||||
{
|
||||
"mountpoint": "/",
|
||||
"name": "@",
|
||||
},
|
||||
{
|
||||
"mountpoint": "/home",
|
||||
"name": "@home",
|
||||
},
|
||||
{
|
||||
"mountpoint": "/var/log",
|
||||
"name": "@log",
|
||||
},
|
||||
{
|
||||
"mountpoint": "/var/cache/pacman/pkg",
|
||||
"name": "@pkg",
|
||||
}
|
||||
],
|
||||
"dev_path": null,
|
||||
"flags": [],
|
||||
"fs_type": "btrfs",
|
||||
"mount_options": [
|
||||
"compress=zstd"
|
||||
],
|
||||
"mountpoint": null,
|
||||
"obj_id": "d712357f-97cc-40f8-a095-24ff244d4539",
|
||||
"size": {
|
||||
"sector_size": {
|
||||
"unit": "B",
|
||||
"value": 512
|
||||
},
|
||||
"unit": "B",
|
||||
"value": 15568207872
|
||||
},
|
||||
"start": {
|
||||
"sector_size": {
|
||||
"unit": "B",
|
||||
"value": 512
|
||||
},
|
||||
"unit": "MiB",
|
||||
"value": 513
|
||||
},
|
||||
"status": "create",
|
||||
"type": "primary"
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
.. _disk encryption:
|
||||
|
||||
Disk Encryption
|
||||
===============
|
||||
|
||||
Disk encryption consists of a top level entry in the user configuration.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"disk_encryption": {
|
||||
"encryption_type": "luks",
|
||||
"partitions": [
|
||||
"d712357f-97cc-40f8-a095-24ff244d4539"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
The ``UID`` in the ``partitions`` list is an internal reference to the ``obj_id`` in the :ref:`disk config` entries.
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
.. _examples.python:
|
||||
|
||||
Python module
|
||||
=============
|
||||
|
||||
Archinstall supports running in `module mode <https://docs.python.org/3/library/__main__.html>`_.
|
||||
The way the library is invoked in module mode is limited to executing scripts under the `scripts`_ folder.
|
||||
|
||||
It's therefore important to place any script or profile you wish to invoke in the examples folder prior to building and installing.
|
||||
|
||||
Pre-requisites
|
||||
--------------
|
||||
|
||||
We'll assume you've followed the :ref:`installing.python.manual` method.
|
||||
Before actually installing the library, you will need to place your custom installer-scripts under `scripts`_ as a python file.
|
||||
|
||||
More on how you create these in the next section.
|
||||
|
||||
.. warning::
|
||||
|
||||
This is subject to change in the future as this method is currently a bit stiff. The script path will become a parameter. But for now, this is by design.
|
||||
|
||||
Creating a script
|
||||
-----------------
|
||||
|
||||
Lets create a `test_installer` - installer as an example. This is assuming that the folder `./archinstall` is a git-clone of the main repo.
|
||||
We begin by creating "`scripts`_:code:`/test_installer.py`". The placement here is important later.
|
||||
|
||||
This script can now already be called using :code:`python -m archinstall --script test_installer` after a successful installation of the library itself.
|
||||
But the script won't do much. So we'll do something simple like list all the hard drives as an example.
|
||||
|
||||
To do this, we'll begin by importing :code:`archinstall` in our "`scripts`_:code:`/test_installer.py`" and call a function within ``archinstall``.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from archinstall.lib.disk.device_handler import device_handler
|
||||
from pprint import pprint
|
||||
|
||||
pprint(device_handler.devices)
|
||||
|
||||
Now, go ahead and reference the :ref:`installing.python.manual` installation method.
|
||||
After running ``python -m archinstall test_installer`` it should print something that looks like:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
[
|
||||
BDevice(
|
||||
disk=<parted.disk.Disk object at 0x7fbe17156050>,
|
||||
device_info=_DeviceInfo(
|
||||
model='PC801 NVMe SK hynix 512GB',
|
||||
path=PosixPath('/dev/nvme0n1'),
|
||||
type='nvme',
|
||||
total_size=Size(value=512110190592, unit=<Unit.B: 1>,
|
||||
sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
free_space_regions=[
|
||||
<archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4250>,
|
||||
<archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4c50>,
|
||||
<archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4a10>],
|
||||
sector_size=SectorSize(value=512, unit=<Unit.B: 1>),
|
||||
read_only=False,
|
||||
dirty=False
|
||||
),
|
||||
partition_infos=[
|
||||
_PartitionInfo(
|
||||
partition=<parted.partition.Partition object at 0x7fbe166c4a90>,
|
||||
name='primary',
|
||||
type=<PartitionType.PRIMARY: 'primary'>,
|
||||
fs_type=<FilesystemType.FAT32: 'fat32'>,
|
||||
path='/dev/nvme0n1p1',
|
||||
start=Size(value=2048, unit=<Unit.sectors: 'sectors'>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
length=Size(value=535822336, unit=<Unit.B: 1>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
flags=[
|
||||
<PartitionFlag.BOOT: flag_id=1, alias=None>,
|
||||
<PartitionFlag.ESP: flag_id=18, alias=None>
|
||||
],
|
||||
partn=1,
|
||||
partuuid='a26be943-c193-41f4-9930-9341cf5f6b19',
|
||||
uuid='6EE9-2C00',
|
||||
disk=<parted.disk.Disk object at 0x7fbe17156050>,
|
||||
mountpoints=[
|
||||
PosixPath('/boot')
|
||||
],
|
||||
btrfs_subvol_infos=[]
|
||||
),
|
||||
_PartitionInfo(...)
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
That means your script is in the right place, and ``archinstall`` is working as intended.
|
||||
|
||||
.. note::
|
||||
|
||||
Most calls, including the one above requires `root <https://en.wikipedia.org/wiki/Superuser>`_ privileges.
|
||||
|
||||
|
||||
.. _scripts: https://github.com/archlinux/archinstall/tree/master/archinstall/scripts
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
.. _help.discord:
|
||||
|
||||
Discord
|
||||
=======
|
||||
|
||||
There's a discord channel which is frequented by some `contributors <https://github.com/archlinux/archinstall/graphs/contributors>`_.
|
||||
|
||||
To join the server, head over to `https://discord.gg/aDeMffrxNg <https://discord.gg/aDeMffrxNg>`_ and join in.
|
||||
There's not many rules other than common sense and to treat others with respect. The general chat is for off-topic things as well.
|
||||
|
||||
There's the ``@Party Animals`` role if you want notifications of new releases which is posted in the ``#Release Party`` channel.
|
||||
Another thing is the ``@Contributors`` role can be activated by contributors by writing ``!verify`` and follow the verification process.
|
||||
|
||||
Hop in, we hope to see you there! : )
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
.. _help.known_issues:
|
||||
|
||||
Known Issues
|
||||
============
|
||||
|
||||
Some issues are out of the `archinstall`_ projects scope, and the ones we know of are listed below.
|
||||
|
||||
.. _waiting for time sync:
|
||||
|
||||
Waiting for time sync `#2144`_
|
||||
------------------------------
|
||||
|
||||
The usual root cause of this is the network topology.
|
||||
More specifically `timedatectl show`_ cannot perform a proper time sync against the default servers.
|
||||
|
||||
Restarting ``systemd-timesyncd.service`` might work but most often you need to configure ``/etc/systemd/timesyncd.conf`` to match your network design.
|
||||
|
||||
.. note::
|
||||
|
||||
If you know your time is correct on the machine, you can run ``archinstall --skip-ntp`` to ignore time sync.
|
||||
|
||||
Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete. `#2679`_
|
||||
------------------------------
|
||||
|
||||
The ``archlinux-keyring-wkd-sync.service`` or ``archlinux-keyring-wkd-sync.timer`` can hang "indefinitely" sometimes.
|
||||
This is usually due to an inability to reach the key servers, or a slow connection towards key servers.
|
||||
|
||||
The script ``/usr/bin/archlinux-keyring-wkd-sync`` can be run manually, to verify if it's executing slowly or not.
|
||||
|
||||
If ``systemctl show --property=ActiveEnterTimestamp --no-pager archlinux-keyring-wkd-sync.timer`` shows nothing, it means the built-in sync never finished. Likewise ``systemctl show --no-pager -p SubState --value archlinux-keyring-wkd-sync.service`` most likely shows ``dead``, which means the service never completed.
|
||||
|
||||
To fix this, try the following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# killall gpg-agent
|
||||
# rm -rf /etc/pacman.d/gnupg
|
||||
# pacman-key --init
|
||||
# pacman-key --populate
|
||||
# pacman -Sy archlinux-keyring
|
||||
# systemctl restart archlinux-keyring-wkd-sync.timer
|
||||
|
||||
.. note::
|
||||
|
||||
If you know the ISO is the latest, and that you have valid GPG keys, try ``archinstall --skip-wkd`` to ignore waiting for the sync.
|
||||
|
||||
If you skip WKD sync, you might end up with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
> error: archinstall: signature from "Anton Hvornum (Torxed) <torxed@archlinux.org>" is unknown trust
|
||||
> :: File /var/cache/pacman/pkg/archinstall-1.2.3-4-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
|
||||
> Do you want to delete it? [Y/n]
|
||||
|
||||
Missing Nvidia Proprietary Driver `#2002`_
|
||||
------------------------------------------
|
||||
|
||||
In some instances, the nvidia driver might not have all the necessary packages installed.
|
||||
This is due to the kernel selection and/or hardware setups requiring additional packages to work properly.
|
||||
|
||||
A common workaround is to install the package `linux-headers`_ and `nvidia-dkms`_
|
||||
|
||||
ARM, 32bit and other CPU types error out `#1686`_, `#2185`_
|
||||
-----------------------------------------------------------
|
||||
|
||||
This is a bit of a catch-all known issue.
|
||||
Officially `x86_64`_ is only supported by Arch Linux.
|
||||
Hence little effort has been put into supporting other platforms.
|
||||
|
||||
In theory, other architectures should work but small quirks might arise.
|
||||
|
||||
PR's are welcome but please be respectful of the delays in merging.
|
||||
Other fixes, issues or features will be prioritized for the above reasons.
|
||||
|
||||
Keyring is out of date `#2213`_
|
||||
-------------------------------
|
||||
|
||||
Missing key-issues tend to be that the `archlinux-keyring`_ package is out of date, usually as a result of an outdated ISO.
|
||||
There is an attempt from upstream to fix this issue, and it's the `archlinux-keyring-wkd-sync.service`_
|
||||
|
||||
The service starts almost immediately during boot, and if network is not configured in time — the service will fail.
|
||||
Subsequently the ``archinstall`` run might operate on an old keyring despite there being an update service for this.
|
||||
|
||||
There is really no way to reliably over time work around this issue in ``archinstall``.
|
||||
Instead, efforts to the upstream service should be considered the way forward. And/or keys not expiring between a sane amount of ISOs.
|
||||
|
||||
.. note::
|
||||
|
||||
The issue can happen on new ISO's too even as little as a few days after release, as some keys might expire right after the keyring is *"burnt in"* to the ISO.
|
||||
|
||||
.. note::
|
||||
|
||||
Another common issue relating to the network not being configured, is that time might not be set correctly - resulting in the keyring not being able to update. See :ref:`waiting for time sync`.
|
||||
|
||||
AUR packages
|
||||
------------
|
||||
|
||||
This is also a catch-all issue.
|
||||
`AUR is unsupported <https://wiki.archlinux.org/title/Arch_User_Repository#Updating_packages>`_, and until that changes we cannot use AUR packages to solve feature requests in ``archinstall``.
|
||||
|
||||
This means that feature requests like supporting filesystems such as `ZFS`_ can not be added, and issues cannot be solved by using AUR packages either.
|
||||
|
||||
.. note::
|
||||
|
||||
But in spirit of giving the community options, ``archinstall`` supports :ref:`archinstall.Plugins`, which means you can run ``archinstall --plugin <url>`` and source an AUR plugin.
|
||||
|
||||
`torxed/archinstall-aur <https://github.com/torxed/archinstall-aur>`_ is a reference implementation for plugins:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# archinstall --plugin https://archlinux.life/aur-plugin
|
||||
|
||||
`phisch/archinstall-aur <https://github.com/phisch/archinstall-aur>`_ is another alternative:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# archinstall --plugin https://raw.githubusercontent.com/phisch/archinstall-aur/master/archinstall-aur.py
|
||||
|
||||
.. warning::
|
||||
|
||||
This will allow for unsupported usage of AUR during installation.
|
||||
|
||||
.. _#1686: https://github.com/archlinux/archinstall/issues/1686
|
||||
.. _#2002: https://github.com/archlinux/archinstall/issues/2002
|
||||
.. _#2144: https://github.com/archlinux/archinstall/issues/2144
|
||||
.. _#2185: https://github.com/archlinux/archinstall/issues/2185
|
||||
.. _#2213: https://github.com/archlinux/archinstall/issues/2213
|
||||
.. _#2679: https://github.com/archlinux/archinstall/issues/2679
|
||||
.. _linux-headers: https://archlinux.org/packages/core/x86_64/linux-headers/
|
||||
.. _nvidia-dkms: https://archlinux.org/packages/extra/x86_64/nvidia-dkms/
|
||||
.. _x86_64: https://wiki.archlinux.org/title/Frequently_asked_questions#What_architectures_does_Arch_support?
|
||||
.. _archlinux-keyring: https://archlinux.org/packages/core/any/archlinux-keyring/
|
||||
.. _archlinux-keyring-wkd-sync.service: https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/blob/7e672dad10652a80d1cc575d75cdb46442cd7f96/wkd_sync/archlinux-keyring-wkd-sync.service.in
|
||||
.. _ZFS: https://aur.archlinux.org/packages/zfs-linux
|
||||
.. _archinstall: https://github.com/archlinux/archinstall/
|
||||
.. _timedatectl show: https://github.com/archlinux/archinstall/blob/e6344f93f7e476d05bbcd642f2ed91fdde545870/archinstall/lib/installer.py#L136
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
.. _help.issues:
|
||||
|
||||
Report Issues & Bugs
|
||||
====================
|
||||
|
||||
Issues and bugs should be reported over at `https://github.com/archlinux/archinstall/issues <https://github.com/archlinux/archinstall/issues>`_.
|
||||
|
||||
General questions, enhancements and security issues can be reported over there too.
|
||||
For quick issues or if you need help, head over to the Discord server which has a help channel.
|
||||
|
||||
Log files
|
||||
---------
|
||||
|
||||
When submitting a help ticket, please include the :code:`/var/log/archinstall/install.log`.
|
||||
It can be found both on the live ISO but also in the installed filesystem if the base packages were strapped in.
|
||||
|
||||
.. tip::
|
||||
| An easy way to submit logs is ``archinstall share-log``, which uploads ``install.log`` to paste.rs and prints a shareable URL.
|
||||
| Use caution when submitting other log files, but ``archinstall`` pledges to keep ``install.log`` safe for posting publicly!
|
||||
|
||||
There are additional log files under ``/var/log/archinstall/`` that can be useful:
|
||||
|
||||
- ``/var/log/archinstall/user_configuration.json`` - Stores most of the guided answers in the installer
|
||||
- ``/var/log/archinstall/user_credentials.json`` - Stores any usernames or passwords, can be passed to ``--creds``
|
||||
- ``/var/log/archinstall/user_disk_layouts.json`` - Stores the chosen disks and their layouts
|
||||
- ``/var/log/archinstall/install.log`` - A log file over what steps were taken by archinstall
|
||||
- ``/var/log/archinstall/cmd_history.txt`` - A complete command history, command by command in order
|
||||
- ``/var/log/archinstall/cmd_output.txt`` - A raw output from all the commands that were executed by archinstall
|
||||
|
||||
.. warning::
|
||||
|
||||
We only try to guarantee that ``/var/log/archinstall/install.log`` is free from sensitive information.
|
||||
Any other log file should be pasted with **utmost care**!
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
archinstall Documentation
|
||||
=========================
|
||||
|
||||
**archinstall** is a library which can be used to install Arch Linux.
|
||||
The library comes packaged with different pre-configured installers, such as the default :ref:`guided` installer.
|
||||
|
||||
Some of the features of Archinstall are:
|
||||
|
||||
* **Context friendly.** The library always executes calls in sequential order to ensure installation-steps don't overlap or execute in the wrong order. It also supports *(and uses)* context wrappers to ensure cleanup and final tasks such as ``mkinitcpio`` are called when needed.
|
||||
|
||||
* **Full transparency** Logs and insights can be found at ``/var/log/archinstall`` both in the live ISO and partially on the installed system.
|
||||
|
||||
* **Accessibility friendly** Archinstall works with ``espeakup`` and other accessibility tools thanks to the use of a TUI.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Running Archinstall
|
||||
|
||||
installing/guided
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:caption: Getting help
|
||||
|
||||
help/known_issues
|
||||
help/report_bug
|
||||
help/discord
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:caption: Archinstall as a library
|
||||
|
||||
installing/python
|
||||
examples/python
|
||||
archinstall/plugins
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:caption: API Reference
|
||||
|
||||
archinstall/Installer
|
||||
|
|
@ -0,0 +1,302 @@
|
|||
.. _guided:
|
||||
|
||||
Guided installation
|
||||
===================
|
||||
|
||||
Archinstall ships with a pre-programmed `Guided Installer`_ guiding you through the mandatory steps as well as some optional configurations that can be done.
|
||||
|
||||
.. note::
|
||||
|
||||
Other pre-programmed scripts can be invoked by executing :code:`archinstall --script <script>` *(without .py)*. To see a complete list of scripts, run :code:`archinstall --script list` or check the source code `scripts`_ directory.
|
||||
|
||||
.. note::
|
||||
|
||||
It's recommended to run ``archinstall`` from the official Arch Linux ISO.
|
||||
|
||||
|
||||
.. warning::
|
||||
The installer will not configure WiFi before the installation begins. You need to read up on `Arch Linux networking <https://wiki.archlinux.org/index.php/Network_configuration>`_ before you continue.
|
||||
|
||||
Running the guided installation
|
||||
-------------------------------
|
||||
|
||||
To start the installer, run the following in the latest Arch Linux ISO:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
archinstall
|
||||
|
||||
Since the `Guided Installer`_ is the default script, this is the equivalent of running :code:`archinstall guided`
|
||||
|
||||
|
||||
The guided installation also supports installing with pre-configured answers to all the guided steps. This can be a quick and convenient way to re-run one or several installations.
|
||||
|
||||
There are two configuration files, both are optional.
|
||||
|
||||
``--config``
|
||||
------------
|
||||
|
||||
This parameter takes a local :code:`.json` file as argument and contains the overall configuration and menu answers for the guided installer.
|
||||
|
||||
``--config-url``
|
||||
------------
|
||||
|
||||
This parameter takes a remote :code:`.json` file as argument and contains the overall configuration and menu answers for the guided installer.
|
||||
|
||||
.. note::
|
||||
|
||||
You can always get the latest options for this file with ``archinstall --dry-run``, this executes the guided installer in a safe mode where no permanent actions will be taken on your system but simulate a run and save the configuration to disk.
|
||||
|
||||
Example usage
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
archinstall --config config.json
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
archinstall --config-url https://domain.lan/config.json
|
||||
|
||||
The contents of :code:`https://domain.lan/config.json`:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"additional-repositories": [],
|
||||
"archinstall-language": "English",
|
||||
"audio_config": null,
|
||||
"bootloader_config": {
|
||||
"bootloader": "Systemd-boot",
|
||||
"uki": false,
|
||||
"removable": false
|
||||
},
|
||||
"bootloader": "Systemd-boot",
|
||||
"debug": false,
|
||||
"disk_config": {
|
||||
"config_type": "manual_partitioning",
|
||||
"device_modifications": [
|
||||
{
|
||||
"device": "/dev/sda",
|
||||
"partitions": [
|
||||
{
|
||||
"btrfs": [],
|
||||
"flags": [
|
||||
"boot"
|
||||
],
|
||||
"fs_type": "fat32",
|
||||
"length": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 99982592
|
||||
},
|
||||
"mount_options": [],
|
||||
"mountpoint": "/boot",
|
||||
"obj_id": "369f31a8-2781-4d6b-96e7-75680552b7c9",
|
||||
"start": {
|
||||
"sector_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 512
|
||||
},
|
||||
"total_size": null,
|
||||
"unit": "sectors",
|
||||
"value": 34
|
||||
},
|
||||
"status": "create",
|
||||
"type": "primary"
|
||||
},
|
||||
{
|
||||
"btrfs": [],
|
||||
"flags": [],
|
||||
"fs_type": "fat32",
|
||||
"length": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 100000000
|
||||
},
|
||||
"mount_options": [],
|
||||
"mountpoint": "/efi",
|
||||
"obj_id": "13cf2c96-8b0f-4ade-abaa-c530be589aad",
|
||||
"start": {
|
||||
"sector_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 512
|
||||
},
|
||||
"total_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 16106127360
|
||||
},
|
||||
"unit": "MB",
|
||||
"value": 100
|
||||
},
|
||||
"status": "create",
|
||||
"type": "primary"
|
||||
},
|
||||
{
|
||||
"btrfs": [],
|
||||
"flags": [],
|
||||
"fs_type": "ext4",
|
||||
"length": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 15805127360
|
||||
},
|
||||
"mount_options": [],
|
||||
"mountpoint": "/",
|
||||
"obj_id": "3e75d045-21a4-429d-897e-8ec19a006e8b",
|
||||
"start": {
|
||||
"sector_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 512
|
||||
},
|
||||
"total_size": {
|
||||
"sector_size": null,
|
||||
"total_size": null,
|
||||
"unit": "B",
|
||||
"value": 16106127360
|
||||
},
|
||||
"unit": "MB",
|
||||
"value": 301
|
||||
},
|
||||
"status": "create",
|
||||
"type": "primary"
|
||||
}
|
||||
],
|
||||
"wipe": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"disk_encryption": {
|
||||
"encryption_type": "luks",
|
||||
"partitions": [
|
||||
"3e75d045-21a4-429d-897e-8ec19a006e8b"
|
||||
]
|
||||
},
|
||||
"hostname": "archlinux",
|
||||
"kernels": [
|
||||
"linux"
|
||||
],
|
||||
"locale_config": {
|
||||
"kb_layout": "us",
|
||||
"sys_enc": "UTF-8",
|
||||
"sys_lang": "en_US"
|
||||
},
|
||||
"mirror_config": {
|
||||
"custom_servers": [
|
||||
{
|
||||
"url": "https://mymirror.com/$repo/os/$arch"
|
||||
}
|
||||
],
|
||||
"mirror_regions": {
|
||||
"Australia": [
|
||||
"http://archlinux.mirror.digitalpacific.com.au/$repo/os/$arch"
|
||||
]
|
||||
},
|
||||
"optional_repositories": [
|
||||
"testing"
|
||||
],
|
||||
"custom_repositories": [
|
||||
{
|
||||
"name": "myrepo",
|
||||
"url": "https://myrepo.com/$repo/os/$arch",
|
||||
"sign_check": "Required",
|
||||
"sign_option": "TrustAll"
|
||||
}
|
||||
]
|
||||
},
|
||||
"network_config": {},
|
||||
"no_pkg_lookups": false,
|
||||
"ntp": true,
|
||||
"offline": false,
|
||||
"packages": [],
|
||||
"parallel downloads": 0,
|
||||
"profile_config": null,
|
||||
"save_config": null,
|
||||
"script": "guided",
|
||||
"silent": false,
|
||||
"swap": true,
|
||||
"timezone": "UTC",
|
||||
"version": "2.6.0"
|
||||
}
|
||||
|
||||
``--config`` options
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. warning::
|
||||
|
||||
All key and value entries must conform to the JSON standard. Below is human readable examples with links, effectively breaking the syntax. Adapt the descriptions below to suit your needs and the JSON format.
|
||||
|
||||
.. note::
|
||||
|
||||
Scroll to the right in the table to see required options.
|
||||
|
||||
.. csv-table:: JSON options
|
||||
:file: ../cli_parameters/config/config_options.csv
|
||||
:widths: 15, 40, 40, 5
|
||||
:escape: !
|
||||
:header-rows: 1
|
||||
|
||||
.. I'd like to keep this note, as this is the intended behavior of archinstall.
|
||||
.. note::
|
||||
|
||||
If no entries are found in ``disk_config``, archinstall guided installation will use whatever is mounted currently under ``/mnt/archinstall`` without performing any disk operations.
|
||||
|
||||
Options for ``--creds``
|
||||
-----------------------
|
||||
|
||||
Creds is a separate configuration file to separate normal options from more sensitive data like passwords.
|
||||
Below is an example of how to set the root password and below that are description of other values that can be set.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"root_enc_password" : "SecretSanta2022"
|
||||
}
|
||||
|
||||
.. list-table:: ``--creds`` options
|
||||
:widths: 25 25 40 10
|
||||
:header-rows: 1
|
||||
|
||||
* - Key
|
||||
- Values
|
||||
- Description
|
||||
- Required
|
||||
* - ``!encryption-password``
|
||||
- ``str``
|
||||
- Password to encrypt disk, not encrypted if password not provided
|
||||
- No
|
||||
* - ``root_enc_password``
|
||||
- ``str``
|
||||
- The root account password
|
||||
- No
|
||||
* - ``users``
|
||||
- .. code-block:: json
|
||||
|
||||
{
|
||||
"username": "<USERNAME>",
|
||||
"enc_password": "<PASSWORD_HASH>",
|
||||
"sudo": false
|
||||
}
|
||||
- List of regular user credentials, see configuration for reference
|
||||
- Maybe
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
``users`` is optional only if ``root_enc_password`` was set. ``users`` will be enforced otherwise and the minimum amount of users with sudo privileges required will be set to 1.
|
||||
|
||||
.. note::
|
||||
|
||||
.. _scripts: https://github.com/archlinux/archinstall/tree/master/archinstall/scripts
|
||||
.. _Guided Installer: https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
.. _installing.python:
|
||||
|
||||
Python library
|
||||
==============
|
||||
|
||||
Archinstall ships on `PyPi <https://pypi.org/>`_ as `archinstall <pypi.org/project/archinstall/>`_.
|
||||
But the library can be installed manually as well.
|
||||
|
||||
.. warning::
|
||||
These steps are not required if you want to use archinstall on the official Arch Linux ISO.
|
||||
|
||||
Installing with pacman
|
||||
----------------------
|
||||
|
||||
Archinstall is on the `official repositories <https://wiki.archlinux.org/index.php/Official_repositories>`_.
|
||||
And it will also install archinstall as a python library.
|
||||
|
||||
To install both the library and the archinstall script:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pacman -S archinstall
|
||||
|
||||
Alternatively, you can install only the library and not the helper executable using the ``python-archinstall`` package.
|
||||
|
||||
Installing from PyPI
|
||||
--------------------
|
||||
|
||||
The basic concept of PyPI applies using `pip`.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install archinstall
|
||||
|
||||
.. _installing.python.manual:
|
||||
|
||||
Install using source code
|
||||
-------------------------
|
||||
|
||||
You can also install using the source code.
|
||||
For sake of simplicity we will use ``git clone`` in this example.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
git clone https://github.com/archlinux/archinstall
|
||||
|
||||
You can either move the folder into your project and simply do
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import archinstall
|
||||
|
||||
Or you can PyPa's `build <https://github.com/pypa/build>`_ and `installer <https://github.com/pypa/installer>`_ to install it into pythons module path.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd archinstall
|
||||
$ python -m build .
|
||||
$ python -m installer dist/*.whl
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
/* Compatability shim for jQuery and underscores.js.
|
||||
*
|
||||
* Copyright Sphinx contributors
|
||||
* Released under the two clause BSD licence
|
||||
*/
|
||||
|
||||
/**
|
||||
* small helper function to urldecode strings
|
||||
*
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
|
||||
*/
|
||||
jQuery.urldecode = function(x) {
|
||||
if (!x) {
|
||||
return x
|
||||
}
|
||||
return decodeURIComponent(x.replace(/\+/g, ' '));
|
||||
};
|
||||
|
||||
/**
|
||||
* small helper function to urlencode strings
|
||||
*/
|
||||
jQuery.urlencode = encodeURIComponent;
|
||||
|
||||
/**
|
||||
* This function returns the parsed url parameters of the
|
||||
* current request. Multiple values per key are supported,
|
||||
* it will always return arrays of strings for the value parts.
|
||||
*/
|
||||
jQuery.getQueryParameters = function(s) {
|
||||
if (typeof s === 'undefined')
|
||||
s = document.location.search;
|
||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
||||
var result = {};
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
var tmp = parts[i].split('=', 2);
|
||||
var key = jQuery.urldecode(tmp[0]);
|
||||
var value = jQuery.urldecode(tmp[1]);
|
||||
if (key in result)
|
||||
result[key].push(value);
|
||||
else
|
||||
result[key] = [value];
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* highlight a given string on a jquery object by wrapping it in
|
||||
* span elements with the given class name.
|
||||
*/
|
||||
jQuery.fn.highlightText = function(text, className) {
|
||||
function highlight(node, addItems) {
|
||||
if (node.nodeType === 3) {
|
||||
var val = node.nodeValue;
|
||||
var pos = val.toLowerCase().indexOf(text);
|
||||
if (pos >= 0 &&
|
||||
!jQuery(node.parentNode).hasClass(className) &&
|
||||
!jQuery(node.parentNode).hasClass("nohighlight")) {
|
||||
var span;
|
||||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
|
||||
if (isInSVG) {
|
||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
||||
} else {
|
||||
span = document.createElement("span");
|
||||
span.className = className;
|
||||
}
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
||||
document.createTextNode(val.substr(pos + text.length)),
|
||||
node.nextSibling));
|
||||
node.nodeValue = val.substr(0, pos);
|
||||
if (isInSVG) {
|
||||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||
var bbox = node.parentElement.getBBox();
|
||||
rect.x.baseVal.value = bbox.x;
|
||||
rect.y.baseVal.value = bbox.y;
|
||||
rect.width.baseVal.value = bbox.width;
|
||||
rect.height.baseVal.value = bbox.height;
|
||||
rect.setAttribute('class', className);
|
||||
addItems.push({
|
||||
"parent": node.parentNode,
|
||||
"target": rect});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!jQuery(node).is("button, select, textarea")) {
|
||||
jQuery.each(node.childNodes, function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
}
|
||||
}
|
||||
var addItems = [];
|
||||
var result = this.each(function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
for (var i = 0; i < addItems.length; ++i) {
|
||||
jQuery(addItems[i].parent).before(addItems[i].target);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/*
|
||||
* backward compatibility for jQuery.browser
|
||||
* This will be supported until firefox bug is fixed.
|
||||
*/
|
||||
if (!jQuery.browser) {
|
||||
jQuery.uaMatch = function(ua) {
|
||||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
[];
|
||||
|
||||
return {
|
||||
browser: match[ 1 ] || "",
|
||||
version: match[ 2 ] || "0"
|
||||
};
|
||||
};
|
||||
jQuery.browser = {};
|
||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,476 @@
|
|||
// @ts-check
|
||||
|
||||
/**@constructor*/
|
||||
BaseStemmer = function() {
|
||||
/** @protected */
|
||||
this.current = '';
|
||||
this.cursor = 0;
|
||||
this.limit = 0;
|
||||
this.limit_backward = 0;
|
||||
this.bra = 0;
|
||||
this.ket = 0;
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
*/
|
||||
this.setCurrent = function(value) {
|
||||
this.current = value;
|
||||
this.cursor = 0;
|
||||
this.limit = this.current.length;
|
||||
this.limit_backward = 0;
|
||||
this.bra = this.cursor;
|
||||
this.ket = this.limit;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.getCurrent = function() {
|
||||
return this.current;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {BaseStemmer} other
|
||||
*/
|
||||
this.copy_from = function(other) {
|
||||
/** @protected */
|
||||
this.current = other.current;
|
||||
this.cursor = other.cursor;
|
||||
this.limit = other.limit;
|
||||
this.limit_backward = other.limit_backward;
|
||||
this.bra = other.bra;
|
||||
this.ket = other.ket;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.in_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor >= this.limit) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min) return false;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
|
||||
this.cursor++;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_in_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor < this.limit) {
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min)
|
||||
return true;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0)
|
||||
return true;
|
||||
this.cursor++;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.in_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor <= this.limit_backward) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) return false;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
|
||||
this.cursor--;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_in_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor > this.limit_backward) {
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) return true;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true;
|
||||
this.cursor--;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.out_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor >= this.limit) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min) {
|
||||
this.cursor++;
|
||||
return true;
|
||||
}
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) {
|
||||
this.cursor++;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_out_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor < this.limit) {
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch <= max && ch >= min) {
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.cursor++;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.out_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor <= this.limit_backward) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) {
|
||||
this.cursor--;
|
||||
return true;
|
||||
}
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) {
|
||||
this.cursor--;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_out_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor > this.limit_backward) {
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch <= max && ch >= min) {
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.cursor--;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} s
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.eq_s = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
if (this.limit - this.cursor < s.length) return false;
|
||||
if (this.current.slice(this.cursor, this.cursor + s.length) != s)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.cursor += s.length;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} s
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.eq_s_b = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
if (this.cursor - this.limit_backward < s.length) return false;
|
||||
if (this.current.slice(this.cursor - s.length, this.cursor) != s)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.cursor -= s.length;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Among[]} v
|
||||
* @return {number}
|
||||
*/
|
||||
this.find_among = function(v)
|
||||
{
|
||||
/** @protected */
|
||||
var i = 0;
|
||||
var j = v.length;
|
||||
|
||||
var c = this.cursor;
|
||||
var l = this.limit;
|
||||
|
||||
var common_i = 0;
|
||||
var common_j = 0;
|
||||
|
||||
var first_key_inspected = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
var k = i + ((j - i) >>> 1);
|
||||
var diff = 0;
|
||||
var common = common_i < common_j ? common_i : common_j; // smaller
|
||||
// w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional)
|
||||
var w = v[k];
|
||||
var i2;
|
||||
for (i2 = common; i2 < w[0].length; i2++)
|
||||
{
|
||||
if (c + common == l)
|
||||
{
|
||||
diff = -1;
|
||||
break;
|
||||
}
|
||||
diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2);
|
||||
if (diff != 0) break;
|
||||
common++;
|
||||
}
|
||||
if (diff < 0)
|
||||
{
|
||||
j = k;
|
||||
common_j = common;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = k;
|
||||
common_i = common;
|
||||
}
|
||||
if (j - i <= 1)
|
||||
{
|
||||
if (i > 0) break; // v->s has been inspected
|
||||
if (j == i) break; // only one item in v
|
||||
|
||||
// - but now we need to go round once more to get
|
||||
// v->s inspected. This looks messy, but is actually
|
||||
// the optimal approach.
|
||||
|
||||
if (first_key_inspected) break;
|
||||
first_key_inspected = true;
|
||||
}
|
||||
}
|
||||
do {
|
||||
var w = v[i];
|
||||
if (common_i >= w[0].length)
|
||||
{
|
||||
this.cursor = c + w[0].length;
|
||||
if (w.length < 4) return w[2];
|
||||
var res = w[3](this);
|
||||
this.cursor = c + w[0].length;
|
||||
if (res) return w[2];
|
||||
}
|
||||
i = w[1];
|
||||
} while (i >= 0);
|
||||
return 0;
|
||||
};
|
||||
|
||||
// find_among_b is for backwards processing. Same comments apply
|
||||
/**
|
||||
* @param {Among[]} v
|
||||
* @return {number}
|
||||
*/
|
||||
this.find_among_b = function(v)
|
||||
{
|
||||
/** @protected */
|
||||
var i = 0;
|
||||
var j = v.length
|
||||
|
||||
var c = this.cursor;
|
||||
var lb = this.limit_backward;
|
||||
|
||||
var common_i = 0;
|
||||
var common_j = 0;
|
||||
|
||||
var first_key_inspected = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
var k = i + ((j - i) >> 1);
|
||||
var diff = 0;
|
||||
var common = common_i < common_j ? common_i : common_j;
|
||||
var w = v[k];
|
||||
var i2;
|
||||
for (i2 = w[0].length - 1 - common; i2 >= 0; i2--)
|
||||
{
|
||||
if (c - common == lb)
|
||||
{
|
||||
diff = -1;
|
||||
break;
|
||||
}
|
||||
diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2);
|
||||
if (diff != 0) break;
|
||||
common++;
|
||||
}
|
||||
if (diff < 0)
|
||||
{
|
||||
j = k;
|
||||
common_j = common;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = k;
|
||||
common_i = common;
|
||||
}
|
||||
if (j - i <= 1)
|
||||
{
|
||||
if (i > 0) break;
|
||||
if (j == i) break;
|
||||
if (first_key_inspected) break;
|
||||
first_key_inspected = true;
|
||||
}
|
||||
}
|
||||
do {
|
||||
var w = v[i];
|
||||
if (common_i >= w[0].length)
|
||||
{
|
||||
this.cursor = c - w[0].length;
|
||||
if (w.length < 4) return w[2];
|
||||
var res = w[3](this);
|
||||
this.cursor = c - w[0].length;
|
||||
if (res) return w[2];
|
||||
}
|
||||
i = w[1];
|
||||
} while (i >= 0);
|
||||
return 0;
|
||||
};
|
||||
|
||||
/* to replace chars between c_bra and c_ket in this.current by the
|
||||
* chars in s.
|
||||
*/
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @param {number} c_ket
|
||||
* @param {string} s
|
||||
* @return {number}
|
||||
*/
|
||||
this.replace_s = function(c_bra, c_ket, s)
|
||||
{
|
||||
/** @protected */
|
||||
var adjustment = s.length - (c_ket - c_bra);
|
||||
this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
|
||||
this.limit += adjustment;
|
||||
if (this.cursor >= c_ket) this.cursor += adjustment;
|
||||
else if (this.cursor > c_bra) this.cursor = c_bra;
|
||||
return adjustment;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_check = function()
|
||||
{
|
||||
/** @protected */
|
||||
if (this.bra < 0 ||
|
||||
this.bra > this.ket ||
|
||||
this.ket > this.limit ||
|
||||
this.limit > this.current.length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_from = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
var result = false;
|
||||
if (this.slice_check())
|
||||
{
|
||||
this.replace_s(this.bra, this.ket, s);
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_del = function()
|
||||
{
|
||||
/** @protected */
|
||||
return this.slice_from("");
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @param {number} c_ket
|
||||
* @param {string} s
|
||||
*/
|
||||
this.insert = function(c_bra, c_ket, s)
|
||||
{
|
||||
/** @protected */
|
||||
var adjustment = this.replace_s(c_bra, c_ket, s);
|
||||
if (c_bra <= this.bra) this.bra += adjustment;
|
||||
if (c_bra <= this.ket) this.ket += adjustment;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.slice_to = function()
|
||||
{
|
||||
/** @protected */
|
||||
var result = '';
|
||||
if (this.slice_check())
|
||||
{
|
||||
result = this.current.slice(this.bra, this.ket);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.assign_to = function()
|
||||
{
|
||||
/** @protected */
|
||||
return this.current.slice(0, this.limit);
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,906 @@
|
|||
/*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*/
|
||||
|
||||
/* -- main layout ----------------------------------------------------------- */
|
||||
|
||||
div.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
div.section::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- relbar ---------------------------------------------------------------- */
|
||||
|
||||
div.related {
|
||||
width: 100%;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.related h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.related ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.related li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.related li.right {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/* -- sidebar --------------------------------------------------------------- */
|
||||
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 10px 5px 0 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
float: left;
|
||||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul,
|
||||
div.sphinxsidebar ul.want-points {
|
||||
margin-left: 20px;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar form {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #98dbcc;
|
||||
font-family: sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox form.search {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="text"] {
|
||||
float: left;
|
||||
width: 80%;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
float: left;
|
||||
width: 20%;
|
||||
border-left: none;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li p.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.modindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
div.genindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body {
|
||||
min-width: 360px;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #551A8B;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.body p.caption {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
div.body td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
p.rubric {
|
||||
margin-top: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img.align-left, figure.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, figure.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, figure.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
img.align-default, figure.align-default, .figure.align-default {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- sidebars -------------------------------------------------------------- */
|
||||
|
||||
div.sidebar,
|
||||
aside.sidebar {
|
||||
margin: 0 0 0.5em 1em;
|
||||
border: 1px solid #ddb;
|
||||
padding: 7px;
|
||||
background-color: #ffe;
|
||||
width: 40%;
|
||||
float: right;
|
||||
clear: right;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
p.sidebar-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
nav.contents,
|
||||
aside.topic,
|
||||
div.admonition, div.topic, blockquote {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- topics ---------------------------------------------------------------- */
|
||||
|
||||
nav.contents,
|
||||
aside.topic,
|
||||
div.topic {
|
||||
border: 1px solid #ccc;
|
||||
padding: 7px;
|
||||
margin: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
p.topic-title {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* -- admonitions ----------------------------------------------------------- */
|
||||
|
||||
div.admonition {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
div.admonition dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
margin: 0px 10px 5px 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body p.centered {
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
/* -- content of sidebars/topics/admonitions -------------------------------- */
|
||||
|
||||
div.sidebar > :last-child,
|
||||
aside.sidebar > :last-child,
|
||||
nav.contents > :last-child,
|
||||
aside.topic > :last-child,
|
||||
div.topic > :last-child,
|
||||
div.admonition > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sidebar::after,
|
||||
aside.sidebar::after,
|
||||
nav.contents::after,
|
||||
aside.topic::after,
|
||||
div.topic::after,
|
||||
div.admonition::after,
|
||||
blockquote::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* -- tables ---------------------------------------------------------------- */
|
||||
|
||||
table.docutils {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-default {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
th > :first-child,
|
||||
td > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
th > :last-child,
|
||||
td > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure, figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption, figcaption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number,
|
||||
figcaption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text,
|
||||
figcaption span.caption-text {
|
||||
}
|
||||
|
||||
/* -- field list styles ----------------------------------------------------- */
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.field-name {
|
||||
-moz-hyphens: manual;
|
||||
-ms-hyphens: manual;
|
||||
-webkit-hyphens: manual;
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
/* -- hlist styles ---------------------------------------------------------- */
|
||||
|
||||
table.hlist {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* -- object description styles --------------------------------------------- */
|
||||
|
||||
.sig {
|
||||
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
}
|
||||
|
||||
.sig-name, code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sig-name {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.sig-prename, code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.sig-param.n {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* C++ specific styling */
|
||||
|
||||
.sig-inline.c-texpr,
|
||||
.sig-inline.cpp-texpr {
|
||||
font-family: unset;
|
||||
}
|
||||
|
||||
.sig.c .k, .sig.c .kt,
|
||||
.sig.cpp .k, .sig.cpp .kt {
|
||||
color: #0033B3;
|
||||
}
|
||||
|
||||
.sig.c .m,
|
||||
.sig.cpp .m {
|
||||
color: #1750EB;
|
||||
}
|
||||
|
||||
.sig.c .s, .sig.c .sc,
|
||||
.sig.cpp .s, .sig.cpp .sc {
|
||||
color: #067D17;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha;
|
||||
}
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha;
|
||||
}
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman;
|
||||
}
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:first-child > :first-child,
|
||||
:not(li) > ul > li:first-child > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:last-child > :last-child,
|
||||
:not(li) > ul > li:last-child > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
ol.simple ol p,
|
||||
ol.simple ul p,
|
||||
ul.simple ol p,
|
||||
ul.simple ul p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple > li:not(:first-child) > p,
|
||||
ul.simple > li:not(:first-child) > p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple p,
|
||||
ul.simple p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
aside.footnote > span,
|
||||
div.citation > span {
|
||||
float: left;
|
||||
}
|
||||
aside.footnote > span:last-of-type,
|
||||
div.citation > span:last-of-type {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
aside.footnote > p {
|
||||
margin-left: 2em;
|
||||
}
|
||||
div.citation > p {
|
||||
margin-left: 4em;
|
||||
}
|
||||
aside.footnote > p:last-of-type,
|
||||
div.citation > p:last-of-type {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
aside.footnote > p:last-of-type:after,
|
||||
div.citation > p:last-of-type:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dl.field-list {
|
||||
display: grid;
|
||||
grid-template-columns: fit-content(30%) auto;
|
||||
}
|
||||
|
||||
dl.field-list > dt {
|
||||
font-weight: bold;
|
||||
word-break: break-word;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
dl.field-list > dd {
|
||||
padding-left: 0.5em;
|
||||
margin-top: 0em;
|
||||
margin-left: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
dd > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
dd ul, dd table {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.sig dd {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.sig dl {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
dl > dd:last-child,
|
||||
dl > dd:last-child > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt:target, span.highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
rect.highlighted {
|
||||
fill: #fbe54e;
|
||||
}
|
||||
|
||||
dl.glossary dt {
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.system-message {
|
||||
background-color: #fda;
|
||||
padding: 5px;
|
||||
border: 3px solid red;
|
||||
}
|
||||
|
||||
.footnote:target {
|
||||
background-color: #ffa;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.guilabel, .menuselection {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.accelerator {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.classifier {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
.classifier:before {
|
||||
font-style: normal;
|
||||
margin: 0 0.5em;
|
||||
content: ":";
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
abbr, acronym {
|
||||
border-bottom: dotted 1px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* -- code displays --------------------------------------------------------- */
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
pre, div[class*="highlight-"] {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div[class*="highlight-"] {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
table.highlighttable {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tbody {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tr {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
table.highlighttable td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
table.highlighttable td.code {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.highlight .hll {
|
||||
display: block;
|
||||
}
|
||||
|
||||
div.highlight pre,
|
||||
table.highlighttable pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption + div {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption {
|
||||
margin-top: 1em;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos,
|
||||
span.linenos,
|
||||
div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
-webkit-user-select: text; /* Safari fallback only */
|
||||
-webkit-user-select: none; /* Chrome/Safari */
|
||||
-moz-user-select: none; /* Firefox */
|
||||
-ms-user-select: none; /* IE10+ */
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
img.math {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.body div.math p {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.eqno {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.eqno a.headerlink {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div.math:hover a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* -- printout stylesheet --------------------------------------------------- */
|
||||
|
||||
@media print {
|
||||
div.document,
|
||||
div.documentwrapper,
|
||||
div.bodywrapper {
|
||||
margin: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar,
|
||||
div.related,
|
||||
div.footer,
|
||||
#top-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 434 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,150 @@
|
|||
/*
|
||||
* Base JavaScript utilities for all Sphinx HTML documentation.
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
|
||||
"TEXTAREA",
|
||||
"INPUT",
|
||||
"SELECT",
|
||||
"BUTTON",
|
||||
]);
|
||||
|
||||
const _ready = (callback) => {
|
||||
if (document.readyState !== "loading") {
|
||||
callback();
|
||||
} else {
|
||||
document.addEventListener("DOMContentLoaded", callback);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
const Documentation = {
|
||||
init: () => {
|
||||
Documentation.initDomainIndexTable();
|
||||
Documentation.initOnKeyListeners();
|
||||
},
|
||||
|
||||
/**
|
||||
* i18n support
|
||||
*/
|
||||
TRANSLATIONS: {},
|
||||
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
|
||||
LOCALE: "unknown",
|
||||
|
||||
// gettext and ngettext don't access this so that the functions
|
||||
// can safely bound to a different name (_ = Documentation.gettext)
|
||||
gettext: (string) => {
|
||||
const translated = Documentation.TRANSLATIONS[string];
|
||||
switch (typeof translated) {
|
||||
case "undefined":
|
||||
return string; // no translation
|
||||
case "string":
|
||||
return translated; // translation exists
|
||||
default:
|
||||
return translated[0]; // (singular, plural) translation tuple exists
|
||||
}
|
||||
},
|
||||
|
||||
ngettext: (singular, plural, n) => {
|
||||
const translated = Documentation.TRANSLATIONS[singular];
|
||||
if (typeof translated !== "undefined")
|
||||
return translated[Documentation.PLURAL_EXPR(n)];
|
||||
return n === 1 ? singular : plural;
|
||||
},
|
||||
|
||||
addTranslations: (catalog) => {
|
||||
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
|
||||
Documentation.PLURAL_EXPR = new Function(
|
||||
"n",
|
||||
`return (${catalog.plural_expr})`,
|
||||
);
|
||||
Documentation.LOCALE = catalog.locale;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to focus on search bar
|
||||
*/
|
||||
focusSearchBar: () => {
|
||||
document.querySelectorAll("input[name=q]")[0]?.focus();
|
||||
},
|
||||
|
||||
/**
|
||||
* Initialise the domain index toggle buttons
|
||||
*/
|
||||
initDomainIndexTable: () => {
|
||||
const toggler = (el) => {
|
||||
const idNumber = el.id.substr(7);
|
||||
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
|
||||
if (el.src.substr(-9) === "minus.png") {
|
||||
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
|
||||
toggledRows.forEach((el) => (el.style.display = "none"));
|
||||
} else {
|
||||
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
|
||||
toggledRows.forEach((el) => (el.style.display = ""));
|
||||
}
|
||||
};
|
||||
|
||||
const togglerElements = document.querySelectorAll("img.toggler");
|
||||
togglerElements.forEach((el) =>
|
||||
el.addEventListener("click", (event) => toggler(event.currentTarget)),
|
||||
);
|
||||
togglerElements.forEach((el) => (el.style.display = ""));
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
|
||||
},
|
||||
|
||||
initOnKeyListeners: () => {
|
||||
// only install a listener if it is really needed
|
||||
if (
|
||||
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS
|
||||
&& !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
|
||||
)
|
||||
return;
|
||||
|
||||
document.addEventListener("keydown", (event) => {
|
||||
// bail for input elements
|
||||
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
|
||||
return;
|
||||
// bail with special keys
|
||||
if (event.altKey || event.ctrlKey || event.metaKey) return;
|
||||
|
||||
if (!event.shiftKey) {
|
||||
switch (event.key) {
|
||||
case "ArrowLeft":
|
||||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
|
||||
|
||||
const prevLink = document.querySelector('link[rel="prev"]');
|
||||
if (prevLink && prevLink.href) {
|
||||
window.location.href = prevLink.href;
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
case "ArrowRight":
|
||||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
|
||||
|
||||
const nextLink = document.querySelector('link[rel="next"]');
|
||||
if (nextLink && nextLink.href) {
|
||||
window.location.href = nextLink.href;
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// some keyboard layouts may need Shift to get /
|
||||
switch (event.key) {
|
||||
case "/":
|
||||
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
|
||||
Documentation.focusSearchBar();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
// quick alias for translations
|
||||
const _ = Documentation.gettext;
|
||||
|
||||
_ready(Documentation.init);
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
const DOCUMENTATION_OPTIONS = {
|
||||
VERSION: 'v2.3.0',
|
||||
LANGUAGE: 'en',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
FILE_SUFFIX: '.html',
|
||||
LINK_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false,
|
||||
SHOW_SEARCH_SUMMARY: true,
|
||||
ENABLE_SEARCH_SHORTCUTS: true,
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 286 B |
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* Sphinx stylesheet -- graphviz extension.
|
||||
*/
|
||||
|
||||
img.graphviz {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
object.graphviz {
|
||||
max-width: 100%;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}});
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,224 @@
|
|||
const themeFlyoutDisplay = "hidden";
|
||||
const themeVersionSelector = "True";
|
||||
const themeLanguageSelector = "True";
|
||||
|
||||
if (themeFlyoutDisplay === "attached") {
|
||||
function renderLanguages(config) {
|
||||
if (!config.projects.translations.length) {
|
||||
return "";
|
||||
}
|
||||
|
||||
const languagesHTML = `
|
||||
<dl>
|
||||
<dt>Languages</dt>
|
||||
${config.projects.translations
|
||||
.map(
|
||||
(translation) => `
|
||||
<dd ${translation.slug == config.projects.current.slug ? 'class="rtd-current-item"' : ""}>
|
||||
<a href="${translation.urls.documentation}">${translation.language.code}</a>
|
||||
</dd>
|
||||
`,
|
||||
)
|
||||
.join("\n")}
|
||||
</dl>
|
||||
`;
|
||||
return languagesHTML;
|
||||
}
|
||||
|
||||
function renderVersions(config) {
|
||||
if (!config.versions.active.length) {
|
||||
return "";
|
||||
}
|
||||
const versionsHTML = `
|
||||
<dl>
|
||||
<dt>Versions</dt>
|
||||
${config.versions.active
|
||||
.map(
|
||||
(version) => `
|
||||
<dd ${version.slug === config.versions.current.slug ? 'class="rtd-current-item"' : ""}>
|
||||
<a href="${version.urls.documentation}">${version.slug}</a>
|
||||
</dd>
|
||||
`,
|
||||
)
|
||||
.join("\n")}
|
||||
</dl>
|
||||
`;
|
||||
return versionsHTML;
|
||||
}
|
||||
|
||||
function renderDownloads(config) {
|
||||
if (!Object.keys(config.versions.current.downloads).length) {
|
||||
return "";
|
||||
}
|
||||
const downloadsNameDisplay = {
|
||||
pdf: "PDF",
|
||||
epub: "Epub",
|
||||
htmlzip: "HTML",
|
||||
};
|
||||
|
||||
const downloadsHTML = `
|
||||
<dl>
|
||||
<dt>Downloads</dt>
|
||||
${Object.entries(config.versions.current.downloads)
|
||||
.map(
|
||||
([name, url]) => `
|
||||
<dd>
|
||||
<a href="${url}">${downloadsNameDisplay[name]}</a>
|
||||
</dd>
|
||||
`,
|
||||
)
|
||||
.join("\n")}
|
||||
</dl>
|
||||
`;
|
||||
return downloadsHTML;
|
||||
}
|
||||
|
||||
document.addEventListener("readthedocs-addons-data-ready", function (event) {
|
||||
const config = event.detail.data();
|
||||
|
||||
const flyout = `
|
||||
<div class="rst-versions" data-toggle="rst-versions" role="note">
|
||||
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||
<span class="fa fa-book"> Read the Docs</span>
|
||||
v: ${config.versions.current.slug}
|
||||
<span class="fa fa-caret-down"></span>
|
||||
</span>
|
||||
<div class="rst-other-versions">
|
||||
<div class="injected">
|
||||
${renderLanguages(config)}
|
||||
${renderVersions(config)}
|
||||
${renderDownloads(config)}
|
||||
<dl>
|
||||
<dt>On Read the Docs</dt>
|
||||
<dd>
|
||||
<a href="${config.projects.current.urls.home}">Project Home</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="${config.projects.current.urls.builds}">Builds</a>
|
||||
</dd>
|
||||
<dd>
|
||||
<a href="${config.projects.current.urls.downloads}">Downloads</a>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Search</dt>
|
||||
<dd>
|
||||
<form id="flyout-search-form">
|
||||
<input
|
||||
class="wy-form"
|
||||
type="text"
|
||||
name="q"
|
||||
aria-label="Search docs"
|
||||
placeholder="Search docs"
|
||||
/>
|
||||
</form>
|
||||
</dd>
|
||||
</dl>
|
||||
<hr />
|
||||
<small>
|
||||
<span>Hosted by <a href="https://about.readthedocs.org/?utm_source=&utm_content=flyout">Read the Docs</a></span>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Inject the generated flyout into the body HTML element.
|
||||
document.body.insertAdjacentHTML("beforeend", flyout);
|
||||
|
||||
// Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout.
|
||||
document
|
||||
.querySelector("#flyout-search-form")
|
||||
.addEventListener("focusin", () => {
|
||||
const event = new CustomEvent("readthedocs-search-show");
|
||||
document.dispatchEvent(event);
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
if (themeLanguageSelector || themeVersionSelector) {
|
||||
function onSelectorSwitch(event) {
|
||||
const option = event.target.selectedIndex;
|
||||
const item = event.target.options[option];
|
||||
window.location.href = item.dataset.url;
|
||||
}
|
||||
|
||||
document.addEventListener("readthedocs-addons-data-ready", function (event) {
|
||||
const config = event.detail.data();
|
||||
|
||||
const versionSwitch = document.querySelector(
|
||||
"div.switch-menus > div.version-switch",
|
||||
);
|
||||
if (themeVersionSelector) {
|
||||
let versions = config.versions.active;
|
||||
if (config.versions.current.hidden || config.versions.current.type === "external") {
|
||||
versions.unshift(config.versions.current);
|
||||
}
|
||||
const versionSelect = `
|
||||
<select>
|
||||
${versions
|
||||
.map(
|
||||
(version) => `
|
||||
<option
|
||||
value="${version.slug}"
|
||||
${config.versions.current.slug === version.slug ? 'selected="selected"' : ""}
|
||||
data-url="${version.urls.documentation}">
|
||||
${version.slug}
|
||||
</option>`,
|
||||
)
|
||||
.join("\n")}
|
||||
</select>
|
||||
`;
|
||||
|
||||
versionSwitch.innerHTML = versionSelect;
|
||||
versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
|
||||
}
|
||||
|
||||
const languageSwitch = document.querySelector(
|
||||
"div.switch-menus > div.language-switch",
|
||||
);
|
||||
|
||||
if (themeLanguageSelector) {
|
||||
if (config.projects.translations.length) {
|
||||
// Add the current language to the options on the selector
|
||||
let languages = config.projects.translations.concat(
|
||||
config.projects.current,
|
||||
);
|
||||
languages = languages.sort((a, b) =>
|
||||
a.language.name.localeCompare(b.language.name),
|
||||
);
|
||||
|
||||
const languageSelect = `
|
||||
<select>
|
||||
${languages
|
||||
.map(
|
||||
(language) => `
|
||||
<option
|
||||
value="${language.language.code}"
|
||||
${config.projects.current.slug === language.slug ? 'selected="selected"' : ""}
|
||||
data-url="${language.urls.documentation}">
|
||||
${language.language.name}
|
||||
</option>`,
|
||||
)
|
||||
.join("\n")}
|
||||
</select>
|
||||
`;
|
||||
|
||||
languageSwitch.innerHTML = languageSelect;
|
||||
languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
|
||||
}
|
||||
else {
|
||||
languageSwitch.remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener("readthedocs-addons-data-ready", function (event) {
|
||||
// Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav.
|
||||
document
|
||||
.querySelector("[role='search'] input")
|
||||
.addEventListener("focusin", () => {
|
||||
const event = new CustomEvent("readthedocs-search-show");
|
||||
document.dispatchEvent(event);
|
||||
});
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 90 B |
Binary file not shown.
|
After Width: | Height: | Size: 90 B |
|
|
@ -0,0 +1,75 @@
|
|||
pre { line-height: 125%; }
|
||||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
.highlight .hll { background-color: #ffffcc }
|
||||
.highlight { background: #f8f8f8; }
|
||||
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
|
||||
.highlight .err { border: 1px solid #F00 } /* Error */
|
||||
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
|
||||
.highlight .o { color: #666 } /* Operator */
|
||||
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
|
||||
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
|
||||
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
|
||||
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
|
||||
.highlight .gr { color: #E40000 } /* Generic.Error */
|
||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
.highlight .gi { color: #008400 } /* Generic.Inserted */
|
||||
.highlight .go { color: #717171 } /* Generic.Output */
|
||||
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
.highlight .gt { color: #04D } /* Generic.Traceback */
|
||||
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #B00040 } /* Keyword.Type */
|
||||
.highlight .m { color: #666 } /* Literal.Number */
|
||||
.highlight .s { color: #BA2121 } /* Literal.String */
|
||||
.highlight .na { color: #687822 } /* Name.Attribute */
|
||||
.highlight .nb { color: #008000 } /* Name.Builtin */
|
||||
.highlight .nc { color: #00F; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #800 } /* Name.Constant */
|
||||
.highlight .nd { color: #A2F } /* Name.Decorator */
|
||||
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
|
||||
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #00F } /* Name.Function */
|
||||
.highlight .nl { color: #767600 } /* Name.Label */
|
||||
.highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */
|
||||
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #19177C } /* Name.Variable */
|
||||
.highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #BBB } /* Text.Whitespace */
|
||||
.highlight .mb { color: #666 } /* Literal.Number.Bin */
|
||||
.highlight .mf { color: #666 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #666 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #666 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #666 } /* Literal.Number.Oct */
|
||||
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
|
||||
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
|
||||
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
|
||||
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
|
||||
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #008000 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
|
||||
.highlight .fm { color: #00F } /* Name.Function.Magic */
|
||||
.highlight .vc { color: #19177C } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #19177C } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
|
||||
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
|
||||
.highlight .il { color: #666 } /* Literal.Number.Integer.Long */
|
||||
|
|
@ -0,0 +1,693 @@
|
|||
/*
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
if (typeof Scorer === "undefined") {
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [docname, title, anchor, descr, score, filename]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: result => {
|
||||
const [docname, title, anchor, descr, score, filename, kind] = result
|
||||
return score
|
||||
},
|
||||
*/
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {
|
||||
0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5, // used to be unimportantResults
|
||||
},
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
partialTitle: 7,
|
||||
// query found in terms
|
||||
term: 5,
|
||||
partialTerm: 2,
|
||||
};
|
||||
}
|
||||
|
||||
// Global search result kind enum, used by themes to style search results.
|
||||
// prettier-ignore
|
||||
class SearchResultKind {
|
||||
static get index() { return "index"; }
|
||||
static get object() { return "object"; }
|
||||
static get text() { return "text"; }
|
||||
static get title() { return "title"; }
|
||||
}
|
||||
|
||||
const _removeChildren = (element) => {
|
||||
while (element && element.lastChild) element.removeChild(element.lastChild);
|
||||
};
|
||||
|
||||
/**
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
|
||||
*/
|
||||
const _escapeRegExp = (string) =>
|
||||
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
||||
|
||||
const _escapeHTML = (text) => {
|
||||
return text
|
||||
.replaceAll("&", "&")
|
||||
.replaceAll("<", "<")
|
||||
.replaceAll(">", ">")
|
||||
.replaceAll('"', """)
|
||||
.replaceAll("'", "'");
|
||||
};
|
||||
|
||||
const _displayItem = (item, searchTerms, highlightTerms) => {
|
||||
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
|
||||
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
|
||||
const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
|
||||
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
|
||||
const contentRoot = document.documentElement.dataset.content_root;
|
||||
|
||||
const [docName, title, anchor, descr, score, _filename, kind] = item;
|
||||
|
||||
let listItem = document.createElement("li");
|
||||
// Add a class representing the item's type:
|
||||
// can be used by a theme's CSS selector for styling
|
||||
// See SearchResultKind for the class names.
|
||||
listItem.classList.add(`kind-${kind}`);
|
||||
let requestUrl;
|
||||
let linkUrl;
|
||||
if (docBuilder === "dirhtml") {
|
||||
// dirhtml builder
|
||||
let dirname = docName + "/";
|
||||
if (dirname.match(/\/index\/$/))
|
||||
dirname = dirname.substring(0, dirname.length - 6);
|
||||
else if (dirname === "index/") dirname = "";
|
||||
requestUrl = contentRoot + dirname;
|
||||
linkUrl = requestUrl;
|
||||
} else {
|
||||
// normal html builders
|
||||
requestUrl = contentRoot + docName + docFileSuffix;
|
||||
linkUrl = docName + docLinkSuffix;
|
||||
}
|
||||
let linkEl = listItem.appendChild(document.createElement("a"));
|
||||
linkEl.href = linkUrl + anchor;
|
||||
linkEl.dataset.score = score;
|
||||
linkEl.innerHTML = _escapeHTML(title);
|
||||
if (descr) {
|
||||
listItem.appendChild(document.createElement("span")).innerHTML =
|
||||
` (${_escapeHTML(descr)})`;
|
||||
// highlight search terms in the description
|
||||
if (SPHINX_HIGHLIGHT_ENABLED)
|
||||
// SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
|
||||
highlightTerms.forEach((term) =>
|
||||
_highlightText(listItem, term, "highlighted"),
|
||||
);
|
||||
} else if (showSearchSummary)
|
||||
fetch(requestUrl)
|
||||
.then((responseData) => responseData.text())
|
||||
.then((data) => {
|
||||
if (data)
|
||||
listItem.appendChild(
|
||||
Search.makeSearchSummary(data, searchTerms, anchor),
|
||||
);
|
||||
// highlight search terms in the summary
|
||||
if (SPHINX_HIGHLIGHT_ENABLED)
|
||||
// SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
|
||||
highlightTerms.forEach((term) =>
|
||||
_highlightText(listItem, term, "highlighted"),
|
||||
);
|
||||
});
|
||||
Search.output.appendChild(listItem);
|
||||
};
|
||||
const _finishSearch = (resultCount) => {
|
||||
Search.stopPulse();
|
||||
Search.title.innerText = _("Search Results");
|
||||
if (!resultCount)
|
||||
Search.status.innerText = Documentation.gettext(
|
||||
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.",
|
||||
);
|
||||
else
|
||||
Search.status.innerText = Documentation.ngettext(
|
||||
"Search finished, found one page matching the search query.",
|
||||
"Search finished, found ${resultCount} pages matching the search query.",
|
||||
resultCount,
|
||||
).replace("${resultCount}", resultCount);
|
||||
};
|
||||
const _displayNextItem = (
|
||||
results,
|
||||
resultCount,
|
||||
searchTerms,
|
||||
highlightTerms,
|
||||
) => {
|
||||
// results left, load the summary and display it
|
||||
// this is intended to be dynamic (don't sub resultsCount)
|
||||
if (results.length) {
|
||||
_displayItem(results.pop(), searchTerms, highlightTerms);
|
||||
setTimeout(
|
||||
() => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
|
||||
5,
|
||||
);
|
||||
}
|
||||
// search finished, update title and status message
|
||||
else _finishSearch(resultCount);
|
||||
};
|
||||
// Helper function used by query() to order search results.
|
||||
// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
|
||||
// Order the results by score (in opposite order of appearance, since the
|
||||
// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
|
||||
const _orderResultsByScoreThenName = (a, b) => {
|
||||
const leftScore = a[4];
|
||||
const rightScore = b[4];
|
||||
if (leftScore === rightScore) {
|
||||
// same score: sort alphabetically
|
||||
const leftTitle = a[1].toLowerCase();
|
||||
const rightTitle = b[1].toLowerCase();
|
||||
if (leftTitle === rightTitle) return 0;
|
||||
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
|
||||
}
|
||||
return leftScore > rightScore ? 1 : -1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
|
||||
* custom function per language.
|
||||
*
|
||||
* The regular expression works by splitting the string on consecutive characters
|
||||
* that are not Unicode letters, numbers, underscores, or emoji characters.
|
||||
* This is the same as ``\W+`` in Python, preserving the surrogate pair area.
|
||||
*/
|
||||
if (typeof splitQuery === "undefined") {
|
||||
var splitQuery = (query) =>
|
||||
query
|
||||
.split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
|
||||
.filter((term) => term); // remove remaining empty strings
|
||||
}
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
const Search = {
|
||||
_index: null,
|
||||
_queued_query: null,
|
||||
_pulse_status: -1,
|
||||
|
||||
htmlToText: (htmlString, anchor) => {
|
||||
const htmlElement = new DOMParser().parseFromString(
|
||||
htmlString,
|
||||
"text/html",
|
||||
);
|
||||
for (const removalQuery of [".headerlink", "script", "style"]) {
|
||||
htmlElement.querySelectorAll(removalQuery).forEach((el) => {
|
||||
el.remove();
|
||||
});
|
||||
}
|
||||
if (anchor) {
|
||||
const anchorContent = htmlElement.querySelector(
|
||||
`[role="main"] ${anchor}`,
|
||||
);
|
||||
if (anchorContent) return anchorContent.textContent;
|
||||
|
||||
console.warn(
|
||||
`Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`,
|
||||
);
|
||||
}
|
||||
|
||||
// if anchor not specified or not found, fall back to main content
|
||||
const docContent = htmlElement.querySelector('[role="main"]');
|
||||
if (docContent) return docContent.textContent;
|
||||
|
||||
console.warn(
|
||||
"Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template.",
|
||||
);
|
||||
return "";
|
||||
},
|
||||
|
||||
init: () => {
|
||||
const query = new URLSearchParams(window.location.search).get("q");
|
||||
document
|
||||
.querySelectorAll('input[name="q"]')
|
||||
.forEach((el) => (el.value = query));
|
||||
if (query) Search.performSearch(query);
|
||||
},
|
||||
|
||||
loadIndex: (url) =>
|
||||
(document.body.appendChild(document.createElement("script")).src = url),
|
||||
|
||||
setIndex: (index) => {
|
||||
Search._index = index;
|
||||
if (Search._queued_query !== null) {
|
||||
const query = Search._queued_query;
|
||||
Search._queued_query = null;
|
||||
Search.query(query);
|
||||
}
|
||||
},
|
||||
|
||||
hasIndex: () => Search._index !== null,
|
||||
|
||||
deferQuery: (query) => (Search._queued_query = query),
|
||||
|
||||
stopPulse: () => (Search._pulse_status = -1),
|
||||
|
||||
startPulse: () => {
|
||||
if (Search._pulse_status >= 0) return;
|
||||
|
||||
const pulse = () => {
|
||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||
Search.dots.innerText = ".".repeat(Search._pulse_status);
|
||||
if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
|
||||
};
|
||||
pulse();
|
||||
},
|
||||
|
||||
/**
|
||||
* perform a search for something (or wait until index is loaded)
|
||||
*/
|
||||
performSearch: (query) => {
|
||||
// create the required interface elements
|
||||
const searchText = document.createElement("h2");
|
||||
searchText.textContent = _("Searching");
|
||||
const searchSummary = document.createElement("p");
|
||||
searchSummary.classList.add("search-summary");
|
||||
searchSummary.innerText = "";
|
||||
const searchList = document.createElement("ul");
|
||||
searchList.setAttribute("role", "list");
|
||||
searchList.classList.add("search");
|
||||
|
||||
const out = document.getElementById("search-results");
|
||||
Search.title = out.appendChild(searchText);
|
||||
Search.dots = Search.title.appendChild(document.createElement("span"));
|
||||
Search.status = out.appendChild(searchSummary);
|
||||
Search.output = out.appendChild(searchList);
|
||||
|
||||
const searchProgress = document.getElementById("search-progress");
|
||||
// Some themes don't use the search progress node
|
||||
if (searchProgress) {
|
||||
searchProgress.innerText = _("Preparing search...");
|
||||
}
|
||||
Search.startPulse();
|
||||
|
||||
// index already loaded, the browser was quick!
|
||||
if (Search.hasIndex()) Search.query(query);
|
||||
else Search.deferQuery(query);
|
||||
},
|
||||
|
||||
_parseQuery: (query) => {
|
||||
// stem the search terms and add them to the correct list
|
||||
const stemmer = new Stemmer();
|
||||
const searchTerms = new Set();
|
||||
const excludedTerms = new Set();
|
||||
const highlightTerms = new Set();
|
||||
const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
|
||||
splitQuery(query.trim()).forEach((queryTerm) => {
|
||||
const queryTermLower = queryTerm.toLowerCase();
|
||||
|
||||
// maybe skip this "word"
|
||||
// stopwords set is from language_data.js
|
||||
if (stopwords.has(queryTermLower) || queryTerm.match(/^\d+$/)) return;
|
||||
|
||||
// stem the word
|
||||
let word = stemmer.stemWord(queryTermLower);
|
||||
// select the correct list
|
||||
if (word[0] === "-") excludedTerms.add(word.substr(1));
|
||||
else {
|
||||
searchTerms.add(word);
|
||||
highlightTerms.add(queryTermLower);
|
||||
}
|
||||
});
|
||||
|
||||
if (SPHINX_HIGHLIGHT_ENABLED) {
|
||||
// SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
|
||||
localStorage.setItem(
|
||||
"sphinx_highlight_terms",
|
||||
[...highlightTerms].join(" "),
|
||||
);
|
||||
}
|
||||
|
||||
// console.debug("SEARCH: searching for:");
|
||||
// console.info("required: ", [...searchTerms]);
|
||||
// console.info("excluded: ", [...excludedTerms]);
|
||||
|
||||
return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
|
||||
},
|
||||
|
||||
/**
|
||||
* execute search (requires search index to be loaded)
|
||||
*/
|
||||
_performSearch: (
|
||||
query,
|
||||
searchTerms,
|
||||
excludedTerms,
|
||||
highlightTerms,
|
||||
objectTerms,
|
||||
) => {
|
||||
const filenames = Search._index.filenames;
|
||||
const docNames = Search._index.docnames;
|
||||
const titles = Search._index.titles;
|
||||
const allTitles = Search._index.alltitles;
|
||||
const indexEntries = Search._index.indexentries;
|
||||
|
||||
// Collect multiple result groups to be sorted separately and then ordered.
|
||||
// Each is an array of [docname, title, anchor, descr, score, filename, kind].
|
||||
const normalResults = [];
|
||||
const nonMainIndexResults = [];
|
||||
|
||||
_removeChildren(document.getElementById("search-progress"));
|
||||
|
||||
const queryLower = query.toLowerCase().trim();
|
||||
for (const [title, foundTitles] of Object.entries(allTitles)) {
|
||||
if (
|
||||
title.toLowerCase().trim().includes(queryLower)
|
||||
&& queryLower.length >= title.length / 2
|
||||
) {
|
||||
for (const [file, id] of foundTitles) {
|
||||
const score = Math.round(
|
||||
(Scorer.title * queryLower.length) / title.length,
|
||||
);
|
||||
const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
|
||||
normalResults.push([
|
||||
docNames[file],
|
||||
titles[file] !== title ? `${titles[file]} > ${title}` : title,
|
||||
id !== null ? "#" + id : "",
|
||||
null,
|
||||
score + boost,
|
||||
filenames[file],
|
||||
SearchResultKind.title,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// search for explicit entries in index directives
|
||||
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
|
||||
if (entry.includes(queryLower) && queryLower.length >= entry.length / 2) {
|
||||
for (const [file, id, isMain] of foundEntries) {
|
||||
const score = Math.round((100 * queryLower.length) / entry.length);
|
||||
const result = [
|
||||
docNames[file],
|
||||
titles[file],
|
||||
id ? "#" + id : "",
|
||||
null,
|
||||
score,
|
||||
filenames[file],
|
||||
SearchResultKind.index,
|
||||
];
|
||||
if (isMain) {
|
||||
normalResults.push(result);
|
||||
} else {
|
||||
nonMainIndexResults.push(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// lookup as object
|
||||
objectTerms.forEach((term) =>
|
||||
normalResults.push(...Search.performObjectSearch(term, objectTerms)),
|
||||
);
|
||||
|
||||
// lookup as search terms in fulltext
|
||||
normalResults.push(
|
||||
...Search.performTermsSearch(searchTerms, excludedTerms),
|
||||
);
|
||||
|
||||
// let the scorer override scores with a custom scoring function
|
||||
if (Scorer.score) {
|
||||
normalResults.forEach((item) => (item[4] = Scorer.score(item)));
|
||||
nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
|
||||
}
|
||||
|
||||
// Sort each group of results by score and then alphabetically by name.
|
||||
normalResults.sort(_orderResultsByScoreThenName);
|
||||
nonMainIndexResults.sort(_orderResultsByScoreThenName);
|
||||
|
||||
// Combine the result groups in (reverse) order.
|
||||
// Non-main index entries are typically arbitrary cross-references,
|
||||
// so display them after other results.
|
||||
let results = [...nonMainIndexResults, ...normalResults];
|
||||
|
||||
// remove duplicate search results
|
||||
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
|
||||
let seen = new Set();
|
||||
results = results.reverse().reduce((acc, result) => {
|
||||
let resultStr = result
|
||||
.slice(0, 4)
|
||||
.concat([result[5]])
|
||||
.map((v) => String(v))
|
||||
.join(",");
|
||||
if (!seen.has(resultStr)) {
|
||||
acc.push(result);
|
||||
seen.add(resultStr);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
return results.reverse();
|
||||
},
|
||||
|
||||
query: (query) => {
|
||||
const [
|
||||
searchQuery,
|
||||
searchTerms,
|
||||
excludedTerms,
|
||||
highlightTerms,
|
||||
objectTerms,
|
||||
] = Search._parseQuery(query);
|
||||
const results = Search._performSearch(
|
||||
searchQuery,
|
||||
searchTerms,
|
||||
excludedTerms,
|
||||
highlightTerms,
|
||||
objectTerms,
|
||||
);
|
||||
|
||||
// for debugging
|
||||
//Search.lastresults = results.slice(); // a copy
|
||||
// console.info("search results:", Search.lastresults);
|
||||
|
||||
// print the results
|
||||
_displayNextItem(results, results.length, searchTerms, highlightTerms);
|
||||
},
|
||||
|
||||
/**
|
||||
* search for object names
|
||||
*/
|
||||
performObjectSearch: (object, objectTerms) => {
|
||||
const filenames = Search._index.filenames;
|
||||
const docNames = Search._index.docnames;
|
||||
const objects = Search._index.objects;
|
||||
const objNames = Search._index.objnames;
|
||||
const titles = Search._index.titles;
|
||||
|
||||
const results = [];
|
||||
|
||||
const objectSearchCallback = (prefix, match) => {
|
||||
const name = match[4];
|
||||
const fullname = (prefix ? prefix + "." : "") + name;
|
||||
const fullnameLower = fullname.toLowerCase();
|
||||
if (fullnameLower.indexOf(object) < 0) return;
|
||||
|
||||
let score = 0;
|
||||
const parts = fullnameLower.split(".");
|
||||
|
||||
// check for different match types: exact matches of full name or
|
||||
// "last name" (i.e. last dotted part)
|
||||
if (fullnameLower === object || parts.slice(-1)[0] === object)
|
||||
score += Scorer.objNameMatch;
|
||||
else if (parts.slice(-1)[0].indexOf(object) > -1)
|
||||
score += Scorer.objPartialMatch; // matches in last name
|
||||
|
||||
const objName = objNames[match[1]][2];
|
||||
const title = titles[match[0]];
|
||||
|
||||
// If more than one term searched for, we require other words to be
|
||||
// found in the name/title/description
|
||||
const otherTerms = new Set(objectTerms);
|
||||
otherTerms.delete(object);
|
||||
if (otherTerms.size > 0) {
|
||||
const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
|
||||
if (
|
||||
[...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
|
||||
)
|
||||
return;
|
||||
}
|
||||
|
||||
let anchor = match[3];
|
||||
if (anchor === "") anchor = fullname;
|
||||
else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
|
||||
|
||||
const descr = objName + _(", in ") + title;
|
||||
|
||||
// add custom score for some objects according to scorer
|
||||
if (Scorer.objPrio.hasOwnProperty(match[2]))
|
||||
score += Scorer.objPrio[match[2]];
|
||||
else score += Scorer.objPrioDefault;
|
||||
|
||||
results.push([
|
||||
docNames[match[0]],
|
||||
fullname,
|
||||
"#" + anchor,
|
||||
descr,
|
||||
score,
|
||||
filenames[match[0]],
|
||||
SearchResultKind.object,
|
||||
]);
|
||||
};
|
||||
Object.keys(objects).forEach((prefix) =>
|
||||
objects[prefix].forEach((array) => objectSearchCallback(prefix, array)),
|
||||
);
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* search for full-text terms in the index
|
||||
*/
|
||||
performTermsSearch: (searchTerms, excludedTerms) => {
|
||||
// prepare search
|
||||
const terms = Search._index.terms;
|
||||
const titleTerms = Search._index.titleterms;
|
||||
const filenames = Search._index.filenames;
|
||||
const docNames = Search._index.docnames;
|
||||
const titles = Search._index.titles;
|
||||
|
||||
const scoreMap = new Map();
|
||||
const fileMap = new Map();
|
||||
|
||||
// perform the search on the required terms
|
||||
searchTerms.forEach((word) => {
|
||||
const files = [];
|
||||
// find documents, if any, containing the query word in their text/title term indices
|
||||
// use Object.hasOwnProperty to avoid mismatching against prototype properties
|
||||
const arr = [
|
||||
{
|
||||
files: terms.hasOwnProperty(word) ? terms[word] : undefined,
|
||||
score: Scorer.term,
|
||||
},
|
||||
{
|
||||
files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined,
|
||||
score: Scorer.title,
|
||||
},
|
||||
];
|
||||
// add support for partial matches
|
||||
if (word.length > 2) {
|
||||
const escapedWord = _escapeRegExp(word);
|
||||
if (!terms.hasOwnProperty(word)) {
|
||||
Object.keys(terms).forEach((term) => {
|
||||
if (term.match(escapedWord))
|
||||
arr.push({ files: terms[term], score: Scorer.partialTerm });
|
||||
});
|
||||
}
|
||||
if (!titleTerms.hasOwnProperty(word)) {
|
||||
Object.keys(titleTerms).forEach((term) => {
|
||||
if (term.match(escapedWord))
|
||||
arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// no match but word was a required one
|
||||
if (arr.every((record) => record.files === undefined)) return;
|
||||
|
||||
// found search word in contents
|
||||
arr.forEach((record) => {
|
||||
if (record.files === undefined) return;
|
||||
|
||||
let recordFiles = record.files;
|
||||
if (recordFiles.length === undefined) recordFiles = [recordFiles];
|
||||
files.push(...recordFiles);
|
||||
|
||||
// set score for the word in each file
|
||||
recordFiles.forEach((file) => {
|
||||
if (!scoreMap.has(file)) scoreMap.set(file, new Map());
|
||||
const fileScores = scoreMap.get(file);
|
||||
fileScores.set(word, record.score);
|
||||
});
|
||||
});
|
||||
|
||||
// create the mapping
|
||||
files.forEach((file) => {
|
||||
if (!fileMap.has(file)) fileMap.set(file, [word]);
|
||||
else if (fileMap.get(file).indexOf(word) === -1)
|
||||
fileMap.get(file).push(word);
|
||||
});
|
||||
});
|
||||
|
||||
// now check if the files don't contain excluded terms
|
||||
const results = [];
|
||||
for (const [file, wordList] of fileMap) {
|
||||
// check if all requirements are matched
|
||||
|
||||
// as search terms with length < 3 are discarded
|
||||
const filteredTermCount = [...searchTerms].filter(
|
||||
(term) => term.length > 2,
|
||||
).length;
|
||||
if (
|
||||
wordList.length !== searchTerms.size
|
||||
&& wordList.length !== filteredTermCount
|
||||
)
|
||||
continue;
|
||||
|
||||
// ensure that none of the excluded terms is in the search result
|
||||
if (
|
||||
[...excludedTerms].some(
|
||||
(term) =>
|
||||
terms[term] === file
|
||||
|| titleTerms[term] === file
|
||||
|| (terms[term] || []).includes(file)
|
||||
|| (titleTerms[term] || []).includes(file),
|
||||
)
|
||||
)
|
||||
break;
|
||||
|
||||
// select one (max) score for the file.
|
||||
const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w)));
|
||||
// add result to the result list
|
||||
results.push([
|
||||
docNames[file],
|
||||
titles[file],
|
||||
"",
|
||||
null,
|
||||
score,
|
||||
filenames[file],
|
||||
SearchResultKind.text,
|
||||
]);
|
||||
}
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words.
|
||||
*/
|
||||
makeSearchSummary: (htmlText, keywords, anchor) => {
|
||||
const text = Search.htmlToText(htmlText, anchor);
|
||||
if (text === "") return null;
|
||||
|
||||
const textLower = text.toLowerCase();
|
||||
const actualStartPosition = [...keywords]
|
||||
.map((k) => textLower.indexOf(k.toLowerCase()))
|
||||
.filter((i) => i > -1)
|
||||
.slice(-1)[0];
|
||||
const startWithContext = Math.max(actualStartPosition - 120, 0);
|
||||
|
||||
const top = startWithContext === 0 ? "" : "...";
|
||||
const tail = startWithContext + 240 < text.length ? "..." : "";
|
||||
|
||||
let summary = document.createElement("p");
|
||||
summary.classList.add("context");
|
||||
summary.textContent =
|
||||
top + text.substr(startWithContext, 240).trim() + tail;
|
||||
|
||||
return summary;
|
||||
},
|
||||
};
|
||||
|
||||
_ready(Search.init);
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
/* Highlighting utilities for Sphinx HTML documentation. */
|
||||
"use strict";
|
||||
|
||||
const SPHINX_HIGHLIGHT_ENABLED = true;
|
||||
|
||||
/**
|
||||
* highlight a given string on a node by wrapping it in
|
||||
* span elements with the given class name.
|
||||
*/
|
||||
const _highlight = (node, addItems, text, className) => {
|
||||
if (node.nodeType === Node.TEXT_NODE) {
|
||||
const val = node.nodeValue;
|
||||
const parent = node.parentNode;
|
||||
const pos = val.toLowerCase().indexOf(text);
|
||||
if (
|
||||
pos >= 0
|
||||
&& !parent.classList.contains(className)
|
||||
&& !parent.classList.contains("nohighlight")
|
||||
) {
|
||||
let span;
|
||||
|
||||
const closestNode = parent.closest("body, svg, foreignObject");
|
||||
const isInSVG = closestNode && closestNode.matches("svg");
|
||||
if (isInSVG) {
|
||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
||||
} else {
|
||||
span = document.createElement("span");
|
||||
span.classList.add(className);
|
||||
}
|
||||
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
const rest = document.createTextNode(val.substr(pos + text.length));
|
||||
parent.insertBefore(span, parent.insertBefore(rest, node.nextSibling));
|
||||
node.nodeValue = val.substr(0, pos);
|
||||
/* There may be more occurrences of search term in this node. So call this
|
||||
* function recursively on the remaining fragment.
|
||||
*/
|
||||
_highlight(rest, addItems, text, className);
|
||||
|
||||
if (isInSVG) {
|
||||
const rect = document.createElementNS(
|
||||
"http://www.w3.org/2000/svg",
|
||||
"rect",
|
||||
);
|
||||
const bbox = parent.getBBox();
|
||||
rect.x.baseVal.value = bbox.x;
|
||||
rect.y.baseVal.value = bbox.y;
|
||||
rect.width.baseVal.value = bbox.width;
|
||||
rect.height.baseVal.value = bbox.height;
|
||||
rect.setAttribute("class", className);
|
||||
addItems.push({ parent: parent, target: rect });
|
||||
}
|
||||
}
|
||||
} else if (node.matches && !node.matches("button, select, textarea")) {
|
||||
node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
|
||||
}
|
||||
};
|
||||
const _highlightText = (thisNode, text, className) => {
|
||||
let addItems = [];
|
||||
_highlight(thisNode, addItems, text, className);
|
||||
addItems.forEach((obj) =>
|
||||
obj.parent.insertAdjacentElement("beforebegin", obj.target),
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
const SphinxHighlight = {
|
||||
/**
|
||||
* highlight the search words provided in localstorage in the text
|
||||
*/
|
||||
highlightSearchWords: () => {
|
||||
if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
|
||||
|
||||
// get and clear terms from localstorage
|
||||
const url = new URL(window.location);
|
||||
const highlight =
|
||||
localStorage.getItem("sphinx_highlight_terms")
|
||||
|| url.searchParams.get("highlight")
|
||||
|| "";
|
||||
localStorage.removeItem("sphinx_highlight_terms");
|
||||
// Update history only if '?highlight' is present; otherwise it
|
||||
// clears text fragments (not set in window.location by the browser)
|
||||
if (url.searchParams.has("highlight")) {
|
||||
url.searchParams.delete("highlight");
|
||||
window.history.replaceState({}, "", url);
|
||||
}
|
||||
|
||||
// get individual terms from highlight string
|
||||
const terms = highlight
|
||||
.toLowerCase()
|
||||
.split(/\s+/)
|
||||
.filter((x) => x);
|
||||
if (terms.length === 0) return; // nothing to do
|
||||
|
||||
// There should never be more than one element matching "div.body"
|
||||
const divBody = document.querySelectorAll("div.body");
|
||||
const body = divBody.length ? divBody[0] : document.querySelector("body");
|
||||
window.setTimeout(() => {
|
||||
terms.forEach((term) => _highlightText(body, term, "highlighted"));
|
||||
}, 10);
|
||||
|
||||
const searchBox = document.getElementById("searchbox");
|
||||
if (searchBox === null) return;
|
||||
searchBox.appendChild(
|
||||
document
|
||||
.createRange()
|
||||
.createContextualFragment(
|
||||
'<p class="highlight-link">'
|
||||
+ '<a href="javascript:SphinxHighlight.hideSearchWords()">'
|
||||
+ _("Hide Search Matches")
|
||||
+ "</a></p>",
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to hide the search marks again
|
||||
*/
|
||||
hideSearchWords: () => {
|
||||
document
|
||||
.querySelectorAll("#searchbox .highlight-link")
|
||||
.forEach((el) => el.remove());
|
||||
document
|
||||
.querySelectorAll("span.highlighted")
|
||||
.forEach((el) => el.classList.remove("highlighted"));
|
||||
localStorage.removeItem("sphinx_highlight_terms");
|
||||
},
|
||||
|
||||
initEscapeListener: () => {
|
||||
// only install a listener if it is really needed
|
||||
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
|
||||
|
||||
document.addEventListener("keydown", (event) => {
|
||||
// bail for input elements
|
||||
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
|
||||
return;
|
||||
// bail with special keys
|
||||
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
|
||||
return;
|
||||
if (
|
||||
DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
|
||||
&& event.key === "Escape"
|
||||
) {
|
||||
SphinxHighlight.hideSearchWords();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
_ready(() => {
|
||||
/* Do not call highlightSearchWords() when we are on the search page.
|
||||
* It will highlight words from the *previous* search query.
|
||||
*/
|
||||
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
|
||||
SphinxHighlight.initEscapeListener();
|
||||
});
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
.wy-nav-content {
|
||||
max-width: none;
|
||||
}
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>archinstall.Installer — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="prev" title="Python Plugins" href="plugins.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">archinstall.Installer</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="archinstall-installer">
|
||||
<span id="id1"></span><h1>archinstall.Installer<a class="headerlink" href="#archinstall-installer" title="Link to this heading"></a></h1>
|
||||
<p>The installer is the main class for accessing an installation-instance.
|
||||
You can look at this class as the installation you have or will perform.</p>
|
||||
<p>Anything related to <strong>inside</strong> the installation, will be found in this class.</p>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="plugins.html" class="btn btn-neutral float-left" title="Python Plugins" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Python Plugins — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="archinstall.Installer" href="Installer.html" />
|
||||
<link rel="prev" title="Python module" href="../examples/python.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Python Plugins</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#plugin-parameter"><code class="docutils literal notranslate"><span class="pre">--plugin</span></code> parameter</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#plugin-discovery">Plugin Discovery</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#what-s-supported">What’s supported?</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#how-does-it-work">How does it work?</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#writing-your-own">Writing your own?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Python Plugins</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="python-plugins">
|
||||
<span id="archinstall-plugins"></span><h1>Python Plugins<a class="headerlink" href="#python-plugins" title="Link to this heading"></a></h1>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">archinstall</span></code> supports plugins via two methods.</p>
|
||||
<p>First method is directly via the <code class="docutils literal notranslate"><span class="pre">--plugin</span></code> parameter when running as a CLI tool. This will load a specific plugin locally or remotely via a path.</p>
|
||||
<p>The second method is via Python’s built in <a class="reference external" href="https://packaging.python.org/en/latest/specifications/entry-points/">plugin discovery</a> using <a class="reference external" href="https://docs.python.org/3/library/importlib.metadata.html#entry-points">entry points</a> categorized as <code class="docutils literal notranslate"><span class="pre">archinstall.plugin</span></code>.</p>
|
||||
<section id="plugin-parameter">
|
||||
<h2><code class="docutils literal notranslate"><span class="pre">--plugin</span></code> parameter<a class="headerlink" href="#plugin-parameter" title="Link to this heading"></a></h2>
|
||||
<p>The parameter has the benefit of being stored in the <code class="docutils literal notranslate"><span class="pre">--conf</span></code> state, meaning when re-running an installation — the plugin will automatically be loaded.
|
||||
It’s limitation is that it requires an initial path to be known and written and be cumbersome.</p>
|
||||
</section>
|
||||
<section id="plugin-discovery">
|
||||
<h2>Plugin Discovery<a class="headerlink" href="#plugin-discovery" title="Link to this heading"></a></h2>
|
||||
<p>This method allows for multiple plugins to be loaded with the drawback that they have to be installed beforehand on the system running <code class="docutils literal notranslate"><span class="pre">archinstall</span></code>.
|
||||
This mainly targets those who build their own ISO’s and package specific setups for their needs.</p>
|
||||
</section>
|
||||
<section id="what-s-supported">
|
||||
<h2>What’s supported?<a class="headerlink" href="#what-s-supported" title="Link to this heading"></a></h2>
|
||||
<p>Currently the documentation for this is scarse. Until that is resolved, the best way to find supported features is to search the source code for <a class="reference external" href="https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code">plugin.on_</a> as this will give a clear indication of which calls are made to plugins.</p>
|
||||
</section>
|
||||
<section id="how-does-it-work">
|
||||
<h2>How does it work?<a class="headerlink" href="#how-does-it-work" title="Link to this heading"></a></h2>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">archinstall</span></code> plugins use a discovery-driven approach where plugins are queried for certain functions.
|
||||
As an example, if a plugin has the following function:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">on_pacstrap</span><span class="p">(</span><span class="o">*</span><span class="n">packages</span><span class="p">):</span>
|
||||
<span class="o">...</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The function <code class="code docutils literal notranslate"><span class="pre">archinstall.Pacman().strap(["some</span> <span class="pre">packages"])</span></code> is hardcoded to iterate plugins and look for <code class="code docutils literal notranslate"><span class="pre">on_pacstrap</span></code> in the plugin.
|
||||
If the function exists, <code class="code docutils literal notranslate"><span class="pre">.strap()</span></code> will call the plugin’s function and replace the initial package list with the result from the plugin.</p>
|
||||
<p>The best way to document these calls is currently undecided, as it’s hard to document this behavior dynamically.</p>
|
||||
</section>
|
||||
<section id="writing-your-own">
|
||||
<h2>Writing your own?<a class="headerlink" href="#writing-your-own" title="Link to this heading"></a></h2>
|
||||
<p>The simplest way currently is to look at a reference implementation or the community. Two of these are:</p>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/torxed/archinstall-aur">torxed/archinstall-aur</a></p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/phisch/archinstall-aur">phisch/archinstall-aur</a></p></li>
|
||||
</ul>
|
||||
<p>And search for <a class="reference external" href="https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code">plugin.on_</a> in the code base to find what <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> will look for. PR’s are welcome to widen the support for this.</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../examples/python.html" class="btn btn-neutral float-left" title="Python module" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="Installer.html" class="btn btn-neutral float-right" title="archinstall.Installer" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Custom Commands — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<link href="../../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Custom Commands</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="custom-commands">
|
||||
<span id="id1"></span><h1>Custom Commands<a class="headerlink" href="#custom-commands" title="Link to this heading"></a></h1>
|
||||
<p>Custom commands is a configuration entry that allows for executing custom commands post-installation.
|
||||
The commands are executed with <a class="reference external" href="https://man.archlinux.org/man/extra/arch-install-scripts/arch-chroot.8.en">arch-chroot</a>.</p>
|
||||
<p>The option takes a list of arguments, an example is:</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"custom_commands"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"hostname new-hostname"</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The following example will set a new hostname in the installed system.
|
||||
The example is just to illustrate that the command is not run in the ISO but inside the installed system after the base system is installed.</p>
|
||||
<p>More examples can be found in the code repository under <a class="reference external" href="https://github.com/archlinux/archinstall/tree/e6344f93f7e476d05bbcd642f2ed91fdde545870/examples">examples/</a></p>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,360 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Disk Configuration — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<link href="../../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Disk Configuration</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="disk-configuration">
|
||||
<span id="disk-config"></span><h1>Disk Configuration<a class="headerlink" href="#disk-configuration" title="Link to this heading"></a></h1>
|
||||
<p>There are only three modes in the <code class="docutils literal notranslate"><span class="pre">disk_config</span></code> option. They are described in more detail below.</p>
|
||||
<section id="leave-as-is">
|
||||
<h2>“Leave as is”<a class="headerlink" href="#leave-as-is" title="Link to this heading"></a></h2>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"config_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"pre_mounted_config"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/mnt/archinstall"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This mode will not perform any partitioning what so ever.
|
||||
Instead it relies on what’s mounted manually by the user under <code class="docutils literal notranslate"><span class="pre">/mnt/archinstall</span></code>.</p>
|
||||
<p>Given the following disk example:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/mnt/archinstall (/dev/sda2)
|
||||
├── boot (/dev/sda1)
|
||||
└── home (/dev/sda3)
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Running <code class="docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">--conf</span> <span class="pre">your.json</span> <span class="pre">--silent</span></code> where the above JSON is configured. The disk will be left alone — and a working system will be installed to the above folders and mountpoints will be translated into the installed system.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Some disk layouts can be too complicated to detect, such as RAID setups. Please do report those setups on the <a class="reference external" href="https://github.com/archlinux/archinstall">Issue Tracker</a> so we can support them.</p>
|
||||
</div>
|
||||
</section>
|
||||
<section id="best-effort">
|
||||
<h2>Best Effort<a class="headerlink" href="#best-effort" title="Link to this heading"></a></h2>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>This mode will wipe data!</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Note that this options is similar to the manual partitioning but is generated through the menu system! And the best effort layout might deviate slightly from some wiki guidelines in order to facilitate some optional configurations at a later stage.</p>
|
||||
</div>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"disk_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"config_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"default_layout"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"device_modifications"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"device"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/dev/sda"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"wipe"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"partitions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"..."</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This mode will attempt to configure a sane default layout on the selected disks.
|
||||
Based on the chosen filesystem, and potential optional settings for said filesystem — different default layouts will be provided.</p>
|
||||
</section>
|
||||
<section id="manual-partitioning">
|
||||
<h2>Manual Partitioning<a class="headerlink" href="#manual-partitioning" title="Link to this heading"></a></h2>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"disk_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"config_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"manual_partitioning"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"device_modifications"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"filesystem struct"</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Manual partitioning is the most complex one of the three. It offers you near endless flexibility of how to partition your disk. It integrates against <a class="reference external" href="https://github.com/dcantrell/pyparted">pyparted</a> and some control logic in <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> that deals with creating things like subvolumes and compression.</p>
|
||||
<p>Sizes are by default <code class="docutils literal notranslate"><span class="pre">sector</span></code> units, but other units are supported.</p>
|
||||
<p>The options supplied to <code class="docutils literal notranslate"><span class="pre">manual_partitioning</span></code> are dictionary definitions, where the following parameters must exist:</p>
|
||||
<table class="docutils align-default" id="id1">
|
||||
<caption><span class="caption-text">JSON options</span><a class="headerlink" href="#id1" title="Link to this table"></a></caption>
|
||||
<colgroup>
|
||||
<col style="width: 15.0%" />
|
||||
<col style="width: 15.0%" />
|
||||
<col style="width: 65.0%" />
|
||||
<col style="width: 5.0%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="row-odd"><th class="head"><p>Key</p></th>
|
||||
<th class="head"><p>Value(s)</p></th>
|
||||
<th class="head"><p>Description</p></th>
|
||||
<th class="head"><p>Required</p></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="row-even"><td><p>device</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p></td>
|
||||
<td><p>Which block-device to format</p></td>
|
||||
<td><p>yes</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>partitions</p></td>
|
||||
<td><p>[ {key: val} ]</p></td>
|
||||
<td><p>The data describing the change/addition in a partition</p></td>
|
||||
<td><p>yes</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>wipe</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">bool</span></code></p></td>
|
||||
<td><p>clear the disk before adding any partitions</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Each partition definition heavily relies on what filesystem is used.
|
||||
Below follow two of the more common filesystems, anything else will best be described by running <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> to generate a desired configuration for the desired filesystem type — and copy the relevant parts for permanent configurations.</p>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>Important to note that the units and positions in the examples below — are highly user specific!</p>
|
||||
</div>
|
||||
<section id="fat32">
|
||||
<h3>FAT32<a class="headerlink" href="#fat32" title="Link to this heading"></a></h3>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"btrfs"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"flags"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"boot"</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"fs_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fat32"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">99982592</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"mount_options"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/boot"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"obj_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"369f31a8-2781-4d6b-96e7-75680552b7c9"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"start"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sectors"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"create"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"primary"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>The <code class="docutils literal notranslate"><span class="pre">Boot</span></code> flag will make <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> automatically set the correct ESP partition GUID if the system is booted with <code class="docutils literal notranslate"><span class="pre">EFI</span></code> support. The GUID will then be set to <code class="docutils literal notranslate"><span class="pre">C12A7328-F81F-11D2-BA4B-00A0C93EC93B</span></code>.</p>
|
||||
</div>
|
||||
</section>
|
||||
<section id="ext4">
|
||||
<h3>EXT4<a class="headerlink" href="#ext4" title="Link to this heading"></a></h3>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"btrfs"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"flags"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"fs_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ext4"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">15805127360</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"mount_options"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"obj_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3e75d045-21a4-429d-897e-8ec19a006e8b"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"start"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">16106127360</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"MB"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">301</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"create"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"primary"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="btrfs">
|
||||
<h3>BTRFS<a class="headerlink" href="#btrfs" title="Link to this heading"></a></h3>
|
||||
<p>The BTRFS filesystem is inherently more complicated, thus the options are a bit more involved.
|
||||
This example contains both subvolumes and compression.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Note that the <code class="docutils literal notranslate"><span class="pre">"mountpoint":</span> <span class="pre">null</span></code> is used for the overall partition, and instead individual subvolumes have mountpoints set.</p>
|
||||
</div>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"btrfs"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/home"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@home"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/var/log"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@log"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/var/cache/pacman/pkg"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@pkg"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"dev_path"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"flags"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"fs_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"btrfs"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"mount_options"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"compress=zstd"</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"obj_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"d712357f-97cc-40f8-a095-24ff244d4539"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">15568207872</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"start"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"MiB"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">513</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"create"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"primary"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Disk Encryption — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<link href="../../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Disk Encryption</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="disk-encryption">
|
||||
<span id="id1"></span><h1>Disk Encryption<a class="headerlink" href="#disk-encryption" title="Link to this heading"></a></h1>
|
||||
<p>Disk encryption consists of a top level entry in the user configuration.</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"disk_encryption"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"encryption_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"luks"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"partitions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"d712357f-97cc-40f8-a095-24ff244d4539"</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The <code class="docutils literal notranslate"><span class="pre">UID</span></code> in the <code class="docutils literal notranslate"><span class="pre">partitions</span></code> list is an internal reference to the <code class="docutils literal notranslate"><span class="pre">obj_id</span></code> in the <a class="reference internal" href="disk_config.html#disk-config"><span class="std std-ref">Disk Configuration</span></a> entries.</p>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,211 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Python module — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Python Plugins" href="../archinstall/plugins.html" />
|
||||
<link rel="prev" title="Python library" href="../installing/python.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Python module</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#pre-requisites">Pre-requisites</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#creating-a-script">Creating a script</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Python module</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="python-module">
|
||||
<span id="examples-python"></span><h1>Python module<a class="headerlink" href="#python-module" title="Link to this heading"></a></h1>
|
||||
<p>Archinstall supports running in <a class="reference external" href="https://docs.python.org/3/library/__main__.html">module mode</a>.
|
||||
The way the library is invoked in module mode is limited to executing scripts under the <a class="reference external" href="https://github.com/archlinux/archinstall/tree/master/archinstall/scripts">scripts</a> folder.</p>
|
||||
<p>It’s therefore important to place any script or profile you wish to invoke in the examples folder prior to building and installing.</p>
|
||||
<section id="pre-requisites">
|
||||
<h2>Pre-requisites<a class="headerlink" href="#pre-requisites" title="Link to this heading"></a></h2>
|
||||
<p>We’ll assume you’ve followed the <a class="reference internal" href="../installing/python.html#installing-python-manual"><span class="std std-ref">Install using source code</span></a> method.
|
||||
Before actually installing the library, you will need to place your custom installer-scripts under <a class="reference external" href="https://github.com/archlinux/archinstall/tree/master/archinstall/scripts">scripts</a> as a python file.</p>
|
||||
<p>More on how you create these in the next section.</p>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>This is subject to change in the future as this method is currently a bit stiff. The script path will become a parameter. But for now, this is by design.</p>
|
||||
</div>
|
||||
</section>
|
||||
<section id="creating-a-script">
|
||||
<h2>Creating a script<a class="headerlink" href="#creating-a-script" title="Link to this heading"></a></h2>
|
||||
<p>Lets create a <cite>test_installer</cite> - installer as an example. This is assuming that the folder <cite>./archinstall</cite> is a git-clone of the main repo.
|
||||
We begin by creating “<a class="reference external" href="https://github.com/archlinux/archinstall/tree/master/archinstall/scripts">scripts</a><code class="code docutils literal notranslate"><span class="pre">/test_installer.py</span></code>”. The placement here is important later.</p>
|
||||
<p>This script can now already be called using <code class="code docutils literal notranslate"><span class="pre">python</span> <span class="pre">-m</span> <span class="pre">archinstall</span> <span class="pre">--script</span> <span class="pre">test_installer</span></code> after a successful installation of the library itself.
|
||||
But the script won’t do much. So we’ll do something simple like list all the hard drives as an example.</p>
|
||||
<p>To do this, we’ll begin by importing <code class="code docutils literal notranslate"><span class="pre">archinstall</span></code> in our “<a class="reference external" href="https://github.com/archlinux/archinstall/tree/master/archinstall/scripts">scripts</a><code class="code docutils literal notranslate"><span class="pre">/test_installer.py</span></code>” and call a function within <code class="docutils literal notranslate"><span class="pre">archinstall</span></code>.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">archinstall.lib.disk.device_handler</span><span class="w"> </span><span class="kn">import</span> <span class="n">device_handler</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pprint</span><span class="w"> </span><span class="kn">import</span> <span class="n">pprint</span>
|
||||
|
||||
<span class="n">pprint</span><span class="p">(</span><span class="n">device_handler</span><span class="o">.</span><span class="n">devices</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Now, go ahead and reference the <a class="reference internal" href="../installing/python.html#installing-python-manual"><span class="std std-ref">Install using source code</span></a> installation method.
|
||||
After running <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-m</span> <span class="pre">archinstall</span> <span class="pre">test_installer</span></code> it should print something that looks like:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>[
|
||||
BDevice(
|
||||
disk=<parted.disk.Disk object at 0x7fbe17156050>,
|
||||
device_info=_DeviceInfo(
|
||||
model='PC801 NVMe SK hynix 512GB',
|
||||
path=PosixPath('/dev/nvme0n1'),
|
||||
type='nvme',
|
||||
total_size=Size(value=512110190592, unit=<Unit.B: 1>,
|
||||
sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
free_space_regions=[
|
||||
<archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4250>,
|
||||
<archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4c50>,
|
||||
<archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4a10>],
|
||||
sector_size=SectorSize(value=512, unit=<Unit.B: 1>),
|
||||
read_only=False,
|
||||
dirty=False
|
||||
),
|
||||
partition_infos=[
|
||||
_PartitionInfo(
|
||||
partition=<parted.partition.Partition object at 0x7fbe166c4a90>,
|
||||
name='primary',
|
||||
type=<PartitionType.PRIMARY: 'primary'>,
|
||||
fs_type=<FilesystemType.FAT32: 'fat32'>,
|
||||
path='/dev/nvme0n1p1',
|
||||
start=Size(value=2048, unit=<Unit.sectors: 'sectors'>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
length=Size(value=535822336, unit=<Unit.B: 1>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
flags=[
|
||||
<PartitionFlag.BOOT: flag_id=1, alias=None>,
|
||||
<PartitionFlag.ESP: flag_id=18, alias=None>
|
||||
],
|
||||
partn=1,
|
||||
partuuid='a26be943-c193-41f4-9930-9341cf5f6b19',
|
||||
uuid='6EE9-2C00',
|
||||
disk=<parted.disk.Disk object at 0x7fbe17156050>,
|
||||
mountpoints=[
|
||||
PosixPath('/boot')
|
||||
],
|
||||
btrfs_subvol_infos=[]
|
||||
),
|
||||
_PartitionInfo(...)
|
||||
]
|
||||
)
|
||||
]
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>That means your script is in the right place, and <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> is working as intended.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Most calls, including the one above requires <a class="reference external" href="https://en.wikipedia.org/wiki/Superuser">root</a> privileges.</p>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../installing/python.html" class="btn btn-neutral float-left" title="Python library" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="../archinstall/plugins.html" class="btn btn-neutral float-right" title="Python Plugins" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="./">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Index — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link href="_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Index</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
|
||||
<h1 id="index">Index</h1>
|
||||
|
||||
<div class="genindex-jumpbox">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="./">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Index — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="#" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link href="_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Index</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
|
||||
<h1 id="index">Index</h1>
|
||||
|
||||
<p>Index pages by letter:</p>
|
||||
|
||||
<div class="genindex-jumpbox">
|
||||
<p></p>
|
||||
|
||||
<p><a href="genindex-all.html"><strong>Full index on one page</strong>
|
||||
(can be huge)</a></p>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Discord — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Python library" href="../installing/python.html" />
|
||||
<link rel="prev" title="Report Issues & Bugs" href="report_bug.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Discord</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="discord">
|
||||
<span id="help-discord"></span><h1>Discord<a class="headerlink" href="#discord" title="Link to this heading"></a></h1>
|
||||
<p>There’s a discord channel which is frequented by some <a class="reference external" href="https://github.com/archlinux/archinstall/graphs/contributors">contributors</a>.</p>
|
||||
<p>To join the server, head over to <a class="reference external" href="https://discord.gg/aDeMffrxNg">https://discord.gg/aDeMffrxNg</a> and join in.
|
||||
There’s not many rules other than common sense and to treat others with respect. The general chat is for off-topic things as well.</p>
|
||||
<p>There’s the <code class="docutils literal notranslate"><span class="pre">@Party</span> <span class="pre">Animals</span></code> role if you want notifications of new releases which is posted in the <code class="docutils literal notranslate"><span class="pre">#Release</span> <span class="pre">Party</span></code> channel.
|
||||
Another thing is the <code class="docutils literal notranslate"><span class="pre">@Contributors</span></code> role can be activated by contributors by writing <code class="docutils literal notranslate"><span class="pre">!verify</span></code> and follow the verification process.</p>
|
||||
<p>Hop in, we hope to see you there! : )</p>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="report_bug.html" class="btn btn-neutral float-left" title="Report Issues & Bugs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="../installing/python.html" class="btn btn-neutral float-right" title="Python library" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,227 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Known Issues — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Report Issues & Bugs" href="report_bug.html" />
|
||||
<link rel="prev" title="Guided installation" href="../installing/guided.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Known Issues</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#waiting-for-time-sync-2144">Waiting for time sync #2144</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#waiting-for-arch-linux-keyring-sync-archlinux-keyring-wkd-sync-to-complete-2679">Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete. #2679</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#missing-nvidia-proprietary-driver-2002">Missing Nvidia Proprietary Driver #2002</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#arm-32bit-and-other-cpu-types-error-out-1686-2185">ARM, 32bit and other CPU types error out #1686, #2185</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#keyring-is-out-of-date-2213">Keyring is out of date #2213</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#aur-packages">AUR packages</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Known Issues</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="known-issues">
|
||||
<span id="help-known-issues"></span><h1>Known Issues<a class="headerlink" href="#known-issues" title="Link to this heading"></a></h1>
|
||||
<p>Some issues are out of the <a class="reference external" href="https://github.com/archlinux/archinstall/">archinstall</a> projects scope, and the ones we know of are listed below.</p>
|
||||
<section id="waiting-for-time-sync-2144">
|
||||
<span id="waiting-for-time-sync"></span><h2>Waiting for time sync <a class="reference external" href="https://github.com/archlinux/archinstall/issues/2144">#2144</a><a class="headerlink" href="#waiting-for-time-sync-2144" title="Link to this heading"></a></h2>
|
||||
<p>The usual root cause of this is the network topology.
|
||||
More specifically <a class="reference external" href="https://github.com/archlinux/archinstall/blob/e6344f93f7e476d05bbcd642f2ed91fdde545870/archinstall/lib/installer.py#L136">timedatectl show</a> cannot perform a proper time sync against the default servers.</p>
|
||||
<p>Restarting <code class="docutils literal notranslate"><span class="pre">systemd-timesyncd.service</span></code> might work but most often you need to configure <code class="docutils literal notranslate"><span class="pre">/etc/systemd/timesyncd.conf</span></code> to match your network design.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>If you know your time is correct on the machine, you can run <code class="docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">--skip-ntp</span></code> to ignore time sync.</p>
|
||||
</div>
|
||||
</section>
|
||||
<section id="waiting-for-arch-linux-keyring-sync-archlinux-keyring-wkd-sync-to-complete-2679">
|
||||
<h2>Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete. <a class="reference external" href="https://github.com/archlinux/archinstall/issues/2679">#2679</a><a class="headerlink" href="#waiting-for-arch-linux-keyring-sync-archlinux-keyring-wkd-sync-to-complete-2679" title="Link to this heading"></a></h2>
|
||||
<p>The <code class="docutils literal notranslate"><span class="pre">archlinux-keyring-wkd-sync.service</span></code> or <code class="docutils literal notranslate"><span class="pre">archlinux-keyring-wkd-sync.timer</span></code> can hang “indefinitely” sometimes.
|
||||
This is usually due to an inability to reach the key servers, or a slow connection towards key servers.</p>
|
||||
<p>The script <code class="docutils literal notranslate"><span class="pre">/usr/bin/archlinux-keyring-wkd-sync</span></code> can be run manually, to verify if it’s executing slowly or not.</p>
|
||||
<p>If <code class="docutils literal notranslate"><span class="pre">systemctl</span> <span class="pre">show</span> <span class="pre">--property=ActiveEnterTimestamp</span> <span class="pre">--no-pager</span> <span class="pre">archlinux-keyring-wkd-sync.timer</span></code> shows nothing, it means the built-in sync never finished. Likewise <code class="docutils literal notranslate"><span class="pre">systemctl</span> <span class="pre">show</span> <span class="pre">--no-pager</span> <span class="pre">-p</span> <span class="pre">SubState</span> <span class="pre">--value</span> <span class="pre">archlinux-keyring-wkd-sync.service</span></code> most likely shows <code class="docutils literal notranslate"><span class="pre">dead</span></code>, which means the service never completed.</p>
|
||||
<p>To fix this, try the following:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>killall<span class="w"> </span>gpg-agent
|
||||
<span class="gp"># </span>rm<span class="w"> </span>-rf<span class="w"> </span>/etc/pacman.d/gnupg
|
||||
<span class="gp"># </span>pacman-key<span class="w"> </span>--init
|
||||
<span class="gp"># </span>pacman-key<span class="w"> </span>--populate
|
||||
<span class="gp"># </span>pacman<span class="w"> </span>-Sy<span class="w"> </span>archlinux-keyring
|
||||
<span class="gp"># </span>systemctl<span class="w"> </span>restart<span class="w"> </span>archlinux-keyring-wkd-sync.timer
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>If you know the ISO is the latest, and that you have valid GPG keys, try <code class="docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">--skip-wkd</span></code> to ignore waiting for the sync.</p>
|
||||
<p>If you skip WKD sync, you might end up with:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">> error: archinstall: signature from "Anton Hvornum (Torxed) <torxed@archlinux.org>" is unknown trust</span>
|
||||
<span class="go">> :: File /var/cache/pacman/pkg/archinstall-1.2.3-4-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).</span>
|
||||
<span class="go">> Do you want to delete it? [Y/n]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="missing-nvidia-proprietary-driver-2002">
|
||||
<h2>Missing Nvidia Proprietary Driver <a class="reference external" href="https://github.com/archlinux/archinstall/issues/2002">#2002</a><a class="headerlink" href="#missing-nvidia-proprietary-driver-2002" title="Link to this heading"></a></h2>
|
||||
<p>In some instances, the nvidia driver might not have all the necessary packages installed.
|
||||
This is due to the kernel selection and/or hardware setups requiring additional packages to work properly.</p>
|
||||
<p>A common workaround is to install the package <a class="reference external" href="https://archlinux.org/packages/core/x86_64/linux-headers/">linux-headers</a> and <a class="reference external" href="https://archlinux.org/packages/extra/x86_64/nvidia-dkms/">nvidia-dkms</a></p>
|
||||
</section>
|
||||
<section id="arm-32bit-and-other-cpu-types-error-out-1686-2185">
|
||||
<h2>ARM, 32bit and other CPU types error out <a class="reference external" href="https://github.com/archlinux/archinstall/issues/1686">#1686</a>, <a class="reference external" href="https://github.com/archlinux/archinstall/issues/2185">#2185</a><a class="headerlink" href="#arm-32bit-and-other-cpu-types-error-out-1686-2185" title="Link to this heading"></a></h2>
|
||||
<p>This is a bit of a catch-all known issue.
|
||||
Officially <a class="reference external" href="https://wiki.archlinux.org/title/Frequently_asked_questions#What_architectures_does_Arch_support?">x86_64</a> is only supported by Arch Linux.
|
||||
Hence little effort has been put into supporting other platforms.</p>
|
||||
<p>In theory, other architectures should work but small quirks might arise.</p>
|
||||
<p>PR’s are welcome but please be respectful of the delays in merging.
|
||||
Other fixes, issues or features will be prioritized for the above reasons.</p>
|
||||
</section>
|
||||
<section id="keyring-is-out-of-date-2213">
|
||||
<h2>Keyring is out of date <a class="reference external" href="https://github.com/archlinux/archinstall/issues/2213">#2213</a><a class="headerlink" href="#keyring-is-out-of-date-2213" title="Link to this heading"></a></h2>
|
||||
<p>Missing key-issues tend to be that the <a class="reference external" href="https://archlinux.org/packages/core/any/archlinux-keyring/">archlinux-keyring</a> package is out of date, usually as a result of an outdated ISO.
|
||||
There is an attempt from upstream to fix this issue, and it’s the <a class="reference external" href="https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/blob/7e672dad10652a80d1cc575d75cdb46442cd7f96/wkd_sync/archlinux-keyring-wkd-sync.service.in">archlinux-keyring-wkd-sync.service</a></p>
|
||||
<p>The service starts almost immediately during boot, and if network is not configured in time — the service will fail.
|
||||
Subsequently the <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> run might operate on an old keyring despite there being an update service for this.</p>
|
||||
<p>There is really no way to reliably over time work around this issue in <code class="docutils literal notranslate"><span class="pre">archinstall</span></code>.
|
||||
Instead, efforts to the upstream service should be considered the way forward. And/or keys not expiring between a sane amount of ISOs.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>The issue can happen on new ISO’s too even as little as a few days after release, as some keys might expire right after the keyring is <em>“burnt in”</em> to the ISO.</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Another common issue relating to the network not being configured, is that time might not be set correctly - resulting in the keyring not being able to update. See <a class="reference internal" href="#waiting-for-time-sync"><span class="std std-ref">Waiting for time sync #2144</span></a>.</p>
|
||||
</div>
|
||||
</section>
|
||||
<section id="aur-packages">
|
||||
<h2>AUR packages<a class="headerlink" href="#aur-packages" title="Link to this heading"></a></h2>
|
||||
<p>This is also a catch-all issue.
|
||||
<a class="reference external" href="https://wiki.archlinux.org/title/Arch_User_Repository#Updating_packages">AUR is unsupported</a>, and until that changes we cannot use AUR packages to solve feature requests in <code class="docutils literal notranslate"><span class="pre">archinstall</span></code>.</p>
|
||||
<p>This means that feature requests like supporting filesystems such as <a class="reference external" href="https://aur.archlinux.org/packages/zfs-linux">ZFS</a> can not be added, and issues cannot be solved by using AUR packages either.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>But in spirit of giving the community options, <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> supports <a class="reference internal" href="../archinstall/plugins.html#archinstall-plugins"><span class="std std-ref">Python Plugins</span></a>, which means you can run <code class="docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">--plugin</span> <span class="pre"><url></span></code> and source an AUR plugin.</p>
|
||||
<p><a class="reference external" href="https://github.com/torxed/archinstall-aur">torxed/archinstall-aur</a> is a reference implementation for plugins:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>archinstall<span class="w"> </span>--plugin<span class="w"> </span>https://archlinux.life/aur-plugin
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><a class="reference external" href="https://github.com/phisch/archinstall-aur">phisch/archinstall-aur</a> is another alternative:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>archinstall<span class="w"> </span>--plugin<span class="w"> </span>https://raw.githubusercontent.com/phisch/archinstall-aur/master/archinstall-aur.py
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>This will allow for unsupported usage of AUR during installation.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../installing/guided.html" class="btn btn-neutral float-left" title="Guided installation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="report_bug.html" class="btn btn-neutral float-right" title="Report Issues & Bugs" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Report Issues & Bugs — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Discord" href="discord.html" />
|
||||
<link rel="prev" title="Known Issues" href="known_issues.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Report Issues & Bugs</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#log-files">Log files</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Report Issues & Bugs</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="report-issues-bugs">
|
||||
<span id="help-issues"></span><h1>Report Issues & Bugs<a class="headerlink" href="#report-issues-bugs" title="Link to this heading"></a></h1>
|
||||
<p>Issues and bugs should be reported over at <a class="reference external" href="https://github.com/archlinux/archinstall/issues">https://github.com/archlinux/archinstall/issues</a>.</p>
|
||||
<p>General questions, enhancements and security issues can be reported over there too.
|
||||
For quick issues or if you need help, head over to the Discord server which has a help channel.</p>
|
||||
<section id="log-files">
|
||||
<h2>Log files<a class="headerlink" href="#log-files" title="Link to this heading"></a></h2>
|
||||
<p>When submitting a help ticket, please include the <code class="code docutils literal notranslate"><span class="pre">/var/log/archinstall/install.log</span></code>.
|
||||
It can be found both on the live ISO but also in the installed filesystem if the base packages were strapped in.</p>
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Tip</p>
|
||||
<div class="line-block">
|
||||
<div class="line">An easy way to submit logs is <code class="docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">share-log</span></code>, which uploads <code class="docutils literal notranslate"><span class="pre">install.log</span></code> to paste.rs and prints a shareable URL.</div>
|
||||
<div class="line">Use caution when submitting other log files, but <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> pledges to keep <code class="docutils literal notranslate"><span class="pre">install.log</span></code> safe for posting publicly!</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>There are additional log files under <code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/</span></code> that can be useful:</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/user_configuration.json</span></code> - Stores most of the guided answers in the installer</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/user_credentials.json</span></code> - Stores any usernames or passwords, can be passed to <code class="docutils literal notranslate"><span class="pre">--creds</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/user_disk_layouts.json</span></code> - Stores the chosen disks and their layouts</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/install.log</span></code> - A log file over what steps were taken by archinstall</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/cmd_history.txt</span></code> - A complete command history, command by command in order</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/cmd_output.txt</span></code> - A raw output from all the commands that were executed by archinstall</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>We only try to guarantee that <code class="docutils literal notranslate"><span class="pre">/var/log/archinstall/install.log</span></code> is free from sensitive information.
|
||||
Any other log file should be pasted with <strong>utmost care</strong>!</p>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="known_issues.html" class="btn btn-neutral float-left" title="Known Issues" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="discord.html" class="btn btn-neutral float-right" title="Discord" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="./">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>archinstall Documentation — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Guided installation" href="installing/guided.html" />
|
||||
<link href="_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="#" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="#">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="#" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">archinstall Documentation</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="archinstall-documentation">
|
||||
<h1>archinstall Documentation<a class="headerlink" href="#archinstall-documentation" title="Link to this heading"></a></h1>
|
||||
<p><strong>archinstall</strong> is a library which can be used to install Arch Linux.
|
||||
The library comes packaged with different pre-configured installers, such as the default <a class="reference internal" href="installing/guided.html#guided"><span class="std std-ref">Guided installation</span></a> installer.</p>
|
||||
<p>Some of the features of Archinstall are:</p>
|
||||
<ul class="simple">
|
||||
<li><p><strong>Context friendly.</strong> The library always executes calls in sequential order to ensure installation-steps don’t overlap or execute in the wrong order. It also supports <em>(and uses)</em> context wrappers to ensure cleanup and final tasks such as <code class="docutils literal notranslate"><span class="pre">mkinitcpio</span></code> are called when needed.</p></li>
|
||||
<li><p><strong>Full transparency</strong> Logs and insights can be found at <code class="docutils literal notranslate"><span class="pre">/var/log/archinstall</span></code> both in the live ISO and partially on the installed system.</p></li>
|
||||
<li><p><strong>Accessibility friendly</strong> Archinstall works with <code class="docutils literal notranslate"><span class="pre">espeakup</span></code> and other accessibility tools thanks to the use of a TUI.</p></li>
|
||||
</ul>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/known_issues.html">Known Issues</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="help/known_issues.html#waiting-for-time-sync-2144">Waiting for time sync #2144</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="help/known_issues.html#waiting-for-arch-linux-keyring-sync-archlinux-keyring-wkd-sync-to-complete-2679">Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete. #2679</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="help/known_issues.html#missing-nvidia-proprietary-driver-2002">Missing Nvidia Proprietary Driver #2002</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="help/known_issues.html#arm-32bit-and-other-cpu-types-error-out-1686-2185">ARM, 32bit and other CPU types error out #1686, #2185</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="help/known_issues.html#keyring-is-out-of-date-2213">Keyring is out of date #2213</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="help/known_issues.html#aur-packages">AUR packages</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/report_bug.html">Report Issues & Bugs</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="help/report_bug.html#log-files">Log files</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/python.html">Python library</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="installing/python.html#installing-with-pacman">Installing with pacman</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="installing/python.html#installing-from-pypi">Installing from PyPI</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="installing/python.html#install-using-source-code">Install using source code</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/python.html">Python module</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/python.html#pre-requisites">Pre-requisites</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples/python.html#creating-a-script">Creating a script</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/plugins.html">Python Plugins</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="archinstall/plugins.html#plugin-parameter"><code class="docutils literal notranslate"><span class="pre">--plugin</span></code> parameter</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="archinstall/plugins.html#plugin-discovery">Plugin Discovery</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="archinstall/plugins.html#what-s-supported">What’s supported?</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="archinstall/plugins.html#how-does-it-work">How does it work?</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="archinstall/plugins.html#writing-your-own">Writing your own?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="installing/guided.html" class="btn btn-neutral float-right" title="Guided installation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,554 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Guided installation — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Known Issues" href="../help/known_issues.html" />
|
||||
<link rel="prev" title="archinstall Documentation" href="../index.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Guided installation</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#running-the-guided-installation">Running the guided installation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#config"><code class="docutils literal notranslate"><span class="pre">--config</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#config-url"><code class="docutils literal notranslate"><span class="pre">--config-url</span></code></a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#example-usage">Example usage</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#config-options"><code class="docutils literal notranslate"><span class="pre">--config</span></code> options</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#options-for-creds">Options for <code class="docutils literal notranslate"><span class="pre">--creds</span></code></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Guided installation</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="guided-installation">
|
||||
<span id="guided"></span><h1>Guided installation<a class="headerlink" href="#guided-installation" title="Link to this heading"></a></h1>
|
||||
<p>Archinstall ships with a pre-programmed <a class="reference external" href="https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py">Guided Installer</a> guiding you through the mandatory steps as well as some optional configurations that can be done.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Other pre-programmed scripts can be invoked by executing <code class="code docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">--script</span> <span class="pre"><script></span></code> <em>(without .py)</em>. To see a complete list of scripts, run <code class="code docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">--script</span> <span class="pre">list</span></code> or check the source code <a class="reference external" href="https://github.com/archlinux/archinstall/tree/master/archinstall/scripts">scripts</a> directory.</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>It’s recommended to run <code class="docutils literal notranslate"><span class="pre">archinstall</span></code> from the official Arch Linux ISO.</p>
|
||||
</div>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>The installer will not configure WiFi before the installation begins. You need to read up on <a class="reference external" href="https://wiki.archlinux.org/index.php/Network_configuration">Arch Linux networking</a> before you continue.</p>
|
||||
</div>
|
||||
<section id="running-the-guided-installation">
|
||||
<h2>Running the guided installation<a class="headerlink" href="#running-the-guided-installation" title="Link to this heading"></a></h2>
|
||||
<p>To start the installer, run the following in the latest Arch Linux ISO:</p>
|
||||
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>archinstall
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Since the <a class="reference external" href="https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py">Guided Installer</a> is the default script, this is the equivalent of running <code class="code docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">guided</span></code></p>
|
||||
<p>The guided installation also supports installing with pre-configured answers to all the guided steps. This can be a quick and convenient way to re-run one or several installations.</p>
|
||||
<p>There are two configuration files, both are optional.</p>
|
||||
</section>
|
||||
<section id="config">
|
||||
<h2><code class="docutils literal notranslate"><span class="pre">--config</span></code><a class="headerlink" href="#config" title="Link to this heading"></a></h2>
|
||||
<p>This parameter takes a local <code class="code docutils literal notranslate"><span class="pre">.json</span></code> file as argument and contains the overall configuration and menu answers for the guided installer.</p>
|
||||
</section>
|
||||
<section id="config-url">
|
||||
<h2><code class="docutils literal notranslate"><span class="pre">--config-url</span></code><a class="headerlink" href="#config-url" title="Link to this heading"></a></h2>
|
||||
<p>This parameter takes a remote <code class="code docutils literal notranslate"><span class="pre">.json</span></code> file as argument and contains the overall configuration and menu answers for the guided installer.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>You can always get the latest options for this file with <code class="docutils literal notranslate"><span class="pre">archinstall</span> <span class="pre">--dry-run</span></code>, this executes the guided installer in a safe mode where no permanent actions will be taken on your system but simulate a run and save the configuration to disk.</p>
|
||||
</div>
|
||||
<section id="example-usage">
|
||||
<h3>Example usage<a class="headerlink" href="#example-usage" title="Link to this heading"></a></h3>
|
||||
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>archinstall<span class="w"> </span>--config<span class="w"> </span>config.json
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>archinstall<span class="w"> </span>--config-url<span class="w"> </span>https://domain.lan/config.json
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The contents of <code class="code docutils literal notranslate"><span class="pre">https://domain.lan/config.json</span></code>:</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"additional-repositories"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"archinstall-language"</span><span class="p">:</span><span class="w"> </span><span class="s2">"English"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"audio_config"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"bootloader_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"bootloader"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Systemd-boot"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"uki"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"removable"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"bootloader"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Systemd-boot"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"debug"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"disk_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"config_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"manual_partitioning"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"device_modifications"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"device"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/dev/sda"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"partitions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"btrfs"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"flags"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"boot"</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"fs_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fat32"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">99982592</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"mount_options"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/boot"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"obj_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"369f31a8-2781-4d6b-96e7-75680552b7c9"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"start"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sectors"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">34</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"create"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"primary"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"btrfs"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"flags"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"fs_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fat32"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">100000000</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"mount_options"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/efi"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"obj_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"13cf2c96-8b0f-4ade-abaa-c530be589aad"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"start"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">16106127360</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"MB"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"create"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"primary"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"btrfs"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"flags"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"fs_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ext4"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">15805127360</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"mount_options"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"mountpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"obj_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3e75d045-21a4-429d-897e-8ec19a006e8b"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"start"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">512</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"sector_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"total_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"B"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">16106127360</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"unit"</span><span class="p">:</span><span class="w"> </span><span class="s2">"MB"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">301</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"create"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"primary"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"wipe"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"disk_encryption"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"encryption_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"luks"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"partitions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"3e75d045-21a4-429d-897e-8ec19a006e8b"</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"hostname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"archlinux"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"kernels"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"linux"</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"locale_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"kb_layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"us"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"sys_enc"</span><span class="p">:</span><span class="w"> </span><span class="s2">"UTF-8"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"sys_lang"</span><span class="p">:</span><span class="w"> </span><span class="s2">"en_US"</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"mirror_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"custom_servers"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://mymirror.com/$repo/os/$arch"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"mirror_regions"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"Australia"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"http://archlinux.mirror.digitalpacific.com.au/$repo/os/$arch"</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"optional_repositories"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="s2">"testing"</span>
|
||||
<span class="w"> </span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="nt">"custom_repositories"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"myrepo"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://myrepo.com/$repo/os/$arch"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"sign_check"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Required"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"sign_option"</span><span class="p">:</span><span class="w"> </span><span class="s2">"TrustAll"</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
<span class="w"> </span><span class="nt">"network_config"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
||||
<span class="w"> </span><span class="nt">"no_pkg_lookups"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"ntp"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"offline"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"packages"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
||||
<span class="w"> </span><span class="nt">"parallel downloads"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"profile_config"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"save_config"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"script"</span><span class="p">:</span><span class="w"> </span><span class="s2">"guided"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"silent"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"swap"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"timezone"</span><span class="p">:</span><span class="w"> </span><span class="s2">"UTC"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2.6.0"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="config-options">
|
||||
<h3><code class="docutils literal notranslate"><span class="pre">--config</span></code> options<a class="headerlink" href="#config-options" title="Link to this heading"></a></h3>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>All key and value entries must conform to the JSON standard. Below is human readable examples with links, effectively breaking the syntax. Adapt the descriptions below to suit your needs and the JSON format.</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Scroll to the right in the table to see required options.</p>
|
||||
</div>
|
||||
<table class="docutils align-default" id="id1">
|
||||
<caption><span class="caption-text">JSON options</span><a class="headerlink" href="#id1" title="Link to this table"></a></caption>
|
||||
<colgroup>
|
||||
<col style="width: 15.0%" />
|
||||
<col style="width: 40.0%" />
|
||||
<col style="width: 40.0%" />
|
||||
<col style="width: 5.0%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="row-odd"><th class="head"><p>Key</p></th>
|
||||
<th class="head"><p>Value(s)</p></th>
|
||||
<th class="head"><p>Description</p></th>
|
||||
<th class="head"><p>Required</p></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="row-even"><td><p>additional-repositories</p></td>
|
||||
<td><p>[ <a class="reference external" href="https://wiki.archlinux.org/title/Official_repositories#multilib">multilib</a>, <a class="reference external" href="https://wiki.archlinux.org/title/Official_repositories#Testing_repositories">testing</a> ]</p></td>
|
||||
<td><p>Enables one or more of the testing and multilib repositories before proceeding with installation</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>archinstall-language</p></td>
|
||||
<td><p><a class="reference external" href="https://github.com/archlinux/archinstall/blob/master/archinstall/locales/languages.json">lang</a></p></td>
|
||||
<td><p>Sets the TUI language used <em>(make sure to use the ``lang`` value not the ``abbr``)</em></p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>audio_config</p></td>
|
||||
<td><p><a class="reference external" href="https://wiki.archlinux.org/title/PipeWire">pipewire</a>, <a class="reference external" href="https://wiki.archlinux.org/title/PulseAudio">pulseaudio</a></p></td>
|
||||
<td><p>Audioserver to be installed</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>bootloader_config</p></td>
|
||||
<td><p>{ bootloader: <a class="reference external" href="https://wiki.archlinux.org/title/Systemd-boot">Systemd-boot</a>, <a class="reference external" href="https://wiki.archlinux.org/title/GRUB">grub</a>, <a class="reference external" href="https://wiki.archlinux.org/title/Limine">limine</a>, uki: <code class="docutils literal notranslate"><span class="pre">true</span></code>/<code class="docutils literal notranslate"><span class="pre">false</span></code>, removable: <code class="docutils literal notranslate"><span class="pre">true</span></code>/<code class="docutils literal notranslate"><span class="pre">false</span></code> }</p></td>
|
||||
<td><p>Bootloader configuration. <code class="docutils literal notranslate"><span class="pre">bootloader</span></code> selects which bootloader to install <em>(grub/limine mandatory on BIOS)</em>. <code class="docutils literal notranslate"><span class="pre">uki</span></code> enables unified kernel images <em>(UEFI only, systemd-boot/limine only)</em>. <code class="docutils literal notranslate"><span class="pre">removable</span></code> installs to default removable media path /EFI/BOOT/ instead of NVRAM <em>(UEFI only, grub/limine only)</em></p></td>
|
||||
<td><p>Yes</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>debug</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
|
||||
<td><p>Enables debug output</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>disk_config</p></td>
|
||||
<td><p><em>Read more under</em> <a class="reference internal" href="../cli_parameters/config/disk_config.html#disk-config"><span class="std std-ref">Disk Configuration</span></a></p></td>
|
||||
<td><p>Contains the desired disk setup to be used during installation</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>disk_encryption</p></td>
|
||||
<td><p><em>Read more about under</em> <a class="reference internal" href="../cli_parameters/config/disk_encryption.html#disk-encryption"><span class="std std-ref">Disk Encryption</span></a></p></td>
|
||||
<td><p>Parameters for disk encryption applied on top of <code class="docutils literal notranslate"><span class="pre">disk_config</span></code></p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>hostname</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p></td>
|
||||
<td><p>A string defining your machines hostname on the network <em>(defaults to ``archinstall``)</em></p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>kernels</p></td>
|
||||
<td><p>[ <a class="reference external" href="https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels">linux</a>, <a class="reference external" href="https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels">linux-hardened</a>, <a class="reference external" href="https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels">linux-lts</a>, <a class="reference external" href="https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels">linux-rt</a>, <a class="reference external" href="https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels">linux-rt-lts</a>, <a class="reference external" href="https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels">linux-zen</a> ]</p></td>
|
||||
<td><p>Defines which kernels should be installed and setup in the boot loader options</p></td>
|
||||
<td><p>Yes</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>custom_commands</p></td>
|
||||
<td><p><em>Read more under</em> <a class="reference internal" href="../cli_parameters/config/custom_commands.html#custom-commands"><span class="std std-ref">Custom Commands</span></a></p></td>
|
||||
<td><p>Custom commands that will be run post-install chrooted inside the installed system</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>locale_config</p></td>
|
||||
<td><p>{kb_layout: <a class="reference external" href="https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration">lang</a>, sys_enc: <a class="reference external" href="https://wiki.archlinux.org/title/Locale">Character encoding</a>, sys_lang: <a class="reference external" href="https://wiki.archlinux.org/title/Locale">locale</a>}</p></td>
|
||||
<td><p>Defines the keyboard key map, system encoding and system locale</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>mirror_config</p></td>
|
||||
<td><p>{custom_mirrors: [ <a class="reference external" href="https://">https://</a>… ], mirror_regions: { “Worldwide”: [ “<a class="reference external" href="https://geo.mirror.pkgbuild.com/$repo/os/$arch">https://geo.mirror.pkgbuild.com/$repo/os/$arch</a>” ] } }</p></td>
|
||||
<td><p>Sets various mirrors <em>(defaults to ISO’s ``/etc/pacman.d/mirrors`` if not defined)</em></p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>network_config</p></td>
|
||||
<td><p><em>`see options under Network Configuration`</em></p></td>
|
||||
<td><p>Sets which type of <em>(if any)</em> network configuration should be used</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>no_pkg_lookups</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
|
||||
<td><p>Disabled package checking against <a class="reference external" href="https://archlinux.org/packages/">https://archlinux.org/packages/</a></p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>ntp</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
|
||||
<td><p>enables or disables <a class="reference external" href="https://wiki.archlinux.org/title/Network_Time_Protocol_daemon">NTP</a> during installation</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>offline</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
|
||||
<td><p>enables or disables certain online checks such as mirror reachability etc</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>packages</p></td>
|
||||
<td><p>[ <package1>, <package2>, … ]</p></td>
|
||||
<td><p>A list of packages to install during installation</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>parallel downloads</p></td>
|
||||
<td><p>0-∞</p></td>
|
||||
<td><p>sets a given number of parallel downloads to be used by <a class="reference external" href="https://wiki.archlinux.org/title/Pacman#Enabling_parallel_downloads">pacman</a></p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>profile_config</p></td>
|
||||
<td><p><em>`read more under the profiles section`</em></p></td>
|
||||
<td><p>Installs a given profile if defined</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>script</p></td>
|
||||
<td><p><a class="reference external" href="https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py">guided</a> <em>(default)</em>, <a class="reference external" href="https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/minimal.py">minimal</a>, <a class="reference external" href="https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/only_hdd.py">only_hdd</a>, When used to autorun an installation, this sets which script to autorun with</p></td>
|
||||
<td><p>No</p></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>silent</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
|
||||
<td><p>disables or enables user questions using the TUI</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>swap</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
|
||||
<td><p>enables or disables swap</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>timezone</p></td>
|
||||
<td><p><a class="reference external" href="https://wiki.archlinux.org/title/System_time#Time_zone">timezone</a></p></td>
|
||||
<td><p>sets a timezone for the installed system</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>If no entries are found in <code class="docutils literal notranslate"><span class="pre">disk_config</span></code>, archinstall guided installation will use whatever is mounted currently under <code class="docutils literal notranslate"><span class="pre">/mnt/archinstall</span></code> without performing any disk operations.</p>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="options-for-creds">
|
||||
<h2>Options for <code class="docutils literal notranslate"><span class="pre">--creds</span></code><a class="headerlink" href="#options-for-creds" title="Link to this heading"></a></h2>
|
||||
<p>Creds is a separate configuration file to separate normal options from more sensitive data like passwords.
|
||||
Below is an example of how to set the root password and below that are description of other values that can be set.</p>
|
||||
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"root_enc_password"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"SecretSanta2022"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<table class="docutils align-default" id="id2">
|
||||
<caption><span class="caption-text"><code class="docutils literal notranslate"><span class="pre">--creds</span></code> options</span><a class="headerlink" href="#id2" title="Link to this table"></a></caption>
|
||||
<colgroup>
|
||||
<col style="width: 25.0%" />
|
||||
<col style="width: 25.0%" />
|
||||
<col style="width: 40.0%" />
|
||||
<col style="width: 10.0%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="row-odd"><th class="head"><p>Key</p></th>
|
||||
<th class="head"><p>Values</p></th>
|
||||
<th class="head"><p>Description</p></th>
|
||||
<th class="head"><p>Required</p></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">!encryption-password</span></code></p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p></td>
|
||||
<td><p>Password to encrypt disk, not encrypted if password not provided</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">root_enc_password</span></code></p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p></td>
|
||||
<td><p>The root account password</p></td>
|
||||
<td><p>No</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">users</span></code></p></td>
|
||||
<td><div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"username"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<USERNAME>"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"enc_password"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<PASSWORD_HASH>"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"sudo"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><p>List of regular user credentials, see configuration for reference</p></td>
|
||||
<td><p>Maybe</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">users</span></code> is optional only if <code class="docutils literal notranslate"><span class="pre">root_enc_password</span></code> was set. <code class="docutils literal notranslate"><span class="pre">users</span></code> will be enforced otherwise and the minimum amount of users with sudo privileges required will be set to 1.</p>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../index.html" class="btn btn-neutral float-left" title="archinstall Documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="../help/known_issues.html" class="btn btn-neutral float-right" title="Known Issues" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Python library — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Python module" href="../examples/python.html" />
|
||||
<link rel="prev" title="Discord" href="../help/discord.html" />
|
||||
<link href="../_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Python library</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#installing-with-pacman">Installing with pacman</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#installing-from-pypi">Installing from PyPI</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#install-using-source-code">Install using source code</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Python library</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="python-library">
|
||||
<span id="installing-python"></span><h1>Python library<a class="headerlink" href="#python-library" title="Link to this heading"></a></h1>
|
||||
<p>Archinstall ships on <a class="reference external" href="https://pypi.org/">PyPi</a> as <a class="reference external" href="pypi.org/project/archinstall/">archinstall</a>.
|
||||
But the library can be installed manually as well.</p>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>These steps are not required if you want to use archinstall on the official Arch Linux ISO.</p>
|
||||
</div>
|
||||
<section id="installing-with-pacman">
|
||||
<h2>Installing with pacman<a class="headerlink" href="#installing-with-pacman" title="Link to this heading"></a></h2>
|
||||
<p>Archinstall is on the <a class="reference external" href="https://wiki.archlinux.org/index.php/Official_repositories">official repositories</a>.
|
||||
And it will also install archinstall as a python library.</p>
|
||||
<p>To install both the library and the archinstall script:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">pacman -S archinstall</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Alternatively, you can install only the library and not the helper executable using the <code class="docutils literal notranslate"><span class="pre">python-archinstall</span></code> package.</p>
|
||||
</section>
|
||||
<section id="installing-from-pypi">
|
||||
<h2>Installing from PyPI<a class="headerlink" href="#installing-from-pypi" title="Link to this heading"></a></h2>
|
||||
<p>The basic concept of PyPI applies using <cite>pip</cite>.</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">pip install archinstall</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="install-using-source-code">
|
||||
<span id="installing-python-manual"></span><h2>Install using source code<a class="headerlink" href="#install-using-source-code" title="Link to this heading"></a></h2>
|
||||
<p>You can also install using the source code.
|
||||
For sake of simplicity we will use <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">clone</span></code> in this example.</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">git clone https://github.com/archlinux/archinstall</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>You can either move the folder into your project and simply do</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">archinstall</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Or you can PyPa’s <a class="reference external" href="https://github.com/pypa/build">build</a> and <a class="reference external" href="https://github.com/pypa/installer">installer</a> to install it into pythons module path.</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>archinstall
|
||||
<span class="gp">$ </span>python<span class="w"> </span>-m<span class="w"> </span>build<span class="w"> </span>.
|
||||
<span class="gp">$ </span>python<span class="w"> </span>-m<span class="w"> </span>installer<span class="w"> </span>dist/*.whl
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../help/discord.html" class="btn btn-neutral float-left" title="Discord" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="../examples/python.html" class="btn btn-neutral float-right" title="Python module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
|
@ -0,0 +1,140 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="./">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Search — python-archinstall v2.3.0 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=7ab3649f" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" />
|
||||
|
||||
|
||||
|
||||
<script src="_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="_static/documentation_options.js?v=387c4177"></script>
|
||||
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
||||
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||||
<script src="_static/js/theme.js"></script>
|
||||
<script src="_static/searchtools.js"></script>
|
||||
<script src="_static/language_data.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="#" />
|
||||
<link href="_static/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="index.html" class="icon icon-home">
|
||||
python-archinstall
|
||||
<img src="_static/logo.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="#" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Running Archinstall</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/guided.html">Guided installation</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Getting help</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/known_issues.html">Known Issues</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/report_bug.html">Report Issues & Bugs</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="help/discord.html">Discord</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">Archinstall as a library</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="installing/python.html">Python library</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples/python.html">Python module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/plugins.html">Python Plugins</a></li>
|
||||
</ul>
|
||||
<p class="caption" role="heading"><span class="caption-text">API Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="archinstall/Installer.html">archinstall.Installer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="index.html">python-archinstall</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Search</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<noscript>
|
||||
<div id="fallback" class="admonition warning">
|
||||
<p class="last">
|
||||
Please activate JavaScript to enable the search functionality.
|
||||
</p>
|
||||
</div>
|
||||
</noscript>
|
||||
|
||||
|
||||
<div id="search-results">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2022, Anton Hvornum.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||
</script>
|
||||
|
||||
<script id="searchindexloader"></script>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue