Implement git clone approach for nixos-rebuild

Replace direct directory access with git clone/pull approach:
- Add git configuration options (url, branch, working_dir) to NixOS module
- Update SystemConfig and AgentCommand to use git parameters
- Implement ensure_git_repository() method for clone/pull operations
- Agent clones nixosbox to /var/lib/cm-dashboard/nixos-config
- Maintains security while solving permission denied issues

The agent now manages its own copy of the configuration without
needing access to /home/cm directory.
This commit is contained in:
2025-10-24 19:16:44 +02:00
parent 864cafd61f
commit b3c67f4b7f
5 changed files with 95 additions and 20 deletions

View File

@@ -7,6 +7,7 @@ use std::path::Path;
pub struct DashboardConfig {
pub zmq: ZmqConfig,
pub hosts: HostsConfig,
pub system: SystemConfig,
}
/// ZMQ consumer configuration
@@ -21,6 +22,14 @@ pub struct HostsConfig {
pub predefined_hosts: Vec<String>,
}
/// System configuration
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SystemConfig {
pub nixos_config_git_url: String,
pub nixos_config_branch: String,
pub nixos_config_working_dir: String,
}
impl DashboardConfig {
pub fn load_from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
let path = path.as_ref();