Name: multifedora Version: 0.0.1 Release: 17.g4df7bf4%{?dist} Summary: Manage multiple Fedora systems on one disk License: MIT URL: https://github.com/t184256/multifedora Source0: https://github.com/t184256/multifedora/archive/4df7bf45fe23843300ed40485d83e5aad8e9b6d7/t184256-multifedora-4df7bf4.tar.gz BuildRequires: systemd-rpm-macros BuildArch: noarch AutoReqProv: no Requires: /bin/bash Requires: multifedora-lib = %{version}-%{release} Recommends: multifedora-chroot %description Install additional Fedora systems on your existing btrfs rootfs and select which one to boot in the ESP GRUB menu. The entry point is the multifedora command; the tools it drives live in the multifedora-lib subpackage. %package lib Summary: Tools that manage multiple Fedora systems on one disk Requires: btrfs-progs Requires: cryptsetup Requires: dracut Requires: grep Requires: sed Requires: systemd Requires: tar Requires: util-linux %description lib The multifedora tools proper, installed in /usr/libexec/multifedora. %package chroot Summary: Run commands in installed systems and disk images # the tools are self-contained, so -lib is not required; but if both # are present they must come from the same build Conflicts: multifedora-lib < %{version}-%{release} Conflicts: multifedora-lib > %{version}-%{release} Requires: systemd-container %description chroot The multifedora chroot commands, running systemd-nspawn on a secondary system or on a raw Fedora disk image. %prep %setup -q -n multifedora-4df7bf45fe23843300ed40485d83e5aad8e9b6d7 %build # noop %install mkdir -p %{buildroot}%{_libexecdir}/multifedora \ %{buildroot}%{_unitdir} %{buildroot}%{_sbindir} install -m755 multifedora %{buildroot}%{_libexecdir}/multifedora/ for f in multifedora-*; do [[ $f == *.service ]] && continue install -m755 "$f" %{buildroot}%{_libexecdir}/multifedora/ done # the sources keep #!/usr/bin/env bash for portability (NixOS); # Fedora policy wants an absolute interpreter in packaged scripts for f in %{buildroot}%{_libexecdir}/multifedora/*; do [[ $f == *.service ]] && continue sed -i '1s|^#!/usr/bin/env bash$|#!/bin/bash|' "$f" done install -m644 multifedora-yield.service \ %{buildroot}%{_unitdir}/multifedora-yield.service ln -s %{_libexecdir}/multifedora/multifedora %{buildroot}%{_sbindir}/multifedora %files %license LICENSE %{_sbindir}/multifedora %{_libexecdir}/multifedora/multifedora %files lib %{_unitdir}/multifedora-yield.service %exclude %{_libexecdir}/multifedora/multifedora %exclude %{_libexecdir}/multifedora/multifedora-chroot %exclude %{_libexecdir}/multifedora/multifedora-chroot-image %exclude %{_libexecdir}/multifedora/multifedora-chroot-secondary %exclude %{_libexecdir}/multifedora/multifedora-chroot-next %{_libexecdir}/multifedora/* %files chroot %{_libexecdir}/multifedora/multifedora-chroot %{_libexecdir}/multifedora/multifedora-chroot-image %{_libexecdir}/multifedora/multifedora-chroot-secondary %{_libexecdir}/multifedora/multifedora-chroot-next # templated from build.sh %changelog * Wed Sep 09 2026 Alexander Sosedkin - 4df7bf4 - multifedora-reseat: fix a broken sed command * Wed Sep 09 2026 Alexander Sosedkin - 6db3faf - test/08-chroot: use a script for LUKS passphrase command * Wed Sep 09 2026 Alexander Sosedkin - 38d0c24 - multifedora, multifedora-chroot-image: drop sh -c for passphrase command * Wed Sep 09 2026 Alexander Sosedkin - e0d8801 - .copr: move service unit file to lib subpackage * Wed Sep 09 2026 Alexander Sosedkin - f2f6906 - .copr: add systemd-rpm-macros BuildRequires * Wed Sep 09 2026 Alexander Sosedkin - 9e49e08 - test/tool-spin-up: rename SSHPORT to SSH_PORT * Wed Sep 09 2026 Alexander Sosedkin - 8d2710f - test/tool-spin-up: auto-pick free SSH and monitor ports * Wed Sep 09 2026 Alexander Sosedkin - 6b27a27 - multifedora-chroot-next: require passing --read-write * Wed Sep 09 2026 Alexander Sosedkin - bf35b54 - test: reorder chroot stage before yield stages * Wed Sep 09 2026 Alexander Sosedkin - 8837c93 - test/tool-spin-up, test/10-chroot: speed up with EXTRA_DISK * Wed Sep 09 2026 Alexander Sosedkin - ef1aed9 - multifedora-chroot-*: mount more into chroots * Wed Sep 09 2026 Alexander Sosedkin - 21d0252 - multifedora-chroot-next: implement (private) * Tue Sep 08 2026 Alexander Sosedkin - b427920 - multifedora-list: implement * Tue Sep 08 2026 Alexander Sosedkin - f65e23e - multifedora-reseat: break up a sed * Tue Sep 08 2026 Alexander Sosedkin - 579e3d6 - multifedora-reset: reformat a bit * Tue Sep 08 2026 Alexander Sosedkin - 6ccaf27 - multifedora, multifedora-chroot: reformat a bit * Tue Sep 08 2026 Alexander Sosedkin - 15d9735 - multifedora: replace rm -rf with targeted cleanup on exit * Tue Sep 08 2026 Alexander Sosedkin - 949556c - .copr/Makefile: add the entry point * Tue Sep 08 2026 Alexander Sosedkin - 2fcd279 - multifedora-...: hush btrfs commands with -q * Tue Sep 08 2026 Alexander Sosedkin - d8b4999 - README.md: fixup * Tue Sep 08 2026 Alexander Sosedkin - 7ad5dbd - README.md: add installation instructions * Tue Sep 08 2026 Alexander Sosedkin - 52f8b4a - README.md: add * Tue Sep 08 2026 Alexander Sosedkin - d78d11a - .copr, ...: copr-friendly packaging * Tue Sep 08 2026 Alexander Sosedkin - ea1d57d - multifedora-chroot: implement * Tue Sep 08 2026 Alexander Sosedkin - e6f58d7 - multifedora-...: command -v isn't doing what I thought it did * Tue Sep 08 2026 Alexander Sosedkin - 42ecef1 - multifedora-reseat: handle subvol not followed by commas * Tue Sep 08 2026 Alexander Sosedkin - e53c18b - multifedora-yield: make more robust * Tue Sep 08 2026 Alexander Sosedkin - 7ef62f2 - multifedora-reseat: handle missing crypttab options field * Tue Sep 08 2026 Alexander Sosedkin - 0d5df7d - multifedora-new-secondary: skip copying efi/ * Tue Sep 08 2026 Alexander Sosedkin - a98305a - multifedora-esp-menu: guard against glob not expanding * Tue Sep 08 2026 Alexander Sosedkin - 1ecf62f - multifedora-...: keep allowed names boring * Tue Sep 08 2026 Alexander Sosedkin - 6c296f4 - test/04-inject-remove: extend * Tue Sep 08 2026 Alexander Sosedkin - f53a903 - multifedora-extract: close luks mapping just in case * Tue Sep 08 2026 Alexander Sosedkin - dae3d04 - multifedora: don't read w/o tty * Mon Sep 07 2026 Alexander Sosedkin - 2e5a52e - multifedora-yield, ...: implement * Mon Sep 07 2026 Alexander Sosedkin - 069e20a - multifedora-remove: add PATH for sibling scripts * Mon Sep 07 2026 Alexander Sosedkin - 962f399 - multifedora.spec: split up Requires * Mon Sep 07 2026 Alexander Sosedkin - 10fa27c - test/04/inject-remove: include multifedora-esp-menu * Mon Sep 07 2026 Alexander Sosedkin - d35f707 - flake.nix: drop libguestfs from dev shell * Mon Sep 07 2026 Alexander Sosedkin - 6fb2c0d - multifedora: allow passing LUKS_PASSPHRASE * Mon Sep 07 2026 Alexander Sosedkin - be8f840 - multifedora-reset: tweak a lot * Mon Sep 07 2026 Alexander Sosedkin - 01d23cf - flake.nix: add RPM building * Mon Sep 07 2026 Alexander Sosedkin - d032dea - multifedora: sketch up * Mon Sep 07 2026 Alexander Sosedkin - 6b40d03 - multifedora-remove: regenerate ESP menu after removal * Mon Sep 07 2026 Alexander Sosedkin - 1f15c65 - multifedora-new-secondary, multifedora-reseat: add * Mon Sep 07 2026 Alexander Sosedkin - 97043d2 - multifedora-esp-menu: add * Mon Sep 07 2026 Alexander Sosedkin - b8fb88f - multifedora-remove: add * Mon Sep 07 2026 Alexander Sosedkin - fe0b8a8 - multifedora-inject: add * Mon Sep 07 2026 Alexander Sosedkin - a673d3f - multifedora-extract: use a manifest of subvolumes * Sun Sep 06 2026 Alexander Sosedkin - 54056da - fedora-prime-next: remove * Sun Sep 06 2026 Alexander Sosedkin - e9e2d65 - test/tool-install: add a testing ro subvolume * Sun Sep 06 2026 Alexander Sosedkin - 50bfa6e - test/tool-install: create some testing subvolumes * Sun Sep 06 2026 Alexander Sosedkin - 7d3750a - multifedora-extract: rename from fedora-extract * Sun Sep 06 2026 Alexander Sosedkin - 1ce78d2 - test/tool-spin-up: fail early if monitor port is busy * Sun Sep 06 2026 Alexander Sosedkin - 95ffc60 - test/02-install-second: reuse SSH key * Sun Sep 06 2026 Alexander Sosedkin - 8fc74f1 - test: test in stages * Sat Sep 05 2026 Alexander Sosedkin - 1c8dcd5 - test/tool-spin-up: add BACKGROUND_PIDFILE to leave VM running * Sat Sep 05 2026 Alexander Sosedkin - 16b1569 - test/tool-install, ...: doctor iso with mkkiso; workstation profile * Sat Sep 05 2026 Alexander Sosedkin - 4bb77a5 - test/tool-inside-vm: use script-relative path for SSH key * Sat Sep 05 2026 Alexander Sosedkin - b365192 - test/tool-spin-up: use script-relative paths for test files * Sat Sep 05 2026 Alexander Sosedkin - 0a41897 - flake.nix: add unprivileged mkefiboot and mkksiso * Sat Sep 05 2026 Alexander Sosedkin - 303f187 - test/tool-install: pre-install tar * Sat Sep 05 2026 Alexander Sosedkin - bce3f25 - test/tool-install: embed kickstart and SSH key generation * Sat Sep 05 2026 Alexander Sosedkin - 0f3abf4 - test/tool-spin-up: add SHARE_DIR mounting support * Sat Sep 05 2026 Alexander Sosedkin - dd7553d - test/tool-spin-up: support running a command inside the VM * Sat Sep 05 2026 Alexander Sosedkin - 1ce6c46 - test/tool-inside-vm: polish * Sat Sep 05 2026 Alexander Sosedkin - f38ac9d - Makefile: fix url once again, to the georedirected version * Sat Sep 05 2026 Alexander Sosedkin - b9e6bc1 - test: move most files into test/ * Sat Sep 05 2026 Alexander Sosedkin - 9ade672 - Makefile: fix url * Fri Sep 04 2026 Alexander Sosedkin - 8354ba4 - initial commit