@@ -10,10 +10,13 @@ from pisi.actionsapi import shelltools
|
||||
from pisi.actionsapi import get
|
||||
|
||||
def setup():
|
||||
shelltools.system("""sed -i 's|Fancy GNU/Linux 2020.2 LTS "Turgid Tuba"|Pisi GNU/Linux 2.4.3 LTS "Pisi Linux"|g' src/branding/default/branding.desc""")
|
||||
shelltools.system("sed -i 's|2020.2|2.4.3|g' src/branding/default/branding.desc")
|
||||
shelltools.system("""sed -i 's|Fancy GNU/Linux 2023.3 LTS "Venomous Vole"|Pisi GNU/Linux 2.4.3 LTS "Pisi Linux"|g' src/branding/default/branding.desc""")
|
||||
shelltools.system("sed -i 's|2023.3|2.4.3|g' src/branding/default/branding.desc")
|
||||
shelltools.system("sed -i 's|FancyGL|Pisilinux|g' src/branding/default/branding.desc")
|
||||
|
||||
shelltools.system("sed -i 's|backend: dummy|backend: pisi|g' src/modules/packages/packages.conf")
|
||||
shelltools.system("sed -i 's|systemctl -i reboot|shutdown -r now|g' src/modules/finished/finished.conf")
|
||||
|
||||
shelltools.makedirs("build")
|
||||
shelltools.cd("build")
|
||||
|
||||
@@ -27,7 +30,8 @@ def setup():
|
||||
-DWITH_KF5DBus=OFF \
|
||||
-DWITH_CRASHREPORTER=ON", \
|
||||
sourceDir=".." )
|
||||
|
||||
# -DSKIP_MODULES='bootldr bootloader license mnt notesqml oemid preservefiles partitionq' \
|
||||
|
||||
def build():
|
||||
shelltools.cd("build")
|
||||
|
||||
@@ -44,6 +48,8 @@ def install():
|
||||
pisitools.dosed("%s/usr/share/calamares/modules/machineid.conf" % get.installDIR(), "systemd: true", "systemd: false")
|
||||
pisitools.dosed("%s/usr/share/calamares/modules/machineid.conf" % get.installDIR(), "symlink: true", "symlink: false")
|
||||
|
||||
pisitools.dosed("%s/usr/share/calamares/modules/removeuser.conf" % get.installDIR(), "username: live", "username: pisi")
|
||||
|
||||
pisitools.dosym("/usr/share/icons/hicolor/scalable/apps/calamares.svg", "/usr/share/pixmaps/calamares.svg")
|
||||
|
||||
|
||||
|
||||
@@ -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: "/boot"
|
||||
kernelPattern: "^kernel-*"
|
||||
|
||||
# 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: "grub2-install"
|
||||
grubMkconfig: "grub2-mkconfig"
|
||||
grubCfg: "/boot/grub2/grub.cfg"
|
||||
grubProbe: "grub2-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: "pisi"
|
||||
|
||||
# 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
|
||||
@@ -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: Pisilinux
|
||||
shortProductName: Pisilinux
|
||||
version: 2.4.4
|
||||
shortVersion: 2.4.4
|
||||
versionedName: Pisilinux 2.4.4
|
||||
shortVersionedName: Pisilinux 2.4.4
|
||||
bootloaderEntryName: Pisilinux 2.4.4
|
||||
productUrl: https://calamares.io/
|
||||
supportUrl: https://github.com/calamares/calamares/wiki
|
||||
knownIssuesUrl: https://github.com/calamares/calamares/issues
|
||||
releaseNotesUrl: https://calamares.io/news/
|
||||
donateUrl: https://kde.org/community/donations/index.php
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,12 @@
|
||||
# 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: "grub2-install"
|
||||
grubMkconfig: "grub2-mkconfig"
|
||||
grubCfg: "/boot/grub2/grub.cfg"
|
||||
grubProbe: "grub2-probe"
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Replace 'LinuxDistribution' with your distribution name - for example with 'KaOS'
|
||||
distributor: PisiLinux
|
||||
@@ -0,0 +1,21 @@
|
||||
diff -Nuar a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py
|
||||
--- a/src/modules/initcpiocfg/main.py 2024-07-04 00:05:30.000000000 +0300
|
||||
+++ b/src/modules/initcpiocfg/main.py 2026-04-19 21:46:24.678005799 +0300
|
||||
@@ -34,7 +34,7 @@
|
||||
@return True if plymouth exists in the target, False otherwise
|
||||
"""
|
||||
# Used to only check existence of path /usr/bin/plymouth in target
|
||||
- return target_env_call(["sh", "-c", "which plymouth"]) == 0
|
||||
+ return target_env_call(["sh", "-c", "which plymouth || test -f /bin/plymouth"]) == 0
|
||||
|
||||
|
||||
class cpuinfo(object):
|
||||
@@ -244,8 +244,6 @@
|
||||
|
||||
if uses_btrfs:
|
||||
modules.append("crc32c-intel" if cpuinfo().is_intel else "crc32c")
|
||||
- else:
|
||||
- hooks.append("fsck")
|
||||
|
||||
# Modify according to the keys in the configuration
|
||||
hooks = [h for h in (hooks_prepend + hooks + hooks_append) if h not in hooks_remove]
|
||||
@@ -0,0 +1,213 @@
|
||||
# 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: pisi
|
||||
|
||||
#
|
||||
# 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'.
|
||||
#
|
||||
# If you want to ignore software database update failures, set
|
||||
# "ignore_update_db_error" to 'true'.
|
||||
#
|
||||
skip_if_no_internet: false
|
||||
update_db: true
|
||||
ignore_update_db_error: false
|
||||
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:
|
||||
- try_remove:
|
||||
- Calamares
|
||||
- calamares-theme-pisilinux
|
||||
- pisilinux-welcome
|
||||
@@ -0,0 +1,117 @@
|
||||
diff -Nuar a/src/modules/mudur/main.py b/src/modules/mudur/main.py
|
||||
--- a/src/modules/mudur/main.py 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ b/src/modules/mudur/main.py 2026-04-20 15:56:24.861963739 +0300
|
||||
@@ -0,0 +1,66 @@
|
||||
+#!/usr/bin/env python3
|
||||
+# -*- coding: utf-8 -*-
|
||||
+#
|
||||
+# === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
+#
|
||||
+# Copyright 2014, Anke Boersma <demm@kaosx.us>
|
||||
+# Copyright 2015, Philip Müller <philm@manjaro.org>
|
||||
+#
|
||||
+# Calamares is free software: you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation, either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# Calamares is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+import os
|
||||
+import shutil
|
||||
+
|
||||
+import libcalamares
|
||||
+
|
||||
+
|
||||
+
|
||||
+def run():
|
||||
+
|
||||
+ install_path = libcalamares.globalstorage.value("rootMountPoint")
|
||||
+
|
||||
+
|
||||
+ path = os.path.join(install_path, "etc/locale.conf")
|
||||
+
|
||||
+ mloc = open(path,"r")
|
||||
+ a=mloc.readline()
|
||||
+ b=a.split("=")[1]
|
||||
+
|
||||
+ languages = b.split("_")[0]
|
||||
+
|
||||
+
|
||||
+ mudur_file_path = os.path.join(install_path, "etc/conf.d/mudur")
|
||||
+ lines = []
|
||||
+ for l in open(mudur_file_path, "r").readlines():
|
||||
+ if l.strip().startswith('language=') or l.strip().startswith('# language='):
|
||||
+ if languages == "pt":
|
||||
+ l = 'language="pt_BR"\n'
|
||||
+ else:
|
||||
+ l = 'language="%s"\n' % languages
|
||||
+ lines.append(l)
|
||||
+
|
||||
+ open(mudur_file_path, "w").writelines(lines)
|
||||
+
|
||||
+ if os.path.exists(os.path.join(install_path, "etc/sudoers")):
|
||||
+ os.unlink(os.path.join(install_path, "etc/sudoers"))
|
||||
+
|
||||
+
|
||||
+ source = os.path.join(install_path, "etc/sudoers.orig")
|
||||
+ target = os.path.join(install_path, "etc/sudoers")
|
||||
+
|
||||
+ shutil.copy(source, target)
|
||||
+
|
||||
+ libcalamares.utils.target_env_call(['chmod', '440', '/etc/sudoers'])
|
||||
+
|
||||
+ return None
|
||||
diff -Nuar a/src/modules/mudur/module.desc b/src/modules/mudur/module.desc
|
||||
--- a/src/modules/mudur/module.desc 1970-01-01 02:00:00.000000000 +0200
|
||||
+++ b/src/modules/mudur/module.desc 2026-04-20 15:56:24.862206368 +0300
|
||||
@@ -0,0 +1,6 @@
|
||||
+---
|
||||
+type: "job"
|
||||
+name: "mudur"
|
||||
+interface: "python"
|
||||
+script: "main.py"
|
||||
+
|
||||
diff -Nuar a/src/modules/packages/main.py b/src/modules/packages/main.py
|
||||
--- a/src/modules/packages/main.py 2026-03-10 17:53:55.000000000 +0300
|
||||
+++ b/src/modules/packages/main.py 2026-04-20 16:05:37.041208754 +0300
|
||||
@@ -350,17 +350,17 @@
|
||||
libcalamares.utils.debug("Dummy backend: Running script '" + str(script) + "'")
|
||||
|
||||
|
||||
-class PMEntropy(PackageManager):
|
||||
- backend = "entropy"
|
||||
+class PMpisi(PackageManager):
|
||||
+ backend = "pisi"
|
||||
|
||||
def install(self, pkgs, from_local=False):
|
||||
- check_target_env_call(["equo", "i"] + pkgs)
|
||||
+ check_target_env_call(["pisi", "it"] + pkgs)
|
||||
|
||||
def remove(self, pkgs):
|
||||
- check_target_env_call(["equo", "rm"] + pkgs)
|
||||
+ check_target_env_call(["pisi", "rm","--ignore-comar"] + pkgs)
|
||||
|
||||
def update_db(self):
|
||||
- target_env_process_output(["equo", "update"])
|
||||
+ pass
|
||||
|
||||
def update_system(self):
|
||||
# Doesn't need to update the system explicitly
|
||||
diff -Nuar a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp
|
||||
--- a/src/modules/partition/gui/EncryptWidget.cpp 2026-03-10 17:53:55.000000000 +0300
|
||||
+++ b/src/modules/partition/gui/EncryptWidget.cpp 2026-04-20 16:07:22.220783827 +0300
|
||||
@@ -47,6 +47,7 @@
|
||||
m_ui->m_passphraseLineEdit->hide();
|
||||
m_ui->m_confirmLineEdit->hide();
|
||||
m_ui->m_iconLabel->hide();
|
||||
+ m_ui->m_encryptCheckBox->hide();
|
||||
// TODO: this deserves better rendering, an icon or something, but that will
|
||||
// depend on having a non-bogus implementation of systemSupportsEncryptionAcceptably
|
||||
if ( systemSupportsEncryptionAcceptably() )
|
||||
@@ -0,0 +1,239 @@
|
||||
# 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
|
||||
- fstab
|
||||
- locale
|
||||
- keyboard
|
||||
- localecfg
|
||||
- mudur
|
||||
# - luksbootkeyfile
|
||||
# - luksopenswaphookcfg
|
||||
# - dracutlukscfg
|
||||
# - plymouthcfg
|
||||
# - zfshostid
|
||||
# - initcpiocfg
|
||||
- initcpio
|
||||
- users
|
||||
- displaymanager
|
||||
- networkcfg
|
||||
- hwclock
|
||||
- services-systemd
|
||||
# - dracut
|
||||
# - initramfs
|
||||
- grubcfg
|
||||
- removeuser
|
||||
- packages
|
||||
- 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: pisilinux
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,94 @@
|
||||
# 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.
|
||||
|
||||
unpack:
|
||||
- source: "/bootmnt/pisi/pisi.sqfs"
|
||||
sourcefs: "squashfs"
|
||||
destination: ""
|
||||
# excludeFile: /etc/calamares/modules/unpackfs/exclude-list.txt
|
||||
@@ -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: false
|
||||
|
||||
|
||||
### PASSWORDS AND LOGIN
|
||||
#
|
||||
# Autologin is convenient for single-user systems, but depends on
|
||||
# the location of the machine if it is practical. "Password strength"
|
||||
# measures measures might improve security by enforcing hard-to-guess
|
||||
# passwords, or might encourage a post-it-under-the-keyboard approach.
|
||||
# Distributions are free to steer their users to one kind of password
|
||||
# or another. Weak(er) passwords may be allowed, may cause a warning,
|
||||
# or may be forbidden entirely.
|
||||
|
||||
# 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 false.
|
||||
displayAutologin: false
|
||||
|
||||
# You can control the initial state for the 'autologin checkbox' here.
|
||||
# Possible values are:
|
||||
# - true to check or
|
||||
# - false to uncheck
|
||||
# These set the **initial** state of the checkbox.
|
||||
doAutologin: false
|
||||
|
||||
# These are optional password-requirements that a distro can enforce
|
||||
# on the user. The values given in this sample file set only very weak
|
||||
# validation settings.
|
||||
#
|
||||
# Calamares itself supports two checks:
|
||||
# - minLength
|
||||
# - maxLength
|
||||
# In this sample file, the values are set to -1 which means "no
|
||||
# minimum", "no maximum". This allows any password at all.
|
||||
# No effort is done to ensure that the checks are consistent
|
||||
# (e.g. specifying a maximum length less than the minimum length
|
||||
# will annoy users).
|
||||
#
|
||||
# Calamares supports password checking through libpwquality.
|
||||
# The libpwquality check relies on the (optional) libpwquality library.
|
||||
# The value for libpwquality is a list of configuration statements like
|
||||
# those found in pwquality.conf. The statements are handed off to the
|
||||
# libpwquality parser for evaluation. The check is ignored if
|
||||
# libpwquality is not available at build time (generates a warning in
|
||||
# the log). The Calamares password check rejects passwords with a
|
||||
# score of < 40 with the given libpwquality settings.
|
||||
#
|
||||
# (additional checks may be implemented in CheckPWQuality.cpp and
|
||||
# wired into UsersPage.cpp)
|
||||
#
|
||||
# To disable all password validations:
|
||||
# - comment out the relevant 'passwordRequirements' keys below,
|
||||
# or set minLength and maxLength to -1.
|
||||
# - disable libpwquality at build-time.
|
||||
# To allow all passwords, but provide warnings:
|
||||
# - set both 'allowWeakPasswords' and 'allowWeakPasswordsDefault' to true.
|
||||
# (That will show the box *Allow weak passwords* in the user-
|
||||
# interface, and check it by default).
|
||||
# - configure password-checking however you wish.
|
||||
# To require specific password characteristics:
|
||||
# - set 'allowWeakPasswords' to false (the default)
|
||||
# - configure password-checking, e.g. with NIST settings
|
||||
|
||||
|
||||
# These are very weak -- actually, none at all -- requirements
|
||||
passwordRequirements:
|
||||
# minLength: -1 # Password at least this many characters
|
||||
# maxLength: -1 # Password at most this many characters
|
||||
libpwquality:
|
||||
- minlen=0
|
||||
- minclass=0
|
||||
|
||||
# These are "you must have a password, any password" -- requirements
|
||||
#
|
||||
# passwordRequirements:
|
||||
# minLength: 1
|
||||
|
||||
# These are requirements the try to follow the suggestions from
|
||||
# https://pages.nist.gov/800-63-3/sp800-63b.html , "Digital Identity Guidelines".
|
||||
# Note that requiring long and complex passwords has its own cost,
|
||||
# because the user has to come up with one at install time.
|
||||
# Setting 'allowWeakPasswords' to false and 'doAutologin' to false
|
||||
# will require a strong password and prevent (graphical) login
|
||||
# without the password. It is likely to be annoying for casual users.
|
||||
#
|
||||
# passwordRequirements:
|
||||
# minLength: 8
|
||||
# maxLength: 64
|
||||
# libpwquality:
|
||||
# - minlen=8
|
||||
# - maxrepeat=3
|
||||
# - maxsequence=3
|
||||
# - usersubstr=4
|
||||
# - badwords=linux
|
||||
|
||||
# You can control the visibility of the 'strong passwords' checkbox here.
|
||||
# Possible values are:
|
||||
# - true to show or
|
||||
# - false to hide (default)
|
||||
# the checkbox. This checkbox allows the user to choose to disable
|
||||
# password-strength-checks. By default the box is **hidden**, so
|
||||
# that you have to pick a password that satisfies the checks.
|
||||
allowWeakPasswords: 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
|
||||
@@ -11,7 +11,7 @@
|
||||
<License>LGPLv2</License>
|
||||
<Summary>A distribution independent installer framework</Summary>
|
||||
<Description>Calamares is a distribution-independent system installer, with an advanced partitioning feature for both manual and automated partitioning operations.</Description>
|
||||
<Archive sha1sum="0a89a031e963c37ac5641d6a0d429c3477f48d45" type="targz">https://github.com/calamares/calamares/archive/v3.3.8.tar.gz</Archive>
|
||||
<Archive sha1sum="3ad270550be27a447ee9c9fff61a580ec526783a" type="targz">https://codeberg.org/Calamares/calamares/releases/download/v3.4.2/calamares-3.4.2.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>gettext-devel</Dependency>
|
||||
<Dependency>yaml-cpp</Dependency>
|
||||
@@ -55,9 +55,9 @@
|
||||
<Dependency>libplasma-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">pisilocalayar.patch</Patch>
|
||||
<Patch level="1">pisi-ayar.patch</Patch>
|
||||
<Patch level="1">pisi_set_hostname2.patch</Patch>
|
||||
<Patch level="1">no_fsck_and_pymouth2.patch</Patch>
|
||||
<!-- <Patch level="1">no_fsck_and_pymouth3.patch</Patch> -->
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -131,10 +131,25 @@
|
||||
<AdditionalFiles>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/applications/calamares.desktop">calamares.desktop</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/etc/locale.conf">locale.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/modules/bootloader.conf">bootloader.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/modules/unpackfs.conf">unpackfs.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/modules/grub.conf">grub.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/modules/grubconf.conf">grubconf.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/modules/packages.conf">packages.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/modules/users.conf">users.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/settings.conf">settings.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/calamares/branding/default/branding.desc">branding.desc</AdditionalFile>
|
||||
</AdditionalFiles>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="23">
|
||||
<Date>2026-04-20</Date>
|
||||
<Version>3.4.2</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="22">
|
||||
<Date>2026-04-16</Date>
|
||||
<Version>3.3.8</Version>
|
||||
|
||||
Reference in New Issue
Block a user