Initial upload of HyprArch releng configuration

This commit is contained in:
2026-03-03 20:31:33 +00:00
commit 7df61351c0
634 changed files with 36355 additions and 0 deletions

View File

@@ -0,0 +1,243 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=Install System
GenericName=System Installer
Keywords=calamares;system;installer;
TryExec=calamares
Exec=sh -c "pkexec calamares"
Comment=Calamares — System Installer
Icon=calamares
Terminal=false
StartupNotify=true
Categories=Qt;System;
X-AppStream-Ignore=true
Name[ar]=تثبيت النظام
Icon[ar]=كالامارس
GenericName[ar]=مثبت النظام
Comment[ar]=كالامارس - مثبت النظام
Name[as]=চিছটেম ইনস্তল কৰক
Icon[as]=কেলামাৰেচ
GenericName[as]=চিছটেম ইনস্তলাৰ
Comment[as]=কেলামাৰেচ — চিছটেম​ ইনস্তলাৰ
Name[ast]=Instalar el sistema
Icon[ast]=calamares
GenericName[ast]=Instalador del sistema
Comment[ast]=Calamares — Instalador del sistema
Name[az]=Sistemi Quraşdırmaq
Icon[az]=calamares
GenericName[az]=Sistem Quraşdırıcısı
Comment[az]=Calamares Sistem Quraşdırıcısı
Name[az_AZ]=Sistemi quraşdırmaq
Icon[az_AZ]=calamares
GenericName[az_AZ]=Sistem quraşdırcısı
Comment[az_AZ]=Calamares — Sistem Quraşdırıcısı
Name[be]=Усталяваць сістэму
Icon[be]=calamares
GenericName[be]=Усталёўшчык сістэмы
Comment[be]=Calamares — усталёўшчык сістэмы
Name[bg]=Инсталирай системата
Icon[bg]=calamares
GenericName[bg]=Системен инсталатор
Comment[bg]=„Calamares“ Системен инсталатор
Name[bn]=সিস্টেম ইনস্টল করুন
Icon[bn]=ক্যালামারেস
GenericName[bn]=সিস্টেম ইনস্টলার
Comment[bn]=ক্যালামারেস - সিস্টেম ইনস্টলার
Name[ca]=Instal·la el sistema
Icon[ca]=calamares
GenericName[ca]=Instal·lador de sistema
Comment[ca]=Calamares — Instal·lador de sistema
Name[cs_CZ]=Nainstalovat systém
Icon[cs_CZ]=calamares
GenericName[cs_CZ]=Instalátor systému
Comment[cs_CZ]=Calamares instalátor operačních systémů
Name[da]=Installér system
Icon[da]=calamares
GenericName[da]=Systeminstallationsprogram
Comment[da]=Calamares — Systeminstallationsprogram
Name[de]=System installieren
Icon[de]=calamares
GenericName[de]=Installation des Betriebssystems
Comment[de]=Calamares - Installation des Betriebssystems
Name[el]=Εγκατάσταση συστήματος
Icon[el]=calamares
GenericName[el]=Εγκατάσταση συστήματος
Comment[el]=Calamares — Εγκατάσταση συστήματος
Name[en_GB]=Install System
Icon[en_GB]=calamares
GenericName[en_GB]=System Installer
Comment[en_GB]=Calamares — System Installer
Name[eo]=Instali Sistemo
Icon[eo]=calamares
GenericName[eo]=Sistema Instalilo
Comment[eo]=Calamares — Sistema Instalilo
Name[es]=Instalar el sistema
Icon[es]=calamares
GenericName[es]=Instalador del sistema
Comment[es]=Calamares — Instalador del sistema
Name[es_MX]=Instalar el Sistema
Icon[es_MX]=calamares
GenericName[es_MX]=Instalador del sistema
Comment[es_MX]=Calamares - Instalador del sistema
Name[es_PR]=Instalar el sistema
Name[et]=Paigalda süsteem
Icon[et]=calamares
GenericName[et]=Süsteemipaigaldaja
Comment[et]=Calamares — süsteemipaigaldaja
Name[eu]=Sistema instalatu
Icon[eu]=calamares
GenericName[eu]=Sistema instalatzailea
Comment[eu]=Calamares - sistema instalatzailea
Name[fa]=نصب سامانه
Icon[fa]=کالامارس
GenericName[fa]=نصب‌کننده سامانه
Comment[fa]=کالامارس — نصب‌کننده سامانه
Name[fi_FI]=Asenna järjestelmä
Icon[fi_FI]=calamares
GenericName[fi_FI]=Järjestelmän asennusohjelma
Comment[fi_FI]=Calamares — Järjestelmän asentaja
Name[fr]=Installer le système
Icon[fr]=calamares
GenericName[fr]=Installateur système
Comment[fr]=Calamares - Installateur système
Name[fur]=Instale il sisteme
Icon[fur]=calamares
GenericName[fur]=Program di instalazion dal sisteme
Comment[fur]=Calamares — Program di instalazion dal sisteme
Name[gl]=Instalación do Sistema
Icon[gl]=calamares
GenericName[gl]=Instalador de sistemas
Comment[gl]=Calamares — Instalador de sistemas
Name[he]=התקנת מערכת
Icon[he]=calamares
GenericName[he]=אשף התקנה
Comment[he]=Calamares - אשף התקנה
Name[hi]=सिस्टम इंस्टॉल करें
Icon[hi]=calamares
GenericName[hi]=सिस्टम इंस्टॉलर
Comment[hi]=Calamares — सिस्टम इंस्टॉलर
Name[hr]=Instaliraj sustav
Icon[hr]=calamares
GenericName[hr]=Instalacija sustava
Comment[hr]=Calamares — Instalacija sustava
Name[hu]=Rendszer telepítése
Icon[hu]=calamares
GenericName[hu]=Rendszertelepítő
Comment[hu]=Calamares Rendszertelepítő
Name[id]=Instal Sistem
Icon[id]=calamares
GenericName[id]=Pemasang
Comment[id]=Calamares — Pemasang Sistem
Name[ie]=Installar li sistema
Icon[ie]=calamares
GenericName[ie]=Installator del sistema
Comment[ie]=Calamares — Installator del sistema
Name[is]=Setja upp kerfið
Icon[is]=calamares
GenericName[is]=Kerfis uppsetning
Comment[is]=Calamares — Kerfis uppsetning
Name[it_IT]=Installa il sistema
Icon[it_IT]=calamares
GenericName[it_IT]=Programma d'installazione del sistema
Comment[it_IT]=Calamares — Programma d'installazione del sistema
Name[ja]=システムをインストール
Icon[ja]=calamares
GenericName[ja]=システムインストーラー
Comment[ja]=Calamares — システムインストーラー
Name[ko]=시스템 설치
Icon[ko]=깔라마레스
GenericName[ko]=시스템 설치 관리자
Comment[ko]=깔라마레스 — 시스템 설치 관리자
Name[lt]=Įdiegti Sistemą
Icon[lt]=calamares
GenericName[lt]=Sistemos diegimas į kompiuterį
Comment[lt]=Calamares — Sistemos diegimo programa
Name[mk]=Инсталирај го системот
Icon[mk]=calamares
GenericName[mk]=Системен Инсталер
Comment[mk]=Calamares - Системен Инсталер
Name[ml]=സിസ്റ്റം ഇൻസ്റ്റാൾ ചെയ്യുക
Icon[ml]=കലാമാരേസ്
GenericName[ml]=സിസ്റ്റം ഇൻസ്റ്റാളർ
Comment[ml]=കലാമാരേസ് - സിസ്റ്റം ഇൻസ്റ്റാളർ
Name[nb]=Installer System
Icon[nb]=calamares
GenericName[nb]=Systeminstallatør
Comment[nb]=Calamares-systeminstallatør
Name[ne_NP]= सिस्टम इन्स्टल गर्नुहोस्
Icon[ne_NP]=Calamares
GenericName[ne_NP]=सिस्टम इन्स्टलर
Comment[ne_NP]=Calamares - सिस्टम इन्स्टलर
Name[nl]=Installeer systeem
Icon[nl]=calamares
GenericName[nl]=Installatieprogramma
Comment[nl]=Calamares — Installatieprogramma
Name[pl]=Zainstaluj system
Icon[pl]=calamares
GenericName[pl]=Instalator systemu
Comment[pl]=Calamares — Instalator systemu
Name[pt_BR]=Sistema de Instalação
Icon[pt_BR]=calamares
GenericName[pt_BR]=Instalador de Sistema
Comment[pt_BR]=Calamares — Instalador de Sistema
Name[pt_PT]=Instalar Sistema
Icon[pt_PT]=calamares
GenericName[pt_PT]=Instalador de Sistema
Comment[pt_PT]=Instalador de Sistema - Calamares
Name[ro]=Instalează sistemul
Icon[ro]=calamares
GenericName[ro]=Instalator de sistem
Comment[ro]=Calamares — Instalator de sistem
Name[ru]=Установить систему
Icon[ru]=calamares
GenericName[ru]=Установщик системы
Comment[ru]=Calamares - Установщик системы
Name[si]=පද්ධතිය ස්ථාපනය කරන්න
Icon[si]=කැලමරේස්
GenericName[si]=පද්ධති ස්ථාපකය
Comment[si]=Calamares - පද්ධති ස්ථාපකය
Name[sk]=Inštalovať systém
Icon[sk]=calamares
GenericName[sk]=Inštalátor systému
Comment[sk]=Calamares — Inštalátor systému
Name[sl]=Namesti sistem
Name[sq]=Instalo Sistemin
Icon[sq]=calamares
GenericName[sq]=Instalues Sistemi
Comment[sq]=Calamares — Instalues Sistemi
Name[sr]=Инсталирај систем
Icon[sr]=calamares
GenericName[sr]=Инсталатер система
Comment[sr]=Каламарес — инсталатер система
Name[sr@latin]=Instaliraj sistem
Name[sv]=Installera system
Icon[sv]=calamares
GenericName[sv]=Systeminstallerare
Comment[sv]=Calamares — Systeminstallerare
Name[tg]=Насбкунии низом
Icon[tg]=calamares
GenericName[tg]=Насбкунандаи низомӣ
Comment[tg]=Calamares — Насбкунандаи низомӣ
Name[th]=ติดตั้งระบบ
Name[tr_TR]=Sistemi Yükle
Icon[tr_TR]=calamares
GenericName[tr_TR]=Sistem Yükleyici
Comment[tr_TR]=Calamares — Sistem Yükleyici
Name[uk]=Встановити Систему
Icon[uk]=calamares
GenericName[uk]=Встановлювач системи
Comment[uk]=Calamares - Встановлювач системи
Name[vi]=Cài đặt hệ thống
Icon[vi]=calamares
GenericName[vi]=Bộ cài đặt hệ thống
Comment[vi]=Calamares — Bộ cài đặt hệ thống
Name[zh_CN]=安装系统
Icon[zh_CN]=calamares
GenericName[zh_CN]=系统安装程序
Comment[zh_CN]=Calamares — 系统安装程序
Name[zh_TW]=安裝系統
Icon[zh_TW]=calamares
GenericName[zh_TW]=系統安裝程式
Comment[zh_TW]=Calamares ── 系統安裝程式

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
SPDX-License-Identifier: GPL-3.0-or-later

View File

@@ -0,0 +1,239 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Product branding information. This influences some global
# user-visible aspects of Calamares, such as the product
# name, window behavior, and the slideshow during installation.
#
# Additional styling can be done using the stylesheet.qss
# file, also in the branding directory.
---
componentName: default
### WELCOME / OVERALL WORDING
#
# These settings affect some overall phrasing and looks,
# which are most visible in the welcome page.
# This selects between different welcome texts. When false, uses
# the traditional "Welcome to the %1 installer.", and when true,
# uses "Welcome to the Calamares installer for %1." This allows
# to distinguish this installer from other installers for the
# same distribution.
welcomeStyleCalamares: false
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size? If false, the image does not grow
# with the window but remains the same size throughout (this
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
### WINDOW CONFIGURATION
#
# The settings here affect the placement of the Calamares
# window through hints to the window manager and initial
# sizing of the Calamares window.
# Size and expansion policy for Calamares.
# - "normal" or unset, expand as needed, use *windowSize*
# - "fullscreen", start as large as possible, ignore *windowSize*
# - "noexpand", don't expand automatically, use *windowSize*
windowExpanding: normal
# Size of Calamares window, expressed as w,h. Both w and h
# may be either pixels (suffix px) or font-units (suffix em).
# e.g. "800px,600px"
# "60em,480px"
# This setting is ignored if "fullscreen" is selected for
# *windowExpanding*, above. If not set, use constants defined
# in CalamaresUtilsGui, 800x520.
windowSize: 800px,520px
# Placement of Calamares window. Either "center" or "free".
# Whether "center" actually works does depend on the window
# manager in use (and only makes sense if you're not using
# *windowExpanding* set to "fullscreen").
windowPlacement: center
### PANELS CONFIGURATION
#
# Calamares has a main content area, and two panels (navigation
# and progress / sidebar). The panels can be controlled individually,
# or switched off. If both panels are switched off, the layout of
# the main content area loses its margins, on the assumption that
# you're doing something special.
# Kind of sidebar (panel on the left, showing progress).
# - "widget" or unset, use traditional sidebar (logo, items)
# - "none", hide it entirely
# - "qml", use calamares-sidebar.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. Valid sides are:
# - "left" (if not specified, uses this)
# - "right"
# - "top"
# - "bottom"
# For instance, "widget,right" is valid; so is "qml", which defaults
# to putting the sidebar on the left. Also valid is "qml,top".
# While "widget,top" is valid, the widgets code is **not** flexible
# and results will be terrible.
sidebar: widget
# Kind of navigation (button panel on the bottom).
# - "widget" or unset, use traditional navigation
# - "none", hide it entirely
# - "qml", use calamares-navigation.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. The same sides are valid as for *sidebar*,
# except the default is *bottom*.
navigation: widget
### STRINGS, IMAGES AND COLORS
#
# This section contains the "branding proper" of names
# and images, rather than global-look settings.
# These are strings shown to the user in the user interface.
# There is no provision for translating them -- since they
# are names, the string is included as-is.
#
# The four Url strings are the Urls used by the buttons in
# the welcome screen, and are not shown to the user. Clicking
# on the "Support" button, for instance, opens the link supportUrl.
# If a Url is empty, the corresponding button is not shown.
#
# bootloaderEntryName is how this installation / distro is named
# in the boot loader (e.g. in the GRUB menu).
#
# These strings support substitution from /etc/os-release
# if KDE Frameworks 5.58 are available at build-time. When
# enabled, ${varname} is replaced by the equivalent value
# from os-release. All the supported var-names are in all-caps,
# and are listed on the FreeDesktop.org site,
# https://www.freedesktop.org/software/systemd/man/os-release.html
# Note that ANSI_COLOR and CPE_NAME don't make sense here, and
# are not supported (the rest are). Remember to quote the string
# if it contains substitutions, or you'll get YAML exceptions.
#
# The *Url* entries are used on the welcome page, and they
# are visible as buttons there if the corresponding *show* keys
# are set to "true" (they can also be overridden).
strings:
productName: "${NAME}"
shortProductName: Generic
version: 2023.3 LTS
shortVersion: 2023.3
versionedName: Fancy GNU/Linux 2023.3 LTS "Venomous Vole"
shortVersionedName: FancyGL 2023.3
bootloaderEntryName: FancyGL
productUrl: https://calamares.io/
supportUrl: https://codeberg.org/Calamares/calamares/wiki
knownIssuesUrl: https://codeberg.org/Calamares/calamares/issues
releaseNotesUrl: https://calamares.io/news/
donateUrl: https://docs.codeberg.org/improving-codeberg/donate/
# These images are loaded from the branding module directory.
#
# productBanner is an optional image, which if present, will be shown
# on the welcome page of the application, above the welcome text.
# It is intended to have a width much greater than height.
# It is displayed at 64px height (also on HiDPI).
# Recommended size is 64px tall, and up to 460px wide.
# productIcon is used as the window icon, and will (usually) be used
# by the window manager to represent the application. This image
# should be square, and may be displayed by the window manager
# as small as 16x16 (but possibly larger).
# productLogo is used as the logo at the top of the left-hand column
# which shows the steps to be taken. The image should be square,
# and is displayed at 80x80 pixels (also on HiDPI).
# productWallpaper is an optional image, which if present, will replace
# the normal solid background on every page of the application.
# It can be any size and proportion,
# and will be tiled to fit the entire window.
# For a non-tiled wallpaper, the size should be the same as
# the overall window, see *windowSize* above (800x520).
# productWelcome is shown on the welcome page of the application in
# the middle of the window, below the welcome text. It can be
# any size and proportion, and will be scaled to fit inside
# the window. Use `welcomeExpandingLogo` to make it non-scaled.
# Recommended size is 320x150.
#
# These filenames can also use substitutions from os-release (see above).
images:
# productBanner: "banner.png"
productIcon: "squid.png"
productLogo: "squid.png"
# productWallpaper: "wallpaper.png"
productWelcome: "languages.png"
# Colors for text and background components.
#
# - SidebarBackground is the background of the sidebar
# - SidebarText is the (foreground) text color
# - SidebarBackgroundCurrent sets the background of the current step.
# Optional, and defaults to the application palette.
# - SidebarTextCurrent is the text color of the current step.
#
# These colors can **also** be set through the stylesheet, if the
# branding component also ships a stylesheet.qss. Then they are
# the corresponding CSS attributes of #sidebarApp.
style:
SidebarBackground: "#292F34"
SidebarText: "#FFFFFF"
SidebarTextCurrent: "#292F34"
SidebarBackgroundCurrent: "#D35400"
### SLIDESHOW
#
# The slideshow is displayed during execution steps (e.g. when the
# installer is actually writing to disk and doing other slow things).
# The slideshow can be a QML file (recommended) which can display
# arbitrary things -- text, images, animations, or even play a game --
# during the execution step. The QML **is** abruptly stopped when the
# execution step is done, though, so maybe a game isn't a great idea.
#
# The slideshow can also be a sequence of images (not recommended unless
# you don't want QML at all in your Calamares). The images are displayed
# at a rate of 1 every 2 seconds during the execution step.
#
# To configure a QML file, list a single filename:
# slideshow: "show.qml"
# To configure images, like the filenames (here, as an inline list):
# slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ]
slideshow: "show.qml"
# There are two available APIs for a QML slideshow:
# - 1 (the default) loads the entire slideshow when the installation-
# slideshow page is shown and starts the QML then. The QML
# is never stopped (after installation is done, times etc.
# continue to fire).
# - 2 loads the slideshow on startup and calls onActivate() and
# onLeave() in the root object. After the installation is done,
# the show is stopped (first by calling onLeave(), then destroying
# the QML components).
#
# An image slideshow does not need to have the API defined.
slideshowAPI: 2
# These options are to customize online uploading of logs to pastebins:
# - type : Defines the kind of pastebin service to be used. Currently
# it accepts two values:
# - none : disables the pastebin functionality
# - fiche : use fiche pastebin server
# - url : Defines the address of pastebin service to be used.
# Takes string as input. Important bits are the host and port,
# the scheme is not used.
# - sizeLimit : Defines maximum size limit (in KiB) of log file to be pasted.
# The option must be set, to have the log option work.
# Takes integer as input. If < 0, no limit will be forced,
# else only last (approximately) 'n' KiB of log file will be pasted.
# Please note that upload size may be slightly over the limit (due
# to last minute logging), so provide a suitable value.
uploadServer :
type : "fiche"
url : "http://termbin.com:9999"
sizeLimit : -1

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
SPDX-License-Identifier: GPL-3.0-or-later

View File

@@ -0,0 +1,77 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
function nextSlide() {
console.log("QML Component (default slideshow) Next slide");
presentation.goToNextSlide();
}
Timer {
id: advanceTimer
interval: 1000
running: presentation.activatedInCalamares
repeat: true
onTriggered: nextSlide()
}
Slide {
Image {
id: background
source: "squid.png"
width: 200; height: 200
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
Text {
anchors.horizontalCenter: background.horizontalCenter
anchors.top: background.bottom
text: "This is a customizable QML slideshow.<br/>"+
"Distributions should provide their own slideshow and list it in <br/>"+
"their custom branding.desc file.<br/>"+
"To create a Calamares presentation in QML, import calamares.slideshow,<br/>"+
"define a Presentation element with as many Slide elements as needed."
wrapMode: Text.WordWrap
width: presentation.width
horizontalAlignment: Text.Center
}
}
Slide {
centeredText: qsTr("This is a second Slide element.")
}
Slide {
centeredText: qsTr("This is a third Slide element.")
}
// When this slideshow is loaded as a V1 slideshow, only
// activatedInCalamares is set, which starts the timer (see above).
//
// In V2, also the onActivate() and onLeave() methods are called.
// These example functions log a message (and re-start the slides
// from the first).
function onActivate() {
console.log("QML Component (default slideshow) activated");
presentation.currentSlide = 0;
}
function onLeave() {
console.log("QML Component (default slideshow) deactivated");
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
SPDX-License-Identifier: GPL-3.0-or-later

View File

@@ -0,0 +1,96 @@
/*
* SPDX-FileCopyrightText: no
* SPDX-License-Identifier: CC0-1.0
*/
/*
A branding component can ship a stylesheet (like this one)
which is applied to parts of the Calamares user-interface.
In principle, all parts can be styled through CSS.
Missing parts should be filed as issues.
The IDs are based on the object names in the C++ code.
You can use the Debug Dialog to find out object names:
- Open the debug dialog
- Choose tab *Tools*
- Click *Widget Tree* button
The list of object names is printed in the log.
Documentation for styling Qt Widgets through a stylesheet
can be found at
https://doc.qt.io/qt-5/stylesheet-examples.html
https://doc.qt.io/qt-5/stylesheet-reference.html
In Calamares, styling widget classes is supported (e.g.
using `QComboBox` as a selector).
This example stylesheet has all the actual styling commented out.
The examples are not exhaustive.
*/
/*** Generic Widgets.
*
* You can style **all** widgets of a given class by selecting
* the class name. Some widgets have specialized sub-selectors.
*/
/*
QPushButton { background-color: green; }
*/
/*** Main application window.
*
* The main application window has the sidebar, which in turn
* contains a logo and a list of items -- note that the list
* can **not** be styled, since it has its own custom C++
* delegate code.
*/
/*
#mainApp { }
#sidebarApp { }
#logoApp { }
*/
/*** Welcome module.
*
* There are plenty of parts, but the buttons are the most interesting
* ones (donate, release notes, ...). The little icon image can be
* styled through *qproperty-icon*, which is a little obscure.
* URLs can reference the QRC paths of the Calamares application
* or loaded via plugins or within the filesystem. There is no
* comprehensive list of available icons, though.
*/
/*
QPushButton#aboutButton { qproperty-icon: url(:/data/images/release.svg); }
#donateButton,
#supportButton,
#releaseNotesButton,
#knownIssuesButton { qproperty-icon: url(:/data/images/help.svg); }
*/
/*** Partitioning module.
*
* Many moving parts, which you will need to experiment with.
*/
/*
#bootInfoIcon { }
#bootInfoLable { }
#deviceInfoIcon { }
#defineInfoLabel { }
#scrollAreaWidgetContents { }
#partitionBarView { }
*/
/*** Licensing module.
*
* The licensing module paints individual widgets for each of
* the licenses. The item can be collapsed or expanded.
*/
/*
#licenseItem { }
#licenseItemFullText { }
*/

View File

@@ -0,0 +1,86 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Bootloader configuration. The bootloader is installed to allow
# the system to start (and pick one of the installed operating
# systems to run).
#
# Take note that Debian-derivatives that use unmodified GRUB EFI packages
# should specifically set *efiBootloaderId* to "debian" because that is
# hard-coded in `grubx64.efi`.
---
# A variable from global storage which overrides the value of efiBootLoader
#efiBootLoaderVar: "packagechooser_bootloader"
# Define which bootloader you want to use for EFI installations
# Possible options are 'grub', 'sb-shim', 'refind` and 'systemd-boot'.
efiBootLoader: "grub"
# systemd-boot configuration files settings
# kernelSearchPath is the path relative to the root of the install to search for kernels
# A kernel is identified by finding files which match regular expression, kernelPattern
kernelSearchPath: "/usr/lib/modules"
kernelPattern: "^vmlinuz.*"
# loaderEntries is an array of options to add to loader.conf for systemd-boot
# please note that the "default" option is added programmatically
loaderEntries:
- "timeout 5"
- "console-mode keep"
# systemd-boot and refind support custom kernel params
kernelParams: [ "quiet" ]
# A list of kernel names that refind should accept as kernels
#refindKernelList: [ "linux","linux-lts","linux-zen","linux-hardened" ]
# GRUB 2 binary names and boot directory
# Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names.
# These names are also used when using sb-shim, since that needs some
# GRUB functionality (notably grub-probe) to work. As needed, you may use
# complete paths like `/usr/bin/efibootmgr` for the executables.
#
grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg"
grubProbe: "grub-probe"
efiBootMgr: "efibootmgr"
# Optionally set the bootloader ID to use for EFI. This is passed to
# grub-install --bootloader-id.
#
# If not set here, the value from bootloaderEntryName from branding.desc
# is used, with problematic characters (space and slash) replaced.
#
# The ID is also used as a directory name within the EFI environment,
# and the bootloader is copied from /boot/efi/EFI/<dirname>/ . When
# setting the option here, keep in mind that the name is sanitized
# (problematic characters, see above, are replaced).
#
# There are some special words possible at the end of *efiBootloaderId*:
# ${SERIAL} can be used to obtain a uniquely-numbered suffix
# that is added to the Id (yielding, e.g., `dirname1` or `dirname72`)
# ${RANDOM} can be used to obtain a unique 4-digit hex suffix
# ${PHRASE} can be used to obtain a unique 1-to-3-word suffix
# from a dictionary of space-themed words
# These words must be at the **end** of the *efiBootloaderId* value.
# There must also be at most one of them. If there is none, no suffix-
# processing is done and the *efiBootloaderId* is used unchanged.
#
# NOTE: Debian derivatives that use the unmodified Debian GRUB EFI
# packages may need to set this to "debian" because that is
# hard-coded in `grubx64.efi`.
#
# efiBootloaderId: "dirname"
# Optionally install a copy of the GRUB EFI bootloader as the EFI
# fallback loader (either bootia32.efi or bootx64.efi depending on
# the system). This may be needed on certain systems (Intel DH87MC
# seems to be the only one). If you set this to false, take care
# to add another module to optionally install the fallback on those
# boards that need it.
installEFIFallback: true
# Optionally install both BIOS and UEFI GRUB bootloaders.
installHybridGRUB: false

View File

@@ -0,0 +1,63 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the contextual process job.
#
# Contextual processes are based on **global** configuration values.
# When a given global value (string) equals a given value, then
# the associated command is executed.
#
# Configuration consists of keys for global variable names (except
# *dontChroot* and *timeout*), and the sub-keys are strings to compare
# to the variable's value. If the variable has that particular value, the
# corresponding value (script) is executed. The top-level keys *dontChroot*
# and *timeout* are not global variable names. They have
# meaning just like in shellprocess.conf, that is they
# determine **where** the command runs and how long it has.
#
# The variable **may** contain dots, in which case the dot is used
# to select into maps inside global storage, e.g.
#
# - *firmwareType* is a simple global name
# - *branding.bootloader* is the *bootloader* value in the *branding* map
#
# Only a few global storage entries have well-defined sub-maps;
# branding is one of them, and *filesystem_use* is another. Note that
# variable names with dots **must** be quoted, or you will get a YAML error.
#
#
# You can check for an empty value with "".
#
# As a special case, the value-check "*" matches any value, but **only**
# if no other value-check matches. Use it as an *else* form for value-
# checks. Take care to put the asterisk in quotes. The value-check "*"
# **also** matches a literal asterisk as value; a confusing corner case
# is checking for an asterisk **and** having a wildcard match with
# different commands. This is currently not possible.
#
# Global configuration variables are not checked in a deterministic
# order, so do not rely on commands from one variable-check to
# always happen before (or after) checks on another
# variable. Similarly, the value-equality checks are not
# done in a deterministic order, but all of the value-checks
# for a given variable happen together. As a special case, the
# value-check for "*" (the *else* case) happens after all of the
# other value-checks, and only matches if none of the others do.
#
# The values after a value sub-keys are the same kinds of values
# as can be given to the *script* key in the shellprocess module.
# See shellprocess.conf for documentation on valid values and how
# variables are expanded in those commands.
---
dontChroot: false
firmwareType:
efi:
- "-pkg remove efi-firmware"
- command: "-mkinitramfsrd -abgn"
timeout: 120 # This is slow
bios: "-pkg remove bios-firmware"
"": "/bin/false no-firmware-type-set"
"*": "/bin/false some-other-firmware-value"
"branding.shortVersion":
"2020.2": "/bin/false february"
"2019.4": "/bin/true april"

View File

@@ -0,0 +1,80 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configure one or more display managers (e.g. SDDM)
# with a "best effort" approach.
#
# This module also sets up autologin, if the feature is enabled in
# globalstorage (where it would come from the users page).
---
# The DM module attempts to set up all the DMs found in this list, in the
# precise order listed. The displaymanagers list can also be set in
# globalstorage, and in that case it overrides the setting here.
#
# If *sysconfigSetup* is set to *true* (see below, only relevant for
# openSUSE derivatives) then this list is ignored and only sysconfig
# is attempted. You can also list "sysconfig" in this list instead.
#
displaymanagers:
- slim
- sddm
- lightdm
- gdm
- mdm
- lxdm
- greetd
# Enable the following settings to force a desktop environment
# in your displaymanager configuration file. This will attempt
# to configure the given DE (without checking if it is installed).
# The DM configuration for each potential DM may **or may not**
# support configuring a default DE, so the keys are mandatory
# but their interpretation is up to the DM configuration.
#
# Subkeys of *defaultDesktopEnvironment* are (all mandatory):
# - *executable* a full path to an executable
# - *desktopFile* a .desktop filename
#
# If this is **not** set, then Calamares will look for installed
# DE's and pick the first one it finds that is actually installed.
#
# If this **is** set, and the *executable* key doesn't point to
# an installed file, then the .desktop file's TryExec key is
# used instead.
#
#defaultDesktopEnvironment:
# executable: "startkde"
# desktopFile: "plasma"
#If true, try to ensure that the user, group, /var directory etc. for the
#display manager are set up correctly. This is normally done by the distribution
#packages, and best left to them. Therefore, it is disabled by default.
basicSetup: false
# If true, setup autologin for openSUSE. This only makes sense on openSUSE
# derivatives or other systems where /etc/sysconfig/displaymanager exists.
#
# The preferred way to pick sysconfig is to just list it in the
# *displaymanagers* list (as the only one).
#
sysconfigSetup: false
# Some DMs have specific settings. These can be customized here.
#
# greetd has configurable user and group; the user and group is created if it
# does not exist, and the user is set as default-session user.
#
# Some greeters for greetd (e.g gtkgreet or regreet) have support for a user's GTK CSS style to change appearance.
#
# lightdm has a list of greeters to look for, preferring them in order if
# they are installed (if not, picks the alphabetically first greeter that is installed).
#
greetd:
greeter_user: "tom_bombadil"
greeter_group: "wheel"
greeter_css_location: "/etc/greetd/style.css"
lightdm:
preferred_greeters: ["lightdm-greeter.desktop", "slick-greeter.desktop"]
sddm:
configuration_file: "/etc/sddm.conf"

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: false

View File

@@ -0,0 +1,36 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the "finishedq" page, which is usually shown only at
# the end of the installation (successful or not).
#
# See the documentation for the "finished" module for a full explanation
# of the configuration options; the description here applies primarily
# to the use that the QML makes of them.
---
# Behavior of the "restart system now" button.
#
# The example QML for this module offers a "Restart Now" button,
# which the user can click on. It calls directly to the restart
# function. If the user closes the installer in some other way,
# (the "Done" button or close-window) a restart **might** happen:
#
# - never
# Do not restart (this will also block the "Restart Now" button,
# so it is not very useful)
# - user-unchecked
# Do not restart on other ways of closing the window. No checkbox
# is shown in the example QML, so there is no way for the user to
# express a choice -- except by clicking the "Restart Now" button.
# - user-checked
# Do restart on other ways of closing the window. This makes close
# and "Restart Now" do the same thing. No checkbox is shown by the QML,
# so the machine will **always** restart.
# - always
# Same as above.
#
# For the **specific** example QML included with this module, only
# *user-unchecked* really makes sense.
restartNowMode: user-unchecked
restartNowCommand: "systemctl -i reboot"
notifyOnFinished: false

View File

@@ -0,0 +1,52 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Module that resizes a single FS to fill the entire (rest) of
# a device. This is used in OEM situations where an image is
# flashed onto an SD card (or similar) and used to boot a device,
# after which the FS should expand to fill the SD card.
#
# Example: a distro produces a 6GiB large image that is
# written to an 8GiB SD card; the FS should expand to take
# advantage of the unused 2GiB. The FS should expand much
# more if the same image is written to a 16GiB card.
---
# Which FS needs to be grown? Choose one way to identify it:
# - *fs* names a mount point which should already be mounted
# in the system.
# - *dev* names a device
fs: /
# dev: /dev/mmcblk0p1
# How much of the total remaining space should the FS use?
# The only sensible amount is "all of it". The value is
# in percent, so set it to 100. Perhaps a fixed size is
# needed (that would be weird though, since you don't know
# how big the card is), use MiB as suffix in that case.
# If missing, then it's assumed to be 0, and no resizing
# will happen.
#
# Percentages apply to **available space**.
size: 100%
# Resizing might not be worth it, though. Set the minimum
# that it must grow; if it cannot grow that much, the
# resizing is skipped. Can be in percentage or absolute
# size, as above. If missing, then it's assumed to be 0,
# which means resizing is always worthwhile.
#
# If *atleast* is not zero, then the setting *required*,
# below, becomes relevant.
#
# Percentages apply to **total device size**.
#atleast: 1000MiB
# When *atleast* is not zero, then the resize may be
# recommended (the default) or **required**. If the
# resize is required and cannot be carried out (because
# there's not enough space), then that is a fatal
# error for the installer. By default, resize is only
# recommended and it is not an error for no resize to be
# carried out.
required: false

View File

@@ -0,0 +1,37 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Creates /etc/fstab and /etc/crypttab in the target system.
# Also creates mount points for all the filesystems.
#
# When creating fstab entries for a filesystem, this module
# uses the options previously defined in the mount module
---
# Additional options added to each line in /etc/crypttab
crypttabOptions: luks
# For Debian and Debian-based distributions, change the above line to:
# crypttabOptions: luks,keyscript=/bin/cat
# Options for handling /tmp in /etc/fstab
# Currently default (required) and ssd are supported
# The corresponding string can contain the following variables:
# tmpfs: true or tmpfs: false to either mount /tmp as tmpfs or not
# options: "<mount options>"
#
# Example:
#tmpOptions:
# default:
# tmpfs: false
# options: ""
# ssd:
# tmpfs: true
# options: "defaults,noatime,mode=1777"
#
tmpOptions:
default:
tmpfs: false
options: ""
ssd:
tmpfs: true
options: "defaults,noatime,mode=1777"

View File

@@ -0,0 +1,51 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Create, overwrite or update /etc/default/grub in the target system.
#
# Write lines to /etc/default/grub (in the target system) based
# on calculated values and the values set in the *defaults* key
# in this configuration file.
#
# Calculated values are:
# - GRUB_DISTRIBUTOR, branding module, *bootloaderEntryName* (this
# string is sanitized, and see also setting *keep_distributor*)
# - GRUB_ENABLE_CRYPTODISK, based on the presence of filesystems
# that use LUKS
# - GRUB_CMDLINE_LINUX_DEFAULT, adding LUKS setup and plymouth
# support to the kernel.
---
# If set to true, always creates /etc/default/grub from scratch even if the file
# already existed. If set to false, edits the existing file instead.
overwrite: false
# If set to true, prefer to write files in /etc/default/grub.d/
# rather than the single file /etc/default/grub. If this is set,
# Calamares will write /etc/default/grub.d/00calamares.cfg instead.
prefer_grub_d: false
# If set to true, an **existing** setting for GRUB_DISTRIBUTOR is
# kept, not updated to the *bootloaderEntryName* from the branding file.
# Use this if the GRUB_DISTRIBUTOR setting in the file is "smart" in
# some way (e.g. uses shell-command substitution).
keep_distributor: false
# The default kernel params that should always be applied.
# This is an array of strings. If it is unset, the default is
# `["quiet"]`. To avoid the default, explicitly set this key
# to an empty list, `[]`.
kernel_params: [ "quiet" ]
# Default entries to write to /etc/default/grub if it does not exist yet or if
# we are overwriting it.
#
defaults:
GRUB_TIMEOUT: 5
GRUB_DEFAULT: "saved"
GRUB_DISABLE_SUBMENU: true
GRUB_TERMINAL_OUTPUT: "console"
GRUB_DISABLE_RECOVERY: true
# Set to true to force defaults to be used even when not overwriting
always_use_defaults: false

View File

@@ -0,0 +1,26 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Run mkinitcpio(8) with the given preset value
---
# This key defines the kernel to be loaded.
# It can have the following values:
# - the name of a single mkinitcpio preset
# - empty or unset
# - the literal string "all"
#
# If kernel is set to "all" or empty/unset then mkinitpio is called for all
# kernels. Otherwise it is called with a single preset with the value
# contained in kernel.
#
kernel: linux
# Set this to true to turn off mitigations for lax file
# permissions on initramfs (which, in turn, can compromise
# your LUKS encryption keys, CVS-2019-13179).
#
# If your initramfs are stored in the EFI partition or another non-POSIX
# filesystem, this has no effect as the file permissions cannot be changed.
# In this case, ensure the partition is mounted securely.
#
be_unsafe: false

View File

@@ -0,0 +1,38 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# The initcpiocfg module is responsible for the configuration of mkinitcpio.conf. Typically this
# module is used in conjunction with the initcpio module to generate the boot image when using mkinitcpio
---
#
# Determines if the systemd versions of the hooks should be used. This is false by default.
#
# Please note that using the systemd hooks result in no access to the emergency recovery shell
useSystemdHook: false
#
# Modifications to the standard list of hooks.
#
# There are three subkeys:
# - prepend, which puts hooks at the beginning of the
# list of hooks, in the order specified here,
# - append, which adds hooks at the end of the list of
# hooks, in the order specified here,
# - remove, which removes hooks from the list of hooks,
# wherever they may be.
#
# The example configuration here yields bogus, <stuff>, bogus
# initially, and then removes that hook again.
#
hooks:
prepend: [ bogus ]
append: [ bogus ]
remove: [ bogus ]
#
# In some cases, you may want to use a different source
# file than /etc/mkinitcpio.conf , e.g. because the live system
# does not match the target in a useful way. If unset or
# empty, defaults to /etc/mkinitcpio.conf
#
source: "/etc/mkinitcpio.conf"

View File

@@ -0,0 +1,26 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Run mkinitcpio(8) with the given preset value
---
# This key defines the kernel to be loaded.
# It can have the following values:
# - the name of a single mkinitcpio preset
# - empty or unset
# - the literal string "all"
#
# If kernel is set to "all" or empty/unset then mkinitpio is called for all
# kernels. Otherwise it is called with a single preset with the value
# contained in kernel.
#
kernel: linux
# Set this to true to turn off mitigations for lax file
# permissions on initramfs (which, in turn, can compromise
# your LUKS encryption keys, CVS-2019-13179).
#
# If your initramfs are stored in the EFI partition or another non-POSIX
# filesystem, this has no effect as the file permissions cannot be changed.
# In this case, ensure the partition is mounted securely.
#
be_unsafe: false

View File

@@ -0,0 +1,47 @@
# 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.
# Common paths for this are:
# - /lib/kbd/keymaps/xkb
# - /usr/share/kbd/keymaps/xkb
# 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: true
# Use the Locale1 service instead of directly managing configuration files.
# This is the modern mechanism for configuring the systemwide keyboard layout,
# and works on Wayland compositors to set the current layout.
# Defaults to false on X11 and true otherwise.
#useLocale1: true
# Guess the default layout from the user locale. If false, keeps the current
# OS keyboard layout as the default (useful if the layout is pre-configured).
#guessLayout: true
# Things that should be configured.
configure:
# Configure KWin (KDE Plasma) directly by editing the
# configuration file and informing KWin over DBus. This is
# useful in a system that uses Wayland but does **not** connect
# locale1 with KWin.
#
# Systems that use KDE Plasma Wayland and locale1 can instead start the
# compositor KWin with command-line argument `--locale1`. That
# argument makes this configuration option unnecessary.
kwin: false
# Configure keyboard when using Wayland with Gnome on Ubuntu 24.10+
gnome: false

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: true

View File

@@ -0,0 +1,53 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration file for License viewmodule, Calamares
# Syntax is YAML 1.2
---
# Define a list of licenses which may / must be accepted before continuing.
#
# Each entry in this list has the following keys:
# - id Entry identifier, must be unique. Not user visible. YAML: string.
# - name Pretty name for the software product, user visible and untranslatable. YAML: string.
# - vendor Pretty name for the software vendor, user visible and untranslatable. YAML: string, optional, default is empty.
# - type Package type identifier for presentation, not user visible but affects user visible strings. YAML: string.
# values: driver, gpudriver, browserplugin, codec, package, software; optional, default is software.
# - required If set to true, the user cannot proceed without accepting this license. YAML: boolean, optional, default is false.
# - url A URL for the license; a remote URL is not shown in Calamares, but a link
# to the URL is provided, which opens in the default web browser. A local
# URL (i.e. file:///) assumes that the contents are HTML or plain text, and
# displays the license in-line. YAML: string, mandatory.
# - expand A boolean value only relevant for **local** URLs. If true,
# the license text is displayed in "expanded" form by
# default, rather than requiring the user to first open it up.
# YAML: boolean, optional, default is false.
entries:
- id: nvidia
name: Nvidia
vendor: Nvidia Corporation
type: driver
url: http://developer.download.nvidia.com/cg/Cg_3.0/license.pdf
required: false
- id: amd
name: Catalyst
vendor: "Advanced Micro Devices, Inc."
type: gpudriver
url: http://support.amd.com/en-us/download/eula
required: false
- id: flashplugin
name: Adobe Flash
vendor: Adobe Systems Incorporated
type: browserplugin
url: http://www.adobe.com/products/eulas/pdfs/PlatformClients_PC_WWEULA_Combined_20100108_1657.pdf
required: true
# This example uses a file: link. This example uses a relative link, which
# is relative to where you run Calamares. Assuming you run it from build/
# as part of your testing, you'll get the LICENSE text for Calamares
# (which is the text of the GPLv3, not proprietary at all).
- id: mine_mine
name: Calamares Proprietary License
vendor: Calamares, Inc.
type: software
required: true
url: file:../LICENSE
expand: true

View File

@@ -0,0 +1,131 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
---
# These 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.
#
# Note that useSystemTimezone and GeoIP settings can change the
# starting time zone.
#
region: "America"
zone: "New_York"
# Instead of using *region* and *zone* specified above,
# you can use the system's notion of the timezone, instead.
# This can help if your system is automatically configured with
# a sensible TZ rather than chasing a fixed default.
#
# The default is false.
#
# useSystemTimezone: true
# Should changing the system location (e.g. clicking around on the timezone
# map) immediately reflect the changed timezone in the live system?
# By default, installers (with a target system) do, and setup (e.g. OEM
# configuration) does not, but you can switch it on here (or off, if
# you think it's annoying in the installer).
#
# Note that not all systems support live adjustment.
#
# adjustLiveTimezone: true
# 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 a
# custom path for locale.gen
#
#localeGenPath: "/etc/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 welcome
# module can also do its own GeoIP lookups, independently
# of the lookup done here. The lookup in the welcome module
# is used to establish language; this one is for timezone).
#
# 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 the
# selector 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.
# Special case:
# - the *style* "fixed" is also supported. This ignores the data
# returned from the URL (but the URL must still be valid!)
# and just returns the value of the *selector*.
#
# 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.
#
# 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 _
#
# 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
# For testing purposes, you could use *fixed* style, to see how Calamares
# behaves in a particular zone:
#
# geoip:
# style: "fixed"
# url: "https://geoip.kde.org/v1/calamares" # Still needs to be valid!
# selector: "America/Vancouver" # this is the selected zone
#

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,14 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Luksbootkeyfile configuration. A key file is created for the
# LUKS encrypted devices.
---
# Set Password-Based Key Derivation Function (PBKDF) algorithm
# for LUKS keyslot.
#
# There are three usable specific values: pbkdf2, argon2i or argon2id.
# There is one value equivalent to not setting it: default
#
# When not set (or explicitly set to "default"), the cryptsetup default is used
luks2Hash: default

View File

@@ -0,0 +1,7 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Writes an openswap configuration with LUKS settings to the given path
---
# Path of the configuration file to write (in the target system)
configFilePath: /etc/openswap.conf

View File

@@ -0,0 +1,56 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Machine-ID and other random data on the target system.
#
# This module can create a number of "random" things on the target:
# - a systemd machine-id file (hence the name of the Calamares module)
# with a random UUID.
# - a dbus machine-id file (or, optionally, link to the one from systemd)
# - an entropy file
#
---
# Whether to create /etc/machine-id for systemd.
# The default is *false*.
systemd: true
# If systemd is true, the kind of /etc/machine-id to create in the target
# - uuid (default) generates a UUID
# - systemd alias of uuid
# - blank creates the file but leaves it empty at 0 bytes
# - none alias of blank (use `systemd: false` if you don't want one at all)
# - literal-uninitialized creates the file and writes the string "uninitialized\n"
systemd-style: uuid
# Whether to create /var/lib/dbus/machine-id for D-Bus.
# The default is *false*.
dbus: true
# Whether /var/lib/dbus/machine-id should be a symlink to /etc/machine-id
# (ignored if dbus is false, or if there is no /etc/machine-id to point to).
# The default is *false*.
dbus-symlink: true
# Copy entropy from the host? If this is set to *true*, then
# any entropy file listed below will be copied from the host
# if it exists. Non-existent files will be generated from
# /dev/urandom . The default is *false*.
entropy-copy: false
# Which files to write (paths in the target). Each of these files is
# either generated from /dev/urandom or copied from the host, depending
# on the setting for *entropy-copy*, above.
entropy-files:
- /var/lib/urandom/random-seed
- /var/lib/systemd/random-seed
# Whether to create an entropy file /var/lib/urandom/random-seed
#
# DEPRECATED: list the file in entropy-files instead. If this key
# exists and is set to *true*, a warning is printed and Calamares
# behaves as if `/var/lib/urandom/random-seed` is listed in *entropy-files*.
#
# entropy: false
# Whether to create a symlink for D-Bus
#
# DEPRECATED: set *dbus-symlink* with the same meaning instead.
#
# symlink: false

View File

@@ -0,0 +1,125 @@
# 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
# Btrfs subvolumes to create if root filesystem is on btrfs volume.
# If *mountpoint* is mounted already to another partition, it is ignored.
# Separate subvolume for swapfile is handled separately and automatically.
#
# It is possible to prevent subvolume creation -- this is likely only relevant
# for the root (/) subvolume -- by giving an empty string as a subvolume
# name. In this case no subvolume will be created.
#
btrfsSubvolumes:
- mountPoint: /
subvolume: /@
# As an alternative:
#
# subvolume: ""
- mountPoint: /home
subvolume: /@home
- mountPoint: /var/cache
subvolume: /@cache
- mountPoint: /var/log
subvolume: /@log
# The name of the btrfs subvolume holding the swapfile. This only used when
# a swapfile is selected and the root filesystem is btrfs
#
btrfsSwapSubvol: /@swap
# 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
#
# Example 1
# In this example, there are specific options for ext4 and btrfs filesystems,
# the EFI partition and the subvolume holding the btrfs swapfile. All other
# filesystems use the default entry. For the btrfs filesystem, there are
# additional options specific to hdds and ssds
#
# mountOptions:
# - filesystem: default
# options: [ defaults ]
# - filesystem: efi
# options: [ defaults, umask=0077 ]
# - filesystem: ext4
# options: [ defaults ]
# - filesystem: btrfs
# options: [ defaults, compress=zstd:1 ]
# ssdOptions: [ discard=async ]
# hddOptions: [ autodefrag ]
# - filesystem: btrfs_swap
# options: [ defaults, noatime ]
#
# Example 2
# In this example there is a single default used by all filesystems
#
# mountOptions:
# - filesystem: default
# options: [ defaults ]
#
mountOptions:
- filesystem: default
options: [ defaults ]
- filesystem: efi
options: [ defaults, umask=0077 ]
- filesystem: btrfs
options: [ defaults, compress=zstd:1 ]
- filesystem: btrfs_swap
options: [ defaults, noatime ]

View File

@@ -0,0 +1,347 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
### Netinstall module
#
# The netinstall module allows distribution maintainers to ship minimal ISOs
# with only a basic set of preinstalled packages. At installation time, the
# user is presented with the choice to install groups of packages from a
# predefined list.
#
# Calamares will then use the *packages* module to install the packages.
# Without a *packages* module in the exec phase somewhere **after**
# this netinstall, nothing will actually get installed. The packages
# module must be correctly configured **and** the package manager must
# be runnable from within the installed system at the point where it
# is invoked, otherwise you'll get nothing.
#
# There are two basic deployment schemes:
# - static package lists; the packages do not change for this release.
# In this case, the package list file may be on the ISO-image itself
# as a separate file, **or** included in this configuration file.
# Either will do; separate file is easier to update independently
# of the Calamares configuration, while merged configurations use
# fewer files overall and are closer to self-documenting.
# - online package lists; the package list is fetched from a remote
# URL and handled otherwise like a static list. This can be useful
# if the package list needs updating during the lifetime of an ISO-
# image, e.g. packages are added or renamed.
#
# There is only one required key for this module, *groupsUrl*.
#
# This module supports multiple instances through the *label* key,
# which allows you to distinguish them in the UI.
---
# The *groupsUrl* determines where the data for the netinstall groups-and-
# packages comes from. The value of the key may be:
#
# - a single string (this is treated as a list with just that string in it)
# - a list of strings
#
# Each string is treated as a URL (see below for special cases. The
# list is examined **in order** and each URL is tried in turn. The
# first URL to load successfully -- even if it yields 0 packages --
# ends the process. This allows using a network URL and a (fallback)
# local URL for package lists, or for using multiple mirrors of
# netinstall data.
#
# The URL must point to a YAML file that follows the format described
# below at the key *groups* -- except for the special case URL "local".
# Note that the contents of the groups file is the **important**
# part of the configuration of this module. It specifies what
# groups and packages the user may select (and so what commands are to
# be run to install them).
#
# The format of the groups file is the same as the format of the
# *groups* key described below, **except** that a stand-alone
# groups file does not have to have the top-level *groups* key.
# (It **may** have one, though, for instance when you copy
# this configuration file to `netinstall.yaml` and key *groups*
# must have a list-of-groups as value; if the file does not have
# a top-level key *groups*, then the file must contain only a list of groups.
#
# Each item in the list *groupsUrl* may be:
# - A remote URL like `http://example.org/netinstall.php`
# - A local file URL like `file:///usr/share/calamares/netinstall.yaml`
# - The special-case literal string `local`
#
# Non-special case URLs are loaded as YAML; if the load succeeds, then
# they are interpreted like the *groups* key below. The special case
# `local` loads the data directly from **this** file.
#
groupsUrl: local
# Alternate form:
# groupsUrl: [ local ]
# Net-based package list, with fallback to local file
# groupsUrl:
# - http://example.com/calamares/netinstall.yaml
# - file:///etc/calamares/modules/netinstall.yaml
# If the installation can proceed without netinstall (e.g. the Live CD
# can create a working installed system, but netinstall is preferred
# to bring it up-to-date or extend functionality) leave this set to
# false (the default). If set to true, the netinstall data is required.
#
# This only has an effect if the netinstall data cannot be retrieved,
# or is corrupt: having "required" set, means the install cannot proceed.
# For local or file: type *groupsUrl* settings, this setting is not
# really meaningful.
required: false
# To support multiple instances of this module,
# some strings are configurable and translatable here.
# Sub-keys under *label* are used for the user interface.
# - *sidebar* This is the name of the module in the progress-tree / sidebar
# in Calamares.
# - *title* This is displayed above the list of packages.
# If no *sidebar* values are provided, defaults to "Package selection"
# and existing translations. If no *title* values are provided, no string
# is displayed.
#
# Translations are handled through `[ll]` notation, much like in
# `.desktop` files. The string associated with `key[ll]` is used for
# *key* when when the language *ll* (language-code, like *nl* or *en_GB*
# or *ja*) is used.
#
# The following strings are **already** known to Calamares and can be
# listed here in *untranslated* form (e.g. as value of *sidebar*)
# without bothering with the translations: they are picked up from
# the regular translation framework:
# - "Package selection"
# - "Office software"
# - "Office package"
# - "Browser software"
# - "Browser package"
# - "Web browser"
# - "Kernel"
# - "Services"
# - "Login"
# - "Desktop"
# - "Applications"
# - "Communication"
# - "Development"
# - "Office"
# - "Multimedia"
# - "Internet"
# - "Theming"
# - "Gaming"
# - "Utilities"
# Other strings should follow the translations format.
label:
sidebar: "Package selection"
# sidebar[nl]: "Pakketkeuze"
# sidebar[en_GB]: "Package choice"
# sidebar[ja]: "知りません" # "I don't know"
# title: "Office Package"
# title[nl]: "Kantoorsoftware"
# If, and only if, *groupsUrl* is set to the literal string `local`,
# groups data is read from this file. The value of *groups* must be
# a list. Each item in the list is a group (of packages, or subgroups,
# or both). A standalone groups file contains just the list,
# (without the top-level *groups* key, or just the top-level *groups*
# key and with the list as its value, like in this file).
#
# Using `local` is recommended only for small static package lists.
# Here it is used for documentation purposes.
#
#
### Groups Format
#
# Each item in the list describes one group. The following keys are
# required for each group:
#
# - *name* of the group; short and human-readable. Shown in the first
# column of the UI.
# - *description* of the group; longer and human-readable. Shown in the
# second column of the UI. This is one of the things that visually
# distinguishes groups (with descriptions) from packages (without).
# - *packages*, a list of packages that belong to this group.
# The items of the *packages* list are actual package names
# as passed to the package manager (e.g. `qt5-creator-dev`).
# This list may be empty (e.g. if your group contains only
# subgroups). This key isn't **really** required, either --
# one of *subgroups* or *packages* is.
#
# The following keys are **optional** for a group:
#
# - *hidden*: if true, do not show the group on the page. Defaults to false.
# - *selected*: if true, display the group as selected. Defaults to the
# parent group's value, if there is a parent group; top-level groups
# are set to true by default.
# - *critical*: if true, make the installation process fail if installing
# any of the packages in the group fails. Otherwise, just log a warning.
# Defaults to false. If not set in a subgroup (see below), inherits from
# the parent group.
# - *immutable*: if true, the state of the group (and all its subgroups)
# cannot be changed; no packages can be selected or deselected. No
# checkboxes are show for the group. Setting *immutable* to true
# really only makes sense in combination with *selected* set to true,
# so that the packages will be installed. (Setting a group to immutable
# can be seen as removing it from the user-interface.)
# - *noncheckable*: if true, the entire group cannot be selected or
# deselected by a single click. This does not affect any subgroups
# or child packages
# - *expanded*: if true, the group is shown in an expanded form (that is,
# not-collapsed) in the treeview on start. This only affects the user-
# interface. Only top-level groups are show expanded-initially.
# - *subgroups*: if present this follows the same structure as the top level
# groups, allowing sub-groups of packages to an arbitary depth.
# - *pre-install*: an optional command to run within the new system before
# the group's packages are installed. It will run before **each** package in
# the group is installed.
# - *post-install*: an optional command to run within the new system after
# the group's packages are installed. It will run after **each** package in
# the group is installed.
#
# If you set both *hidden* and *selected* for a top-level group, you are
# creating a "default" group of packages which will always be installed
# in the user's system. Hidden selected subgroups are installed if their
# parent is selected. Setting *hidden* to true without *selected*, or with
# *selected* set to false, is kind of pointless and will generate a warning.
#
# The *pre-install* and *post-install* commands are **not** passed to
# a shell; see the **packages** module configuration (i.e. `packages.conf`)
# for details. To use a full shell pipeline, call the shell explicitly.
#
# Non-critical groups are installed by calling the package manager
# individually, once for each package (and ignoring errors), while
# critical packages are installed in one single call to the package
# manager (and errors cause the installation to terminate).
#
#
#
# The *groups* key below contains some common patterns for packages
# and sub-groups, with documentation.
groups:
# This group is hidden, so the name and description are not really
# important. Since it is selected, these packages will be installed.
# It's non-critical, so they are installed one-by-one.
#
# This is a good approach for something you want up-to-date installed
# in the target system every time.
- name: "Default"
description: "Default group"
hidden: true
selected: true
critical: false
packages:
- base
- chakra-live-skel
# The Shells group contains only subgroups, no packages itself.
# The *critical* value is set for the subgroups that do not
# override it; *selected* is set to false but because one of
# the subgroups sets *selected* to true, the overall state of
# **this** group is partly-selected.
#
# Each of the sub-groups lists a bunch of packages that can
# be individually selected, so a user can pick (for instance)
# just one of the ZSH packages if they like.
- name: "Shells"
description: "Shells"
hidden: false
selected: false
critical: true
subgroups:
- name: "Bash"
description: "Bourne Again Shell"
selected: true
packages:
- bash
- bash-completion
- name: "Zsh"
description: "Zee shell, boss"
packages:
- zsh
- zsh-completion
- zsh-extensions
# The kernel group has no checkbox, because it is immutable.
# It can be (manually) expanded, and the packages inside it
# will be shown, also without checkboxes. This is a way to
# inform users that something will always be installed,
# sort of like a hidden+selected group but visible.
- name: "Kernel"
description: "Kernel bits"
hidden: false
selected: true
critical: true
immutable: true
packages:
- kernel
- kernel-debugsym
- kernel-nvidia
# *selected* defaults to true for top-level
- name: Communications
description: "Communications Software"
packages:
- ruqola
- konversation
- nheko
- quaternion
# Setting *selected* is supported. Here we also show off "rich"
# packages: ones with a package-name (for the package-manager)
# and a description (for the human).
- name: Editors
description: "Editing"
selected: false
packages:
- vi
- emacs
- nano
- name: kate-git
description: Kate (unstable)
- name: kate
description: KDE's text editor
# The "bare" package names can be intimidating, so you can use subgroups
# to provide human-readable names while hiding the packages themselves.
# This also allows you you group related packages -- suppose you feel
# that KDevelop should be installed always with PHP and Python support,
# but that support is split into multiple packages.
#
# So this subgroup (IDE) contains subgroups, one for each "package"
# we want to install. Each of those subgroups (Emacs, KDevelop)
# in turn contains **one** bogus subgroup, which then has the list
# of relevant packages. This extra-level-of-subgrouping allows us
# to list packages, while giving human-readable names.
#
# The name of the internal subgroup doesn't matter -- it is hidden
# from the user -- so we can give them all bogus names and
# descriptions, even the same name. Here, we use "Bogus". You
# can re-use the subgroup name, it doesn't really matter.
#
# Each internal subgroup is set to *hidden*, so it does not show up
# as an entry in the list, and it is set to *selected*,
# so that if you select its parent subgroup, the packages from
# the subgroup are selected with it and get installed.
- name: IDE
description: "Development Environment"
selected: false
subgroups:
- name: Emacs
description: LISP environment and editor
subgroups:
- name: Bogus
description: Bogus
hidden: true
selected: true
packages:
- emacs
- name: KDevelop
description: KDE's C++, PHP and Python environment
subgroups:
- name: Bogus
description: Bogus
hidden: true
selected: true
packages:
- kdevelop
- kdevelop-dev
- kdev-php
- kdev-python

View File

@@ -0,0 +1,43 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# The *notesqml* module can be used to display a QML file
# as an installer step. This is most useful for release-notes
# and similar somewhat-static content, but if you want to you
# can put SameGame in there as well.
#
# While the module compiles a QML file into a QRC for inclusion
# into the shared library, normal use will configure it with
# an external file, either from Calamares AppData directory or
# from the branding directory.
#
# ---
#
# QML modules can search for the QML inside the Qt resources
# (QRC) which are compiled into the module, or in the branding
# setup for Calamares, (or both of them, with branding taking
# precedence). This allows the module to ship a default UI and
# branding to optionally introduce a replacement file.
#
# Generally, leave the search method set to "both" because if
# you don't want to brand the UI, just don't ship a branding
# QML file for it.
#
# To support instanced QML modules, searches in the branding
# directory look for the full notesqml@instanceid name as well.
---
# Search mode. Valid values are "both", "qrc" and "branding"
qmlSearch: both
# Name of the QML file. If not set, uses the name of the instance
# of the module (e.g. if you list this module in `settings.conf`
# in the *instances* section, you get *id*, otherwise it would
# normally be "notesqml").
# qmlFilename: notesqml
# This is the name of the module in the progress-tree / sidebar
# in Calamares. To support multiple instances of the QML module,
# the name is configurable and translatable here.
qmlLabel:
notes: "Release Notes"
notes[nl]: "Opmerkingen"

View File

@@ -0,0 +1,16 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# This is an OEM setup (phase-0) configuration file.
---
# The batch-identifier is written to /var/log/installer/oem-id.
# This value is put into the text box as the **suggested**
# OEM ID. If ${DATE} is included in the identifier, then
# that is replaced by the current date in yyyy-MM-dd (ISO) format.
#
# It is ok for the identifier to be empty.
#
# The identifier is written to the file as UTF-8 (this will be no
# different from ASCII, for most inputs) and followed by a newline.
# If the identifier is empty, only a newline is written.
batch-identifier: neon-${DATE}

View File

@@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
---
configFilePath: /etc/conf.d/dmcrypt

View File

@@ -0,0 +1,214 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# The configuration for the package manager starts with the
# *backend* key, which picks one of the backends to use.
# In `main.py` there is a base class `PackageManager`.
# Implementations must subclass that and set a (class-level)
# property *backend* to the name of the backend (e.g. "dummy").
# That property is used to match against the *backend* key here.
#
# You will have to add such a class for your package manager.
# It is fairly simple Python code. The API is described in the
# abstract methods in class `PackageManager`. Mostly, the only
# trick is to figure out the correct commands to use, and in particular,
# whether additional switches are required or not. Some package managers
# have more installer-friendly defaults than others, e.g., DNF requires
# passing --disablerepo=* -C to allow removing packages without Internet
# connectivity, and it also returns an error exit code if the package did
# not exist to begin with.
---
#
# Which package manager to use, options are:
# - apk - Alpine Linux package manager
# - apt - APT frontend for DEB and RPM
# - dnf - DNF, the new RPM frontend
# - dnf5 - DNF5, the newer new RPM frontend
# - entropy - Sabayon package manager (is being deprecated)
# - luet - Sabayon package manager (next-gen)
# - packagekit - PackageKit CLI tool
# - pacman - Pacman
# - pamac - Manjaro package manager
# - portage - Gentoo package manager
# - yum - Yum RPM frontend
# - zypp - Zypp RPM frontend
#
# Not actually a package manager, but suitable for testing:
# - dummy - Dummy manager, only logs
#
backend: dummy
#
# Often package installation needs an internet connection.
# Since you may allow system installation without a connection
# and want to offer OPTIONAL package installation, it's
# possible to have no internet, yet have this packages module
# enabled in settings.
#
# You can skip the whole module when there is no internet
# by setting "skip_if_no_internet" to true.
#
# You can run a package-manager specific update procedure
# before installing packages (for instance, to update the
# list of packages and dependencies); this is done only if there
# is an internet connection.
#
# Set "update_db" to 'true' for refreshing the database on the
# target system. On target installations, which got installed by
# unsquashing, a full system update may be needed. Otherwise
# post-installing additional packages may result in conflicts.
# Therefore set also "update_system" to 'true'.
#
skip_if_no_internet: false
update_db: true
update_system: false
# pacman specific options
#
# *num_retries* should be a positive integer which specifies the
# number of times the call to pacman will be retried in the event of a
# failure. If it is missing, it will be set to 0.
#
# *disable_download_timeout* is a boolean that, when true, includes
# the flag --disable-download-timeout on calls to pacman. When missing,
# false is assumed.
#
# *needed_only* is a boolean that includes the pacman argument --needed
# when set to true. If missing, false is assumed.
pacman:
num_retries: 0
disable_download_timeout: false
needed_only: false
#
# List of maps with package operations such as install or remove.
# Distro developers can provide a list of packages to remove
# from the installed system (for instance packages meant only
# for the live system).
#
# A job implementing a distro specific logic to determine other
# packages that need to be installed or removed can run before
# this one. Distro developers may want to install locale packages
# or remove drivers not needed on the installed system.
# Such a job would populate a list of dictionaries in the global
# storage called "packageOperations" and that list is processed
# after the static list in the job configuration (i.e. the list
# that is in this configuration file).
#
# Allowed package operations are:
# - *install*, *try_install*: will call the package manager to
# install one or more packages. The install target will
# abort the whole installation if package-installation
# fails, while try_install carries on. Packages may be
# listed as (localized) names, or as (localized) package-data.
# See below for the description of the format.
# - *localInstall*: this is used to call the package manager
# to install a package from a path-to-a-package. This is
# useful if you have a static package archive on the install media.
# The *pacman* package manager is the only one to specially support
# this operation (all others treat this the same as *install*).
# - *remove*, *try_remove*: will call the package manager to
# remove one or more packages. The remove target will
# abort the whole installation if package-removal fails,
# while try_remove carries on. Packages may be listed as
# (localized) names.
# One additional key is recognized, to help netinstall out:
# - *source*: ignored, does get logged
# Any other key is ignored, and logged as a warning.
#
# There are two formats for naming packages: as a name or as package-data,
# which is an object notation providing package-name, as well as pre- and
# post-install scripts.
#
# Here are both formats, for installing vi. The first one just names the
# package for vi (using the naming of the installed package manager), while
# the second contains three data-items; the pre-script is run before invoking
# the package manager, and the post-script runs once it is done.
#
# - install
# - vi
# - package: vi
# pre-script: touch /tmp/installing-vi
# post-script: rm -f /tmp/installing-vi
#
# The pre- and post-scripts are optional, but you cannot leave both out
# if you do use the *package* key: using "package: vi" with neither script
# option will trick Calamares into trying to install a package named
# "package: vi", which is unlikely to work.
#
# The pre- and post-scripts are **not** executed by a shell unless you
# explicitly invoke `/bin/sh` in them. The command-lines are passed
# to exec(), which does not understand shell syntax. In other words:
#
# pre-script: ls | wc -l
#
# Will fail, because `|` is passed as a command-line argument to ls,
# as are `wc`, and `-l`. No shell pipeline is set up, and ls is likely
# to complain. Invoke the shell explicitly:
#
# pre-script: /bin/sh -c \"ls | wc -l\"
#
# The above note on shell-expansion applies to versions up-to-and-including
# Calamares 3.2.12, but will change in future.
#
# Any package name may be localized; this is used to install localization
# packages for software based on the selected system locale. By including
# the string `LOCALE` in the package name, the following happens:
#
# - if the system locale is English (any variety), then the package is not
# installed at all,
# - otherwise `$LOCALE` or `${LOCALE}` is replaced by the 'lower-cased' BCP47
# name of the 'language' part of the selected system locale (not the
# country/region/dialect part), e.g. selecting "nl_BE" will use "nl"
# here.
#
# Take care that just plain `LOCALE` will not be replaced, so `foo-LOCALE` will
# be left unchanged, while `foo-$LOCALE` will be changed. However, `foo-LOCALE`
# **will** be removed from the list of packages (i.e. not installed), if
# English is selected. If a non-English locale is selected, then `foo-LOCALE`
# will be installed, unchanged (no language-name-substitution occurs).
#
# The following installs localizations for vi, if they are relevant; if
# there is no localization, installation continues normally.
#
# - install
# - vi-$LOCALE
# - package: vi-${LOCALE}
# pre-script: touch /tmp/installing-vi
# post-script: rm -f /tmp/installing-vi
#
# When installing packages, Calamares will invoke the package manager
# with a list of package names if it can; package-data prevents this because
# of the scripts that need to run. In other words, this:
#
# - install:
# - vi
# - binutils
# - package: wget
# pre-script: touch /tmp/installing-wget
#
# This will invoke the package manager three times, once for each package,
# because not all of them are simple package names. You can speed up the
# process if you have only a few pre-scripts, by using multiple install targets:
#
# - install:
# - vi
# - binutils
# - install:
# - package: wget
# pre-script: touch /tmp/installing-wget
#
# This will call the package manager once with the package-names "vi" and
# "binutils", and then a second time for "wget". When installing large numbers
# of packages, this can lead to a considerable time savings.
#
operations:
- install:
- vi
- vi-${LOCALE}
- wget
- binutils
- remove:
- vi
- wget
- binutils

View File

@@ -0,0 +1,397 @@
# 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. Distros that allow more user latitude can set the minimum lower.
efi:
mountPoint: "/boot/efi"
recommendedSize: 300MiB
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: luks1
# 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: true
# 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.
#
# Possible values: gpt, msdos (or other names defined by KPMcore).
# Names are case-sensitive.
#
# If nothing is specified, Calamares defaults to "gpt" if system is
# efi or "msdos" otherwise.
#
# defaultPartitionTableType: msdos
# Specify whether to create a partition table layout suitable for a hybrid
# (BIOS + EFI) bootloader installation. This will prepend both bios-boot and
# EFI system partitions to the partition layout, regardless of whether the
# booted system uses BIOS or EFI firmware. Defaults to false.
#
# createHybridBootloaderLayout: false
# Requirement for partition table type
#
# Restrict the installation on disks that match the type of partition
# tables that are specified.
#
# Possible values: msdos, gpt (or other names defined by KPMcore).
# Names are case-sensitive.
#
# 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"]
# Per-directory filesystem restrictions.
#
# This optional setting specifies what filesystems the user can and cannot use
# for various directories and mountpoints when using manual partitioning.
#
# If nothing is specified, the only restriction enforced by default is that
# the EFI system partition must use the fat32 filesystem.
#
# Otherwise, the filesystem restrictions are defined as follow:
#
# directoryFilesystemRestrictions:
# - directory: "any"
# allowedFilesystemTypes: ["all"]
# - directory: "/"
# allowedFilesystemTypes: ["ext4","xfs","btrfs","jfs","f2fs"]
# - mountpoint: "efi"
# allowedFilesystemTypes: ["fat32"]
# onlyWhenMountpoint: true
#
# There can be any number of mountpoints listed, each entry having the
# following attributes:
# - mountpoint: mountpoint's full path
# or
# "any" to specify a global whitelist that applies to all
# mountpoints
# or
# "efi" to specify a whitelist specific to the EFI system
# partition, wherever that partition is located
# - allowedFilesystemTypes: the list of all filesystems valid for this
# mountpoint. If the list contains exactly one
# element, and that element is the special value
# "any", all filesystem types recognized by
# Calamares will be allowed.
# - onlyWhenMountpoint: Whether the restriction should apply only when the
# specified directory is a mountpoint. When set to
# true, Calamares will only enforce the listed
# restrictions when the user makes a separate partition
# for this directory and assigns the mountpoint
# accordingly. When set to false, Calamares will
# ensure this directory uses the specified filesystem
# even if the directory is part of a filesystem on a
# different mountpoint. Defaults to false.
# The ClearMounts job unmounts / unmaps things before partitioning.
# Some special entries under /dev/mapper are excepted from this process.
# The example lists the three hard-coded exceptions which always apply
# (they don't need to be listed here). Add other names or wildcards (with
# a trailing '*') to this list if the live-ISO has additional mounts.
essentialMounts: [ "live-*", "control", "ventoy" ]
# 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
# the Calamares website at https://calamares.io/docs/partitions/#luks .
#
# If nothing is specified, LUKS is enabled in automated modes.
#enableLuksAutomatedPartitioning: true
# When enableLuksAutomatedPartitioning is true, this option will pre-check
# encryption checkbox. This option is only usefull to help people to not forget
# to cypher their disk when installing in enterprise (for example).
#preCheckEncryption: false
# LVM support
#
# There is only one sub-key available, *enable* (defaults to true)
# which can be used to show (default) or hide the LVM buttons in the partitioning module.
lvm:
enable: 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 prepended automatically to the layout if
# needed; the swap partition is appended to the layout if enabled (selections
# "small" or "suspend" in *userSwapChoices*).
#
# Otherwise, the partition layout is defined as follow:
#
# partitionLayout:
# - name: "rootfs"
# type: "4f68bce3-e8cd-4db1-96e7-fbcaf984b709"
# filesystem: "ext4"
# noEncrypt: false
# mountPoint: "/"
# size: 20%
# minSize: 500M
# maxSize: 10G
# attributes: 0xffff000000000003
# - name: "home"
# type: "933ac7e1-2eb4-4f13-b844-0e14e2aef915"
# filesystem: "ext4"
# noEncrypt: false
# mountPoint: "/home"
# size: 3G
# minSize: 1.5G
# features:
# 64bit: false
# casefold: true
# - name: "data"
# filesystem: "fat32"
# mountPoint: "/data"
# features:
# sector-size: 4096
# sectors-per-cluster: 128
# 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
# Use GPT for UEFI (standard for modern VMs)
defaultPartitionTableType: "gpt"
# Ensure the installer doesn't hang on "busy" disks
enableLuksAutomatedPartitioning: true

View File

@@ -0,0 +1,83 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# The Plasma Look-and-Feel module allows selecting a Plasma
# Look-and-Feel in the live- or host-system and switches the
# host Plasma session immediately to the chosen LnF; it
# can also write a LnF configuration to the target user / on
# the target system.
#
# This module should be used once in a view section (to get
# the UI) and once in the exec section (to apply the selection
# to the target user). It should come **after** the user module
# in exec, so that the target user has been created alrady.
---
# Full path to the Plasma look-and-feel tool (CLI program
# for querying and applying Plasma themes). If this is not
# set, no LNF setting will happen.
lnftool: "/usr/bin/lookandfeeltool"
# For systems where the user Calamares runs as (usually root,
# via either sudo or pkexec) has a clean environment, set this
# to the originating username; the lnftool will be run through
# "sudo -H -u <liveuser>" instead of directly.
#
# liveuser: "live"
# If *showAll* is true, then all installed themes are shown in the
# UI for selection, even if they are not listed in *themes* (below).
# This allows selection of all themes even while not all of them are
# listed in *themes* -- which is useful to show screenshots for those
# you do have a screenshot for. If *themes* is empty or missing,
# the value of *showAll* is treated as `true`.
showAll: false
# You can limit the list of Plasma look-and-feel themes by listing ids
# here. If this key is not present, all of the installed themes are listed.
# If the key is present, only installed themes that are **also** included
# in the list are shown (could be none!). See the *showAll* key, above,
# to change that.
#
# Themes may be listed by id, (e.g. fluffy-bunny, below) or as a theme
# and an image (e.g. breeze) which will be used to show a screenshot.
# Themes with no image set at all get a "missing screenshot" image; if the
# image file is not found, they get a color swatch based on the image name.
#
# The image may be an absolute path. If it is a relative path, though,
# it is searched in the current directory and in the branding directory
# (i.e. relative to the directory where your branding.desc lives).
#
# Valid forms of entries in the *themes* key:
# - A single string (unquoted), which is the theme id
# - A pair of *theme* and *image* keys, e.g.
# ```
# - theme: fluffy-bunny.desktop
# image: "fluffy-screenshot.png"
# ```
#
# The image screenshot is resized to 12x8 the current font size, with
# a minimum of 120x80 pixels. This allows the screenshot to scale up
# on HiDPI displays where the fonts are larger (in pixels).
themes:
- org.kde.fuzzy-pig.desktop
- theme: org.kde.breeze.desktop
image: "breeze.png"
- theme: org.kde.breezedark.desktop
image: "breeze-dark.png"
- org.kde.fluffy-bunny.desktop
# You can pre-select one of the themes; it is not applied
# immediately, but its radio-button is switched on to indicate
# that that is the theme (that is most likely) currently in use.
# Do this only on Live images where you are reasonably sure
# that the user is not going to change the theme out from under
# themselves before running the installer.
#
# If this key is present, its value should be the id of the theme
# which should be pre-selected. If absent, empty, or the pre-selected
# theme is not found on the live system, no theme will be pre-selected.
#
# As a special setting, use "*", to try to find the currently-
# selected theme by reading the Plasma configuration. This requires
# KF5::Config at build- and run-time.
preselect: "*"

View File

@@ -0,0 +1,31 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Plymouth Configuration Module
#
# This module can be used to setup the default plymouth theme to
# be used with your distribution
#
# You should only use this module if the plymouth package is installed
# on the build configurations of your distribution & the plymouth
# theme you want to configure is installed as well. If the unpacked
# filesystem configures a plymouth theme already, there is no need
# to change it here.
---
# Leave this commented if you want to use the default theme
# shipped with your distribution configurations. Make sure that
# the theme exists in the themes directory of plymouth path.
# Debian / Ubuntu comes with themes "joy", "script", "softwaves",
# possibly others. Look in /usr/share/plymouth/themes for more.
#
# Specifying a non-existent theme will leave the plymouth
# configuration set to that theme. It is up to plymouth to
# deal with that.
plymouth_theme: spinfinity

View File

@@ -0,0 +1,70 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the preserve-files job
#
# The *files* key contains a list of files to preserve. Each element of
# the list should have one of these forms:
#
# - an absolute path (probably within the host system). This will be preserved
# as the same path within the target system (chroot). If, globally,
# *dontChroot* is true, then these items will be ignored (since the
# destination is the same as the source).
# - a map with a *dest* key. The *dest* value is a path interpreted in the
# target system (if the global *dontChroot* is true, then the host is the
# target as well). Relative paths are not recommended. There are two
# ways to select the source data for the file:
# - *from*, which must have one of the values, below; it is used to
# preserve files whose pathname is known to Calamares internally.
# - *src*, to refer to a path interpreted in the host system. Relative
# paths are not recommended, and are interpreted relative to where
# Calamares is being run.
# Exactly one of the two source keys (either *from* or *src*) must be set.
#
# Special values for the key *from* are:
# - *log*, for the complete log file (up to the moment the preservefiles
# module is run),
# - *config*, for a JSON dump of the contents of global storage.
# Note that this may contain sensitive information, and should be
# given restrictive permissions.
#
# A map with a *dest* key can have these additional fields:
# - *perm*, is a colon-separated tuple of <user>:<group>:<mode>
# where <mode> is in octal (e.g. 4777 for wide-open, 0400 for read-only
# by owner). If set, the file's ownership and permissions are set to
# those values within the target system; if not set, no permissions
# are changed.
# - *optional*, is a boolean; if this is set to `true` then failure to
# preserve the file will **not** be counted as a failure of the
# module, and installation will proceed. Set this for files that might
# not exist in the host system (e.g. nvidia configuration files that
# are created in some boot scenarios and not in others).
#
# The target path (*dest*) is modified by expanding variables in `${}`:
# - `ROOT` is replaced by the path to the target root (may be /).
# There is never any reason to use this, since the *dest* is already
# interpreted in the target system.
# - `USER` is replaced by the username entered by on the user
# page (may be empty, for instance if no user page is enabled)
#
#
#
files:
- from: log
dest: /var/log/Calamares.log
perm: root:wheel:600
- from: log
dest: /home/${USER}/installation.log
optional: true
- from: config
dest: /var/log/Calamares-install.json
perm: root:wheel:600
# - src: /var/log/nvidia.conf
# dest: /var/log/Calamares-nvidia.conf
# optional: true
# The *perm* key contains a default value to apply to all files listed
# above that do not have a *perm* key of their own. If not set,
# root:root:0400 (highly restrictive) is used.
#
# perm: "root:root:0400"

View File

@@ -0,0 +1,32 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the rawfs module: raw filesystem copy to a block device
---
# To apply a custom partition layout, it has to be defined as a list of targets.
#
# For each target, the following attributes must be defined:
# * mountPoint: The mount point of the destination device on the installed system
# The corresponding block device will automatically be identified and used as the
# destination for the operation
# * source: The source filesystem; it can be the mount point of a locally (on the
# live system) mounted filesystem, a path to a disk image, or a block device
# * resize (optional): Expand the destination filesystem to fill the whole
# partition at the end of the operation; this works only with ext filesystems
# for now
targets:
- mountPoint: /
source: /
- mountPoint: /home
source: /images/home.img
resize: true
- mountPoint: /data
source: /dev/mmcblk0p3
# To support testing, set the *bogus* key to true. No actual work is done, but the
# module's logic is exercised.
# bogus: false

View File

@@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Removes a single user (with userdel) from the system.
# This is typically used in OEM setups or if the live user
# spills into the target system.
#
# The module never fails; if userdel fails, this is logged
# but the module still reports success and installation / setup
# continues as normal.
---
# Username in the target system to be removed.
username: live

View File

@@ -0,0 +1,54 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Systemd units manipulation.
#
# This module can perform actions using systemd units,
# (for example, enabling, disabling, or masking services, sockets, paths, etc.)
---
# There is one key for this module: *units*. Its value is a list of entries.
# Each entry has three keys:
# - *name* is the (string) name of the systemd unit that is being changed.
# Use quotes. You can use any valid systemd unit here (for example,
# "NetworkManager.service", "cups.socket", "lightdm", "gdm", etc.)
# - *action* is the (string) action that you want to perform over the unit
# (for example, "enable", "disable", "mask", "unmask", etc.). Please
# ensure that the action can actually run under chroot (otherwise it is
# pointless)
# - *mandatory* is a boolean option, which states whether the change
# must be done successfully. If systemd reports an error while changing
# a mandatory entry, the installation will fail. When mandatory is false,
# errors for that systemd unit are ignored. If mandatory
# is not specified, the default is false.
#
# The order of operations is the same as the order in which entries
# appear in the list
# # This example enables NetworkManager.service (and fails if it can't),
# # disables cups.socket (and ignores failure). Then it enables the
# # graphical target (e.g. so that SDDM runs for login), and
# # finally masks pacman-init (an ArchLinux-only service).
# #
# units:
# - name: "NetworkManager.service"
# action: "enable"
# mandatory: true
#
# - name: "cups.socket"
# action: "disable"
# # The property "mandatory" is taken to be false by default here
# # because it is not specified
#
# - name: "graphical.target"
# action: "enable"
# # The property "mandatory" is taken to be false by default here
# # because it is not specified
#
# - name: "pacman-init.service"
# action: "mask"
# # The property "mandatory" is taken to be false by default here
# # because it is not specified
# By default, no changes are made.
units: []

View File

@@ -0,0 +1,146 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the shell process job.
#
# Executes a list of commands found under the key *script*.
# If the top-level key *dontChroot* is true, then the commands
# are executed in the context of the live system, otherwise
# in the context of the target system. In all of the commands,
# the following variable expansions will take place:
# - `ROOT` is replaced by the root mount point of the **target**
# system from the point of view of the command (when run in the target
# system, e.g. when *dontChroot* is false, that will be `/`).
# - `USER` is replaced by the username, set on the user page.
# - `LANG` is replaced by the language chosen for the user-interface
# of Calamares, set on the welcome page. This may not reflect the
# chosen system language from the locale page.
#
# As a special case, variables of the form `gs[key]` where `key` is
# a dotted-keys string and `gs` is literally the letters `g` and `s`,
# use **any** value from Global Storage. For example,
#
# gs[branding.bootloader]
#
# This variable refers to the GS value stored in `bootloader` in the
# `branding` map. Examine the Debug window for information about the
# keys stored in GS. Only strings and integers are exposed this way,
# lists and other data types do not set any variable this way.
#
# Variables are written as `${var}`, e.g. `${ROOT}`.
# Write `$$` to get a shell-escaped `\$` in the shell command.
# It is not possible to get an un-escaped `$` in the shell command
# (either the command will fail because of undefined variables, or
# you get a shell-escaped `\$`).
#
# The (global) timeout for the command list can be set with
# the *timeout* key. The value is a time in seconds, default
# is 30 seconds if not set. The timeout **must** be tuned, either
# globally or per-command (see below in the description of *script*),
# to the load or expected running-time of the command.
#
# - Setting a timeout of 30 for a `touch` command is probably exessive
# - Setting a timeout of 1 for a `touch` command might be low,
# on a slow disk where touch needs to be loaded from CDROM
# - Setting a timeout of 30 for a 1GB download is definitely low
# - Setting a timeout of 3600 for a 1GB download is going to leave
# the user in uncertainty for a loooong time.
#
# The (global) verbosity of a command can be set to `true` or `false`.
# When set to `true`, command output is logged one line at a time.
# Otherwise the output is logged when the command completes.
# Line-at-a-time logging is appropriate for commands that take
# a long time to complete and produce their own (progress) output.
#
# If a command starts with "-" (a single minus sign), then the
# return value of the command following the - is ignored; otherwise,
# a failing command will abort the installation. This is much like
# make's use of - in a command.
#
# The value of *script* may be:
# - a single string; this is one command that is executed.
# - a single object (see below).
# - a list of items; these are executed one at a time, by
# separate shells (/bin/sh -c is invoked for each command).
# Each list item may be:
# - a single string; this is one command that is executed.
# - a single object, specifying a key *command* and (optionally)
# a key *timeout* to set the timeout for this specific
# command differently from the global setting. An optional
# key *environment* is a list of strings to put into the
# environment of the command. An optional key *verbose*
# overrides the global *verbose* setting in this file.
#
# Using a single object is not generally useful because the same effect
# can be obtained with a single string and a global timeout, except
# when the command needs environment-settings. When there are
# multiple commands to execute, one of them might have
# a different timeout than the others.
#
# The environment strings should all be "KEY='some value'" strings,
# as if they can be typed into the shell. Quoting the environment
# strings with "" in YAML is recommended. Adding the '' quotes ensures
# that the value will not be interpreted by the shell. Writing
# environment strings is the same as placing `export KEY='some value' ;`
# in front of the *command*.
#
# Calamares variable expansion is **also** done on the environment strings.
# Write `$$` to get a literal `$` in the shell command.
#
# To change the description of the job, set the *name* entries in *i18n*.
---
# Set to true to run in host, rather than target system
dontChroot: false
# Tune this for the commands you're actually running, or
# use the list-of-items form of commands to tune the timeout
# for each command individually.
timeout: 10
# This will copy the output from the command into the Calamares
# log file. No processing is done beyond log-each-line-separately,
# so this can introduce weirdness in the log if the script
# outputs e.g. escape codes.
#
# The default is `false`. This can also be set for each
# command individually.
verbose: false
# Script may be a single string (because false returns an error exit
# code, this will trigger a failure in the installation):
#
# script: "/usr/bin/false"
# Script may be a list of strings (because false returns an error exit
# code, **but** the command starts with a "-", the error exit is
# ignored and installation continues):
#
# script:
# - "-/usr/bin/false"
# - "/bin/ls"
# - "/usr/bin/true"
# Script may be a list of items
# - if the touch command fails, it is ignored
# - there is nothing special about the invocation of true
# - the slowloris command has a different timeout from the other commands
# - the echo command logs its output line-by-line
script:
- "-touch ${ROOT}/tmp/thingy"
- "/usr/bin/true"
- command: "/usr/local/bin/slowloris"
timeout: 3600
- command: "echo -e '\e[33;2mred\e[33;0m' ; echo second line"
verbose: true
# You can change the description of the job (as it is displayed in the
# progress bar during installation) by defining an *i18n* key, which
# has a *name* field and optionally, translations as *name[lang]*.
#
# Without a translation here, the default name from the source code
# is used, "Shell Processes Job".
#
# i18n:
# name: "Shell process"
# name[nl]: "Schelpenpad"
# name[en_GB]: "Just a moment"

View File

@@ -0,0 +1,105 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Settings for various kinds of tracking that Distributions can
# enable. Distributions looking at tracking should be aware of
# the privacy (and hence communications) impact of that tracking,
# and are advised to consult the Mozilla and KDE policies on
# privacy and user tracking.
#
# There are three areas of tracking (-configuration) supported
# by Calamares It is up to individual Distributions to create
# suitable backends / configuration scripts for each. The
# different areas are:
#
# install: This is "phone home" functionality at the end of the
# install process. When enabled, it contacts the given
# URL. The URL can contain the special token $MACHINE,
# which is replaced by the machine-id of the installed
# system (if available, blank otherwise).
#
# machine: This enables machine-level tracking on a (semi-)
# continuous basis. It is meant to keep track of installed
# systems and their continued use / updating.
#
# user: This area enables user-level tracking, along the lines
# of the KDE User Telemetry Policy. It enables specific
# collection of data at a user- and application-level,
# possibly including actions done in an application.
# For the KDE environment, this enables user tracking
# with the appropriate framework, and the KDE User Telemetry
# policy applies.
#
# Each area has a key *enabled*. If the area is enabled, it is shown to
# the user. This defaults to false, which means no tracking would be
# configured or enabled by Calamares.
#
# Each area has a key *policy*, which is a Url to be opened when
# the user clicks on the corresponding Help button for an explanation
# of the details of that particular kind of tracking. If no policy
# is set, that tracking style is disabled. The example policy links
# go to Calamares' generic user manual (which is a terrible idea
# for a distribution: you have GDPR obligations under most of these
# tracking styles, so do your homework).
#
# Each area may have other configuration keys, depending on the
# area and how it needs to be configured.
#
# Globally, there are two other keys:
#
# policy: (optional) url about tracking settings for this distro.
# default: (optional) level to enable by default
#
---
# This is the global policy; it is displayed as a link on the page.
# If blank or commented out, no link is displayed on the tracking
# page. You **must** provide policy links per-area as well.
policy: "https://calamares.io/docs/tracking#policy"
# This is the default area to enable for tracking. If commented out,
# empty, or otherwise invalid, "none" is used, so no tracking by default.
# Setting an area here also checks the areas before it (install, machine,
# then user) by default -- subject to those areas being enabled at all.
# default: user
# The install area has one specific configuration key:
# url: this URL (remember to include the protocol, and prefer https)
# is fetched (with a GET request, and the data discarded) at
# the end of the installation process. The following tokens
# are replaced in the url (possibly by blank strings, or by 0).
# - $CPU (cpu make and model)
# - $MEMORY (amount of main memory available)
# - $DISK (total amount of disk attached)
# Typically these are used as GET parameters, as in the example.
#
# Note that phone-home only works if the system has an internet
# connection; it is a good idea to require internet in the welcome
# module then.
install:
enabled: false
policy: "https://calamares.io/docs/tracking#policy"
url: "https://example.com/install.php?c=$CPU&m=$MEMORY"
# The machine area has one specific configuration key:
# style: This string specifies what kind of tracking configuration
# needs to be done. See below for valid styles.
#
# Available styles:
# - *updatemanager* replaces the literal string "${MACHINE_ID}" with the contents of
# /etc/machine-id, in lines starting with "URI" in the file /etc/update-manager/meta-release
machine:
enabled: false
style: updatemanager
policy: "https://calamares.io/docs/tracking#policy"
# The user area has one specific configuration key:
# style: This string specifies what kind of tracking configuration
# needs to be done. See below for valid styles.
#
# Available styles:
# - *kuserfeedback* sets up KUserFeedback tracking (applicable to the KDE
# Plasma Desktop) for each KUserFeedback area listed in *areas*.
user:
enabled: false
style: kuserfeedback
areas: [ PlasmaUserFeedback ]

View File

@@ -0,0 +1,14 @@
# 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. After this, there is no regular way
# to modify the target system anymore.
#
---
# Setting emergency to true will make it so this module is still run
# when a prior module fails
emergency: true

View File

@@ -0,0 +1,123 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Unsquash / unpack a filesystem. Multiple sources are supported, and
# they may be squashed or plain filesystems.
#
# Configuration:
#
# from globalstorage: rootMountPoint
# from job.configuration: the path to where to mount the source image(s)
# for copying an ordered list of unpack mappings for image file <->
# target dir relative to rootMountPoint.
---
# Each list item is unpacked, in order, to the target system.
#
# Each list item has the following **mandatory** attributes:
# - *source* path relative to the live / intstalling system to the image
# - *sourcefs* the type of the source files; valid entries are
# - `ext4` (copies the filesystem contents)
# - `squashfs` (unsquashes)
# - `file` (copies a file or directory)
# - (may be others if mount supports it)
# - *destination* path relative to rootMountPoint (so in the target
# system) where this filesystem is unpacked. It may be an
# empty string, which effectively is / (the root) of the target
# system.
#
# Each list item **optionally** can include the following attributes:
# - *exclude* is a list of values that is expanded into --exclude
# arguments for rsync (each entry in exclude gets its own --exclude).
# - *excludeFile* is a single file that is passed to rsync as an
# --exclude-file argument. This should be a full pathname
# inside the **host** filesystem.
# - *weight* is useful when the entries take wildly different
# times to unpack (e.g. with a squashfs, and one single file)
# and the total weight of this module should be distributed
# differently between the entries. (This is only relevant when
# there is more than one entry; by default all the entries
# have the same weight, 1)
#
# EXAMPLES
#
# Usually you list a filesystem image to unpack; you can use
# squashfs or an ext4 image. An empty destination is equivalent to "/",
# the root of the target system. The destination directory must exist
# in the target system.
#
# - source: "/path/to/filesystem.sqfs"
# sourcefs: "squashfs"
# destination: ""
#
# Multiple entries are unpacked in-order; if there is more than one
# item then only the first must exist beforehand -- it's ok to
# create directories with one unsquash and then to use those
# directories as a target from a second unsquash.
#
# - source: "/path/to/another/filesystem.img"
# sourcefs: "ext4"
# destination: ""
# - source: "/path/to/another/filesystem2.img"
# sourcefs: "ext4"
# destination: "/usr/lib/extra"
#
# You can list filesystem source paths relative to the Calamares run
# directory, if you use -d (this is only useful for testing, though).
#
# - source: ./example.sqfs
# sourcefs: squashfs
# destination: ""
#
# You can list individual files (copied one-by-one), or directories
# (the files inside this directory are copied directly to the destination,
# so no "dummycpp/" subdirectory is created in this example).
# Do note that the target directory must exist already (e.g. from
# extracting some other filesystem).
#
# - source: ../CHANGES
# sourcefs: file
# destination: "/tmp/derp"
# - source: ../src/modules/dummycpp
# sourcefs: file
# destination: "/tmp/derp"
#
# The *destination* and *source* are handed off to rsync, so the semantics
# of trailing slashes apply. In order to *rename* a file as it is
# copied, specify one single file (e.g. CHANGES) and a full pathname
# for its destination name, as in the example below.
#
# It is also possible to dynamically (conditionally) unpack a source by passing a boolean
# value for *condition*. This may be true or false (constant) or name a globalstorage
# value. Use '.' to separate parts of a globalstorage name if it is nested.
#
# This is used in e.g. stacked squashfses, where the user can select a specific
# install type. The default value of *condition* is true.
#
# - source: ./example.minimal.sqfs
# sourcefs: squashfs
# destination: ""
# condition: false
# - source: ./example.standard.sqfs
# sourcefs: squashfs
# destination: ""
# condition: exampleGlobalStorageVariable.subkey
#
# You may also wish to include optional squashfses, which may not exist at certain times
# depending on your image tooling. If an optional squashfs is not found, it is simply
# skipped.
#
# - source: ./example.standard.sqfs
# sourcefs: squashfs
# destination: ""
# - source: ./example.extras.sqfs
# sourcefs: squashfs
# destination: ""
# optional: true
unpack:
- source: "/run/archiso/bootmnt/arch/x86_64/airootfs.sfs"
sourcefs: "squashfs"
destination: ""
- source: "/run/archiso/bootmnt/arch/boot/x86_64/vmlinuz-linux"
sourcefs: "file"
destination: "/boot/vmlinuz-linux"

View File

@@ -0,0 +1,74 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Unpack a filesystem. Supported ways to "pack" the filesystem are:
# - erofs
# Enhanced Read-Only File System is a relatively new filesystem, introduced
# in 2019 with Linux 5.4, which is optimised for runtime performance. EROFS
# has compression options similar to that of SquashFS, however, in
# direct head to head comparison, as of 2025, the EROFS compression
# algorithms are not as performant; it takes longer to pack a filesystem and
# the compression size is not quite as good. EROFS is under active
# development.
# .
# Wikipedia: https://en.wikipedia.org/wiki/EROFS
# Upstream documentation: https://erofs.docs.kernel.org/en/latest/
# .
# erofs-utils contains mkfs.erofs, fsck.erofs and dump.erofs utilities
# which are required to pack, inspect and extract erofs files.
# - fsarchiver in *savedir/restdir* mode (directories, not block devices)
# - squashfs
# SquashFS is a compressed read-only file system for Linux that was
# introduced in 2002. It supports deduplication and has mature and
# performant compression algorithms.
# .
# Wikipedia: https://en.wikipedia.org/wiki/SquashFS
# Upstream documentation: https://github.com/plougher/squashfs-tools
# .
# squashfs-tools contains mksquashfs and unsquashfs utilities which are
# required to pack and extract squashfs files.
#
# Configuration:
#
# from globalstorage: rootMountPoint
# from job configuration: the item to unpack
#
---
# This module is configured a lot like the items in the *unpackfs*
# module, but with only **one** item. Use multiple instances for
# unpacking more than one filesystem.
#
# There are the following **mandatory** keys:
# - *source* path relative to the live / intstalling system to the image
# - *sourcefs* the type of the source files; valid entries are
# - `none` (this entry is ignored; kind of useless)
# - `erofs`
# - `fsarchiver`
# Aliases of this are `fsarchive`, `fsa` and `fsa-dir`. Uses
# fsarchiver in "restdir" mode.
# - `fsarchiver-block`
# Aliases of this are `fsa-block` and `fsa-fs`. Uses fsarchiver
# in "restfs" mode.
# - `squashfs`
# Aliases of this are `squash` and `unsquash`.
# - `tar`
# - *destination* path relative to rootMountPoint (so in the target
# system) where this filesystem is unpacked. It may be an
# empty string, which effectively is / (the root) of the target
# system.
#
#
# There are the following **optional** keys:
# - *condition* sets a dynamic condition on unpacking the item in
# this job. This may be true or false (constant) or name a globalstorage
# value. Use '.' to separate parts of a globalstorage name if it is nested.
# Remember to quote names.
#
# A condition is used in e.g. stacked squashfses, where the user can select
# a specific install type. The default value of *condition* is true.
source: /data/rootfs.fsa
sourcefs: fsarchiver
destination: "/"
# condition: true

View File

@@ -0,0 +1,312 @@
# 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:
- name: users
must_exist: true
system: true
- lp
- video
- network
- storage
- name: wheel
must_exist: false
system: true
- audio
- name: nopasswdlogin
must_exist: false
system: true
# 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.
#
# Remember to add the (value of) *autologinGroup* to *defaultGroups*.
autologinGroup: autologin
# See also *user.nopasswd_group* for another group that is optionally added to the user
### 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: true
### 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.
# Autologin choice can be display to the user.
# Possible values are:
# - true to display it
# - false to hide it
# By default, this value is set to true.
displayAutologin: true
# 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: true
# 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: false
# 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).
# - *home_permissions* Home directory of the user is given **approximately**
# this set of permissions. If not set, there is no default and no
# permission-setting is done (uses defaults of `useradd` in the target).
# A umask is computed from these permissions
# and passed to `useradd`.
#
# You may write permissions as:
# - write "NNN" (three octal digits) or
# - write "oNNN" (small 'o' and three octal digits) or
# - write "rwxrwxrwx" (like the output of ls, with a - for unset bits)
# The following permissions mean the same thing: "o750", "rwxr-x---" .
# - *nopasswd_group* If set, **and** the user sets no password, then
# the user is added to this group as well. Whether "no password" is
# allowed depends on other settings in this module; distributions that
# require a specific group for "no password" login should set this
# **and** configure the group in the *defaultGroups* section, above.
# The default is unset; this example configuration is non-default.
user:
shell: /bin/bash
forbidden_names: [ root ]
home_permissions: "o700"
nopasswd_group: "nopasswdlogin"
# 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: EtcFile
writeHostsFile: true
template: "derp-${cpu}"
forbidden_names: [ localhost ]
# Enable Active Directory enrollment support (opt-in)
#
# This uses realmd to enroll the machine in an Active Directory server
# It requires realmd as a runtime dependency of Calamares, if enabled
allowActiveDirectory: false
presets:
fullName:
# value: "OEM User"
editable: true
loginName:
# value: "oem"
editable: true

View File

@@ -0,0 +1,44 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# For documentation see Users Module users.conf
#
---
# Used as default groups for the created user.
# Adjust to your Distribution defaults.
defaultGroups:
- users
- lp
- video
- network
- storage
- wheel
- audio
- lpadmin
autologinGroup: autologin
doAutologin: true
sudoersGroup: wheel
setRootPassword: true
doReusePassword: true
passwordRequirements:
minLength: -1
maxLength: -1
libpwquality:
- minlen=0
- minclass=0
allowWeakPasswords: false
allowWeakPasswordsDefault: false
userShell: /bin/bash
setHostname: EtcFile
writeHostsFile: true

View File

@@ -0,0 +1,138 @@
# 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: false
# 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: 5.5
# 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 own
# distribution domain.
#
# The URL is only used if "internet" is in the *check* list below.
internetCheckUrl: http://example.com
#
# 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
- root
- screen
- "false"
- slow-true
- snark
# 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
# - root
# 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

View File

@@ -0,0 +1,40 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the welcomeq module.
#
# The configuration for welcomeq is exactly the same
# as the welcome module, with the one exception of
# *qmlSearch* which governs QML loading.
#
# No documentation is given here: look in the welcome module.
---
# Setting for QML loading: use QRC, branding, or both sources of files
qmlSearch: both
# Everythin below here is documented in `welcome.conf`
showSupportUrl: true
showKnownIssuesUrl: true
showReleaseNotesUrl: true
# showDonateUrl: https://kde.org/community/donations/
requirements:
requiredStorage: 5.5
requiredRam: 1.0
internetCheckUrl: http://google.com
check:
- storage
- ram
- power
- internet
- root
- screen
required:
- ram
geoip:
style: "none"
url: "https://geoip.kde.org/v1/ubiquity" # extended XML format
selector: "CountryCode" # blank uses default, which is wrong
#languageIcon: languages

View File

@@ -0,0 +1,45 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# The zfs module creates the zfs pools and datasets
#
#
#
---
# The name to be used for the zpool
poolName: zpcala
# A list of options that will be passed to zpool create
#
# Encryption options should generally not be added here since they will be added by
# selecting the encrypt disk option in the partition module
poolOptions: "-f -o ashift=12 -O mountpoint=none -O acltype=posixacl -O relatime=on"
# A list of options that will be passed to zfs create when creating each dataset
# Do not include "canmount" or "mountpoint" as those are set below in the datasets array
datasetOptions: "-o compression=lz4 -o atime=off -o xattr=sa"
# An array of datasets that will be created on the zpool mounted at /
#
# This default configuration is commonly used when support for booting more than one distro
# out of a single zpool is desired. If you decide to keep this default configuration,
# you should replace "distro" with an identifier that represents your distro.
datasets:
- dsName: ROOT
mountpoint: none
canMount: off
- dsName: ROOT/distro
mountpoint: none
canMount: off
- dsName: ROOT/distro/root
mountpoint: /
canMount: noauto
- dsName: ROOT/distro/home
mountpoint: /home
canMount: on
- dsName: ROOT/distro/varcache
mountpoint: /var/cache
canMount: on
- dsName: ROOT/distro/varlog
mountpoint: /var/log
canMount: on

View File

@@ -0,0 +1,15 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
NavButton {
id: backButton
anchors.left: parent.left
visible: parent.currentSlide > 0
isForward: false
}

View File

@@ -0,0 +1,14 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
NavButton {
id: forwardButton
anchors.right: parent.right
visible: parent.currentSlide + 1 < parent.slides.length;
}

View File

@@ -0,0 +1,59 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
/* This is a navigation (arrow) button that fades in on hover, and
* which calls forward / backward navigation on the presentation it
* is in. It should be a child item of the presentation (not of a
* single slide). Use the ForwardButton or BackButton for a pre-
* configured instance that interacts with the presentation.
*/
import QtQuick 2.5;
Image {
id: fade
property bool isForward : true
width: 100
height: 100
anchors.verticalCenter: parent.verticalCenter
opacity: 0.3
OpacityAnimator {
id: fadeIn
target: fade
from: fade.opacity
to: 1.0
duration: 500
running: false
}
OpacityAnimator {
id: fadeOut
target: fade
from: fade.opacity
to: 0.3
duration: 250
running: false
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onEntered: { fadeOut.running = false; fadeIn.running = true }
onExited: { fadeIn.running = false ; fadeOut.running = true }
onClicked: {
if (isForward)
fade.parent.goToNextSlide()
else
fade.parent.goToPreviousSlide()
}
}
}

View File

@@ -0,0 +1,238 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
* SPDX-FileCopyrightText: 2016 The Qt Company Ltd.
* SPDX-License-Identifier: LGPL-2.1-only
*
* 2017, Adriaan de Groot <groot@kde.org>
* - added looping, keys-instead-of-shortcut
* 2018, Adriaan de Groot <groot@kde.org>
* - make looping a property, drop the 'c' fade-key
* - drop navigation through entering a slide number
* (this and the 'c' key make sense in a *presentation*
* slideshow, not in a passive slideshow like Calamares)
* - remove quit key
* 2019, Adriaan de Groot <groot@kde.org>
* - Support "V2" loading
* - Disable shortcuts until the content is visible in Calamares
* 2020, Adriaan de Groot <groot@kde.org>
* - Updated to SPDX headers
*/
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QML Presentation System.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
import QtQuick.Window 2.0
Item {
id: root
property variant slides: []
property int currentSlide: 0
property bool loopSlides: true
property bool showNotes: false;
property bool allowDelay: true;
property alias mouseNavigation: mouseArea.enabled
property bool arrowNavigation: true
property bool keyShortcutsEnabled: true
property color titleColor: textColor;
property color textColor: "black"
property string fontFamily: "Helvetica"
property string codeFontFamily: "Courier New"
// This is set by the C++ part of Calamares when the slideshow
// becomes visible. You can connect it to a timer, or whatever
// else needs to start only when the slideshow becomes visible.
//
// It is used in this example also to keep the keyboard shortcuts
// enabled only while the slideshow is active.
property bool activatedInCalamares: false
// Private API
property int _lastShownSlide: 0
Component.onCompleted: {
var slideCount = 0;
var slides = [];
for (var i=0; i<root.children.length; ++i) {
var r = root.children[i];
if (r.isSlide) {
slides.push(r);
}
}
root.slides = slides;
// Make first slide visible...
if (root.slides.length > 0)
root.slides[root.currentSlide].visible = true;
}
function switchSlides(from, to, forward) {
from.visible = false
to.visible = true
return true
}
onCurrentSlideChanged: {
switchSlides(root.slides[_lastShownSlide], root.slides[currentSlide], currentSlide > _lastShownSlide)
_lastShownSlide = currentSlide
// Always keep focus on the slideshow
root.focus = true
}
function goToNextSlide() {
if (root.slides[currentSlide].delayPoints) {
if (root.slides[currentSlide]._advance())
return;
}
if (currentSlide + 1 < root.slides.length)
++currentSlide;
else if (loopSlides)
currentSlide = 0; // Loop at the end
}
function goToPreviousSlide() {
if (currentSlide - 1 >= 0)
--currentSlide;
else if (loopSlides)
currentSlide = root.slides.length - 1
}
focus: true // Keep focus
// Navigation through key events, too
Keys.onSpacePressed: goToNextSlide()
Keys.onRightPressed: goToNextSlide()
Keys.onLeftPressed: goToPreviousSlide()
// navigate with arrow keys
Shortcut { sequence: StandardKey.MoveToNextLine; enabled: root.activatedInCalamares && root .arrowNavigation; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousLine; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() }
Shortcut { sequence: StandardKey.MoveToNextChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() }
// presentation-specific single-key shortcuts (which interfere with normal typing)
Shortcut { sequence: " "; enabled: root.activatedInCalamares && root.keyShortcutsEnabled; onActivated: goToNextSlide() }
// standard shortcuts
Shortcut { sequence: StandardKey.MoveToNextPage; enabled: root.activatedInCalamares; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousPage; enabled: root.activatedInCalamares; onActivated: goToPreviousSlide() }
MouseArea {
id: mouseArea
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button == Qt.RightButton)
goToPreviousSlide()
else
goToNextSlide()
}
onPressAndHold: goToPreviousSlide(); //A back mechanism for touch only devices
}
Window {
id: notesWindow;
width: 400
height: 300
title: "QML Presentation: Notes"
visible: root.showNotes
Flickable {
anchors.fill: parent
contentWidth: parent.width
contentHeight: textContainer.height
Item {
id: textContainer
width: parent.width
height: notesText.height + 2 * notesText.padding
Text {
id: notesText
anchors.margins: 16
font.pixelSize: 16
wrapMode: Text.WordWrap
property string notes: root.slides[root.currentSlide].notes;
onNotesChanged: {
var result = "";
var lines = notes.split("\n");
var beginNewLine = false
for (var i=0; i<lines.length; ++i) {
var line = lines[i].trim();
if (line.length == 0) {
beginNewLine = true;
} else {
if (beginNewLine && result.length) {
result += "\n\n"
beginNewLine = false
}
if (result.length > 0)
result += " ";
result += line;
}
}
if (result.length == 0) {
font.italic = true;
text = "no notes.."
} else {
font.italic = false;
text = result;
}
}
}
}
}
}
}

View File

@@ -0,0 +1,206 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2012 Digia Plc and/or its subsidiary(-ies).
* SPDX-License-Identifier: LGPL-2.1-only
*/
/****************************************************************************
**
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QML Presentation System.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
Item {
/*
Slides can only be instantiated as a direct child of a Presentation {} as they rely on
several properties there.
*/
id: slide
property bool isSlide: true;
property bool delayPoints: false;
property int _pointCounter: 0;
function _advance() {
if (!parent.allowDelay)
return false;
_pointCounter = _pointCounter + 1;
if (_pointCounter < content.length)
return true;
_pointCounter = 0;
return false;
}
property string title;
property variant content: []
property string centeredText
property string writeInText;
property string notes;
property real fontSize: parent.height * 0.05
property real fontScale: 1
property real baseFontSize: fontSize * fontScale
property real titleFontSize: fontSize * 1.2 * fontScale
property real bulletSpacing: 1
property real contentWidth: width
// Define the slide to be the "content area"
x: parent.width * 0.05
y: parent.height * 0.2
width: parent.width * 0.9
height: parent.height * 0.7
property real masterWidth: parent.width
property real masterHeight: parent.height
property color titleColor: parent.titleColor;
property color textColor: parent.textColor;
property string fontFamily: parent.fontFamily;
property int textFormat: Text.PlainText
visible: false
Text {
id: titleText
font.pixelSize: titleFontSize
text: title;
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.top
anchors.bottomMargin: parent.fontSize * 1.5
font.bold: true;
font.family: slide.fontFamily
color: slide.titleColor
horizontalAlignment: Text.Center
z: 1
}
Text {
id: centeredId
width: parent.width
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3
text: centeredText
horizontalAlignment: Text.Center
font.pixelSize: baseFontSize
font.family: slide.fontFamily
color: slide.textColor
wrapMode: Text.Wrap
}
Text {
id: writeInTextId
property int length;
font.family: slide.fontFamily
font.pixelSize: baseFontSize
color: slide.textColor
anchors.fill: parent;
wrapMode: Text.Wrap
text: slide.writeInText.substring(0, length);
NumberAnimation on length {
from: 0;
to: slide.writeInText.length;
duration: slide.writeInText.length * 30;
running: slide.visible && parent.visible && slide.writeInText.length > 0
}
visible: slide.writeInText != undefined;
}
Column {
id: contentId
anchors.fill: parent
Repeater {
model: content.length
Row {
id: row
function decideIndentLevel(s) { return s.charAt(0) == " " ? 1 + decideIndentLevel(s.substring(1)) : 0 }
property int indentLevel: decideIndentLevel(content[index])
property int nextIndentLevel: index < content.length - 1 ? decideIndentLevel(content[index+1]) : 0
property real indentFactor: (10 - row.indentLevel * 2) / 10;
height: text.height + (nextIndentLevel == 0 ? 1 : 0.3) * slide.baseFontSize * slide.bulletSpacing
x: slide.baseFontSize * indentLevel
visible: (!slide.parent.allowDelay || !delayPoints) || index <= _pointCounter
Rectangle {
id: dot
anchors.baseline: text.baseline
anchors.baselineOffset: -text.font.pixelSize / 2
width: text.font.pixelSize / 3
height: text.font.pixelSize / 3
color: slide.textColor
radius: width / 2
opacity: text.text.length == 0 ? 0 : 1
}
Item {
id: space
width: dot.width * 1.5
height: 1
}
Text {
id: text
width: slide.contentWidth - parent.x - dot.width - space.width
font.pixelSize: baseFontSize * row.indentFactor
text: content[index]
textFormat: slide.textFormat
wrapMode: Text.WordWrap
color: slide.textColor
horizontalAlignment: Text.AlignLeft
font.family: slide.fontFamily
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
/* This control just shows a (non-translated) count of the slides
* in the slideshow in the format "n / total".
*/
import QtQuick 2.5;
Rectangle {
id: slideCounter
anchors.right: parent.right
anchors.bottom: parent.bottom
width: 100
height: 50
Text {
id: slideCounterText
anchors.centerIn: parent
//: slide counter, %1 of %2 (numeric)
text: qsTr("%L1 / %L2").arg(parent.parent.currentSlide + 1).arg(parent.parent.slides.length)
}
}

View File

@@ -0,0 +1,10 @@
module calamares.slideshow
Presentation 1.0 Presentation.qml
Slide 1.0 Slide.qml
NavButton 1.0 NavButton.qml
ForwardButton 1.0 ForwardButton.qml
BackButton 1.0 BackButton.qml
SlideCounter 1.0 SlideCounter.qml

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: no
SPDX-License-Identifier: CC0-1.0

View File

@@ -0,0 +1,236 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration file for Calamares
#
# This is the top-level configuration file for Calamares.
# It specifies what modules will be used, as well as some
# overall characteristics -- is this a setup program, or
# an installer. More specific configuration is devolved
# to the branding file (for the UI) and the individual
# module configuration files (for functionality).
---
# Modules can be job modules (with different interfaces) and QtWidgets view
# modules. They could all be placed in a number of different paths.
# "modules-search" is a list of strings, each of these can either be a full
# path to a directory or the keyword "local".
#
# "local" means:
# - modules in $LIBDIR/calamares/modules, with
# - settings in SHARE/calamares/modules or /etc/calamares/modules.
# In debug-mode (e.g. calamares -d) "local" also adds some paths
# that make sense from inside the build-directory, so that you
# can build-and-run with the latest modules immediately.
#
# Strings other than "local" are taken as paths and interpreted
# relative to wherever Calamares is started. It is therefore **strongly**
# recommended to use only absolute paths here. This is mostly useful
# if your distro has forks of standard Calamares modules, but also
# uses some form of upstream packaging which might overwrite those
# forked modules -- then you can keep modules somewhere outside of
# the "regular" module tree.
#
#
# YAML: list of strings.
modules-search: [ local ]
# Instances section. This section is optional, and it defines custom instances
# for modules of any kind. An instance entry has these keys:
# - *module* name, which matches the module name from the module descriptor
# (usually the name of the directory under `src/modules/`, but third-
# party modules may diverge.
# - *id* (optional) an identifier to distinguish this instance from
# all the others. If none is given, the name of the module is used.
# Together, the module and id form an instance key (see below).
# - *config* (optional) a filename for the configuration. If none is
# given, *module*`.conf` is used (e.g. `welcome.conf` for the welcome
# module)
# - *weight* (optional) In the *exec* phase of the sequence, progress
# is reported as jobs are completed. The jobs from a single module
# together contribute the full weight of that module. The overall
# progress (0 .. 100%) is divided up according to the weight of each
# module. Give modules that take a lot of time to complete, a larger
# weight to keep the overall progress moving along steadily. This
# weight overrides a weight given in the module descriptor. If no weight
# is given, uses the value from the module descriptor, or 1 if there
# isn't one there either.
#
# The primary goal of this mechanism is to allow loading multiple instances
# of the same module, with different configuration. If you don't need this,
# the instances section can safely be left empty.
#
# Module name plus instance name makes an instance key, e.g.
# "packagechooserq@licenseq", where "packagechooserq" is the module name (for the packagechooserq
# viewmodule) and "licenseq" is the instance name. In the *sequence*
# section below, use instance-keys to name instances (instead of just
# a module name, for modules which have only a single instance).
#
# Every module implicitly has an instance with the instance name equal
# to its module name, e.g. "welcome@welcome". In the *sequence* section,
# mentioning a module without a full instance key (e.g. "welcome")
# means that implicit module.
#
# An instance may specify its configuration file (e.g. `webview-home.conf`).
# The implicit instances all have configuration files named `<module>.conf`.
# This (implict) way matches the source examples, where the welcome
# module contains an example `welcome.conf`. Specify a *config* for
# any module (also implicit instances) to change which file is used.
#
# For more information on running module instances, run Calamares in debug
# mode and check the Modules page in the Debug information interface.
#
# A module that is often used with instances is shellprocess, which will
# run shell commands specified in the configuration file. By configuring
# more than one instance of the module, multiple shell sessions can be run
# during install.
#
# YAML: list of maps of string:string key-value pairs.
#instances:
#- id: licenseq
# module: packagechooserq
# config: licenseq.conf
# Sequence section. This section describes the sequence of modules, both
# viewmodules and jobmodules, as they should appear and/or run.
#
# A jobmodule instance key (or name) can only appear in an exec phase, whereas
# a viewmodule instance key (or name) can appear in both exec and show phases.
# There is no limit to the number of show or exec phases. However, the same
# module instance key should not appear more than once per phase, and
# deployers should take notice that the global storage structure is persistent
# throughout the application lifetime, possibly influencing behavior across
# phases. A show phase defines a sequence of viewmodules (and therefore
# pages). These viewmodules can offer up jobs for the execution queue.
#
# An exec phase displays a progress page (with brandable slideshow). This
# progress page iterates over the modules listed in the *immediately
# preceding* show phase, and enqueues their jobs, as well as any other jobs
# from jobmodules, in the order defined in the current exec phase.
#
# It then executes the job queue and clears it. If a viewmodule offers up a
# job for execution, but the module name (or instance key) isn't listed in the
# immediately following exec phase, this job will not be executed.
#
# YAML: list of lists of strings.
sequence:
- show:
- welcome
# - notesqml
# - packagechooserq@licenseq
- locale
- keyboard
- partition
- users
# - tracking
- summary
- exec:
# - dummycpp
# - dummyprocess
# - dummypython
- partition
# - zfs
- mount
- unpackfs
- machineid
- locale
- keyboard
- localecfg
# - luksbootkeyfile
# - luksopenswaphookcfg
# - dracutlukscfg
- fstab
# - plymouthcfg
# - zfshostid
- initcpiocfg
- initcpio
- users
- displaymanager
- networkcfg
- hwclock
- services-systemd
# - dracut
# - initramfs
# - grubcfg
- bootloader
- umount
- show:
- finished
# A branding component is a directory, either in SHARE/calamares/branding or
# in /etc/calamares/branding (the latter takes precedence). The directory must
# contain a YAML file branding.desc which may reference additional resources
# (such as images) as paths relative to the current directory.
#
# A branding component can also ship a QML slideshow for execution pages,
# along with translation files.
#
# Only the name of the branding component (directory) should be specified
# here, Calamares then takes care of finding it and loading the contents.
#
# YAML: string.
branding: default
# If this is set to true, Calamares will show an "Are you sure?" prompt right
# before each execution phase, i.e. at points of no return. If this is set to
# false, no prompt is shown. Default is false, but Calamares will complain if
# this is not explicitly set.
#
# YAML: boolean.
prompt-install: false
# If this is set to true, Calamares will execute all target environment
# commands in the current environment, without chroot. This setting should
# only be used when setting up Calamares as a post-install configuration tool,
# as opposed to a full operating system installer.
#
# Some official Calamares modules are not expected to function with this
# setting. (e.g. partitioning seems like a bad idea, since that is expected to
# have been done already)
#
# Default is false (for a normal installer), but Calamares will complain if
# this is not explicitly set.
#
# YAML: boolean.
dont-chroot: false
# If this is set to true, Calamares refers to itself as a "setup program"
# rather than an "installer". Defaults to the value of dont-chroot, but
# Calamares will complain if this is not explicitly set.
oem-setup: false
# If this is set to true, the "Cancel" button will be disabled entirely.
# The button is also hidden from view.
#
# This can be useful if when e.g. Calamares is used as a post-install
# configuration tool and you require the user to go through all the
# configuration steps.
#
# Default is false, but Calamares will complain if this is not explicitly set.
#
# YAML: boolean.
disable-cancel: false
# If this is set to true, the "Cancel" button will be disabled once
# you start the 'Installation', meaning there won't be a way to cancel
# the Installation until it has finished or installation has failed.
#
# Default is false, but Calamares will complain if this is not explicitly set.
#
# YAML: boolean.
disable-cancel-during-exec: false
# If this is set to true, the "Next" and "Back" button will be hidden once
# you start the 'Installation'.
#
# Default is false, but Calamares will complain if this is not explicitly set.
#
# YAML: boolean.
hide-back-and-next-during-exec: false
# If this is set to true, then once the end of the sequence has
# been reached, the quit (done) button is clicked automatically
# and Calamares will close. Default is false: the user will see
# that the end of installation has been reached, and that things are ok.
#
#
quit-at-end: false

View File

@@ -0,0 +1,318 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
id="svg5453"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ubiquity.svg"
inkscape:export-filename="/home/jamboarder/Projects/KDE VDG/Calamares/calamares-icon-2.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs5455">
<linearGradient
id="linearGradient5623">
<stop
id="stop5625"
offset="0"
style="stop-color:#d35400;stop-opacity:1;" />
<stop
style="stop-color:#d35400;stop-opacity:1;"
offset="1"
id="stop5627" />
</linearGradient>
<linearGradient
id="linearGradient3819">
<stop
style="stop-color:#eff0f1;stop-opacity:1;"
offset="0"
id="stop3821" />
<stop
style="stop-color:#bdc3c7;stop-opacity:1;"
offset="1"
id="stop3823" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3819"
id="linearGradient3825"
x1="24"
y1="20"
x2="24"
y2="43.999973"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(384.57143,499.798)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4227"
id="linearGradient3843"
x1="10"
y1="36"
x2="15"
y2="41"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(384.57143,500.798)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4227"
id="linearGradient3847"
gradientUnits="userSpaceOnUse"
x1="9.9047623"
y1="36"
x2="14.90477"
y2="41.000008"
gradientTransform="translate(398.66666,500.798)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5623"
id="linearGradient3948"
x1="25.065147"
y1="33.843651"
x2="25"
y2="10"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.0833332,384.57143,492.96467)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4227"
id="linearGradient3080"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3793103,0,0,1.3793103,384.81281,499.0393)"
x1="8.5250006"
y1="7.8000579"
x2="25.200001"
y2="25.200058" />
<linearGradient
id="linearGradient4227"
inkscape:collect="always">
<stop
id="stop4229"
offset="0"
style="stop-color:#292c2f;stop-opacity:1" />
<stop
id="stop4231"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="10.854086"
inkscape:cx="15.323054"
inkscape:cy="18.776517"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-x="-4"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:showpageshadow="false"
borderlayer="true"
showguides="true"
inkscape:snap-global="true"
inkscape:snap-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
id="grid4063"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<sodipodi:guide
position="1.1650391e-05,47.999996"
orientation="4,0"
id="guide4146" />
<sodipodi:guide
position="1.1650391e-05,43.999996"
orientation="0,48"
id="guide4148" />
<sodipodi:guide
position="48.000012,43.999996"
orientation="-4,0"
id="guide4150" />
<sodipodi:guide
position="1.1650391e-05,4.0000264"
orientation="4,0"
id="guide4154" />
<sodipodi:guide
position="1.1650391e-05,2.6367188e-05"
orientation="0,48"
id="guide4156" />
<sodipodi:guide
position="48.000012,2.6367188e-05"
orientation="-4,0"
id="guide4158" />
<sodipodi:guide
position="48.000012,4.0000264"
orientation="0,-48"
id="guide4160" />
<sodipodi:guide
position="48.000012,48.000026"
orientation="0,-4"
id="guide4162" />
<sodipodi:guide
position="44.000012,48.000026"
orientation="48,0"
id="guide4164" />
<sodipodi:guide
position="44.000012,2.6367188e-05"
orientation="0,4"
id="guide4166" />
<sodipodi:guide
position="48.000012,2.6367188e-05"
orientation="-48,0"
id="guide4168" />
<sodipodi:guide
position="4.0000422,48.000026"
orientation="0,-4"
id="guide4170" />
<sodipodi:guide
position="4.2167969e-05,48.000026"
orientation="48,0"
id="guide4172" />
<sodipodi:guide
position="4.2167969e-05,2.6367188e-05"
orientation="0,4"
id="guide4174" />
<sodipodi:guide
position="4.0000422,2.6367188e-05"
orientation="-48,0"
id="guide4176" />
<sodipodi:guide
position="4.0000117,47.999996"
orientation="43.999969,0"
id="guide4638" />
<sodipodi:guide
position="4.0000117,4.0000264"
orientation="0,20"
id="guide4640" />
<sodipodi:guide
position="24.000012,47.999996"
orientation="0,-20"
id="guide4644" />
<sodipodi:guide
position="4.0000422,24.000026"
orientation="20,0"
id="guide4666" />
<sodipodi:guide
position="4.0000422,4.0000264"
orientation="0,39.999969"
id="guide4668" />
<sodipodi:guide
position="44.000012,4.0000264"
orientation="-20,0"
id="guide4670" />
</sodipodi:namedview>
<metadata
id="metadata5458">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-384.57143,-499.798)">
<rect
style="fill:url(#linearGradient3948);fill-opacity:1;stroke:none"
id="rect3936"
width="32"
height="25.999996"
x="392.57144"
y="503.798"
ry="0" />
<path
style="opacity:0.2;fill:#232629;fill-opacity:1;stroke:none"
d="m 408.57143,533.798 c -1.662,0 -3,1.338 -3,3 0,1.662 1.338,3 3,3 1.30536,0 2.39817,-0.84052 2.8125,-2 l 8.375,0 c 0.41433,1.15948 1.50714,2 2.8125,2 1.662,0 3,-1.338 3,-3 0,-1.662 -1.338,-3 -3,-3 -1.30536,0 -2.39817,0.84052 -2.8125,2 l -8.375,0 c -0.41433,-1.15948 -1.50714,-2 -2.8125,-2 z"
id="path3911"
inkscape:connector-curvature="0" />
<path
style="fill:url(#linearGradient3825);fill-opacity:1;stroke:none"
d="m 388.57144,529.798 -10e-6,14 40,0 10e-6,-14 z"
id="rect3804"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
id="path3829"
d="m 411.38393,537.798 8.375,0 c 0.41433,1.15948 1.50714,2 2.8125,2 1.662,0 3,-1.338 3,-3 0,-1.662 -1.338,-3 -3,-3 -1.30536,0 -2.39817,0.84052 -2.8125,2 l -8.375,0 c 0.1875,1 0.1875,1 0,2 z"
style="opacity:0.77876108;fill:#4d4d4d;fill-opacity:1;stroke:none"
sodipodi:nodetypes="ccsssccc" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3845"
d="m 406.66666,539.13133 4.76191,4.66667 8.14286,0 -9.14286,-9.42857 z"
style="opacity:0.2;fill:url(#linearGradient3847);fill-opacity:1.0;stroke:none" />
<path
style="opacity:0.2;fill:url(#linearGradient3843);fill-opacity:1.0;stroke:none"
d="m 392.57143,539.13133 4.61905,4.66667 13.38095,0 -4.86671,-6.9365 -7.13329,-0.0675 -2.23809,-2.42461 z"
id="path3835"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:#d35400;fill-opacity:1;stroke:none"
d="m 394.57143,533.798 c -1.662,0 -3,1.338 -3,3 0,1.662 1.338,3 3,3 1.30536,0 2.39817,-0.84052 2.8125,-2 l 8.375,0 c 0.41433,1.15948 1.50714,2 2.8125,2 1.662,0 3,-1.338 3,-3 0,-1.662 -1.338,-3 -3,-3 -1.30536,0 -2.39817,0.84052 -2.8125,2 l -8.375,0 c -0.41433,-1.15948 -1.50714,-2 -2.8125,-2 z"
id="rect3812"
inkscape:connector-curvature="0" />
<rect
ry="0"
y="542.79797"
x="388.57147"
height="0.99997008"
width="39.999954"
id="rect3827"
style="fill:#95a5a6;fill-opacity:1;stroke:none" />
<rect
style="fill:#eff0f1;fill-opacity:1;stroke:none"
id="rect3855"
width="39.999969"
height="1.0000263"
x="388.57147"
y="529.79797"
ry="0" />
<path
inkscape:connector-curvature="0"
style="opacity:0.2;fill:url(#linearGradient3080);fill-opacity:1;fill-rule:evenodd;stroke:none"
d="m 409.57143,513.798 0,1 -1,9 20.00001,19 0,0 0,0 -10e-6,-1 10e-6,-13 -19.00001,-19 z"
id="path4184"
sodipodi:nodetypes="cccccccccc" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fcfcfc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 407.57143,509.798 0,10 -4.5,-4.5 -1.5,1.5 7,7 7,-7 -1.5,-1.5 -4.5,4.5 0,-10 -2,0 z"
id="path3938"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Some files were not shown because too many files have changed in this diff Show More