aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--interface/deploy.json3
-rw-r--r--src/utils/data.rs2
-rw-r--r--src/utils/mod.rs18
3 files changed, 16 insertions, 7 deletions
diff --git a/interface/deploy.json b/interface/deploy.json
index 310e926..19da486 100644
--- a/interface/deploy.json
+++ b/interface/deploy.json
@@ -68,6 +68,9 @@
},
"bootstrap": {
"type": "string"
+ },
+ "profilePath": {
+ "type": "string"
}
},
"required": [
diff --git a/src/utils/data.rs b/src/utils/data.rs
index 371c82d..f72f9a7 100644
--- a/src/utils/data.rs
+++ b/src/utils/data.rs
@@ -42,6 +42,8 @@ pub struct NodeSettings {
pub struct ProfileSettings {
pub path: String,
pub bootstrap: Option<String>,
+ #[serde(rename(deserialize = "profilePath"))]
+ pub profile_path: Option<String>,
}
#[derive(Deserialize, Debug, Clone)]
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
index 97e4550..672a9ba 100644
--- a/src/utils/mod.rs
+++ b/src/utils/mod.rs
@@ -104,7 +104,7 @@ pub struct DeployData<'a> {
pub struct DeployDefs<'a> {
pub ssh_user: Cow<'a, str>,
pub profile_user: Cow<'a, str>,
- pub profile_path: String,
+ pub profile_path: Cow<'a, str>,
pub current_exe: PathBuf,
pub sudo: Option<String>,
}
@@ -128,12 +128,16 @@ impl<'a> DeployData<'a> {
},
};
- let profile_path = match &profile_user[..] {
- "root" => format!("/nix/var/nix/profiles/{}", self.profile_name),
- _ => format!(
- "/nix/var/nix/profiles/per-user/{}/{}",
- profile_user, self.profile_name
- ),
+ let profile_path: Cow<str> = match self.profile.profile_settings.profile_path {
+ None => match &profile_user[..] {
+ "root" => format!("/nix/var/nix/profiles/{}", self.profile_name).into(),
+ _ => format!(
+ "/nix/var/nix/profiles/per-user/{}/{}",
+ profile_user, self.profile_name
+ )
+ .into(),
+ },
+ Some(ref x) => x.into(),
};
let sudo: Option<String> = match self.merged_settings.user {