// nixos-config - My current NixOS configuration // // Copyright (C) 2025 Benedikt Peetz // SPDX-License-Identifier: GPL-3.0-or-later // // This file is part of my nixos-config. // // You should have received a copy of the License along with this program. // If not, see . use std::fs; use anyhow::Context; use clap::Parser; pub mod cli; pub mod key_map; pub mod wayland; use crate::{cli::Args, key_map::KeyMap}; fn main() -> Result<(), anyhow::Error> { let args = Args::parse(); let keymap_path = &args.keymap.canonicalize().with_context(|| { format!( "Failed to canonicalize kepmay path: '{}'", args.keymap.display() ) })?; let config = { let keymap_file = fs::read_to_string(keymap_path).with_context(|| { format!( "Failed to open keymap file at: '{}'.", keymap_path.display() ) })?; let keymap: KeyMap = keymap_file.parse().with_context(|| { format!("Failed to parse keymap file at: {}", keymap_path.display()) })?; keymap }; match args.command { cli::SubCommand::Init {} => { println!("{config}"); // println!("Commands:"); for mut command in config.to_commands(keymap_path)? { // println!("{command:?}"); let status = command .status() .with_context(|| format!("Failed to run command: '{command:?}'"))?; if !status.success() { eprintln!("Command ('{command:?}') returned with non zero exit code: {status}"); } } } cli::SubCommand::ShowHelp {} => wayland::main(config)?, } Ok(()) }