# SPDX-License-Identifier: LGPL-2.1-or-later

# This is a settings file for OS image generation using mkosi (https://github.com/systemd/mkosi).
# Symlink this file to mkosi.default in the project root directory and invoke "mkosi" to build an OS image.

# We use python3*dist() throughout this file because we need to make sure the python3.9dis() packages are
# installed on CentOS Stream 8. mkosi doesn't support release specific configuration yet so we use the globs
# to get the necessary packages on both CentOS Stream 8 and CentOS Stream 9.

[Distribution]
Distribution=centos
Repositories=epel
RepositoryDirectory=mkosi.conf.d/centos/mkosi.reposdir

[Content]
Packages=
        alsa-lib
        audit
        cryptsetup
        dhcp-server
        fuse
        glib2
        glibc-minimal-langpack
        glibc.i686
        gnutls
        iproute
        iproute-tc
        kernel-modules-extra
        libasan
        libbpf
        libcap-ng
        libfido2
        libmicrohttpd
        libmnl
        libubsan
        libxcrypt
        libxkbcommon
        netcat
        numactl-libs
        p11-kit
        pam
        polkit
        popt
        procps-ng
        python3[.][9]dist(pefile)
        python3[.][9]dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
        python3[.][9]dist(pytest)
        python39
        quota
        tpm2-tss
        vim-common

BuildPackages=
        bpftool
        docbook-xsl
        dwarves
        glibc-devel.i686
        glibc-static
        glibc-static.i686
        gnu-efi-devel
        libgcrypt-devel # CentOS Stream 8 libgcrypt-devel doesn't ship a pkg-config file.
        libxslt
        pam-devel
        perl-interpreter
        pkgconfig(alsa)
        pkgconfig(audit)
        pkgconfig(blkid)
        pkgconfig(bzip2)
        pkgconfig(dbus-1)
        pkgconfig(fdisk)
        pkgconfig(fuse)
        pkgconfig(glib-2.0)
        pkgconfig(gnutls)
        pkgconfig(libacl)
        pkgconfig(libbpf)
        pkgconfig(libcap-ng)
        pkgconfig(libcap)
        pkgconfig(libcryptsetup)
        pkgconfig(libcurl)
        pkgconfig(libdw)
        pkgconfig(libfido2)
        pkgconfig(libidn2)
        pkgconfig(libkmod)
        pkgconfig(libmicrohttpd)
        pkgconfig(libmnl)
        pkgconfig(libpcre2-8)
        pkgconfig(libqrencode)
        pkgconfig(libseccomp)
        pkgconfig(libselinux)
        pkgconfig(libzstd)
        pkgconfig(mount)
        pkgconfig(numa)
        pkgconfig(openssl)
        pkgconfig(p11-kit-1)
        pkgconfig(popt)
        pkgconfig(pwquality)
        pkgconfig(tss2-esys)
        pkgconfig(tss2-mu)
        pkgconfig(tss2-rc)
        pkgconfig(valgrind)
        pkgconfig(xkbcommon)
        python3*dist(docutils)
        python3*dist(jinja2)
        python3*dist(lxml)
