System.yaml

system.yaml
repo: 'https://pkg-repo.blendos.co' # (1)!

arch-repo: 'https://geo.mirror.pkgbuild.com' # (10)!

impl: 'https://github.com/blend-os/tracks/raw/main' # (2)!

track: 'plasma' # (3)!

packages: # (4)!
  - 'package_1'
  - 'package_2'

aur-packages: # (5)!
  - 'package_1-git'
  - 'package_2-bin'

services: # (6)!
  - 'service_1'

user-services: # (9)!
  - 'user-service_1'

package-repos: # (7)!
  - name: 'REPO_NAME'
    repo-url: 'REPO_URL'

commands: # (8)!
  - 'echo command_1'
  - 'echo command_2'
  1. repo

    Type: string

    Default Value: https://pkg-repo.blendos.co

    This option must be set.

    Sets the repo for the core blendOS packages.

  2. impl

    Type: string

    Default Value: https://github.com/blend-os/tracks/raw/main

    This option must be set.

    Sets the raw URL prefix (track files are appended to the prefix to make a URL).

    This must be set to ensure that the full URL will serve all available files with a Content-Type of text/plain.

    Example

    If the start of the file looks like this:

    repo: 'https://pkg-repo.blendos.co'
    
    impl: 'https://github.com/blend-os/tracks/raw/main'
    
    track: 'plasma'
    
    ...
    

    The fully generated URL would be:

    https://github.com/blend-os/tracks/raw/main/plasma.yaml
    

    which would redirect to:

    https://raw.githubusercontent.com/blend-os/tracks/main/plasma.yaml
    

    which serves the file with a Content-Type of text/plain.

  3. track

    Type: string

    This option must be set.

    Sets the track (a mini system.yaml), which must be a YAML file in the folder of the impl URL.

    Available options are determined by the impl URL.

    If you are creating a custom track that does not inherit anything, set this value to custom.

    Example

    If I have a track folder/repo with the following files:

    • track-1.yaml
    • track-2.yaml

    and I set my impl URL properly, I then have 2 track options:

    track: 'track-1'
    

    and

    track: 'track-2'
    
  4. packages

    Type: array

    A list of packages to install using pacman (includes any custom repos you have set).

  5. aur-packages

    Type: array

    A list of AUR packages to install using paru.

  6. services

    Type: array

    A list of services to start at boot using systemd.

  7. package-repos

    Type: object array

    Custom repos to add to pacman.conf.

    name: The repo's name parameter in pacman.conf (the value between [])

    repo-url: The repo's URL (no mirrorlists) (the Server variable from pacman.conf)

    Value Placement
    pacman.conf
    [name]
    Server = repo-url
    SigLevel = Never
    
    Example: Chaotic AUR

    To add the Chaotic AUR, the values here would be set to the following:

    The name parameter is used as $repo in these URLs, so do not change it from the maintainer's default!

    package-repos:
      - name: 'chaotic-aur'
        repo-url: 'https://cdn-mirror.chaotic.cx/$repo/$arch'
    
  8. commands

    Type: array

    A list of commands to be run as root during build (after package and AUR package installations have finished).

  9. user-services

    Type: array

    A list of services to start at system boot at the user level (systemctl --user).

  10. arch-repo

    Type: string

    Default Value: https://geo.mirror.pkgbuild.com

    This is not specified in the file, but is rather the default if no value is specified.

    The main Arch Linux repo to use in pacman.conf.

    Do not put a trailing / at the end of the URL.

    Do not do this:

    system.yaml
    arch-repo: 'https://geo.mirror.pkgbuild.com/'
    

    Do this:

    system.yaml
    arch-repo: 'https://geo.mirror.pkgbuild.com'
    

    You can find a list of mirror URLs by visiting cloudflaremirrors.com (and looking at the bullet list, this shows nearby mirrors) or the Arch mirrorlist. Only copy one. Also, only copy the first part of the URL (before $repo).

    Example

    If I want to use the University of Waterloo's mirror (🇨🇦):

    URL shown in the mirrorlist
    https://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/$arch
    
    system.yaml
    arch-repo: 'https://mirror.csclub.uwaterloo.ca/archlinux'
    

    You should put the link to the folder that has a directory list like this (there may be other folders too, that's fine):

    Some Mirror
    .
    ├── 📁 core
    ├── 📁 extra
    ├── 📁 multilib