-
Notifications
You must be signed in to change notification settings - Fork 0
/
sample_config.kdl
79 lines (63 loc) · 2.51 KB
/
sample_config.kdl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// The list of packages to install are in a list at the top of the file
// A package entry consists of the name of the package (as used by the package manager)
// followed by the name of the package manager to install the package with.
// Packages will be installed in the order specified in this file.
//
// Note that in KDL file format, the first string argument after a node name is always enclosed in quotes.
fzf "dnf"
// The name of the package manager is optional. If the package manager is not specified then the default
// package manager will be used.
bat
eza
// A package name may be any valid string. In the case of flatpak, package names are "triples".
org.kde.filelight "flatpak"
com.slack.Slack "flatpak"
// Some package managers support additional options. For flatpak, a remote name is optional, but if specified, it will be passed to the package manager.
md.obsidian.Obsidian "flatpak" "flathub"
com.todoist.Todoist "flatpak" "fedora"
// "script" is a special type of package manager for installing a package using a shell script
// "script" packages must refer to a "scriptdef" block in the same file (see below)
vivaldi "script"
// TODO future syntax (not yet supported)
//external-script "script" "shellfile.sh"
// TODO future syntax (not yet supported)
// group "fun" {
// direnv
// gcloud "script"
// gh
// gitui
// vscode "script"
// code
// }
// group "bar" {
// // TODO
// }
// A "scriptdef" block contains a list of shell commands to install a package.
// The name of the scriptdef block is the name of the package to install.
// The package will be installed by executing the commands in the scriptdef block.
// TODO discuss multi-line strings
scriptdef "vivaldi" {
// TODO future syntax (not yet supported)
// executable "/usr/bin/vivaldi"
"sudo dnf config-manager --add-repo https://repo.vivaldi.com/archive/vivaldi-fedora.repo"
}
// TODO explain multiline example
scriptdef "gcloud" {
// Here is an example of a multiline shell command taken from:
// https://cloud.google.com/sdk/docs/install#rpm
// TODO discuss raw multi-line strings from kdl
r#"sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM
[google-cloud-cli]
name=Google Cloud CLI
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el9-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM"#
"sudo dnf install google-cloud-cli"
}
// TODO future syntax (not yet supported)
// scriptdef "external-script" {
// file "install-external-script.sh"
// }