lanzaboote/rust/tool/shared/src/architecture.rs

36 lines
878 B
Rust

use std::path::PathBuf;
use anyhow::{bail, Result};
/// Supported system
#[non_exhaustive]
#[derive(Copy, Clone, PartialEq, Debug)]
pub enum Architecture {
X86,
AArch64,
}
impl Architecture {
pub fn efi_representation(&self) -> &str {
match self {
Self::X86 => "x64",
Self::AArch64 => "aa64",
}
}
pub fn efi_fallback_filename(&self) -> PathBuf {
format!("BOOT{}.EFI", self.efi_representation().to_ascii_uppercase()).into()
}
}
impl Architecture {
/// Converts from a NixOS system double to a supported system
pub fn from_nixos_system(system_double: &str) -> Result<Self> {
Ok(match system_double {
"x86_64-linux" => Self::X86,
"aarch64-linux" => Self::AArch64,
_ => bail!(format!("Unsupported NixOS system: {}.", system_double)),
})
}
}