68 lines
1.8 KiB
Rust
68 lines
1.8 KiB
Rust
|
use std::path::{Path, PathBuf};
|
||
|
|
||
|
use crate::common::esp::EspPaths;
|
||
|
|
||
|
/// Paths to the boot files that are not specific to a generation.
|
||
|
/// Systemd variant
|
||
|
pub struct SystemdEspPaths {
|
||
|
pub esp: PathBuf,
|
||
|
pub efi: PathBuf,
|
||
|
pub nixos: PathBuf,
|
||
|
pub linux: PathBuf,
|
||
|
pub efi_fallback_dir: PathBuf,
|
||
|
pub efi_fallback: PathBuf,
|
||
|
pub systemd: PathBuf,
|
||
|
pub systemd_boot: PathBuf,
|
||
|
pub loader: PathBuf,
|
||
|
pub systemd_boot_loader_config: PathBuf,
|
||
|
}
|
||
|
|
||
|
impl EspPaths<10> for SystemdEspPaths {
|
||
|
fn new(esp: impl AsRef<Path>) -> Self {
|
||
|
let esp = esp.as_ref();
|
||
|
let efi = esp.join("EFI");
|
||
|
let efi_nixos = efi.join("nixos");
|
||
|
let efi_linux = efi.join("Linux");
|
||
|
let efi_systemd = efi.join("systemd");
|
||
|
let efi_efi_fallback_dir = efi.join("BOOT");
|
||
|
let loader = esp.join("loader");
|
||
|
let systemd_boot_loader_config = loader.join("loader.conf");
|
||
|
|
||
|
Self {
|
||
|
esp: esp.to_path_buf(),
|
||
|
efi,
|
||
|
nixos: efi_nixos,
|
||
|
linux: efi_linux,
|
||
|
efi_fallback_dir: efi_efi_fallback_dir.clone(),
|
||
|
efi_fallback: efi_efi_fallback_dir.join("BOOTX64.EFI"),
|
||
|
systemd: efi_systemd.clone(),
|
||
|
systemd_boot: efi_systemd.join("systemd-bootx64.efi"),
|
||
|
loader,
|
||
|
systemd_boot_loader_config
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn nixos_path(&self) -> &Path {
|
||
|
&self.nixos
|
||
|
}
|
||
|
|
||
|
fn linux_path(&self) -> &Path {
|
||
|
&self.linux
|
||
|
}
|
||
|
|
||
|
fn iter(&self) -> std::array::IntoIter<&PathBuf, 10> {
|
||
|
[
|
||
|
&self.esp,
|
||
|
&self.efi,
|
||
|
&self.nixos,
|
||
|
&self.linux,
|
||
|
&self.efi_fallback_dir,
|
||
|
&self.efi_fallback,
|
||
|
&self.systemd,
|
||
|
&self.systemd_boot,
|
||
|
&self.loader,
|
||
|
&self.systemd_boot_loader_config,
|
||
|
].into_iter()
|
||
|
}
|
||
|
}
|