shine-cli 2.1.1

Give personal automation a reviewable lifecycle
Documentation
version = 2
description = "Initialize Ubuntu system with selectable Rust, Neovim, AstroNvim, Atuin, Yazi, Starship, zoxide, zsh-vi-mode, fzf, bat, eza, Bun, pnpm, mise, Homebrew, and ZeroTier setup steps."
default_profile = "recommended"

[[items]]
id = "rust"
label = "Rust"
description = "Install Rustup and the Rust toolchain."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/rust.sh" }], network = [{ scope = "any" }], commands = ["curl", "sh"] }

detect = { kind = "command", command = "rustup", version_args = ["--version"] }
install = { kind = "script", path = "install/rust.sh" }

[[items]]
id = "neovim"
label = "Neovim"
description = "Install the latest stable Neovim release (v0.10+)."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "nvim", version_args = ["--version"] }
install = { kind = "package", provider = "apt", package = "neovim" }

[[items]]
id = "astronvim"
label = "AstroNvim"
description = "Install the AstroNvim template into ~/.config/nvim."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/astronvim.sh" }], network = [{ scope = "host", host = "github.com" }], commands = ["git"] }

detect = { kind = "path", path = "$HOME/.config/nvim" }
install = { kind = "script", path = "install/astronvim.sh" }

[[items]]
id = "atuin"
label = "Atuin"
description = "Install the Atuin shell history sync client."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/atuin.sh" }], network = [{ scope = "any" }], commands = ["curl", "sh"] }

detect = { kind = "command", command = "atuin", version_args = ["--version"] }
install = { kind = "script", path = "install/atuin.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "pre"
fragment = "profile/atuin.pre.sh"

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
when_command = "atuin"
eval = ["atuin", "init", "{shell}"]

[[items]]
id = "yazi"
label = "Yazi"
description = "Install Yazi plus its preview/runtime dependencies."
permissions = { schema_version = 1, administrator = true, filesystem = [{ access = ["execute"], base = "preset", path = "install/yazi.sh" }], network = [{ scope = "any" }], commands = ["apt-get", "curl", "sh", "sudo"] }

detect = { kind = "command", command = "yazi", version_args = ["--version"] }
install = { kind = "script", path = "install/yazi.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
when_command = "yazi"
fragment = "profile/yazi.sh"

[[items]]
id = "starship"
label = "Starship"
description = "Install the Starship shell prompt."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/starship.sh" }], network = [{ scope = "any" }], commands = ["curl", "sh"] }

detect = { kind = "command", command = "starship", version_args = ["--version"] }
install = { kind = "script", path = "install/starship.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
when_command = "starship"
eval = ["starship", "init", "{shell}"]

[[items]]
id = "zoxide"
label = "zoxide"
description = "Install smarter directory jumping."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/zoxide.sh" }], network = [{ scope = "any" }], commands = ["curl", "sh"] }

detect = { kind = "command", command = "zoxide", version_args = ["--version"] }
install = { kind = "script", path = "install/zoxide.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
when_command = "zoxide"
eval = ["zoxide", "init", "{shell}"]

[[items]]
id = "zsh-vi-mode"
label = "zsh-vi-mode"
description = "Install vi-style zsh editing mode."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/zsh-vi-mode.sh" }], network = [{ scope = "host", host = "github.com" }], commands = ["git"] }

[items.detect]
kind = "any"
probes = [
  { kind = "path", path = "/home/linuxbrew/.linuxbrew/opt/zsh-vi-mode/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh" },
  { kind = "path", path = "$HOME/.linuxbrew/opt/zsh-vi-mode/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh" },
  { kind = "path", path = "$HOME/.local/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh" },
]
[items.install]
kind = "script"
path = "install/zsh-vi-mode.sh"

[[items.shell]]
shells = ["zsh"]
phase = "post"
fragment = "profile/zsh-vi-mode.sh"

[[items]]
id = "fzf"
label = "fzf"
description = "Install the fzf command-line fuzzy finder."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "fzf", version_args = ["--version"] }
install = { kind = "package", provider = "apt", package = "fzf" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
when_command = "fzf"
fragment = "profile/fzf.sh"

[[items]]
id = "bat"
label = "bat"
description = "Install the bat command-line file viewer."
permissions = { schema_version = 1, administrator = true, filesystem = [{ access = ["execute"], base = "preset", path = "install/bat.sh" }], network = [{ scope = "any" }], commands = ["apt-get", "sudo"] }

detect = { kind = "command", command = "bat", version_args = ["--version"] }
install = { kind = "script", path = "install/bat.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
when_command = "bat"
aliases = { cat = "bat" }

[[items]]
id = "eza"
label = "eza"
description = "Install the eza modern ls replacement."
permissions = { schema_version = 1, administrator = true, filesystem = [{ access = ["execute"], base = "preset", path = "install/eza.sh" }], network = [{ scope = "any" }], commands = ["apt-get", "echo", "gpg", "sudo", "tee", "wget"] }

detect = { kind = "command", command = "eza", version_args = ["--version"] }
install = { kind = "script", path = "install/eza.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
when_command = "eza"
aliases = { ls = "eza --icons", ll = "eza -la --icons", lt = "eza --tree" }

[[items]]
id = "bun"
label = "Bun"
description = "Install the Bun JavaScript runtime."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/bun.sh" }], network = [{ scope = "any" }], commands = ["bash", "curl"] }

detect = { kind = "command", command = "bun", version_args = ["--version"] }
install = { kind = "script", path = "install/bun.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "pre"
fragment = "profile/bun.sh"

[[items]]
id = "pnpm"
label = "pnpm"
description = "Install the pnpm package manager."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/pnpm.sh" }], network = [{ scope = "any" }], commands = ["corepack"] }

detect = { kind = "command", command = "pnpm", version_args = ["--version"] }
install = { kind = "script", path = "install/pnpm.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "pre"
fragment = "profile/pnpm.sh"

[[items]]
id = "mise"
label = "mise"
description = "Install the mise development environment manager."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/mise.sh" }], network = [{ scope = "any" }], commands = ["curl", "sh"] }

detect = { kind = "command", command = "mise", version_args = ["--version"] }
install = { kind = "script", path = "install/mise.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "post"
fragment = "profile/mise.sh"

[[items]]
id = "homebrew"
label = "Homebrew"
description = "Install or verify Homebrew on Linux."
permissions = { schema_version = 1, filesystem = [{ access = ["execute"], base = "preset", path = "install/homebrew.sh" }], network = [{ scope = "any" }], commands = ["/bin/bash", "curl"] }

detect = { kind = "command", command = "brew", version_args = ["--version"] }
install = { kind = "script", path = "install/homebrew.sh" }

[[items.shell]]
shells = ["bash", "zsh"]
phase = "pre"
fragment = "profile/homebrew.sh"

[[items]]
id = "zerotier"
label = "ZeroTier"
description = "Install the ZeroTier Linux client for optional private network access."
permissions = { schema_version = 1, administrator = true, filesystem = [{ access = ["execute"], base = "preset", path = "install/zerotier.sh" }], network = [{ scope = "any" }], commands = ["bash", "curl", "sudo"] }

detect = { kind = "command", command = "zerotier-cli" }
install = { kind = "script", path = "install/zerotier.sh" }

[[items]]
id = "split-dns"
label = "Private split DNS"
description = "Route one private DNS suffix to DNS servers reachable through ZeroTier."
permissions = { schema_version = 1, administrator = true, environment = [{ name = "PRIVATE_DNS_DOMAIN", sensitivity = "plain" }, { name = "PRIVATE_DNS_SERVERS", sensitivity = "plain" }], system = [{ capability = "split-dns", resource = "private-domain" }] }
mode = "managed"
driver = "split-dns"
requires_admin = true
required_env = ["PRIVATE_DNS_DOMAIN", "PRIVATE_DNS_SERVERS"]

[items.config]
domain_env = "PRIVATE_DNS_DOMAIN"
servers_env = "PRIVATE_DNS_SERVERS"

[profiles.recommended]
items = ["rust", "neovim", "astronvim", "atuin", "yazi", "starship", "zoxide", "zsh-vi-mode", "fzf", "bat", "eza"]

[profiles.all]
items = ["rust", "neovim", "astronvim", "atuin", "yazi", "starship", "zoxide", "zsh-vi-mode", "fzf", "bat", "eza", "zerotier", "bun", "pnpm", "mise", "homebrew"]

[profiles.minimal]
items = ["neovim", "fzf", "bat", "eza", "zoxide"]