### Install Akmods Source: https://github.com/blue-build/modules/blob/main/modules/akmods/README.md Specify kernel modules to install in the 'install:' section of your recipe. The 'main' version is installed by default. ```yaml install: - akmods ``` -------------------------------- ### Install Packages from Any Repository Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Install specified packages from any available DNF repository. List the package names under the 'packages' key. ```yaml type: dnf install: packages: - package-1 - package-2 ``` -------------------------------- ### Install Packages with Pacman Source: https://github.com/blue-build/modules/blob/main/modules/pacman/README.md Use this configuration to install specified packages using pacman. ```yaml type: pacman install: packages: - package-1 - package-2 ``` -------------------------------- ### Install Packages with Exclusions Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Install specified packages while excluding others that might be pulled in as dependencies. List packages to install and then packages to exclude. ```yaml type: dnf install: packages: - niri exclude: - alacritty - waybar - fuzzel ``` -------------------------------- ### Example GSchema Override Settings Source: https://github.com/blue-build/modules/blob/main/modules/gschema-overrides/README.md Demonstrates the keyfile format for defining GSchema override settings for various GNOME components. ```ini [org.gnome.desktop.peripherals.touchpad] tap-to-click=true [org.gnome.settings-daemon.plugins.power] power-button-action='interactive' [org.gnome.mutter] check-alive-timeout=uint32 20000 [org.gnome.shell.extensions.blur-my-shell] sigma=5 ``` -------------------------------- ### System Configuration for Default Flatpaks Module Source: https://github.com/blue-build/modules/blob/main/README.md Example of a system configuration file for the 'default-flatpaks' run-time module. ```yaml # Information about the config file # # vendor: BlueBuild # module: default-flatpaks ``` -------------------------------- ### Install Packages with Zypper Source: https://github.com/blue-build/modules/blob/main/modules/zypper/README.md Use this snippet to install a list of packages using the zypper module. Ensure the packages are available in configured repositories. ```yaml type: zypper install: packages: - package-1 - package-2 ``` -------------------------------- ### Install Packages from Specific Repositories Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Install packages from a particular DNF repository by specifying its name. The 'repo' key should contain the repository identifier. ```yaml type: dnf install: packages: - repo: copr:copr.fedorainfracloud.org:custom-user:custom-repo packages: - package-1 ``` -------------------------------- ### Install Packages with APT Module Source: https://github.com/blue-build/modules/blob/main/modules/apt/README.md Use this snippet to install a list of packages using the apt module. Ensure the 'packages' list contains the desired package names. ```yaml type: apt install: packages: - package-1 - package-2 ``` -------------------------------- ### Install Packages with APK Source: https://github.com/blue-build/modules/blob/main/modules/apk/README.md Use this snippet to install one or more packages using the apk module. Ensure the packages are listed under the 'packages' key. ```yaml type: apk install: packages: - package-1 - package-2 ``` -------------------------------- ### Install Packages from URL or Local File Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Install packages directly from RPM URLs or local RPM files. The %OS_VERSION% magic string can be used for version-specific URLs or file names. ```yaml type: dnf install: packages: - https://example.com/package-%OS_VERSION%.rpm - custom-file.rpm # install files/dnf/custom-file.rpm from the image repository ``` -------------------------------- ### DNF Package Installation Options Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Configure package installation with options like skipping unavailable packages and excluding specific packages. This is used in the 'install' section of the DNF configuration. ```yaml type: dnf install: skip-unavailable: true exclude: ... packages: ... ``` -------------------------------- ### Install Individual Font File from URL Source: https://github.com/blue-build/modules/blob/main/modules/fonts/README.md Specify a single font file to be downloaded and installed from a given URL. Ensure the URL points directly to a font file like .otf or .ttf. ```yaml url-fonts: - name: MyFont url: https://example.com/MyFont-Regular.otf ``` -------------------------------- ### Install Package Groups Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Install entire package groups. The 'with-optional' option can be set to true to include optional packages within the group. ```yaml type: dnf group-install: with-optional: true packages: - de-package-1 - wm-package-2 ``` -------------------------------- ### Brew Uninstallation Script Source: https://github.com/blue-build/modules/blob/main/modules/brew/README.md This script removes Homebrew cache, systemd-related directories, the main brew installation directory, and the setup state file. It's designed to be run on a booted system to completely uninstall Brew. ```bash #!/usr/bin/env bash # Remove Homebrew cache if [[ -d "${HOME}/cache/Homebrew/" ]]; then echo "Removing '$HOME/cache/Homebrew/' directory" rm -r "${HOME}/cache/Homebrew/" else echo "'$HOME/cache/Homebrew/' directory is already removed" fi # Remove folders created by tmpfiles.d if [[ -d "/var/lib/homebrew/" ]]; then echo "Removing '/var/lib/homebrew/' directory" sudo rm -rf "/var/lib/homebrew/" else echo "'/var/lib/homebrew/' directory is already removed" fi if [[ -d "/var/cache/homebrew/" ]]; then echo "Removing '/var/cache/homebrew/' directory" sudo rm -rf "/var/cache/homebrew/" else echo "'/var/cache/homebrew/' directory is already removed" fi ## This is the main directory where brew is located if [[ -d "/var/home/linuxbrew/" ]]; then echo "Removing '/home/linuxbrew/' directory" sudo rm -rf "/var/home/linuxbrew/" else echo "'/home/linuxbrew/' directory is already removed" fi # Remove redundant brew-setup service state file if [[ -f "/etc/.linuxbrew" ]]; then echo "Removing empty '/etc/.linuxbrew' file" sudo rm -f "/etc/.linuxbrew" else echo "'/etc/.linuxbrew' file is already removed" fi ``` -------------------------------- ### Example GSchema Override Lockscreen Settings (Gnome) Source: https://github.com/blue-build/modules/blob/main/modules/gschema-overrides/README.md Shows how to specify GSchema override settings specifically for the GNOME Greeter, affecting lockscreen behavior. ```ini [org.gnome.desktop.peripherals.touchpad:GNOME-Greeter] tap-to-click=true ``` -------------------------------- ### Install RPM Package from Git Repository Source: https://github.com/blue-build/modules/blob/main/modules/rpm-ostree/README.md Installs an RPM package directly from a file within the git repository. The file is expected in the files/rpm-ostree/ directory. ```yaml install: - weird-package.rpm # tries to install files/rpm-ostree/weird-package.rpm ``` -------------------------------- ### Install Fonts from Multiple Sources Source: https://github.com/blue-build/modules/blob/main/modules/fonts/README.md Configure the installation of fonts from Nerd Fonts, Google Fonts, and custom URLs. This snippet shows the general structure for specifying font sources. ```yaml type: fonts fonts: nerd-fonts: - FiraCode # don't add spaces or "Nerd Font" suffix - Hack - SourceCodePro - Terminus - JetBrainsMono - NerdFontsSymbolsOnly google-fonts: - Roboto - Open Sans - Inter url-fonts: - name: CustomFont url: https://example.com/my-font.otf - name: CompanyFonts url: https://company.com/fonts.tar.gz ``` -------------------------------- ### DNF Group Installation Options Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Configure group package installations, allowing skipping of broken packages and exclusion of specific packages. This is used in the 'group-install' section. ```yaml type: dnf group-install: skip-broken: true exclude: ... packages: ... ``` -------------------------------- ### System Configuration for Default Flatpaks Source: https://github.com/blue-build/modules/blob/main/README.md This snippet shows the system-level configuration for the `default-flatpaks` module, defining which flatpak applications to install system-wide. ```yaml # description: System config file for `default-flatpaks` BlueBuild module, which is used to install + remove flatpak apps or modify flatpak repos. # instructions: Read this system config in order to know what is currently configured by the system & what to potentially modify in local-user config (/etc/bluebuild/default-flatpaks/configuration.yml). # Configuration section notify: true system: install: - org.gnome.Boxes - org.gnome.Calculator - org.gnome.Calendar - org.gnome.Snapshot - org.gnome.Contacts user: install: - org.gnome.World.Secrets ``` -------------------------------- ### Local-User Configuration for Default Flatpaks Source: https://github.com/blue-build/modules/blob/main/README.md This snippet illustrates the local-user configuration file (`/etc/bluebuild/default-flatpaks/configuration.yml`) for the `default-flatpaks` module. It allows for detailed management of flatpak installations, removals, and repository configurations for both system and user levels. ```yaml # Information about the config file # # vendor: BlueBuild # module: default-flatpaks # description: Local-user config file for `default-flatpaks` BlueBuild module, which is used to install + remove flatpak apps or modify flatpak repos. # instructions: Template of all supported options is in a example below. Modify the options you need & set "active" key to true. # Configuration section active: false notify: true # possible options: true/false system: repo-url: https://dl.flathub.org/repo/flathub.flatpakrepo repo-name: flathub-system repo-title: "Flathub (System)" # Optional; this sets the remote's user-facing name in graphical frontends like GNOME Software install: - org.gnome.Boxes - org.gnome.Calculator - org.gnome.Calendar - org.gnome.Snapshot - org.gnome.Contacts remove: - org.gnome.TextEditor user: repo-url: https://dl.flathub.org/repo/flathub.flatpakrepo repo-name: flathub-user repo-title: "Flathub (User)" # Optional; this sets the remote's user-facing name in graphical frontends like GNOME Software install: - org.gnome.World.Secrets remove: - org.gnome.Contacts ``` -------------------------------- ### Fix Packages Installing into /opt/ Source: https://github.com/blue-build/modules/blob/main/modules/rpm-ostree/README.md Applies a workaround for packages that install files into /opt/ directories by using symlinks. The directory path within /opt/ should be specified. ```yaml optfix: - /opt/my-app ``` -------------------------------- ### Install Fonts from Tarball Archive Source: https://github.com/blue-build/modules/blob/main/modules/fonts/README.md Download and install fonts from a compressed tarball archive (e.g., .tar.gz) hosted at a specific URL. The module handles extraction and font file identification. ```yaml url-fonts: - name: SpecialFont url: https://github.com/user/repo/releases/download/v1.0/font.tar.gz - name: AnotherFont url: https://github.com/user/repo/releases/download/v2.0/font.zip ``` -------------------------------- ### Install Fonts from ZIP Archive Source: https://github.com/blue-build/modules/blob/main/modules/fonts/README.md Download and install fonts contained within a ZIP archive from a specified URL. The module will extract the archive and identify font files. ```yaml url-fonts: - name: CompanyBrand url: https://assets.company.com/fonts/brand-fonts.zip ``` -------------------------------- ### Install Nvidia Kernel Modules (Open) Source: https://github.com/blue-build/modules/blob/main/modules/akmods/README.md Specify the 'nvidia-open' module version in the 'nvidia-driver:' section for Turing architecture and later GPUs. This uses the open kernel module. ```yaml nvidia-driver: - nvidia-open ``` -------------------------------- ### Example of Unsupported Relocatable Schema Setting Source: https://github.com/blue-build/modules/blob/main/modules/gschema-overrides/README.md Illustrates the dconf format for a relocatable schema setting, highlighting that this type of schema is not supported by the gschema-overrides module. ```ini [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0] binding='s' command='systemctl suspend' name='Suspend' ``` -------------------------------- ### Troubleshooting: Add Akmod Repo to rpm-ostree Source: https://github.com/blue-build/modules/blob/main/modules/akmods/README.md If an akmod is not installing due to missing dependencies, add the affected akmod repo to the 'repos' section of the rpm-ostree module. ```yaml rpm-ostree: repos: - id: ublue-os-akmods-extra url: https://copr.fedorainfracloud.org/coprs/ublue-os/akmods-extra/repo/fedora-$(rpm -E %fedora)/ublue-os-akmods-extra-fedora-$(rpm -E %fedora).repo ``` -------------------------------- ### Install Nvidia Kernel Modules (Proprietary) Source: https://github.com/blue-build/modules/blob/main/modules/akmods/README.md Specify the 'nvidia' module version in the 'nvidia-driver:' section for Maxwell to pre-Blackwell GPUs. This uses the proprietary driver. ```yaml nvidia-driver: - nvidia ``` -------------------------------- ### Empty TypeSpec Module Schema Source: https://github.com/blue-build/modules/blob/main/README.md An example of an empty TypeSpec file for a module. Replace placeholders with the module's name. ```typescript import "@typespec/json-schema"; using TypeSpec.JsonSchema; @jsonSchema("/modules/.json") model Module { /** * https://blue-build.org/reference/modules// */ type: "", } ``` -------------------------------- ### GNOME Extension User Location Error Source: https://github.com/blue-build/modules/blob/main/modules/gnome-extensions/README.md This error message indicates that a GNOME extension is attempting to access a user-specific file path that is not available or writable during the build process. It typically occurs when an extension is not installed system-wide or when its configuration files are expected in a location that cannot be created or modified. ```text GLib.FileError: Failed to open file "/usr/local/share/glib-2.0/schemas/gschemas.compiled": open() failed: No such file or directory ``` -------------------------------- ### Configure Nvidia Module Loading (Manual) Source: https://github.com/blue-build/modules/blob/main/modules/akmods/README.md Manually add kernel arguments to load the Nvidia module and blacklist Nouveau. This is an alternative to 'ujust configure-nvidia'. ```bash rpm-ostree kargs \ --append-if-missing=rd.driver.blacklist=nouveau \ --append-if-missing=modprobe.blacklist=nouveau \ --append-if-missing=nvidia-drm.modeset=1 \ --delete-if-present=nomodeset ``` -------------------------------- ### Configure Nvidia Module Loading (Universal Blue) Source: https://github.com/blue-build/modules/blob/main/modules/akmods/README.md For Universal Blue images, run 'sudo ujust configure-nvidia' to ensure the Nvidia module is loaded after rebasing to a new image. ```bash sudo ujust configure-nvidia ``` -------------------------------- ### List All Available Settings Recursively Source: https://github.com/blue-build/modules/blob/main/modules/gschema-overrides/README.md This command lists all current and available settings recursively on a booted system. It is recommended to use this to ensure a setting is available before attempting to override it. ```bash gsettings list-recursively ``` -------------------------------- ### Add Repository Files from URL or Local Path Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Add repository configuration files from HTTP/HTTPS URLs or local files within the image repository. The OS version can be substituted using the %OS_VERSION% magic string. ```yaml type: dnf repos: files: - https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo - custom-file.repo # file path for /files/dnf/custom-file.repo ``` -------------------------------- ### Enable User Services Source: https://github.com/blue-build/modules/blob/main/modules/chezmoi/README.md Enable the chezmoi user services for a single user. This command should be run as the target user. ```bash systemctl enable --user chezmoi-init.service chezmoi-update.timer ``` -------------------------------- ### Enable Global Services Source: https://github.com/blue-build/modules/blob/main/modules/chezmoi/README.md Enable the chezmoi services globally for all users. This command requires sudo privileges. ```bash sudo systemctl enable --global chezmoi-init.service chezmoi-update.timer ``` -------------------------------- ### Add Repository Keys Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Add GPG keys for repositories from URLs or local files to ensure package authenticity. ```yaml type: dnf repos: keys: - https://example.com/repo-1.asc - key2.asc ``` -------------------------------- ### Enable and Disable Repositories Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Manage the state of repositories by specifying which ones to add and which to remove, or which COPR repositories to enable or disable. ```yaml type: dnf repos: files: add: - repo1 - repo2 remove: - repo3 copr: enable: - ryanabx/cosmic-epoch - name: trixieua/mutter-patched chroot: fedora-42-x86_64 disable: - kylegospo/oversteer ``` -------------------------------- ### Replace Packages from a Specific Repository Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Replace existing packages with versions from a specified repository using 'distro-sync'. Packages are listed under the 'packages' key. ```yaml type: dnf replace: - from-repo: copr:copr.fedorainfracloud.org:custom-user:custom-repo packages: - package-1 ``` -------------------------------- ### Replace Packages with Different Names Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Swap packages for versions with different names from another repository. This uses 'swap' for each set before performing 'distro-sync'. Specify 'old:' and 'new:' for packages with differing names. ```yaml type: dnf replace: - from-repo: repo-1 packages: - old: old-package-2 new: new-package-2 ``` -------------------------------- ### Add Custom Repository File Source: https://github.com/blue-build/modules/blob/main/modules/rpm-ostree/README.md Copies a custom .repo file from the git repository into /etc/yum.repos.d/. The %OS_VERSION% magic string can be used for version-specific repositories. ```yaml repos: - my-repository.repo # copies in .repo file from files/rpm-ostree/my-repository.repo to /etc/yum.repos.d/ ``` -------------------------------- ### Download File with Specified Filename Source: https://github.com/blue-build/modules/blob/main/README.md Template for downloading a file using curl with a specific output filename and directory creation. ```bash curl -fLsS --retry 5 --create-dirs "${URL}" -o "${DIR}/${FILENAME.EXT}" ``` -------------------------------- ### List Relocatable Schemas Source: https://github.com/blue-build/modules/blob/main/modules/gschema-overrides/README.md Command to list all relocatable schemas on the system. These schemas are not supported by the gschema-overrides module and require alternative methods like dconf-update-service. ```bash gsettings list-relocatable-schemas ``` -------------------------------- ### Set Bash Script Options Source: https://github.com/blue-build/modules/blob/main/README.md Ensures the module fails the image build if an error is caught. Use 'set -euxo pipefail' during debugging. ```bash set -euo pipefail ``` -------------------------------- ### Watch for dconf Setting Changes Source: https://github.com/blue-build/modules/blob/main/modules/gschema-overrides/README.md Use this command to monitor changes made to dconf settings in real-time. It outputs the key for any changed setting, which can then be used in gschema.override files. ```bash dconf watch / ``` -------------------------------- ### Add COPR Repositories Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Add software repositories from COPR (Cool Other Package Repo). The 'chroot' can be specified to indicate the OS version the package was built for. ```yaml type: dnf repos: copr: - atim/starship - name: trixieua/mutter-patched chroot: fedora-42-x86_64 ``` -------------------------------- ### DNF Package Replacement Options Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Configure package replacement, specifying the source repository, allowing erasure of conflicting packages, and excluding certain packages. This is used in the 'replace' section. ```yaml type: dnf replace: - from-repo: repo-1 allow-erasing: true exclude: ... packages: ... ``` -------------------------------- ### SOAR Uninstallation Script Source: https://github.com/blue-build/modules/blob/main/modules/soar/README.md This script removes SOAR configuration and data from the user's home directory. It checks for the existence of configuration and data directories before attempting removal. ```sh #!/bin/sh if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/soar/config.toml" ]; then echo "Removing soar config in '${XDG_CONFIG_HOME:-$HOME/.config}/soar/' directory" rm -r "${XDG_CONFIG_HOME:-$HOME/.config}/soar/" else echo "'${XDG_CONFIG_HOME:-$HOME/.config}/soar/config.toml' file is already removed" fi if [ -d "${XDG_DATA_HOME:-$HOME/.local/share}/soar/" ]; then echo "Removing '${XDG_DATA_HOME:-$HOME/.local/share}/soar/' directory" rm -r "${XDG_DATA_HOME:-$HOME/.local/share}/soar/" else echo "'${XDG_DATA_HOME:-$HOME/.local/share}/soar/' directory is already removed" fi ``` -------------------------------- ### Add Non-free Repositories Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Add commonly used non-free repositories like negativo17 or rpmfusion. This action will disable the opposite repository if it was previously enabled. ```yaml type: dnf repos: nonfree: negativo17 ``` -------------------------------- ### Download File to Directory Source: https://github.com/blue-build/modules/blob/main/README.md Template for downloading a file using curl to a specified directory without changing the filename. ```bash curl -fLsS --retry 5 --create-dirs -O "${URL}" --output-dir "${DIR}" ``` -------------------------------- ### Enable Repository Cleanup Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Configure the DNF module to automatically clean up repositories that were added within the same module definition. This option is disabled by default. ```yaml type: dnf repos: cleanup: true ``` -------------------------------- ### Replace Base Packages with COPR Packages Source: https://github.com/blue-build/modules/blob/main/modules/rpm-ostree/README.md Replaces existing base packages with newer versions from a specified COPR repository. The COPR repository file is temporarily added and then removed. ```yaml replace: - from-repo: my-copr-repo packages: - package-to-replace - another-package ``` -------------------------------- ### Remove Packages with Pacman Source: https://github.com/blue-build/modules/blob/main/modules/pacman/README.md Use this configuration to remove specified packages using pacman. ```yaml type: pacman remove: packages: - package-1 - package-2 ``` -------------------------------- ### Remove Packages with APT Module Source: https://github.com/blue-build/modules/blob/main/modules/apt/README.md Use this snippet to remove a list of packages using the apt module. Ensure the 'packages' list contains the package names to be removed. ```yaml type: apt remove: packages: - package-1 - package-2 ``` -------------------------------- ### Enable Lingering for User Source: https://github.com/blue-build/modules/blob/main/modules/chezmoi/README.md Enable systemd lingering for a specific user. This allows user services to run at boot even if the user is not logged in. This command requires sudo privileges. ```bash sudo loginctl enable-linger ``` -------------------------------- ### Remove Packages with APK Source: https://github.com/blue-build/modules/blob/main/modules/apk/README.md Use this snippet to remove one or more packages using the apk module. List the packages to be removed under the 'packages' key. ```yaml type: apk remove: packages: - package-1 - package-2 ``` -------------------------------- ### Remove Packages with Zypper Source: https://github.com/blue-build/modules/blob/main/modules/zypper/README.md Use this snippet to remove a list of packages using the zypper module. This will uninstall the specified packages from the system. ```yaml type: zypper remove: packages: - package-1 - package-2 ``` -------------------------------- ### DNF Package Removal Configuration Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Configure package removal, with an option to disable automatic removal of unused dependencies. This is used in the 'remove' section. ```yaml type: dnf remove: auto-remove: false packages: - package-1 - package-2 ``` -------------------------------- ### DNF Group Removal Configuration Source: https://github.com/blue-build/modules/blob/main/modules/dnf/README.md Configure the removal of package groups by specifying the packages to be removed. This is used in the 'group-remove' section. ```yaml type: dnf group-remove: packages: - de-package-2 ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.