diff --git a/.fmf/version b/.fmf/version
new file mode 100644
index 00000000..d00491fd
--- /dev/null
+++ b/.fmf/version
@@ -0,0 +1 @@
+1
diff --git a/.packit.yaml b/.packit.yaml
new file mode 100644
index 00000000..5974a61e
--- /dev/null
+++ b/.packit.yaml
@@ -0,0 +1,62 @@
+---
+# See the documentation for more information:
+# https://packit.dev/docs/configuration/
+
+# name in upstream package repository or registry
+upstream_package_name: bootupd
+upstream_tag_template: v{version}
+
+downstream_package_name: rust-bootupd
+
+specfile_path: contrib/packaging/bootupd.spec
+
+srpm_build_deps:
+ - cargo
+ - git
+ - libzstd-devel
+ - openssl-devel
+ - zstd
+
+actions:
+ # The last setp here is required by Packit to return the archive name
+ # https://packit.dev/docs/configuration/actions#create-archive
+ create-archive:
+ - bash -c "cargo install cargo-vendor-filterer"
+ - bash -c "cargo xtask spec"
+ - bash -c "cat target/bootupd.spec"
+ - bash -c "cp target/bootupd* contrib/packaging/"
+ - bash -c "ls -1 target/bootupd*.tar.zstd | grep -v 'vendor'"
+ # Do nothing with spec file. Two steps here are for debugging
+ fix-spec-file:
+ - bash -c "cat contrib/packaging/bootupd.spec"
+ - bash -c "ls -al contrib/packaging/"
+
+jobs:
+ - job: copr_build
+ trigger: pull_request
+ targets:
+ - fedora-rawhide-aarch64
+ - fedora-rawhide-x86_64
+
+ - job: tests
+ trigger: pull_request
+ targets:
+ - fedora-rawhide-aarch64
+ - fedora-rawhide-x86_64
+ tmt_plan: /tmt/plans/package
+
+ - job: propose_downstream
+ trigger: release
+ dist_git_branches:
+ fedora-rawhide:
+ fast_forward_merge_into: [fedora-latest-stable]
+
+ - job: koji_build
+ trigger: commit
+ dist_git_branches:
+ - fedora-all
+
+ - job: bodhi_update
+ trigger: commit
+ dist_git_branches:
+ - fedora-all
diff --git a/Cargo.lock b/Cargo.lock
index 3be9a944..c5684a36 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -33,7 +33,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
dependencies = [
"anstyle",
- "anstyle-parse",
+ "anstyle-parse 0.2.7",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstream"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
+dependencies = [
+ "anstyle",
+ "anstyle-parse 1.0.0",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
@@ -56,6 +71,15 @@ dependencies = [
"utf8parse",
]
+[[package]]
+name = "anstyle-parse"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
+dependencies = [
+ "utf8parse",
+]
+
[[package]]
name = "anstyle-query"
version = "1.1.5"
@@ -154,7 +178,7 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3292185c166091432ecbc6b203c0c73953d6b5965908368c51df800f1c549ed"
dependencies = [
- "anstream",
+ "anstream 0.6.21",
"anyhow",
"chrono",
"owo-colors",
@@ -446,11 +470,11 @@ dependencies = [
[[package]]
name = "env_logger"
-version = "0.11.9"
+version = "0.11.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d"
+checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a"
dependencies = [
- "anstream",
+ "anstream 1.0.0",
"anstyle",
"env_filter",
"jiff",
diff --git a/Cargo.toml b/Cargo.toml
index 8f64a2ba..9056b860 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -41,7 +41,7 @@ openssl = "^0.10"
os-release = "0.1.0"
regex = "1.12.3"
rpm-rs = { package = "rpm", version = "0.16.1", default-features = false, optional = true }
-rustix = { version = "1.1.4", features = ["process", "fs"] }
+rustix = { version = "1.1.4", features = ["process", "fs", "mount"] }
serde = { version = "^1.0", features = ["derive"] }
serde_json = "^1.0"
tempfile = "^3.26"
diff --git a/contrib/packaging/bootupd.spec b/contrib/packaging/bootupd.spec
index a5b5f65d..ce94839e 100644
--- a/contrib/packaging/bootupd.spec
+++ b/contrib/packaging/bootupd.spec
@@ -9,7 +9,7 @@ Summary: Bootloader updater
License: Apache-2.0
URL: https://github.com/coreos/bootupd
-Source0: %{crates_source}
+Source0: %{url}/releases/download/v%{version}/bootupd-%{version}.tar.zstd
Source1: %{url}/releases/download/v%{version}/bootupd-%{version}-vendor.tar.zstd
%if 0%{?fedora} || 0%{?rhel} >= 10
ExcludeArch: %{ix86}
diff --git a/src/bios.rs b/src/bios.rs
index f341f994..1012dd5e 100644
--- a/src/bios.rs
+++ b/src/bios.rs
@@ -277,4 +277,9 @@ impl Component for Bios {
fn get_efi_vendor(&self, _: &Path) -> Result