podbox/codegen/quadlet/
mod.rs1mod container;
8mod devices;
9mod services;
10
11pub use devices::{emit_hardware_devices, emit_secrets};
12pub use services::{
13 generate_build, generate_compositor_service, generate_dbus_proxy_service,
14 generate_host_service, generate_socket,
15};
16
17use crate::config::Config;
18use crate::env::HostEnv;
19use crate::xdg::ResolvedXdgDirs;
20
21pub fn generate_container(config: &Config, env: &HostEnv, xdg: &ResolvedXdgDirs) -> String {
25 let name = &config.container.name;
26 let home_in_container = "/home/%u";
27 let mut lines: Vec<String> = Vec::new();
28
29 container::emit_unit(&mut lines, config, name);
30 container::emit_container_image(&mut lines, config, name, home_in_container, env);
31 container::emit_network(&mut lines, config);
32 container::emit_volumes(&mut lines, config, xdg, env, name, home_in_container);
33 container::emit_env(&mut lines, config, name, env);
34 devices::emit_gpu(&mut lines, config, env);
35 devices::emit_hardware_devices(&mut lines, config);
36 devices::emit_secrets(&mut lines, config);
37 container::emit_auto_update(&mut lines, config);
38 container::emit_podman_args(&mut lines, config);
39 container::emit_service_section(&mut lines, config);
40 container::emit_install_section(&mut lines, config);
41
42 lines.join("\n")
43}