# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the low-density software chooser
---
# Software selection mode, to set whether the software packages
# can be chosen singly, or multiply.
#
# Possible modes are "optional", "required" (for zero-or-one or exactly-one)
# or "optionalmultiple", "requiredmultiple" (for zero-or-more
# or one-or-more).
mode: required

# Software installation method:
#
# - "legacy" or "custom" or "contextualprocess"
#   When set to "legacy", writes a GlobalStorage value for the choice that
#   has been made. The key is *packagechooser_<id>*. The module's
#   instance name is used; see the *instances* section of `settings.conf`.
#   If there is just one packagechooser module, and no special instance is set,
#   resulting GS key is probably *packagechooser_packagechooser*.
#
#   The GS value is a comma-separated list of the IDs of the selected
#   packages, or an empty string if none is selected.
#
#   With "legacy" installation, you should have a contextualprocess or similar
#   module somewhere in the `exec` phase to process the GlobalStorage key
#   and actually **do** something for the packages.
#
# - "packages"
#   When set to "packages", writes GlobalStorage values suitable for
#   consumption by the *packages* module (which should appear later
#   in the `exec` section. These package settings will then be handed
#   off to whatever package manager is configured there.
#
# - "netinstall-select"
#   When this is set, the id(s) selected are passed to the netinstall module.
#   Any id that matches a group name in that module is set to checked
#
# - "netinstall-add"
#   With this method, the packagechooser module is used to add groups to the
#   netinstall module.  For this to have any effect.  You must set netinstall,
#   which is described below.
#
# There is no need to put this module in the `exec` section. There
# are no jobs that this module provides. You should put **other**
# modules, either *contextualprocess* or *packages* or some custom
# module, in the `exec` section to do the actual work.
method: legacy


# Human-visible strings in this module. These are all optional.
# The following translated keys are used:
#  - *step*, used in the overall progress view (left-hand pane)
#
# Each key can have a [locale] added to it, which is used as
# the translated string for that locale. For the strings
# associated with the "no-selection" item, see *items*, below
# with the explicit item-*id* "".
#
labels:
    step: "Packages"
    step[nl]: "Pakketten"

# (Optional) item-*id* of pre-selected list-view item.
# Pre-selects one of the items below.
# default: kde

# Items to display in the chooser. In general, this should be a
# pretty short list to avoid overwhelming the UI. This is a list
# of objects, and the items are displayed in list order.
#
# Either provide the data for an item in the list (using the keys
# below), or use existing AppData XML files, or use AppStream cache
# as a source for the data.
#
# For data provided by the list: the item has an id, which is used in
# setting the value of *packagechooser_<module-id>*. The following field
# is mandatory:
#
#  - *id*
#       ID for the product. The ID "" is special, and is used for
#       "no package selected". Only include this if the mode allows
#       selecting none. The name and description given for the "no package
#       selected" item are displayed when the module starts.
#
# Each item must adhere to one of three "styles" of item. Which styles
# are supported depends on compile-time dependencies of Calamares.
# Both AppData and AppStream may **optionally** be available.
#
# # Generic Items #
#
# These items are always supported. They require the most configuration
# **in this file** and duplicate information that may be available elsewhere
# (e.g. in AppData or AppStream), but do not require any additional
# dependencies. These items have the following **mandatory** fields:
#
#  - *name*
#       Human-readable name of the product. To provide translations,
#       add a *[lang]* decoration as part of the key name, e.g. `name[nl]`
#       for Dutch. The list of usable languages can be found in
#       `CMakeLists.txt` or as part of the debug output of Calamares.
#  - *description*
#       Human-readable description. These can be translated as well.
#  - *screenshot*
#       Path to a single screenshot of the product. May be a filesystem
#       path or a QRC path, e.g. ":/images/no-selection.png". If the path
#       is not found (e.g. is a non-existent absolute path, or is a relative
#       path that does not exist in the current working directory) then
#       an additional attempt is made to load the image from the **branding**
#       directory.
#
# The following fields are **optional** for an item:
#
#  - *packages* :
#       List of package names for the product. If using the *method*
#       "packages", consider this item mandatory (because otherwise
#       selecting the item would install no packages).
#
#  - *netinstall* :
#       The data in this field should follow the format of a group
#       from the netinstall module documented in
#       src/modules/netinstall/netinstall.conf.  This is only used
#       when method is set to "netinstall-add"
#
# # AppData Items #
#
# For data provided by AppData XML: the item has an *appdata*
# key which points to an AppData XML file in the local filesystem.
# This file is parsed to provide the id (from AppData id), name
# (from AppData name), description (from AppData description paragraphs
# or the summary entries), and a screenshot (the default screenshot
# from AppData). No package is set (but that is unused anyway).
#
# AppData may contain IDs that are not useful inside Calamares,
# and the screenshot URL may be remote -- a remote URL will not
# be loaded and the screenshot will be missing. An item with *appdata*
# **may** specify an ID or screenshot path, as above. This will override
# the settings from AppData.
#
# # AppStream Items #
#
# For data provided by AppStream cache: the item has an *appstream*
# key which matches the AppStream identifier in the cache (e.g.
# *org.kde.kwrite.desktop*). Data is retrieved from the AppStream
# cache for that ID. The package name is set from the AppStream data.
#
# An item for AppStream may also contain an *id* and a *screenshot*
# key which will override the data from AppStream.
items:
    - id: ""
      # packages: [] # This item installs no packages
      name: "No Desktop"
      name[nl]: "Geen desktop"
      description: "Please pick a desktop environment from the list. If you don't want to install a desktop, that's fine, your system will start up in text-only mode and you can install a desktop environment later."
      description[nl]: "Kies eventueel een desktop-omgeving uit deze lijst. Als u geen desktop-omgeving wenst te gebruiken, kies er dan geen. In dat geval start het systeem straks op in tekst-modus en kunt u later alsnog een desktop-omgeving installeren."
      screenshot: ":/images/no-selection.png"
    - id: kde
      packages: [ kde-frameworks, kde-plasma, kde-gear ]
      name: Plasma Desktop
      description: "KDE Plasma Desktop, simple by default, a clean work area for real-world usage which intends to stay out of your way. Plasma is powerful when needed, enabling the user to create the workflow that makes them more effective to complete their tasks."
      screenshot: ":/images/kde.png"
    - id: gnome
      packages: [ gnome-all ]
      name: GNOME
      description: GNU Networked Object Modeling Environment Desktop
      screenshot: ":/images/gnome.png"
    - id: calamares
      appdata: ../io.calamares.calamares.appdata.xml
      screenshot: ":/images/calamares.png"
    - id: kate
      appstream: org.kde.kwrite.desktop
