kupferbootstrap/docs/source/config.md
2022-11-10 02:25:05 +01:00

3.5 KiB

Configuration

Kupferbootstrap uses toml for its configuration file.

The file can either be edited manually or managed via the {doc}cli/config subcommand.

You can quickly generate a default config by running {code}kupferbootstrap config init -N.

File Location

The configuration is stored in ~/.config/kupfer/kupferbootstrap.toml, where ~ is your user's home folder.

Kupferbootstrap needs to create a number of folders, e.g. to download PKGBUILDs.git and store binary packages. By default, all of those folders live inside ~/.cache/kupfer/.

See also the [paths] section in your config.

Sections

A config file is split into sections like so:

[pkgbuilds]
git_repo = "https://gitlab.com/kupfer/packages/pkgbuilds.git"
git_branch = "dev"

[pacman]
parallel_downloads = 3

Here, we have two sections: pkgbuilds and pacman.

Flavours

Flavours are preset collections of software and functionality to enable, i.e. desktop environments like Gnome and Phosh.

Profiles

The last section and currently the only one with subsections is the profiles section.

A profile is the configuration of a specific device image. It specifies (amongst others):

  • the device model
  • the flavour (desktop environment)
  • the host- and user name
  • extra packages to install

Using a profile's parent key, you can inherit settings from another profile.

This allows you to easily keep a number of slight variations of the same target profile around without the need to constantly modify your Kupferbootstrap configuration file.

You can easily create new profiles with kupferbootstrap config profile init.

Here's an example:

[profiles]
current = "graphical"

[profiles.default]
parent = ""
device = "oneplus-enchilada"
flavour = "barebone"
pkgs_include = [ "wget", "rsync", "nano", "tmux", "zsh", "pv", ]
pkgs_exclude = []
hostname = "kupferphone"
username = "prawn"
size_extra_mb = 800

[profiles.graphical]
parent = "default"
flavour = "phosh"
pkgs_include = [ "firefox", "tilix", "gnome-tweaks" ]
size_extra_mb = "+3000"

[profiles.hades]
parent = "graphical"
flavour = "phosh"
hostname = "hades"

[profiles.recovery]
parent = "default"
flavour = "debug-shell"

[profiles.beryllium]
parent = "graphical"
device = "xiaomi-beryllium-ebbg"
flavour = "gnome"
hostname = "pocof1"

The current key in the profiles section controlls which profile gets used by Kupferbootstrap by default.

The first subsection (profiles.default) describes the default profile which gets created by config init.

Next, we have a graphical profile that defines a couple of graphical programs for all but the recovery profile, since that doesn't have a GUI.

size_extra_mb

Note how size_extra_mb can either be a plain integer (800) or a string, optionally leading with a plus sign (+3000), which instructs Kupferbootstrap to add the value to the parent profile's size_extra_mb.

pkgs_include / pkgs_exclude

Like size_extra_mb, pkgs_include will be merged with the parent profile's pkgs_include.

To exclude unwanted packages from being inherited from a parent profile, use pkgs_exclude in the child profile.

`pkgs_exclude` has no influence on Pacman's dependency resolution.
It only blocks packages during image build that would usually be explicitly installed
due to being listed in a parent profile or the selected flavour.