=============================
Working with external plugins
=============================


|qp| has very few executables out of the box. Most of the time,
external plugins need to be downloaded and installed in the
:file:`$QP_ROOT/plugins` directory.

Plugins are usually hosted in external repositories. To download a
plugin, the remote repository needs to be downloaded, and the plugins of
the repository can be selected for installation.

To download an external repository of plugins, run the following
command:

.. code-block:: bash

    qp_plugins download http://somewhere/over/the/rainbow/ext_repo


This downloads a copy of the repository of external plugins :file:`ext_repo`
in :file:`$QP_ROOT/plugins`.

The list of available uninstalled plugins can be seen using:

.. code-block:: bash

    qp_plugins list -u


Now, the specific plugin :file:`ext_module` contained in the repository
:file:`ext_repo` can be installed using:

.. code-block:: bash

        qp_plugins install ext_module


The module is now accessible via a symbolic link in :file:`$QP_ROOT/src`,
and can be compiled as any module, running |Ninja|.


To remove the module, run

.. code-block:: bash

        qp_plugins uninstall ext_module


.. seealso:: 

     For a more detailed explanation and an example, see :ref:`qp_plugins`.