Brand installer

This commit is contained in:
Michael Smith
2024-08-15 17:09:26 +02:00
parent 8f806a6945
commit 824d47e974
41 changed files with 4207 additions and 7 deletions

View File

@@ -0,0 +1,47 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the "finished" page, which is usually shown only at
# the end of the installation (successful or not).
---
# DEPRECATED
#
# The finished page can hold a "restart system now" checkbox.
# If this is false, no checkbox is shown and the system is not restarted
# when Calamares exits.
# restartNowEnabled: true
# DEPRECATED
#
# Initial state of the checkbox "restart now". Only relevant when the
# checkbox is shown by restartNowEnabled.
# restartNowChecked: false
# Behavior of the "restart system now" button.
#
# There are four usable values:
# - never
# Does not show the button and does not restart.
# This matches the old behavior with restartNowEnabled=false.
# - user-unchecked
# Shows the button, defaults to unchecked, restarts if it is checked.
# This matches the old behavior with restartNowEnabled=true and restartNowChecked=false.
# - user-checked
# Shows the button, defaults to checked, restarts if it is checked.
# This matches the old behavior with restartNowEnabled=true and restartNowChecked=true.
# - always
# Shows the button, checked, but the user cannot change it.
# This is new behavior.
#
# The three combinations of legacy values are still supported.
restartNowMode: user-unchecked
# If the checkbox is shown, and the checkbox is checked, then when
# Calamares exits from the finished-page it will run this command.
# If not set, falls back to "shutdown -r now".
restartNowCommand: "systemctl -i reboot"
# When the last page is (successfully) reached, send a DBus notification
# to the desktop that the installation is done. This works only if the
# user as whom Calamares is run, can reach the regular desktop session bus.
notifyOnFinished: true

View File

@@ -0,0 +1,19 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# NOTE: you must have ckbcomp installed and runnable
# on the live system, for keyboard layout previews.
---
# The name of the file to write X11 keyboard settings to
# The default value is the name used by upstream systemd-localed.
# Relative paths are assumed to be relative to /etc/X11/xorg.conf.d
xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf"
# The path to search for keymaps converted from X11 to kbd format
# Leave this empty if the setting does not make sense on your distribution.
#convertedKeymapPath: "/lib/kbd/keymaps/xkb"
# Write keymap configuration to /etc/default/keyboard, usually
# found on Debian-related systems.
# Defaults to true if nothing is set.
writeEtcDefaultKeyboard: false

View File

@@ -0,0 +1,100 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
---
# This settings are used to set your default system time zone.
# Time zones are usually located under /usr/share/zoneinfo and
# provided by the 'tzdata' package of your Distribution.
#
# Distributions using systemd can list available
# time zones by using the timedatectl command.
# timedatectl list-timezones
#
# The starting timezone (e.g. the pin-on-the-map) when entering
# the locale page can be set through keys *region* and *zone*.
# If either is not set, defaults to America/New_York.
#
region: "America"
zone: "New_York"
# System locales are detected in the following order:
#
# - /usr/share/i18n/SUPPORTED
# - localeGenPath (defaults to /etc/locale.gen if not set)
# - 'locale -a' output
#
# Enable only when your Distribution is using an
# custom path for locale.gen
#
#localeGenPath: "PATH_TO/locale.gen"
# GeoIP based Language settings: Leave commented out to disable GeoIP.
#
# GeoIP needs a working Internet connection.
# This can be managed from `welcome.conf` by adding
# internet to the list of required conditions.
#
# The configuration
# is in three parts: a *style*, which can be "json" or "xml"
# depending on the kind of data returned by the service, and
# a *url* where the data is retrieved, and an optional *selector*
# to pick the right field out of the returned data (e.g. field
# name in JSON or element name in XML).
#
# The default selector (when the setting is blank) is picked to
# work with existing JSON providers (which use "time_zone") and
# Ubiquity's XML providers (which use "TimeZone").
#
# If the service configured via *url* uses
# a different attribute name (e.g. "timezone") in JSON or a
# different element tag (e.g. "<Time_Zone>") in XML, set this
# string to the name or tag to be used.
#
# In JSON:
# - if the string contains "." characters, this is used as a
# multi-level selector, e.g. "a.b" will select the timezone
# from data "{a: {b: "Europe/Amsterdam" } }".
# - each part of the string split by "." characters is used as
# a key into the JSON data.
# In XML:
# - all elements with the named tag (e.g. all TimeZone) elements
# from the document are checked; the first one with non-empty
# text value is used.
#
#
# An HTTP(S) request is made to *url*. The request should return
# valid data in a suitable format, depending on *style*;
# generally this includes a string value with the timezone
# in <region>/<zone> format. For services that return data which
# does not follow the conventions of "suitable data" described
# below, *selector* may be used to pick different data.
#
# Note that this example URL works, but the service is shutting
# down in June 2018.
#
# Suitable JSON data looks like
# ```
# {"time_zone":"America/New_York"}
# ```
# Suitable XML data looks like
# ```
# <Response><TimeZone>Europe/Brussels</TimeZone></Response>
# ```
#
# To accommodate providers of GeoIP timezone data with peculiar timezone
# naming conventions, the following cleanups are performed automatically:
# - backslashes are removed
# - spaces are replaced with _
#
# Legacy settings "geoipStyle", "geoipUrl" and "geoipSelector"
# in the top-level are still supported, but I'd advise against.
#
# To disable GeoIP checking, either comment-out the entire geoip section,
# or set the *style* key to an unsupported format (e.g. `none`).
# Also, note the analogous feature in src/modules/welcome/welcome.conf.
#
geoip:
style: "json"
url: "https://geoip.kde.org/v1/calamares"
selector: "" # leave blank for the default

View File

@@ -0,0 +1,62 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Mount filesystems in the target (generally, before treating the
# target as a usable chroot / "live" system). Filesystems are
# automatically mounted from the partitioning module. Filesystems
# listed here are **extra**. The filesystems listed in *extraMounts*
# are mounted in all target systems.
---
# Extra filesystems to mount. The key's value is a list of entries; each
# entry has five keys:
# - device The device node to mount
# - fs (optional) The filesystem type to use
# - mountPoint Where to mount the filesystem
# - options (optional) An array of options to pass to mount
# - efi (optional) A boolean that when true is only mounted for UEFI installs
#
# The device is not mounted if the mountPoint is unset or if the fs is
# set to unformatted.
#
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: /dev
mountPoint: /dev
options: [ bind ]
- device: tmpfs
fs: tmpfs
mountPoint: /run
- device: /run/udev
mountPoint: /run/udev
options: [ bind ]
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars
efi: true
# The mount options used to mount each filesystem.
#
# filesystem contains the name of the filesystem or on of three special
# values, "default", efi" and "btrfs_swap". The logic is applied in this manner:
# - If the partition is the EFI partition, the "efi" entry will be used
# - If the fs is btrfs and the subvolume is for the swapfile,
# the "btrfs_swap" entry is used
# - If the filesystem is an exact match for filesystem, that entry is used
# - If no match is found in the above, the default entry is used
# - If there is no match and no default entry, "defaults" is used
# - If the mountOptions key is not present, "defaults" is used
#
# Each filesystem entry contains 3 keys, all of which are optional
# options - An array of mount options that is used on all disk types
# ssdOptions - An array of mount options combined with options for ssds
# hddOptions - An array of mount options combined with options for hdds
# If combining these options results in an empty array, "defaults" is used
#
mountOptions:
- filesystem: efi
options: [ fmask=0077, dmask=0077 ]

View File

@@ -0,0 +1,251 @@
# 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 hav=e 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: "Desktop"
# (Optional) item-*id* of pre-selected list-view item.
# Pre-selects one of the items below.
default: gnome
# 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: gnome
packages: [ gnome ]
name: GNOME
description: "<html>Every part of GNOME has been designed to make it simple and easy to use. It provides a focused working environment that helps you get things done. GNOME is a popular choice and well tested on NixOS.<br/>
<br/>
Learn more at <a href=\"https://www.gnome.org/\">gnome.org</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/gnome.png"
- id: plasma6
packages: [ plasma6 ]
name: Plasma
description: "<html>Plasma is made to stay out of the way as it helps you get things done. But under its light and intuitive surface, it's a highly customizable. So you're free to choose ways of usage right as you need them and when you need them. Plasma is a popular choice and well tested on NixOS.<br/>
<br/>
Learn more at <a href=\"https://kde.org/plasma-desktop/\">kde.org/plasma-desktop</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/plasma6.png"
- id: plasma5
packages: [ plasma5 ]
name: Plasma 5
description: "<html>A long term support version of Plasma. More mature than Plasma 6 currently, but less actively developed.<br/>
<br/>
</html>"
screenshot: "/run/current-system/sw/share/calamares/images/plasma5.png"
- id: xfce
packages: [ xfce ]
name: Xfce
description: "<html>Xfce is a lightweight desktop environment. It aims to be fast and low on system resources, while still being visually appealing and user friendly.<br/>
<br/>
Learn more at <a href=\"https://www.xfce.org/\">xfce.org</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/xfce.png"
- id: pantheon
packages: [ pantheon ]
name: Pantheon
description: "<html>Pantheon is the default desktop of Elementary OS. It provides a productive and intuitive user experience while also being visually appealing.<br/>
<br/>
Learn more at <a href=\"https://elementary.io/docs/learning-the-basics\">elementary.io/docs/learning-the-basics</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/pantheon.png"
- id: cinnamon
packages: [ cinnamon ]
name: Cinnamon
description: "<html>Cinnamon is a desktop which provides advanced innovative features and a traditional user experience. The emphasis is put on making users feel at home and providing them with an easy to use and comfortable desktop experience.<br/>
<br/>
Learn more at <a href=\"https://projects.linuxmint.com/cinnamon/\">projects.linuxmint.com/cinnamon</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/cinnamon.png"
- id: mate
packages: [ mate ]
name: MATE
description: "<html>The MATE Desktop Environment is the continuation of GNOME 2. It provides an intuitive and attractive desktop environment.<br/>
<br/>
Learn more at <a href=\"https://mate-desktop.org/\">mate-desktop.org</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/mate.png"
- id: enlightenment
packages: [ enlightenment ]
name: Enlightenment
description: "<html>Enlightenment is a Window Manager, Compositor and Minimal Desktop. Enlightenment is classed as a desktop shell as it provides everything you need to operate your desktop or laptop, but it is not a full application suite.<br/>
<br/>
Learn more at <a href=\"https://www.enlightenment.org/\">enlightenment.org</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/enlightenment.png"
- id: lxqt
packages: [ lxqt ]
name: LXQt
description: "<html>LXQt is a lightweight Qt desktop environment. It will not get in your way. It will not hang or slow down your system. It is focused on being a classic desktop with a modern look and feel.<br/>
<br/>
Learn more at <a href=\"https://lxqt-project.org/\">lxqt-project.org</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/lxqt.png"
# Lumina is not yet stable enough, once it is, simply uncommenting the lines below is all that's needed to enable it as an option
#- id: lumina
# packages: [ lumina ]
# name: Lumina
# description: "<html>Lumina is designed to have a small footprint, giving your system the best performance possible. It is built to flow seamlessly between computer tasks and offers several integrated utilities in one convenient package.<br/>
# - Learn more at <a href=\"https://lumina-desktop.org/\">lumina-desktop.org</a></html>"
# screenshot: "/run/current-system/sw/share/calamares/images/lumina.png"
- id: budgie
packages: [ budgie ]
name: Budgie
description: "<html>The Budgie Desktop is a feature-rich, modern desktop designed to keep out the way of the user.<br/>
<br/>
Learn more at <a href=\"https://docs.buddiesofbudgie.org/\">buddiesofbudgie.org</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/budgie.png"
- id: deepin
packages: [ deepin ]
name: Deepin
description: "<html>The Deepin Desktop Environment is an elegant, easy to use and reliable desktop environment.<br/>
<br/>
Learn more at <a href=\"https://www.deepin.org/\">deepin.org</a></html>"
screenshot: "/run/current-system/sw/share/calamares/images/deepin.png"
- id: ""
packages: []
name: "No desktop"
screenshot: "/run/current-system/sw/share/calamares/images/nodesktop.png"
description: "A minimal system without a graphical user interface will be installed. This is great for servers or custom setups with window managers. The configuration can be changed after installation."

View File

@@ -0,0 +1,300 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Options for EFI system partition.
#
# - *mountPoint*
# This setting specifies the mount point of the EFI system partition. Some
# distributions (Fedora, Debian, Manjaro, etc.) use /boot/efi, others (KaOS,
# etc.) use just /boot.
#
# Defaults to "/boot/efi", may be empty (but weird effects ensue)
# - *recommendedSize*
# This optional setting specifies the size of the EFI system partition.
# If nothing is specified, the default size of 300MiB will be used.
# When writing quantities here, M is treated as MiB, and if you really
# want one-million (10^6) bytes, use MB.
# - *minimumSize*
# This optional setting specifies the absolute minimum size of the EFI
# system partition. If nothing is specified, the *recommendedSize*
# is used instead.
# - *label*
# This optional setting specifies the name of the EFI system partition (see
# PARTLABEL; gpt only; requires KPMCore >= 4.2.0).
# If nothing is specified, the partition name is left unset.
#
# Going below the *recommended* size is allowed, but the user will
# get a warning that it might not work. Going below the *minimum*
# size is not allowed and the user will be told it will not work.
#
# Both quantities must be at least 32MiB, this is enforced by the EFI
# spec. If minimum is not specified, it defaults to the recommended
# size. Distro's that allow more user latitude can set the minimum lower.
efi:
mountPoint: "/boot"
recommendedSize: 512MiB
minimumSize: 32MiB
label: "EFI"
# Deprecated alias of efi.mountPoint
# efiSystemPartition: "/boot/efi"
# Deprecated alias of efi.recommendedSize
# efiSystemPartitionSize: 300MiB
# Deprecated alias of efi.label
# efiSystemPartitionName: EFI
# In autogenerated partitioning, allow the user to select a swap size?
# If there is exactly one choice, no UI is presented, and the user
# cannot make a choice -- this setting is used. If there is more than
# one choice, a UI is presented.
#
# Legacy settings *neverCreateSwap* and *ensureSuspendToDisk* correspond
# to values of *userSwapChoices* as follows:
# - *neverCreateSwap* is true, means [none]
# - *neverCreateSwap* is false, *ensureSuspendToDisk* is false, [small]
# - *neverCreateSwap* is false, *ensureSuspendToDisk* is true, [suspend]
#
# Autogenerated swap sizes are as follows:
# - *suspend*: Swap is always at least total memory size,
# and up to 4GiB RAM follows the rule-of-thumb 2 * memory;
# from 4GiB to 8 GiB it stays steady at 8GiB, and over 8 GiB memory
# swap is the size of main memory.
# - *small*: Follows the rules above, but Swap is at
# most 8GiB, and no more than 10% of available disk.
# In both cases, a fudge factor (usually 10% extra) is applied so that there
# is some space for administrative overhead (e.g. 8 GiB swap will allocate
# 8.8GiB on disk in the end).
#
# If *file* is enabled here, make sure to have the *fstab* module
# as well (later in the exec phase) so that the swap file is
# actually created.
userSwapChoices:
- none # Create no swap, use no swap
- small # Up to 4GB
- suspend # At least main memory size
# - reuse # Re-use existing swap, but don't create any (unsupported right now)
# - file # To swap file instead of partition
# This optional setting specifies the name of the swap partition (see
# PARTLABEL; gpt only; requires KPMCore >= 4.2.0).
# If nothing is specified, the partition name is left unset.
# swapPartitionName: swap
# LEGACY SETTINGS (these will generate a warning)
# ensureSuspendToDisk: true
# neverCreateSwap: false
# This setting specifies the LUKS generation (i.e LUKS1, LUKS2) used internally by
# cryptsetup when creating an encrypted partition.
#
# This option is set to luks1 by default, as grub doesn't support LUKS2 + Argon2id
# currently. On the other hand grub does support LUKS2 with PBKDF2 and could therefore be
# also set to luks2. Also there are some patches for grub and Argon2.
# See: https://aur.archlinux.org/packages/grub-improved-luks2-git
#
# Choices: luks1, luks2 (in addition, "luks" means "luks1")
#
# The default is luks1
#
luksGeneration: luks2
# This setting determines if encryption should be allowed when using zfs. This
# setting has no effect unless zfs support is provided.
#
# This setting is to handle the fact that some bootloaders(such as grub) do not
# support zfs encryption.
#
# The default is true
#
# allowZfsEncryption: true
# Correctly draw nested (e.g. logical) partitions as such.
drawNestedPartitions: false
# Show/hide partition labels on manual partitioning page.
alwaysShowPartitionLabels: true
# Allow manual partitioning.
#
# When set to false, this option hides the "Manual partitioning" button,
# limiting the user's choice to "Erase", "Replace" or "Alongside".
# This can be useful when using a custom partition layout we don't want
# the user to modify.
#
# If nothing is specified, manual partitioning is enabled.
#allowManualPartitioning: true
# Show not encrypted boot partition warning.
#
# When set to false, this option does not show the
# "Boot partition not encrypted" warning when encrypting the
# root partition but not /boot partition.
#
# If nothing is specified, the warning is shown.
showNotEncryptedBootMessage: false
# Initial selection on the Choice page
#
# There are four radio buttons (in principle: erase, replace, alongside, manual),
# and you can pick which of them, if any, is initially selected. For most
# installers, "none" is the right choice: it makes the user pick something specific,
# rather than accidentally being able to click past an important choice (in particular,
# "erase" is a dangerous choice).
#
# The default is "none"
#
initialPartitioningChoice: none
#
# Similarly, some of the installation choices may offer a choice of swap;
# the available choices depend on *userSwapChoices*, above, and this
# setting can be used to pick a specific one.
#
# The default is "none" (no swap) if that is one of the enabled options, otherwise
# one of the items from the options.
initialSwapChoice: none
# armInstall
#
# Leaves 16MB empty at the start of a drive when partitioning
# where usually the u-boot loader goes
#
# armInstall: false
# Default partition table type, used when a "erase" disk is made.
#
# When erasing a disk, a new partition table is created on disk.
# In other cases, e.g. Replace and Alongside, as well as when using
# manual partitioning, this partition table exists already on disk
# and it is left unmodified.
#
# Suggested values: gpt, msdos
# If nothing is specified, Calamares defaults to "gpt" if system is
# efi or "msdos".
#
# Names are case-sensitive and defined by KPMCore.
# defaultPartitionTableType: msdos
# Requirement for partition table type
#
# Restrict the installation on disks that match the type of partition
# tables that are specified.
#
# Possible values: msdos, gpt. Names are case-sensitive and defined by KPMCore.
#
# If nothing is specified, Calamares defaults to both "msdos" and "gpt".
#
# requiredPartitionTableType: gpt
# requiredPartitionTableType:
# - msdos
# - gpt
# Default filesystem type, used when a "new" partition is made.
#
# When replacing a partition, the new filesystem type will be from the
# defaultFileSystemType value. In other cases, e.g. Erase and Alongside,
# as well as when using manual partitioning and creating a new
# partition, this filesystem type is pre-selected. Note that
# editing a partition in manual-creation mode will not automatically
# change the filesystem type to this default value -- it is not
# creating a new partition.
#
# Suggested values: ext2, ext3, ext4, reiser, xfs, jfs, btrfs
# If nothing is specified, Calamares defaults to "ext4".
#
# Names are case-sensitive and defined by KPMCore.
defaultFileSystemType: "ext4"
# Selectable filesystem type, used when "erase" is done.
#
# When erasing the disk, the *defaultFileSystemType* is used (see
# above), but it is also possible to give users a choice:
# list suitable filesystems here. A drop-down is provided
# to pick which is the filesystems will be used.
#
# The value *defaultFileSystemType* is added to this list (with a warning)
# if not present; the default pick is the *defaultFileSystemType*.
#
# If not specified at all, uses *defaultFileSystemType* without a
# warning (this matches traditional no-choice-available behavior best).
# availableFileSystemTypes: ["ext4","f2fs"]
# Show/hide LUKS related functionality in automated partitioning modes.
# Disable this if you choose not to deploy early unlocking support in GRUB2
# and/or your distribution's initramfs solution.
#
# BIG FAT WARNING:
#
# This option is unsupported, as it cuts out a crucial security feature.
# Disabling LUKS and shipping Calamares without a correctly configured GRUB2
# and initramfs is considered suboptimal use of the Calamares software. The
# Calamares team will not provide user support for any potential issue that
# may arise as a consequence of setting this option to false.
# It is strongly recommended that system integrators put in the work to support
# LUKS unlocking support in GRUB2 and initramfs/dracut/mkinitcpio/etc.
# For more information on setting up GRUB2 for Calamares with LUKS, see
# https://github.com/calamares/calamares/wiki/Deploy-LUKS
#
# If nothing is specified, LUKS is enabled in automated modes.
#enableLuksAutomatedPartitioning: true
# Partition layout.
#
# This optional setting specifies a custom partition layout.
#
# If nothing is specified, the default partition layout is a single partition
# for root that uses 100% of the space and uses the filesystem defined by
# defaultFileSystemType.
#
# Note: the EFI system partition is prepend automatically to the layout if
# needed; the swap partition is appended to the layout if enabled (small of
# suspend).
#
# Otherwise, the partition layout is defined as follow:
#
partitionLayout:
- filesystem: "ext4"
noEncrypt: false
mountPoint: "/"
size: 100%
#
# There can be any number of partitions, each entry having the following attributes:
# - name: filesystem label
# and
# partition name (gpt only; since KPMCore 4.2.0)
# - uuid: partition uuid (optional parameter; gpt only; requires KPMCore >= 4.2.0)
# - type: partition type (optional parameter; gpt only; requires KPMCore >= 4.2.0)
# - attributes: partition attributes (optional parameter; gpt only; requires KPMCore >= 4.2.0)
# - filesystem: filesystem type (optional parameter)
# - if not set at all, treat as "unformatted"
# - if "unformatted", no filesystem will be created
# - if "unknown" (or an unknown FS name, like "elephant") then the
# default filesystem type, or the user's choice, will be applied instead
# of "unknown" (e.g. the user might pick ext4, or xfs).
# - noEncrypt: whether this partition is exempt from encryption if enabled (optional parameter; default is false)
# - mountPoint: partition mount point (optional parameter; not mounted if unset)
# - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB)
# or
# % of the available drive space if a '%' is appended to the value
# - minSize: minimum partition size (optional parameter)
# - maxSize: maximum partition size (optional parameter)
# - features: filesystem features (optional parameter; requires KPMCore >= 4.2.0)
# name: boolean or integer or string
# Checking for available storage
#
# This overlaps with the setting of the same name in the welcome module's
# requirements section. If nothing is set by the welcome module, this
# value is used instead. It is still a problem if there is no required
# size set at all, and the replace and resize options will not be offered
# if no required size is set.
#
# The value is in Gibibytes (GiB).
#
# BIG FAT WARNING: except for OEM-phase-0 use, you should be using
# the welcome module, **and** configure this value in
# `welcome.conf`, not here.
# requiredStorage: 3.5

View File

@@ -0,0 +1,45 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
### Umount Module
#
# This module represents the last part of the installation, the unmounting
# of partitions used for the install. It is also the last place where it
# is possible to copy files to the target system, thus the best place to
# copy an installation log.
#
# This module has two configuration keys:
# srcLog location in the live system where the log is
# destLog location in the target system to copy the log
#
# You can either use the default source path (which is
# `/root/.cache/calamares/session.log` ) to copy the regular log,
# or if you want to use the full output of `sudo calamares -d` you will need
# to redirect standard output, for instance in a launcher script or
# in the desktop file.
#
# Example launcher script:
#
# ```
# #!/bin/sh
# sudo /usr/bin/calamares -d > installation.log
# ```
#
# Example desktop line:
#
# ```
# Exec=sudo /usr/bin/calamares -d > installation.log
# ```
#
# If no source and destination are set, no copy is attempted. If the
# copy fails for some reason, a warning is printed but the installation
# does not fail.
---
# example when using the normal Calamares log:
srcLog: "/home/nixos/.cache/calamares/session.log"
destLog: "/var/log/Calamares.log"
# example when using a log created by `sudo calamares -d`:
#srcLog: "/home/live/installation.log"
#destLog: "/var/log/installation.log"

View File

@@ -0,0 +1,11 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
---
qmlLabel:
label: "Unfree Software"
method: legacy
mode: required
labels:
step: "Unfree Software"
packageChoice: free

View File

@@ -0,0 +1,265 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the one-user-system user module.
#
# Besides these settings, the users module also places the following
# keys into the Global Storage area, based on user input in the view step.
#
# - hostname
# - username
# - password (obscured)
# - autologinUser (if enabled, set to username)
#
# These Global Storage keys are set when the configuration for this module
# is read and when they are modified in the UI.
---
### GROUPS CONFIGURATION
#
# The system has groups of uses. Some special groups must be
# created during installation. Optionally, there are special
# groups for users who can use sudo and for supporting autologin.
# Used as default groups for the created user.
# Adjust to your Distribution defaults.
#
# Each entry in the *defaultGroups* list is either:
# - a string, naming a group; this is a **non**-system group
# which does not need to exist in the target system; if it
# does not exist, it will be created.
# - an entry with subkeys *name*, *must_exist* and *system*;
# if the group *must_exist* and does not, an error is thrown
# and the installation fails.
#
# The group is created if it does not exist, and it is
# created as a system group (GID < 1000) or user group
# (GID >= 1000) depending on the value of *system*.
defaultGroups:
- users
- networkmanager
- wheel
# When *sudoersGroup* is set to a non-empty string, Calamares creates a
# sudoers file for the user. This file is located at:
# `/etc/sudoers.d/10-installer`
# Remember to add the (value of) *sudoersGroup* to *defaultGroups*.
#
# If your Distribution already sets up a group of sudoers in its packaging,
# remove this setting (delete or comment out the line below). Otherwise,
# the setting will be duplicated in the `/etc/sudoers.d/10-installer` file,
# potentially confusing users.
# sudoersGroup: wheel
# Some Distributions require a 'autologin' group for the user.
# Autologin causes a user to become automatically logged in to
# the desktop environment on boot.
# Disable when your Distribution does not require such a group.
# autologinGroup: autologin
### ROOT AND SUDO
#
# Some distributions have a root user enabled for login. Others
# rely entirely on sudo or similar mechanisms to raise privileges.
# If set to `false` (the default), writes a sudoers file with `ALL=(ALL)`
# so that commands can be run as any user. If set to `true`, writes
# `ALL=(ALL:ALL)` so that any user and any group can be chosen.
# sudoersConfigureWithGroup: false
# Setting this to false, causes the root account to be disabled.
# When disabled, hides the "Use the same password for administrator"
# checkbox. Also hides the "Choose a password" and associated text-inputs.
setRootPassword: true
# You can control the initial state for the 'reuse password for root'
# checkbox here. Possible values are:
# - true to check or
# - false to uncheck
#
# When checked, the user password is used for the root account too.
#
# NOTE: *doReusePassword* requires *setRootPassword* to be enabled.
doReusePassword: false
### PASSWORDS AND LOGIN
#
# Autologin is convenient for single-user systems, but depends on
# the location of the machine if it is practical. "Password strength"
# measures measures might improve security by enforcing hard-to-guess
# passwords, or might encourage a post-it-under-the-keyboard approach.
# Distributions are free to steer their users to one kind of password
# or another. Weak(er) passwords may be allowed, may cause a warning,
# or may be forbidden entirely.
# You can control the initial state for the 'autologin checkbox' here.
# Possible values are:
# - true to check or
# - false to uncheck
# These set the **initial** state of the checkbox.
doAutologin: false
# These are optional password-requirements that a distro can enforce
# on the user. The values given in this sample file set only very weak
# validation settings.
#
# Calamares itself supports two checks:
# - minLength
# - maxLength
# In this sample file, the values are set to -1 which means "no
# minimum", "no maximum". This allows any password at all.
# No effort is done to ensure that the checks are consistent
# (e.g. specifying a maximum length less than the minimum length
# will annoy users).
#
# Calamares supports password checking through libpwquality.
# The libpwquality check relies on the (optional) libpwquality library.
# The value for libpwquality is a list of configuration statements like
# those found in pwquality.conf. The statements are handed off to the
# libpwquality parser for evaluation. The check is ignored if
# libpwquality is not available at build time (generates a warning in
# the log). The Calamares password check rejects passwords with a
# score of < 40 with the given libpwquality settings.
#
# (additional checks may be implemented in CheckPWQuality.cpp and
# wired into UsersPage.cpp)
#
# To disable all password validations:
# - comment out the relevant 'passwordRequirements' keys below,
# or set minLength and maxLength to -1.
# - disable libpwquality at build-time.
# To allow all passwords, but provide warnings:
# - set both 'allowWeakPasswords' and 'allowWeakPasswordsDefault' to true.
# (That will show the box *Allow weak passwords* in the user-
# interface, and check it by default).
# - configure password-checking however you wish.
# To require specific password characteristics:
# - set 'allowWeakPasswords' to false (the default)
# - configure password-checking, e.g. with NIST settings
# These are very weak -- actually, none at all -- requirements
passwordRequirements:
minLength: 1 # Password at least this many characters
maxLength: -1 # Password at most this many characters
libpwquality:
- minlen=0
- minclass=0
# These are "you must have a password, any password" -- requirements
#
# passwordRequirements:
# minLength: 1
# These are requirements the try to follow the suggestions from
# https://pages.nist.gov/800-63-3/sp800-63b.html , "Digital Identity Guidelines".
# Note that requiring long and complex passwords has its own cost,
# because the user has to come up with one at install time.
# Setting 'allowWeakPasswords' to false and 'doAutologin' to false
# will require a strong password and prevent (graphical) login
# without the password. It is likely to be annoying for casual users.
#
# passwordRequirements:
# minLength: 8
# maxLength: 64
# libpwquality:
# - minlen=8
# - maxrepeat=3
# - maxsequence=3
# - usersubstr=4
# - badwords=linux
# You can control the visibility of the 'strong passwords' checkbox here.
# Possible values are:
# - true to show or
# - false to hide (default)
# the checkbox. This checkbox allows the user to choose to disable
# password-strength-checks. By default the box is **hidden**, so
# that you have to pick a password that satisfies the checks.
allowWeakPasswords: true
# You can control the initial state for the 'strong passwords' checkbox here.
# Possible values are:
# - true to uncheck or
# - false to check (default)
# the checkbox by default. Since the box is labeled to enforce strong
# passwords, in order to **allow** weak ones by default, the box needs
# to be unchecked.
allowWeakPasswordsDefault: false
# User settings
#
# The user can enter a username, but there are some other
# hidden settings for the user which are configurable in Calamares.
#
# Key *user* has the following sub-keys:
#
# - *shell* Shell to be used for the regular user of the target system.
# There are three possible kinds of settings:
# - unset (i.e. commented out, the default), act as if set to /bin/bash
# - empty (explicit), don't pass shell information to useradd at all
# and rely on a correct configuration file in /etc/default/useradd
# - set, non-empty, use that path as shell. No validation is done
# that the shell actually exists or is executable.
# - *forbidden_names* Login names that may not be used. This list always
# contains "root" and "nobody", but may be extended to list other special
# names for a given distro (eg. "video", or "mysql" might not be a valid
# end-user login name).
user:
shell: /run/current-system/sw/bin/bash
forbidden_names: [ root ]
# Hostname settings
#
# The user can enter a hostname; this is configured into the system
# in some way. There are settings for how a hostname is guessed (as
# a default / suggestion) and where (or how) the hostname is set in
# the target system.
#
# Key *hostname* has the following sub-keys:
#
# - *location* How the hostname is set in the target system:
# - *None*, to not set the hostname at all
# - *EtcFile*, to write to `/etc/hostname` directly
# - *Etc*, identical to above
# - *Hostnamed*, to use systemd hostnamed(1) over DBus
# - *Transient*, to remove `/etc/hostname` from the target
# The default is *EtcFile*. Setting this to *None* or *Transient* will
# hide the hostname field.
# - *writeHostsFile* Should /etc/hosts be written with a hostname for
# this machine (also adds localhost and some ipv6 standard entries).
# Defaults to *true*.
# - *template* Is a simple template for making a suggestion for the
# hostname, based on user data. The default is "${first}-${product}".
# This is used only if the hostname field is shown. KMacroExpander is
# used; write `${key}` where `key` is one of the following:
# - *first* User's first name (whatever is first in the User Name field,
# which is first-in-order but not necessarily a "first name" as in
# "given name" or "name by which you call someone"; beware of western bias)
# - *name* All the text in the User Name field.
# - *login* The login name (which may be suggested based on User Name)
# - *product* The hardware product, based on DMI data
# - *product2* The product as described by Qt
# - *cpu* CPU name
# - *host* Current hostname (which may be a transient hostname)
# Literal text in the template is preserved. Calamares tries to map
# `${key}` values to something that will fit in a hostname, but does not
# apply the same to literal text in the template. Do not use invalid
# characters in the literal text, or no suggeston will be done.
# - *forbidden_names* lists hostnames that may not be used. This list
# always contains "localhost", but may list others that are unsuitable
# or broken in special ways.
hostname:
location: None
writeHostsFile: false
forbidden_names: [ localhost ]
presets:
fullName:
# value: "OEM User"
editable: true
loginName:
# value: "oem"
editable: true

View File

@@ -0,0 +1,133 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the welcome module. The welcome page
# displays some information from the branding file.
# Which parts it displays can be configured through
# the show* variables.
#
# In addition to displaying the welcome page, this module
# can check requirements for installation.
---
# Display settings for various buttons on the welcome page.
# The URLs themselves come from `branding.desc`. Each button
# is show if the corresponding *show<buttonname>* setting
# here is "true". If the setting is "false", the button is hidden.
# Empty or not-set is interpreted as "false".
#
# TODO:3.3 Remove the URL fallback here; URLs only in `branding.desc`
#
# The setting can also be a full URL which will then be used
# instead of the one from the branding file.
showSupportUrl: true
showKnownIssuesUrl: true
showReleaseNotesUrl: true
# TODO:3.3 Move to branding, keep only a bool here
# showDonateUrl: https://kde.org/community/donations/
# Requirements checking. These are general, generic, things
# that are checked. They may not match with the actual requirements
# imposed by other modules in the system.
requirements:
# Amount of available disk, in GiB. Floating-point is allowed here.
# Note that this does not account for *usable* disk, so it is possible
# to satisfy this requirement, yet have no space to install to.
requiredStorage: 10
# Amount of available RAM, in GiB. Floating-point is allowed here.
requiredRam: 1.0
# To check for internet connectivity, Calamares does a HTTP GET
# on this URL; on success (e.g. HTTP code 200) internet is OK.
# Use a privacy-respecting URL here, preferably in your distro's domain.
#
# The URL is only used if "internet" is in the *check* list below.
internetCheckUrl: [ https://geoip.kde.org/v1/calamares, https://cache.nixos.org/ ]
#
# This may be a single URL, or a list or URLs, in which case the
# URLs will be checked one-by-one; if any of them returns data,
# internet is assumed to be OK. This can be used to check via
# a number of places, where some domains may be down or blocked.
#
# To use a list of URLs, just use YAML list syntax (e.g.
#
# internetCheckUrl:
# - http://www.kde.org
# - http://www.freebsd.org
#
# or short-form
#
# internetCheckUrl: [ http://www.kde.org, http://www.freebsd.org ]
# List conditions to check. Each listed condition will be
# probed in some way, and yields true or false according to
# the host system satisfying the condition.
#
# This sample file lists all the conditions that are known.
#
# Note that the last three checks are for testing-purposes only,
# and shouldn't be used in production (they are only available
# when building Calamares in development mode). There are five
# special checks:
# - *false* is a check that is always false (unsatisfied)
# - *true* is a check that is always true (satisfied)
# - *slow-false* takes 3 seconds, and then is false; use this one to
# show off the waiting-spinner before the first results come in
# - *slow-true* takes 3 seconds, and then is true
# - *snark* is a check that is only satisfied once it has been checked
# at least three times ("what I tell you three times is true").
# Keep in mind that "true" and "false" are YAML keywords for
# boolean values, so should be quoted.
check:
- storage
- ram
- power
- internet
- screen
# List conditions that **must** be satisfied (from the list
# of conditions, above) for installation to proceed.
# If any of these conditions are not met, the user cannot
# continue past the welcome page.
required:
- storage
- ram
- internet
# GeoIP checking
#
# This can be used to pre-select a language based on the country
# the user is currently in. It *assumes* that there's internet
# connectivity, though. Configuration is like in the locale module,
# but remember to use a URL that returns full data **and** to
# use a selector that will pick the country, not the timezone.
#
# To disable GeoIP checking, either comment-out the entire geoip section,
# or set the *style* key to an unsupported format (e.g. `none`).
# Also, note the analogous feature in `src/modules/locale/locale.conf`,
# which is where you will find complete documentation.
#
# For testing, the *style* may be set to `fixed`, any URL that
# returns data (e.g. `http://example.com`) and then *selector*
# sets the data that is actually returned (e.g. "DE" to simulate
# the machine being in Germany).
#
# NOTE: the *selector* must pick the country code from the GeoIP
# data. Timezone, city, or other data will not be recognized.
#
# geoip:
# style: "none"
# url: "https://geoip.kde.org/v1/ubiquity" # extended XML format
# selector: "CountryCode" # blank uses default, which is wrong
# User interface
#
# The "select language" icon is an international standard, but it
# might not theme very well with your desktop environment.
# Fill in an icon name (following FreeDesktop standards) to
# use that named icon instead of the usual one.
#
# Leave blank or unset to use the international standard.
#
# Known icons in this space are "set-language" and "config-language".
#
# languageIcon: set-language