shine-cli 2.0.3

Give personal automation a reviewable lifecycle
Documentation
version = 2
description = "Initialize Windows with selectable Rust, Neovim, terminal tools, network, and JavaScript runtime setup steps."
default_profile = "recommended"

[[items]]
id = "rust"
label = "Rust"
description = "Install Rustup and the Rust toolchain."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "rustup", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "Rustlang.Rustup" }

[[items]]
id = "neovim"
label = "Neovim"
description = "Install Neovim with WinGet."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "nvim", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "Neovim.Neovim" }

[[items]]
id = "yazi"
label = "Yazi"
description = "Install the Yazi terminal file manager."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "yazi", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "sxyazi.yazi" }

[[items.shell]]
shells = ["powershell"]
phase = "post"
when_command = "yazi"
fragment = "profile/yazi.ps1"

[[items]]
id = "starship"
label = "Starship"
description = "Install the Starship shell prompt."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "starship", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "Starship.Starship" }

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

[[items]]
id = "zoxide"
label = "zoxide"
description = "Install smarter directory jumping."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "zoxide", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "ajeetdsouza.zoxide" }

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

[[items]]
id = "atuin"
label = "Atuin"
description = "Install the Atuin shell history sync client."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "atuin", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "Atuinsh.Atuin" }

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

[[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 = "winget", package = "junegunn.fzf" }

[[items]]
id = "bat"
label = "bat"
description = "Install the bat command-line file viewer."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "bat", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "sharkdp.bat" }

[[items.shell]]
shells = ["powershell"]
phase = "post"
when_command = "bat"
fragment = "profile/bat.ps1"

[[items]]
id = "eza"
label = "eza"
description = "Install the eza modern ls replacement."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "eza", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "eza-community.eza" }

[[items.shell]]
shells = ["powershell"]
phase = "post"
when_command = "eza"
fragment = "profile/eza.ps1"

[[items]]
id = "zerotier"
label = "ZeroTier"
description = "Install the ZeroTier One Windows client."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "zerotier-cli" }

[items.install]
kind = "package"
provider = "winget"
package = "ZeroTier.ZeroTierOne"
success_status = "needs-action"
success_hint = "open ZeroTier and join a network"

[[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"

[[items]]
id = "bun"
label = "Bun"
description = "Install the Bun JavaScript runtime."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "bun", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "Oven-sh.Bun" }

[[items]]
id = "pnpm"
label = "pnpm"
description = "Install the pnpm package manager."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "pnpm", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "pnpm.pnpm" }

[[items]]
id = "mise"
label = "mise"
description = "Install the mise development environment manager."
permissions = { schema_version = 1 }

detect = { kind = "command", command = "mise", version_args = ["--version"] }
install = { kind = "package", provider = "winget", package = "jdx.mise" }

[[items.shell]]
shells = ["powershell"]
phase = "post"
when_command = "mise"
eval = ["mise", "activate", "{shell}"]

[profiles.required]
items = ["rust", "yazi", "starship"]

[profiles.recommended]
items = ["rust", "neovim", "yazi", "starship", "zoxide", "atuin", "fzf", "bat", "eza", "zerotier"]

[profiles.all]
items = ["rust", "neovim", "yazi", "starship", "zoxide", "atuin", "fzf", "bat", "eza", "zerotier", "bun", "pnpm", "mise"]