Use os-release to determine appropriate planner (#501)
This commit is contained in:
parent
22aad4a332
commit
1d51b25bf7
|
@ -17,7 +17,7 @@ build-inputs = ["darwin.apple_sdk.frameworks.Security"]
|
|||
[features]
|
||||
default = ["cli", "diagnostics"]
|
||||
cli = ["eyre", "color-eyre", "clap", "tracing-subscriber", "tracing-error", "atty"]
|
||||
diagnostics = ["os-release", "is_ci"]
|
||||
diagnostics = ["is_ci"]
|
||||
|
||||
[[bin]]
|
||||
name = "nix-installer"
|
||||
|
@ -54,7 +54,7 @@ rand = { version = "0.8.5", default-features = false, features = [ "std", "std_r
|
|||
semver = { version = "1.0.14", default-features = false, features = ["serde", "std"] }
|
||||
term = { version = "0.7.0", default-features = false }
|
||||
uuid = { version = "1.2.2", features = ["serde"] }
|
||||
os-release = { version = "0.1.0", default-features = false, optional = true }
|
||||
os-release = { version = "0.1.0", default-features = false }
|
||||
is_ci = { version = "1.1.1", default-features = false, optional = true }
|
||||
strum = { version = "0.24.1", features = ["derive"] }
|
||||
nix-config-parser = { version = "0.1.2", features = ["serde"] }
|
||||
|
|
|
@ -172,7 +172,13 @@ impl BuiltinPlanner {
|
|||
match (Architecture::host(), OperatingSystem::host()) {
|
||||
#[cfg(target_os = "linux")]
|
||||
(Architecture::X86_64, OperatingSystem::Linux) => {
|
||||
Ok(Self::Linux(linux::Linux::default().await?))
|
||||
let os_release = os_release::OsRelease::new().ok();
|
||||
match os_release {
|
||||
Some(os_release) if os_release.id == "steamos" => {
|
||||
Ok(Self::SteamDeck(steam_deck::SteamDeck::default().await?))
|
||||
},
|
||||
_ => Ok(Self::Linux(linux::Linux::default().await?)),
|
||||
}
|
||||
},
|
||||
#[cfg(target_os = "linux")]
|
||||
(Architecture::X86_32(_), OperatingSystem::Linux) => {
|
||||
|
@ -359,6 +365,9 @@ pub enum PlannerError {
|
|||
/// An [`InstallSettingsError`]
|
||||
#[error(transparent)]
|
||||
InstallSettings(#[from] InstallSettingsError),
|
||||
/// An OS Release error
|
||||
#[error("Fetching `/etc/os-release`")]
|
||||
OsRelease(#[source] std::io::Error),
|
||||
/// A MacOS (Darwin) plist related error
|
||||
#[error(transparent)]
|
||||
Plist(#[from] plist::Error),
|
||||
|
@ -398,6 +407,7 @@ impl HasExpectedErrors for PlannerError {
|
|||
PlannerError::Plist(_) => None,
|
||||
PlannerError::Sysctl(_) => None,
|
||||
this @ PlannerError::RosettaDetected => Some(Box::new(this)),
|
||||
PlannerError::OsRelease(_) => None,
|
||||
PlannerError::Utf8(_) => None,
|
||||
PlannerError::SelinuxRequirements => Some(Box::new(self)),
|
||||
PlannerError::Custom(_e) => {
|
||||
|
|
Loading…
Reference in a new issue