dotfiles/common/Brewfile
2025-09-09 12:38:04 +02:00

143 lines
2.4 KiB
Ruby

# Utils {{{
def flatten_brews(brews)
brews.flat_map do |category, brew_list|
brew_list.map do |brew|
if brew.is_a?(Hash)
brew.to_a.first # Extract the package name and options from the hash
else
[brew, {}] # No options, so use an empty hash
end
end
end
end
def liftoff(root)
root[:taps].each do |name|
tap name
end
flatten_brews(root[:brews]).each do |pkg, opts|
brew(pkg, opts)
end
root[:casks].each do |name|
cask name
end
end
# }}}
packages = {
taps: [
"ddev/ddev",
"the-wineskin-project/wineskin",
"isen-ng/dotnet-sdk-versions"
],
brews: { # {{{
services: [
{ "syncthing" => { restart_service: :changed } },
],
system: [
"cmark",
"cmark-gfm",
"gcc@12",
"mkcert",
"nss",
"pinentry-mac",
"pkg-config",
"sdl2"
],
languages: [
"bash-language-server",
"composer",
"dhall",
"dhall-json",
"dhall-lsp-server",
"go",
"gradle",
"kotlin",
"lua-language-server",
"node",
"openjdk",
"php",
"poetry",
"ruby",
"stylua",
"uv",
"yaml-language-server"
],
tools: [
"act",
"bat",
"bear",
"coder",
"croc",
"ddev",
"dua-cli",
"eza",
"ffmpeg",
"fzf",
"gawk",
"gh",
"git-crypt",
"git-delta",
"gitui",
"gnupg",
"ijq",
"imagemagick",
"kubernetes-cli",
"neovim",
"pandoc",
"ripgrep",
"shellcheck",
"shfmt",
"sops",
"tealdeer",
"wget"
]
}, # }}}
casks: [ # {{{
"1password",
"1password-cli",
"alt-tab",
"android-studio",
"browserstacklocal",
"crossover",
"dotnet-sdk9",
"dotnet-sdk8",
"db-browser-for-sqlite",
"discord",
"discord@ptb",
"firefox@developer-edition",
"font-ibm-plex",
"font-jetbrains-mono-nerd-font",
"goland",
"google-chrome",
"imhex",
"insomnia",
"intellij-idea",
"iterm2",
"kitty",
"lens",
"obs",
"obsidian",
"orbstack",
"phpstorm",
"prismlauncher",
"qbittorrent",
"raycast",
"rectangle",
"rider",
"rubymine",
"sequel-ace",
"shottr",
"slack",
"spotify",
# "steam",
"tailscale-app",
"thunderbird",
"transmit",
"visual-studio-code"
] # }}}
}
liftoff packages