envhub_types/
configuration.rs1use indexmap::IndexMap;
2use serde::{Deserialize, Serialize};
3
4pub enum ConfigFormat {
5 TOML,
6 HCL,
7}
8
9#[derive(Serialize, Deserialize, Debug, Clone, Default)]
10pub struct File {
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub source: Option<String>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub content: Option<String>,
15}
16
17#[derive(Serialize, Deserialize, Debug, Clone, Default)]
18pub struct Packages {
19 pub packages: Vec<String>,
20}
21
22#[derive(Serialize, Deserialize, Debug, Clone, Default)]
23pub struct RtxParams {
24 pub packages: Vec<String>,
25}
26
27#[derive(Serialize, Deserialize, Debug, Clone, Default)]
28pub struct RustupParams {
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub default: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub toolchains: Option<Vec<String>>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub components: Option<Vec<String>>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub targets: Option<Vec<String>>,
37}
38
39#[derive(Serialize, Deserialize, Debug, Clone, Default)]
40pub struct Configuration {
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub packages: Option<Vec<String>>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub secrets: Option<Vec<String>>,
45 #[serde(
46 skip_serializing_if = "Option::is_none",
47 serialize_with = "hcl::ser::block"
48 )]
49 pub homebrew: Option<Packages>,
50 #[serde(
51 skip_serializing_if = "Option::is_none",
52 serialize_with = "hcl::ser::block"
53 )]
54 pub pkgx: Option<Packages>,
55 #[serde(
56 skip_serializing_if = "Option::is_none",
57 serialize_with = "hcl::ser::block"
58 )]
59 pub devbox: Option<Packages>,
60 #[serde(
61 skip_serializing_if = "Option::is_none",
62 serialize_with = "hcl::ser::block"
63 )]
64 pub nix: Option<Packages>,
65 #[serde(
66 skip_serializing_if = "Option::is_none",
67 serialize_with = "hcl::ser::block"
68 )]
69 pub envs: Option<IndexMap<String, String>>,
70 #[serde(
71 skip_serializing_if = "Option::is_none",
72 rename = "file",
73 serialize_with = "hcl::ser::labeled_block"
74 )]
75 pub files: Option<IndexMap<String, File>>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub symlink_manager: Option<String>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub package_manager: Option<String>,
80 #[serde(
81 skip_serializing_if = "Option::is_none",
82 serialize_with = "hcl::ser::block"
83 )]
84 pub rtx: Option<RtxParams>,
85 #[serde(
86 skip_serializing_if = "Option::is_none",
87 serialize_with = "hcl::ser::block"
88 )]
89 pub rustup: Option<RustupParams>,
90}