Name: build-drv Version: 0.1 Release: 1%{?dist} Summary: Build Guix derivations License: GPL-2.0 URL: https://codeberg.org/zanc/%{name} Source0: https://ftp.gnu.org/gnu/guix/guix-binary-1.5.0.x86_64-linux.tar.xz Source1: https://substitutes.nonguix.org/signing-key.pub Source2: https://dl.fedoraproject.org/pub/fedora/linux/releases/44/Everything/x86_64/os/Packages/f/fedora-gpg-keys-44-1.noarch.rpm Source3: https://dl.fedoraproject.org/pub/fedora/linux/releases/44/Everything/x86_64/os/Packages/f/fedora-repos-44-1.noarch.rpm Source4: channels.scm BuildRequires: dnf5 %description Don't forget to enable network to the builder, e.g. --enable-network in mock/fedpkg. %build mkdir -p chroot/{dev,sys,proc} mount --bind /dev chroot/dev mount --bind /sys chroot/sys mount --bind /proc chroot/proc rpm2cpio %SOURCE2 | cpio -idmuvD chroot rpm2cpio %SOURCE3 | cpio -idmuvD chroot dnf --installroot=$(pwd)/chroot --releasever=44 \ --setopt=max_parallel_downloads=20 \ install @core @standard glibc-all-langpacks -y tar --extract --strip-components=1 --file %SOURCE0 -C chroot cp -f %SOURCE1 chroot/tmp/signing-key.pub cp -f %SOURCE4 chroot/root/.config/guix cat | chroot chroot /bin/bash - <<'EOF' groupadd --system guix-daemon useradd -g "guix-daemon" -G "guix-daemon" \ -d /var/empty -s "$(command -v nologin)" \ -c "Unprivileged Guix Daemon User" --system "guix-daemon" mkdir -p ~root/.config/guix ln -sf /var/guix/profiles/per-user/root/current-guix \ ~root/.config/guix/current GUIX_PROFILE=~root/.config/guix/current source "${GUIX_PROFILE}/etc/profile" chown -R guix-daemon:guix-daemon /gnu /var/guix chown -R root:root /var/guix/profiles/per-user/root mkdir -p /var/log/guix chown guix-daemon:guix-daemon /var/log/guix chmod 755 /var/log/guix groupadd --system guixbuild for i in $(seq -w 1 10); do useradd -g "guixbuild" -G guixbuild \ -d /var/empty -s "$(command -v nologin)" \ -c "Guix build user $i" --system "guixbuilder${i}" done for host in bordeaux.guix.gnu.org ci.guix.gnu.org /tmp/signing-key.pub; do key=~root/.config/guix/current/share/guix/$host.pub [ -f "$key" ] \ && guix archive --authorize < "$key" done guix-daemon --build-users-group=guixbuild --disable-chroot \ --substitute-urls='https://bordeaux.guix.gnu.org https://ci.guix.gnu.org https://substitutes.nonguix.org' & guix pull guix archive --generate-key # generates /etc/guix/signing-key.pub guix archive --export -r $(realpath ~root/.guix-profile) linux-7.2 >result.nar EOF # To import the resulting derivations to your Guix machine: # rpm2cpio build-drv-0.1-1.fc44.x86_64.rpm | cpio -idmuv # guix archive --authorize - initial version