From cd76bf5f941fa63537ec769f2c8fcc656d83e367 Mon Sep 17 00:00:00 2001 From: r0chd Date: Tue, 14 Jul 2026 15:25:13 +0200 Subject: [PATCH] feat(config): add default-seat field in config --- daemon/src/config.rs | 9 ++++++++- daemon/src/main.rs | 9 ++++----- nix/common.nix | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/daemon/src/config.rs b/daemon/src/config.rs index 7bcb3aa..4f32ffb 100644 --- a/daemon/src/config.rs +++ b/daemon/src/config.rs @@ -65,7 +65,7 @@ pub struct UserConfig { } #[derive(serde::Deserialize)] -#[serde(deny_unknown_fields)] +#[serde(deny_unknown_fields, rename_all = "kebab-case")] pub struct Config { #[serde(default)] pub management: ManagementConfig, @@ -73,6 +73,8 @@ pub struct Config { pub users: BTreeMap, #[serde(default = "default_seats")] pub seats: BTreeMap, + #[serde(default = "default_seat")] + pub default_seat: String, } impl Default for Config { @@ -81,6 +83,7 @@ impl Default for Config { management: ManagementConfig::default(), users: BTreeMap::new(), seats: default_seats(), + default_seat: "seat0".to_string(), } } } @@ -89,6 +92,10 @@ fn default_seats() -> BTreeMap { BTreeMap::from([("seat0".to_string(), SeatConfig::default())]) } +fn default_seat() -> String { + "seat0".to_string() +} + impl Config { pub fn load(path: Option) -> anyhow::Result { let explicit_path = path.is_some(); diff --git a/daemon/src/main.rs b/daemon/src/main.rs index a0ef357..6a7c4c1 100644 --- a/daemon/src/main.rs +++ b/daemon/src/main.rs @@ -162,12 +162,11 @@ fn run( config.settings.seats.len() == 1, "exactly one seat must be configured" ); - let (seat_name, seat_config) = config + let seat_config = config .settings .seats - .iter() - .next() - .ok_or_else(|| anyhow::anyhow!("exactly one seat must be configured"))?; + .get(&config.settings.default_seat) + .ok_or_else(|| anyhow::anyhow!("configured `default-seat` not found"))?; let mut sessiond = Sessiond { next_session_id: session::SessionId::from_raw(1), @@ -196,7 +195,7 @@ fn run( let seat_entity = ecs::insert_seat( &mut sessiond.world, - seat_name.clone(), + config.settings.default_seat.clone(), if vtbound { ecs::SeatKind::VtBound } else { diff --git a/nix/common.nix b/nix/common.nix index eb1d497..d2e20ba 100644 --- a/nix/common.nix +++ b/nix/common.nix @@ -38,6 +38,7 @@ in }; config = lib.mkIf cfg.enable { + services.sessiond.settings.default-seat = lib.mkDefault "seat0"; services.sessiond.settings.seats.seat0 = { user = lib.mkDefault "root"; group = lib.mkDefault "seat"; -- 2.51.2