#!/usr/bin/env zx # Store data in YML file and then generate the data below with: # yq e -o=j '.' .chezmoidata.yaml const installData = { "softwarePackages": { "altair": { "cask": "altair-graphql-client", "choco": "altair-graphql", "snap": "altair", "yay": "altair" }, "angular-cli": { "brew": "angular-cli", "npm": "@angular/cli" }, "ansible-lint": { "pipx": "ansible-lint" }, "ansible": { "brew": "ansible", "dnf": "ansible", "pipx": "ansible" }, "ansibleconnect": { "_deps": [ "sshpass", "tmux" ], "pipx": "ansibleconnect" }, "aqua": { "brew": "aquaproj/aqua/aqua" }, "asciicinema": { "pipx": "asciicinema" }, "astronvim": { "_deps": [ "bottom", "lazygit", "neovim", "node", "python", "ripgrep", "tree-sitter" ] }, "auto-install": { "npm": "auto-install" }, "automake": { "brew": "automake" }, "bat": { "apk": "bat", "apt": "bat", "brew": "bat", "cargo": "bat", "choco": "bat", "pacman": "bat", "pkg": "bat", "port": "bat", "scoop": "bat", "zypper": "bat" }, "blockinfile": { "go": "github.com/ProfessorManhattan/blockinfile@latest" }, "bundler": { "gem": "bundler" }, "delta": { "brew": "git-delta", "cargo": "git-delta", "choco": "delta", "dnf": "git-delta", "pacman": "git-delta", "pkg": "git-delta", "scoop": "delta" }, "bash-completion": { "brew": "bash-completion" }, "bitly": { "npm": "bitly-cli-client" }, "bottom": { "brew": "bottom", "pacman": "bottom", "scoop": "bottom", "snap": "bottom" }, "browser-sync": { "npm": "browser-sync" }, "bw": { "choco": "bitwarden-cli", "snap": "bw" }, "caniuse": { "npm": "caniuse-cmd" }, "carbon-now": { "npm": "carbon-now-cli" }, "carthage": { "brew:darwin": "carthage" }, "chef": { "gem": "chef" }, "chrome-cli": { "brew:darwin": "chrome-cli" }, "clocker": { "cask": "clocker" }, "cookiecutter": { "brew": "cookiecutter", "pipx": "cookiecutter" }, "cocoapods": { "brew:darwin": "cocoapods", "gem:darwin": "cocoapods" }, "commitizen": { "_bin": "cz", "npm": "commitizen" }, "cordova": { "npm": "cordova" }, "delve": { "brew": "delve", "go": "github.com/go-delve/delve/cmd/dlv@latest" }, "dframe": { "npm": "deviceframe" }, "editly": { "npm": "editly" }, "electron": { "brew": "electron", "npm": "electron" }, "emma": { "npm": "emma-cli" }, "emoj": { "npm": "emoj" }, "emplace": { "cargo": "emplace", "nix": "emplace", "scoop": "emplace" }, "empty-trash": { "npm": "empty-trash-cli" }, "eslint": { "brew": "eslint", "npm": "eslint" }, "fastify": { "npm": "fastify-cli" }, "feathers": { "npm": "@feathersjs/cli" }, "firebase": { "npm": "firebase-tools" }, "ffmpeg": { "apk": "ffmpeg", "apt": "ffmpeg", "brew": "ffmpeg", "choco": "ffmpeg", "dnf": "ffmpeg", "pacman": "ffmpeg", "scoop": "ffmpeg" }, "fkill": { "npm": "fkill-cli" }, "fonts": { "cask": [ "epk/epk/font-sf-mono-nerd-font", "homebrew/cask-fonts/font-hack-nerd-font", "homebrew/cask-fonts/font-meslo-lg-nerd-font" ] }, "fpm": { "gem": "fpm" }, "gdown": { "pipx": "gdown" }, "gdu": { "brew": "gdu", "go": "github.com/dundee/gdu/v5/cmd/gdu@latest", "pacman": "gdu", "snap": "gdu-disk-usage-analyzer" }, "gdu:debian": { "apt": "gdu" }, "gfi": { "npm": "google-font-installer" }, "git": { "apk": "git", "apt": "git", "brew": "git", "dnf": "git" }, "git-filter-repo": { "brew": "git-filter-repo", "pipx": "git-filter-repo" }, "git-lfs": { "_deps": [ "git" ], "brew": "git-lfs", "scoop": "git-lfs" }, "git-open": { "npm": "git-open" }, "gixy": { "pipx": "gixy" }, "go-outline": { "go": "github.com/ramya-rao-a/go-outline@latest" }, "gomodifytags": { "brew": "gomodifytags", "go": "github.com/fatih/gomodifytags@latest" }, "gopkgs": { "go": "github.com/uudashr/gopkgs/v2/cmd/gopkgs@latest" }, "gopls": { "brew": "gopls", "go": "golang.org/x/tools/gopls@latest" }, "gotests": { "brew": "gotests", "go": "github.com/cweill/gotests/...@latest" }, "gphotos-sync": { "pipx": "gphotos-sync" }, "gnu:darwin": { "brew": [ "coreutils", "findutils", "gawk", "gnu-getopt", "gnu-indent", "gnu-tar", "gnu-sed", "gnutls", "grep" ] }, "gtop": { "brew": "gtop", "npm": "gtop" }, "gulp": { "brew": "gulp", "npm": "gulp" }, "http-prompt": { "brew": "http-prompt", "pipx": "http-prompt" }, "httpstat": { "brew": "httpstat", "pipx": "httpstat" }, "ideviceinstaller": { "brew:darwin": "ideviceinstaller" }, "imagemagick": { "apk": "imagemagick", "apt": "imagemagick", "brew": "imagemagick", "choco": "imagemagick", "dnf": "imagemagick", "scoop": "imagemagick" }, "imgur-uploader": { "npm": "imgur-uploader-cli" }, "impl": { "go": "github.com/josharian/impl@latest" }, "ionic": { "npm": "@ionic/cli" }, "ios-deploy": { "brew:darwin": "ios-deploy", "npm:darwin": "ios-deploy" }, "ipfs": { "brew": "ipfs", "choco": "go-ifps", "nix": "ipfs", "port": "ipfs", "scoop": "go-ipfs", "snap": "ipfs" }, "ipfs-desktop": { "cask": "ipfs", "choco": "ipfs-desktop", "pacman": "ipfs-desktop", "scoop": "ipfs-desktop" }, "ipfs-deploy": { "_bin": "ipd", "npm": "ipfs-deploy" }, "is-up": { "npm": "is-up-cli" }, "lazygit": { "brew": "lazygit", "choco": "lazygit", "go": "github.com/jesseduffield/lazygit@latest", "pacman": "lazygit", "scoop": "lazygit" }, "libimobiledevice": { "brew:darwin": "libimobiledevice" }, "localtunnel": { "brew": "localtunnel", "npm": "localtunnel" }, "mjml": { "cask": "mjml", "npm": "mjml" }, "molecule": { "brew": "molecule", "pipx": "molecule" }, "nativefier": { "_deps": [ "imagemagick" ], "npm": "nativefier" }, "ncc": { "brew": "ncc", "npm": "@vercel/ncc" }, "netcat": { "apt": "netcat", "brew": "netcat", "choco": "netcat", "dnf": "netcat", "pacman": "netcat", "scoop": "netcat" }, "nb": { "_deps": [ "bat", "netcat", "pandoc", "rg", "tig", "w3m" ], "basher": "xwmx/nb", "bpkg": "xwmx/nb", "brew": "nb", "npm": "nb.sh" }, "nectar": { "npm": "nectarjs" }, "neovim": { "apk": "neovim", "apt": [ "neovim", "python3-neovim" ], "brew": "neovim", "choco": "neovim", "dnf": [ "neovim", "python3-neovim" ], "flatpak": "io.neovim.nvim", "nix": "neovim", "pacman": [ "neovim", "python-pynvim" ], "pkg": [ "neovim", "py27-pynvim", "py36-pynvim" ], "port": "neovim", "winget": "Neovim.Neovim", "zypper": [ "neovim", "python-neovim", "python3-neovim" ] }, "ngxtop": { "pipx": "ngxtop" }, "node": { "brew": "node", "scoop": "nodejs" }, "nest": { "npm": "@nestjs/cli" }, "newman": { "brew": "newman", "npm": "newman" }, "np": { "npm": "np" }, "npm-check": { "npm": "npm-check" }, "oclif": { "npm": "oclif" }, "oh-my-posh": { "brew": "jandedobbeleer/oh-my-posh/oh-my-posh", "scoop": [ "clink", "https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json" ] }, "package-size": { "npm": "package-size" }, "pageres": { "npm": "pageres-cli" }, "pandoc": { "_deps": [ "python" ], "apt": "pandoc", "brew": [ "pandoc", "librsvg", "homebrew/cask/basictex" ], "choco": [ "pandoc", "rsvg-convert", "miktex" ], "crew": "pandoc", "dnf": "pandoc", "nix": "pandoc", "pacman": "pandoc", "winget": "pandoc" }, "papertrail": { "gem": "papertrail" }, "pipx": { "brew": "pipx" }, "pkg": { "npm": "pkg" }, "playwright": { "npm": "playwright" }, "pm2": { "npm": "pm2" }, "pre-commit": { "brew": "pre-commit", "pipx": "pre-commit" }, "prettier": { "brew": "prettier", "npm": "prettier" }, "psi": { "npm": "psi" }, "python": { "apt": "python3-pip", "brew": "python", "dnf": "python3-pip", "pacman": "python-pip", "scoop": "python" }, "pywhat": { "brew": "pywhat", "pipx": "pywhat", "port": "pywhat" }, "ramda": { "npm": "ramda-cli" }, "rclone": { "apt": "rclone", "brew": "rclone", "choco": [ "rclone", "winfsp", "nssm" ], "dnf": "rclone", "pacman": "rclone" }, "ripgrep": { "_bin": "rg", "apt": "ripgrep", "brew": "ripgrep", "cargo": "ripgrep", "choco": "ripgrep", "dnf": "ripgrep", "nix": "ripgrep", "pacman": "ripgrep", "pkg": "ripgrep", "port": "ripgrep", "scoop": "ripgrep", "zypper": "ripgrep" }, "ripgrep-all": { "_bin": "rga", "brew": [ "ffmpeg", "pandoc", "poppler", "rga", "tesseract" ], "choco": "ripgrep-all", "nix": "ripgrep-all", "pacman": "ripgrep-all" }, "rofi": { "apt": "rofi", "dnf": "rofi", "pacman": "rofi", "pkg": "rofi", "port": "rofi", "zypper": "rofi" }, "rsync": { "apt": "rsync", "brew": "rsync", "choco": "rsync", "dnf": "rsync" }, "sad": { "brew": "ms-jpq/sad/sad", "pacman": "sad" }, "secretive": { "cask": "secretive" }, "semantic-release": { "npm": "semantic-release" }, "sentry-cli": { "brew": "getsentry/tools/sentry-cli", "github": "github.com/getsentry/sentry-cli", "npm": "@sentry/cli", "scoop": "sentry-cli", "yay": "sentry-cli-bin" }, "serve": { "npm": "serve" }, "serverless": { "brew": "serverless", "npm": "serverless" }, "share": { "npm": "share-cli" }, "sharp": { "npm": "sharp-cli" }, "shotcut": { "choco": "shotcut", "flatpak": "org.shotcut.Shotcut", "snap": "shotcut" }, "sloth": { "cask": "stats" }, "social-analyzer": { "brew": "social-analyzer", "pipx": "social-analyzer" }, "speed-test": { "npm": "speed-test" }, "spotdl": { "_deps": [ "ffmpeg" ], "pipx": "spotdl" }, "sshpass": { "apt": "sshpass", "brew": "hudochenkov/sshpass/sshpass", "dnf": "sshpass" }, "starred": { "pipx": "starred" }, "statcode": { "pipx": "statcode", "yay": "statcode" }, "stats": { "cask": "stats" }, "stegcloak": { "npm": "stegcloak" }, "supdock": { "npm": "supdock" }, "surge": { "npm": "surge" }, "svgo": { "brew": "svgo", "npm": "svgo" }, "t": { "gem": "t" }, "terminalizer": { "npm": "terminalizer" }, "tig": { "brew": "tig", "nix": "tig", "pkg": "tig" }, "tinypng": { "npm": "tinypng-cli" }, "tldr": { "brew": "tldr", "npm": "tldr" }, "trellis": { "brew": "roots/tap/trellis-cli" }, "trufflehog": { "brew": "trufflesecurity/trufflehog/trufflehog" }, "tmux": { "apt": "tmux", "brew": [ "awk", "gnu-sed", "perl", "tmux" ] }, "tree-sitter": { "cargo": "tree-sitter-cli" }, "ts2c": { "npm": "ts2c" }, "typescript": { "_bin": "tsc", "brew": "typescript", "npm": "tsc" }, "virtualenv": { "brew": "virtualenv", "pipx": "virtualenv" }, "volta": { "brew": "volta", "scoop": "volta" }, "w3m": { "apt": "w3m", "brew": "w3m", "dnf": "w3m", "pacman": "w3m", "port": "w3m", "zypper": "w3m" }, "wget": { "apk": "wget", "apt": "wget", "brew": "rsync", "dnf": "wget", "whalebrew": "whalebrew/wget" }, "wifi-password": { "bpkg": "rauchg/wifi-password", "brew": "wifi-password", "npm": "wifi-password-cli" }, "wordpressify": { "npm": "wordpressify" }, "wrangler": { "npm": "@cloudflare/wrangler" }, "yamllint": { "brew": "yamllint", "pipx": "yamllint" }, "youtube-dl": { "pipx": "youtube-dl", "port": "youtube-dl", "brew": "youtube-dl" }, "zx": { "brew": "zx", "npm": "zx" }, "act": { "brew": "act", "choco": "act-cli", "go": "github.com/nektos/act@latest", "ports": "act", "scoop": "act", "yay": "act" }, "argocli": { "brew": "argocd", "github": "https://github.com/argoproj/argo-workflows" }, "azurefunctions": { "brew": "azure/functions/azure-functions-core-tools@4", "choco": "azure-functions-core-tools", "github": "github.com/Azure/azure-functions-core-tools", "npm": "azure-functions-core-tools@4" }, "bandwhich": { "brew": "bandwhich", "github": "github.com/imsnif/bandwhich", "pacman": "bandwhich", "pkg": "bandwhich" }, "bane": { "github": "github.com/genuinetools/bane", "go": "github.com/genuinetools/bane@latest" }, "betwixt": { "github": "github.com/kdzwinel/betwixt" }, "bin": { "github": "github.com/marcosnils/bin", "go": "github.com/marcosnils/bin@latest" }, "bitwarden": { "cask": "bitwarden", "choco": "bitwarden", "github": "github.com/bitwarden/desktop", "snap": "bitwarden", "yay": "bitwarden-git" }, "bivac": { "github": "github.com/camptocamp/bivac" }, "boilr": { "github": "github.com/tmrts/boilr", "go": "github.com/tmrts/boilr@latest" }, "budibase-cli": { "github": "github.com/Budibase/budibase", "npm": "@budibase/cli" }, "captain": { "github": "github.com/jenssegers/captain" }, "cerebro": { "cask": "cerebro", "choco": "cerebro", "github": "github.com/cerebroapp/cerebro", "yay": "cerebro" }, "clair": { "brew": "clair", "github": "github.com/quay/clair" }, "cloudflared": { "brew": "cloudflare/cloudflare/cloudflared", "github": "github.com/cloudflare/cloudflared" }, "cmctl": { "github": "github.com/cert-manager/cert-manager" }, "confd": { "brew": "confd", "choco": "confd", "github": "github.com/kelseyhightower/confd", "yay": "confd" }, "consul-cli": { "github": "github.com/mantl/consul-cli" }, "croc": { "brew": "croc", "choco": "croc", "github": "github.com/schollz/croc", "go": "github.com/schollz/croc/v9@latest", "pacman": "croc", "pkg": "croc", "scoop": "croc" }, "ctop": { "brew": "ctop", "github": "github.com/bcicen/ctop", "yay": "ctop-bin" }, "cumulus": { "cask": "cumulus", "github": "github.com/gillesdemey/Cumulus" }, "curator": { "pip": "elasticsearch-curator" }, "dasel": { "brew": "dasel", "github": "github.com/TomWright/dasel", "go": "github.com/tomwright/dasel/cmd/dasel@master" }, "dat": { "github": "github.com/dat-ecosystem-archive/dat", "npm": "dat@next" }, "dat-desktop": { "cask": "dat", "github": "github.com/datproject/dat-desktop" }, "dive": { "brew": "dive", "github": "github.com/wagoodman/dive", "go": "github.com/wagoodman/dive@latest", "yay": "dive" }, "desed": { "cargo": "desed", "dnf": "desed", "github": "github.com/SoptikHa2/desed", "pkg": "desed" }, "deta": { "github": "github.com/deta/deta-cli" }, "direnv": { "apt": "direnv", "brew": "direnv", "github": "github.com/direnv/direnv" }, "docker-slim": { "brew": "docker-slim", "dnf": "golang-github-docker-slim", "github": "github.com/docker-slim/docker-slim", "yay": "docker-slim" }, "dockle": { "brew": "goodwithtech/r/dockle", "github": "github.com/goodwithtech/dockle", "yay": "dockle-bin" }, "doctl": { "brew": "doctl", "github": "github.com/digitalocean/doctl", "pacman": "doctl", "pkg": "doctl", "snap": "doctl" }, "dog": { "brew": "dog", "github": "github.com/ogham/dog", "pacman": "dog", "pkg": "dog" }, "drone": { "brew": "drone/drone/drone", "github": "github.com/harness/drone-cli", "scoop": "drone" }, "duf": { "brew": "duf", "choco": "duf", "github": "github.com/muesli/duf", "pacman": "duf", "pkg": "duf", "scoop": "duf", "snap": "duf-utility" }, "dust": { "apk": "dust", "github": "github.com/bootandy/dust", "pacman": "dust" }, "envconsul": { "github": "github.com/hashicorp/envconsul" }, "etcd": { "apt": "etcd", "brew": "etcd", "choco": "etcd", "dnf": "etcd", "github": "github.com/etcd-io/etcd", "yay": "etcd" }, "fd": { "apk": "fd", "apt": "fd-find", "brew": "fd", "cargo": "fd-find", "choco": "fd", "github": "github.com/sharkdp/fd", "pacman": "fd", "pkg": "fd", "scoop": "fd" }, "ffsend": { "apk": "ffsend", "brew": "ffsend", "github": "github.com/timvisee/ffsend", "pkg": "ffsend", "scoop": "ffsend", "snap": "ffsend", "yay": "ffsend" }, "filebrowser": { "brew": "filebrowser/tap/filebrowser", "github": "github.com/filebrowser/filebrowser" }, "fission": { "github": "github.com/fission/fission" }, "fly": { "brew": "fly", "github": "https://github.com/concourse/concourse", "yay": "fly-cli" }, "fm": { "github": "github.com/knipferrc/fm", "go": "github.com/knipferrc/fm@latest" }, "fq": { "apk": "fq", "brew": "wader/tap/fq", "go": "github.com/wader/fq@latest", "github": "github.com/wader/fq", "pacman": "fq", "scoop": "fq" }, "fselect": { "brew": "fselect", "choco": "fselect", "cargo": "fselect", "github": "github.com/jhspetersson/fselect", "yay": "fselect" }, "fuego": { "github": "github.com/sgarciac/fuego", "snap": "fuego" }, "g-assist": { "snap": "g-assist", "github": "github.com/Melvin-Abraham/Google-Assistant-Unofficial-Desktop-Client" }, "gdrive": { "brew": "gdrive", "github": "github.com/prasmussen/gdrive", "yay": "gdrive" }, "ghorg": { "github": "github.com/gabrie30/ghorg", "yay": "ghorg" }, "gitify": { "cask": "gitify", "github": "github.com/manosim/gitify", "yay": "gitify-bin" }, "gitleaks": { "brew": "gitleaks", "github": "github.com/zricethezav/gitleaks", "pkg": "gitleaks", "yay": "gitleaks" }, "gitomatic": { "github": "github.com/muesli/gitomatic" }, "glab": { "apk": "glab", "brew": "glab", "github": "github.com/profclems/glab", "scoop": "glab", "snap": "glab", "yay": "gitlab-glab-bin" }, "glow": { "brew": "glow", "github": "github.com/charmbracelet/glow", "pkg": "glow", "scoop": "glow", "yay": "glow" }, "gojq": { "brew": "gojq", "github": "github.com/itchyny/gojq", "go": "github.com/itchyny/gojq@latest" }, "go-chromecast": { "github": "github.com/vishen/go-chromecast", "go": "github.com/vishen/go-chromecast@latest" }, "gping": { "brew": "gping", "cargo": "gping", "choco": "gping", "github": "github.com/orf/gping", "scoop": "gping", "pacman": "gping" }, "grex": { "brew": "grex", "cargo": "grex", "choco": "grex", "github": "github.com/pemistahl/grex", "scoop": "grex" }, "gron": { "brew": "gron", "github": "github.com/tomnomnom/gron", "go": "github.com/tomnomnom/gron@latest" }, "hclq": { "github": "github.com/mattolenik/hclq", "go": "github.com/mattolenik/hclq@latest" }, "hexyl": { "apt": "hexyl", "brew": "hexyl", "cargo": "hexyl", "github": "github.com/sharkdp/hexyl", "pacman": "hexyl", "pkg": "hexyl", "scoop": "hexyl", "snap": "hexyl" }, "hey": { "brew": "hey", "github": "github.com/rakyll/hey" }, "hostctl": { "brew": "guumaster/tap/hostctl", "github": "github.com/guumaster/hostctl", "scoop": "hostctl", "yay": "hostctl" }, "htmlq": { "brew": "htmlq", "cargo": "htmlq", "github": "github.com/mgdm/htmlq" }, "hyperfine": { "apk": "hyperfine", "brew": "hyperfine", "cargo": "hyperfine", "choco": "hyperfine", "dnf": "hyperfine", "github": "github.com/sharkdp/hyperfine", "pacman": "hyperfine", "pkg": "hyperfine" }, "jiq": { "github": "github.com/fiatjaf/jiq/cmd/jiq", "go": "github.com/fiatjaf/jiq/cmd/jiq@latest" }, "jitsi-meet-electron": { "cask": "jisti-meet", "choco": "jitsi-meet-electron", "github": "github.com/jitsi/jitsi-meet-electron", "pkg": "jisti-meet", "yay": "jitsi-meet-desktop-bin" }, "jo": { "brew": "jo", "apt": "jo", "snap": "jo", "github": "github.com/jpmens/jo", "pkg": "jo", "scoop": "jo", "yay": "jo" }, "jq": { "brew": "jq", "choco": "jq", "apk": "jq", "apt": "jq", "dnf": "jq", "github": "github.com/stedolan/jq", "pkg": "jq" }, "kdash": { "brew": "kdash-rs/kdash/kdash", "cargo": "kdash", "choco": "kdash", "github": "github.com/kdash-rs/kdash", "scoop": "kdash" }, "kn": { "brew": "kn", "github": "github.com/knative/client", "yay": "knative-client-bin" }, "kubenav": { "github": "github.com/kubenav/kubenav", "yay": "kubenav-bin" }, "license": { "go": "github.com/nishanths/license@latest", "yay": "nishanths-license-git" }, "linkerd2": { "brew": "linkerd", "github": "github.com/linkerd/linkerd2", "yay": "linkerd" }, "linuxkit": { "brew": "linuxkit/linuxkit/linuxkit", "github": "github.com/linuxkit/linuxkit" }, "logcli": { "brew": "logcli", "github": "github.com/grafana/loki", "yay": "logcli-git" }, "manta": { "cask": "manta", "github": "github.com/hql287/Manta" }, "mark-text": { "cask": "mark-text", "choco": "marktext", "github": "github.com/marktext/marktext", "yay": "marktext" }, "masscode": { "cask": "masscode", "github": "github.com/antonreshetov/massCode" }, "mc": { "brew": "minio/stable/mc", "binary:linux": "https://dl.min.io/client/mc/release/linux-amd64/mc", "binary:windows": "https://dl.min.io/client/mc/release/windows-amd64/mc.exe", "go": "github.com/minio/mc@latest" }, "mergestat": { "brew": "mergestat/mergestat/mergestat", "github": "github.com/mergestat/mergestat" }, "mjml-app": { "github": "github.com/mjmlio/mjml-app" }, "mkcert": { "brew": "mkcert", "choco": "mkcert", "github": "github.com/FiloSottile/mkcert", "pacman": "mkcert", "scoop": "mkcert" }, "mockoon": { "cask": "mockoon", "choco": "mockoon", "github": "github.com/mockoon/mockoon", "snap": "mockoon", "yay": "mockoon-bin" }, "mole": { "brew": "davrodpin/homebrew-mole/mole", "github": "github.com/davrodpin/mole", "yay": "mole-bin" }, "motrix": { "cask": "motrix", "choco": "motrix", "github": "github.com/agalwood/Motrix", "scoop": "motrix", "yay": "motrix-bin" }, "mqttx": { "cask": "mqttx", "github": "github.com/emqx/MQTTX", "snap": "mqttx", "yay": "mqttx-bin" }, "muffet": { "brew": "muffet", "github": "github.com/raviqqe/muffet", "go": "github.com/raviqqe/muffet/v2@latest", "yay": "muffet-bin" }, "mullvad-vpn": { "cask": "mullvadvpn", "github": "github.com/mullvad/mullvadvpn-app", "yay": "mullvad-vpn" }, "nebula": { "github": "github.com/slackhq/nebula", "pacman": "nebula" }, "nnn": { "apk": "nnn", "apt": "nnn", "brew": "nnn", "github": "github.com/jarun/nnn", "pacman": "nnn", "pkg": "nnn" }, "node-prune": { "github": "github.com/tj/node-prune", "go": "github.com/tj/node-prune@latest" }, "nomino": { "cargo": "nomino", "github": "github.com/yaa110/nomino", "yay": "nomino" }, "nuclear": { "cask": "nuclear", "choco": "nuclear", "github": "github.com/nukeop/nuclear", "snap": "nuclear", "yay": "nuclear-player-bin" }, "osquery": { "cask": "osquery", "choco": "osquery", "github": "github.com/osquery/osquery", "yay": "osquery-git" }, "ots": { "brew": "ots", "github": "github.com/sniptt-official/ots", "go": "github.com/sniptt-official/ots@latest" }, "oq": { "brew": "oq", "github": "github.com/Blacksmoke16/oq", "snap": "oq", "yay": "oq" }, "page-fetch": { "go": "github.com/detectify/page-fetch@latest" }, "pass": { "apt": "pass", "brew": "pass", "dnf": "pass", "pacman": "pass", "pkg": "password-store" }, "pastel": { "brew": "pastel", "cargo": "pastel", "github": "github.com/sharkdp/pastel", "snap": "pastel", "yay": "pastel" }, "peco": { "apt": "peco", "brew": "peco", "choco": "peco", "github": "github.com/peco/peco", "pacman": "peco" }, "pony": { "github": "github.com/jessfraz/pony", "go": "github.com/jessfraz/pony@latest" }, "pretzel": { "github": "github.com/amiechen/pretzel" }, "procs": { "apk": "procs", "brew": "procs", "cargo": "procs", "dnf": "procs", "github": "github.com/dalance/procs", "pacman": "procs", "scoop": "procs", "snap": "procs" }, "psu": { "github": "github.com/greenled/portainer-stack-utils" }, "pup": { "brew": "pup", "github": "github.com/ericchiang/pup", "go": "github.com/ericchiang/pup@latest" }, "q": { "brew": "q", "github": "github.com/harelba/q" }, "raindrop": { "cask": "raindropio", "github": "github.com/raindropio/desktop" }, "rancher": { "brew": "rancher-cli", "github": "github.com/rancher/cli", "yay": "rancher-cli-bin" }, "responsively": { "cask": "responsively", "choco": "responsively", "github": "github.com/responsively-org/responsively-app" }, "rip": { "brew": "rm-improved", "cargo": "rm-improved", "github": "github.com/nivekuil/rip", "yay": "rm-improved" }, "runjs": { "cask": "runjs", "choco": "runjs", "github": "github.com/lukehaas/RunJS", "yay": "runjs-bin" }, "s5cmd": { "brew": "peak/tap/s5cmd", "github": "github.com/peak/s5cmd", "go": "github.com/peak/s5cmd@latest" }, "schema": { "go": "github.com/Confbase/schema" }, "scrcpy": { "apt": "scrcpy", "brew": "scrcpy", "choco": "scrcpy", "dnf": "scrcpy", "github": "github.com/Genymobile/scrcpy", "pkg": "scrcpy", "snap": "scrcpy", "yay": "scrcpy" }, "scrcpy-gui": { "github": "github.com/Tomotoes/scrcpy-gui" }, "sd": { "apk": "sd", "brew": "sd", "cargo": "sd", "choco": "sd-cli", "dnf": "sd", "github": "github.com/chmln/sd", "pacman": "sd", "pkg": "sd" }, "sftpgo": { "brew": "sftpgo", "choco": "sftpgo", "github": "github.com/drakkan/sftpgo", "pkg": "sftpgo", "yay": "sftpgo-bin" }, "shfmt": { "apk": "shfmt", "brew": "shfmt", "github": "github.com/mvdan/sh", "go": "mvdan.cc/sh/v3/cmd/shfmt@latest", "pacman": "shfmt", "pkg": "shfmt", "scoop": "shfmt", "snap": "shfmt" }, "skm": { "brew": "timothyye/tap/skm", "github": "github.com/TimothyYe/skm", "go": "github.com/TimothyYe/skm/cmd/skm@latest" }, "skype": { "cask": "skype", "choco": "skype", "snap": "skype" }, "slack": { "cask": "slack", "choco": "slack", "snap": "slack" }, "sqlectron": { "cask": "sqlectron", "github": "github.com/sqlectron/sqlectron-gui", "yay": "sqlectron-gui" }, "ssh-vault": { "brew": "ssh-vault", "github": "github.com/ssh-vault/ssh-vault" }, "ssl-proxy": { "github": "github.com/suyashkumar/ssl-proxy" }, "staticcheck": { "apt": "go-staticcheck", "brew": "staticcheck", "dnf": "golang-honnef-tools", "go": "honnef.co/go/tools/cmd/staticcheck@latest", "pacman": "staticcheck", "port": "staticcheck", "scoop": "staticcheck" }, "switchhosts": { "github": "github.com/oldj/SwitchHosts" }, "sync-ssh-keys": { "github": "github.com/samber/sync-ssh-keys", "yay": "sync-ssh-keys-bin" }, "sysbench": { "apk": "sysbench", "apt": "sysbench", "brew": "sysbench", "dnf": "sysbench", "pacman": "sysbench", "pkg": "sysbench" }, "sysget": { "github": "github.com/Eugeny/tabby" }, "tabby": { "cask": "tabby", "choco": "tabby", "github": "github.com/Eugeny/tabby" }, "task": { "brew": "go-task/tap/go-task", "choco": "go-task", "go": "github.com/go-task/task/v3/cmd/task@latest", "github": "github.com/go-task/task", "scoop": "task" }, "teleport": { "brew": "teleport", "pkg": "teleport", "yay": "teleport-bin" }, "teller": { "brew": "spectralops/tap/teller", "github": "github.com/tellerops/teller" }, "tflint": { "brew": "tflint", "choco": "tflint", "github": "github.com/terraform-linters/tflint" }, "tilt": { "brew": "tilt", "github": "github.com/tilt-dev/tilt", "yay": "tilt-bin" }, "temps": { "github": "github.com/jackd248/temps" }, "tokei": { "apk": "tokei", "brew": "tokei", "cargo": "tokei", "dnf": "tokei", "github": "github.com/XAMPPRocky/tokei", "pacman": "tokei", "pkg": "tokei", "scoop": "tokei" }, "transfer": { "github": "github.com/rinetd/transfer", "go": "github.com/rinetd/transfer@latest" }, "trivy": { "github": "github.com/aquasecurity/trivy", "yay": "trivy-bin" }, "up": { "brew": "up", "github": "github.com/akavel/up", "pkg": "up", "yay": "up" }, "vault": { "brew": "hashicorp/tap/vault", "yay": "vault-cli" }, "vector": { "brew": "vectordotdev/brew/vector" }, "velero": { "brew": "velero", "choco": "velero", "github": "github.com/vmware-tanzu/velero", "yay": "velero-bin" }, "waypoint": { "brew": "hashicorp/tap/waypoint", "scoop": "waypoint" }, "websocat": { "brew": "websocat", "cargo": "websocat", "github": "github.com/vi/websocat", "pkg": "websocat", "port": "websocat" }, "webtorrent": { "cask": "webtorrent", "choco": "webtorrent-desktop", "github": "github.com/webtorrent/webtorrent-desktop", "yay": "webtorrent-desktop" }, "whaler": { "github": "github.com/P3GLEG/Whaler" }, "winrm-cli": { "yay": "winrm-cli-git" }, "wkhtmltopdf": { "apt": "wkhtmltopdf", "cask": "wkhtmltopdf", "choco": "wkhtmltopdf", "github": "github.com/wkhtmltopdf/wkhtmltopdf", "pacman": "wkhtmltopdf" }, "xurls": { "go": "mvdan.cc/xurls/v2/cmd/xurls@latest", "github": "github.com/mvdan/xurls" }, "ykman": { "brew": "ykman", "pipx": "yubikey-manager" }, "yq": { "brew": "yq", "choco": "yq", "apk": "yq", "github": "github.com/stedolan/jq", "go": "github.com/mikefarah/yq/v4@latest", "snap": "yq" }, "yubikey-authenticator": { "ansible:darwin": "professormanhattan.yubikey", "choco": "yubico-authenticator", "flatpak": "com.yubico.yubioath" }, "yubikey-manager": { "brew": "ykman", "dnf": "yubikey-manager", "pacman": "yubikey-manager", "pipx": "yubikey-manager" }, "yubikey-manager-qt": { "ansible:darwin": "professormanhattan.yubikey", "appimage": "https://developers.yubico.com/yubikey-manager-qt/Releases/yubikey-manager-qt-1.2.4b-linux.AppImage", "choco": "yubikey-manager", "dnf": "yubikey-manager-qt", "pacman": "yubikey-manager-qt", "scoop": "yubikey-manager-qt" } }, "installerPostInstallScripts": { "astronvim": "nvim --headless -c 'autocmd User PackerComplete quitall'\n", "bottom": { "snap": "sudo snap connect bottom:mount-observe\nsudo snap connect bottom:hardware-observe\nsudo snap connect bottom:system-observe\nsudo snap connect bottom:process-control\n" }, "gdu": { "brew": "brew link --overwrite gdu", "snap": "sudo snap connect gdu-disk-usage-analyzer:mount-observe :mount-observe\nsudo snap connect gdu-disk-usage-analyzer:system-backup :system-backup\nsudo snap alias gdu-disk-usage-analyzer.gdu gdu\n" }, "git-lfs": "git lfs install", "nb": "nb completions install", "oh-my-posh": { "scoop": "clink autorun install" }, "pipx": { "brew": "pipx ensurepath" }, "python": { "brew": "python3 -m pip install --upgrade setuptools\npython3 -m pip install --upgrade pip\n" }, "volta": "volta setup\nvolta install node@latest\n" }, "softwarePlugins": { "dotnet": { "plugins": [ "Microsoft.CST.AttackSurfaceAnalyzer.CLI" ] }, "helm": { "plugins": [ "https://github.com/databus23/helm-diff", "https://github.com/jkroepke/helm-secrets" ] }, "krew": { "plugins": [ "access-matrix", "datree", "deprecations", "get-all", "konfig", "modify-secret", "neat", "node-shell", "resource-capacity", "score", "sniff", "tree", "tunnel", "view-allocations", "who-can" ] }, "quicklook": { "plugins": [ { "plugin": "apparency", "corporate": false }, "provisionql", "qlcolorcode", "qlimagesize", "qlmarkdown", "qlstephen", "qlvideo", "quicklook-json", "quicklookapk", { "plugin": "suspicious-package", "corporate": false }, "webpquicklook" ] }, "vagrant": { "plugins": [ "vagrant-bindfs", "vagrant-digitalocean", "vagrant-google", "vagrant-libvirt", "vagrant-parallels", "vagrant-share", "vagrant-vmware-desktop", "vagrant-vbguest" ] }, "vim": { "plugins": [ "https://github.com/dense-analysis/ale.git", "https://github.com/pearofducks/ansible-vim.git", "https://github.com/neoclide/coc.nvim.git", "https://github.com/ekalinin/dockerfile.vim.git", "https://github.com/editorconfig/editorconfig-vim.git", "https://github.com/junegunn/fzf.git", "https://github.com/junegunn/fzf.vim.git", "https://github.com/itchyny/lightline.vim.git", "https://github.com/scrooloose/nerdtree.git", "https://github.com/stanangeloff/php.vim.git", "https://github.com/hdima/python-syntax.git", "https://github.com/vim-syntastic/syntastic.git", "https://github.com/vim-airline/vim-airline.git", "https://github.com/kristijanhusak/vim-carbon-now-sh.git", "https://github.com/ryanoasis/vim-devicons.git", "https://github.com/tpope/vim-fugitive.git", "https://github.com/airblade/vim-gitgutter.git", "https://github.com/fatih/vim-go.git", "https://github.com/pangloss/vim-javascript.git", "https://github.com/mxw/vim-jsx.git", "https://github.com/plasticboy/vim-markdown.git", "https://github.com/terryma/vim-multiple-cursors.git", "https://github.com/prettier/vim-prettier.git", "https://github.com/tpope/vim-sensible.git", "https://github.com/tpope/vim-surround.git", "https://github.com/nanotee/zoxide.vim.git" ] }, "visualStudioCode": { "plugins": [ "Angular.ng-template", "attilabuti.vscode-mjml", "bierner.markdown-emoji", "ChakrounAnas.turbo-console-log", "ChFlick.firecode", "chrmarti.regex", "cweijan.vscode-mysql-client2", "DavidAnson.vscode-markdownlint", "dbaeumer.vscode-eslint", "denoland.vscode-deno", "eamodio.gitlens", "EditorConfig.EditorConfig", "esbenp.prettier-vscode", "ericadamski.carbon-now-sh", "firsttris.vscode-jest-runner", "formulahendry.auto-rename-tag", "formulahendry.code-runner", "GitHub.vscode-pull-request-github", "GitLab.gitlab-workflow", "GoogleCloudTools.cloudcode", "golang.Go", "HashiCorp.terraform", "hediet.vscode-drawio", "IBM.output-colorizer", "Kelvin.vscode-sshfs", "mads-hartmann.bash-ide-vscode", "ms-azuretools.vscode-docker", "ms-kubernetes-tools.vscode-kubernetes-tools", "ms-vscode-remote.remote-containers", "ms-vscode-remote.remote-ssh", "ms-vscode-remote.remote-wsl", "ms-python.python", "ms-vscode.PowerShell", "MS-vsliveshare.vsliveshare", "MS-vsliveshare.vsliveshare-audio", "njpwerner.autodocstring", "nrwl.angular-console", "philnash.ngrok-for-vscode", "PKief.material-icon-theme", "pranaygp.vscode-css-peek", "quicktype.quicktype", "rbbit.typescript-hero", "redhat.ansible", "redhat.vscode-yaml", "richie5um2.vscode-sort-json", "Rubymaniac.vscode-paste-and-indent", "salbert.comment-ts", "shd101wyy.markdown-preview-enhanced", "softwaredotcom.swdc-vscode", "steoates.autoimport", "stylelint.vscode-stylelint", "timonwong.shellcheck", "toba.vsfire", "tyriar.sort-lines", "usernamehw.errorlens", "valentjn.vscode-ltex", "VisualStudioExptTeam.vscodeintellicode", "vsciot-vscode.vscode-arduino", "vsls-contrib.codetour", "vsls-contrib.gistfs", "wayou.vscode-todo-highlight", "wix.vscode-import-cost", "yatki.vscode-surround" ] } }, "installerPreference": [ "flatpak", "snap", "whalebrew", "apt", "dnf", "pacman", "apk", "nix", "pkg", "zypper", "brew", "crew", "port", "yay", "choco", "scoop", "winget", "go", "cargo", "npm", "pipx", "gem", "cask", "bpkg", "basher", "appimage", "binary" ] } ### Default installer preference order installerPreference = ("flatpak" "snap" "whalebrew" "apt" "dnf" "pacman" "apk" "nix" "pkg" "zypper" "brew" "crew" "port" "yay" "choco" "scoop" "winget" "go" "cargo" "npm" "pipx" "gem" "cask" "bpkg" "basher" "appimage" "binary") ### Post-install hook afterInstall() { if [ "$1" = 'appimage' ]; then elif [ "$1" = 'apk' ]; then elif [ "$1" = 'apt' ]; then elif [ "$1" = 'basher' ]; then elif [ "$1" = 'binary' ]; then elif [ "$1" = 'bpkg' ]; then elif [ "$1" = 'brew' ]; then elif [ "$1" = 'cargo' ]; then elif [ "$1" = 'cask' ]; then elif [ "$1" = 'choco' ]; then elif [ "$1" = 'crew' ]; then elif [ "$1" = 'dnf' ]; then elif [ "$1" = 'flatpak' ]; then elif [ "$1" = 'gem' ]; then elif [ "$1" = 'go' ]; then elif [ "$1" = 'nix' ]; then elif [ "$1" = 'npm' ]; then elif [ "$1" = 'pacman' ]; then elif [ "$1" = 'pkg' ]; then elif [ "$1" = 'port' ]; then elif [ "$1" = 'scoop' ]; then elif [ "$1" = 'snap' ]; then elif [ "$1" = 'whalebrew' ]; then elif [ "$1" = 'winget' ]; then elif [ "$1" = 'yay' ]; then elif [ "$1" = 'zypper' ]; then fi } ### Pre-install hook beforeInstall() { if [ "$1" = 'appimage' ]; then elif [ "$1" = 'apk' ]; then elif [ "$1" = 'apt' ]; then sudo apt-get update elif [ "$1" = 'basher' ]; then elif [ "$1" = 'binary' ]; then elif [ "$1" = 'bpkg' ]; then elif [ "$1" = 'brew' ]; then elif [ "$1" = 'cargo' ]; then elif [ "$1" = 'cask' ]; then elif [ "$1" = 'choco' ]; then elif [ "$1" = 'crew' ]; then elif [ "$1" = 'dnf' ]; then elif [ "$1" = 'flatpak' ]; then elif [ "$1" = 'gem' ]; then elif [ "$1" = 'go' ]; then elif [ "$1" = 'nix' ]; then elif [ "$1" = 'npm' ]; then elif [ "$1" = 'pacman' ]; then elif [ "$1" = 'pkg' ]; then elif [ "$1" = 'port' ]; then elif [ "$1" = 'scoop' ]; then elif [ "$1" = 'snap' ]; then elif [ "$1" = 'whalebrew' ]; then elif [ "$1" = 'winget' ]; then elif [ "$1" = 'yay' ]; then elif [ "$1" = 'zypper' ]; then fi } ### Ensure the package manager is available ensurePackageManager() { if [ "$1" = 'appimage' ]; then # Do nothing elif [ "$1" = 'apk' ]; then if command -v apk > /dev/null; then logg '`apk` is available' else logg error '`apk` is not installed' && exit 102 fi elif [ "$1" = 'apt' ]; then if command -v apt > /dev/null; then logg '`apt` is available' else logg error '`apt` is not installed' && exit 103 fi elif [ "$1" = 'basher' ]; then if command -v basher > /dev/null; then logg '`basher` is available' else # TODO - Install basher fi elif [ "$1" = 'binary' ]; then # Do nothing elif [ "$1" = 'bpkg' ]; then if command -v bpkg > /dev/null; then logg '`bpkg` is available' else # TODO - Install bpkg fi elif [ "$1" = 'brew' ] || [ "$1" = 'cask' ]; then if command -v brew > /dev/null; then logg '`brew` is available' else ensurePackageManagerHomebrew fi elif [ "$1" = 'cargo' ]; then if command -v cargo > /dev/null; then logg '`cargo` is available' else # TODO - Install Cargo via Homebrew based method fi elif [ "$1" = 'choco' ]; then if command -v choco > /dev/null; then logg '`choco` is available' else logg 'Installing Chocolatey' powershell "Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" fi elif [ "$1" = 'crew' ]; then if command -v crew > /dev/null; then logg '`crew` is available' else # Source: https://github.com/chromebrew/chromebrew curl -Ls git.io/vddgY | bash fi elif [ "$1" = 'dnf' ]; then if command -v dnf > /dev/null; then logg '`dnf` is available' elif command -v yum > /dev/null; then logg '`yum` is available' else logg 'Both `dnf` and `yum` are not available' && exit 110 fi elif [ "$1" = 'flatpak' ]; then if command -v flatpak > /dev/null; then logg '`flatpak` is available' else ensurePackageManagerHomebrew fi elif [ "$1" = 'gem' ]; then if command -v gem > /dev/null; then logg '`gem` is available' else ensurePackageManagerHomebrew # TODO - is this enough to make `gem install` available? brew install ruby fi elif [ "$1" = 'go' ]; then if command -v go > /dev/null; then logg '`go` is available' else ensurePackageManagerHomebrew brew install go fi elif [ "$1" = 'nix' ]; then if command -v nix > /dev/null; then logg '`nix` is available' elif [ -d /Applications ] && [ -d /Library ]; then # macOS sh <(curl -L https://nixos.org/nix/install) else # Linux sh <(curl -L https://nixos.org/nix/install) --daemon fi elif [ "$1" = 'npm' ]; then if command -v volta > /dev/null && command -v npm > /dev/null && command -v node > /dev/null; then logg '`volta`, `npm`, and `node` are all available' else if ! command -v volta > /dev/null; then ensurePackageManagerHomebrew if ! command -v volta > /dev/null; then logg 'Installing `volta` via `brew`' brew install volta fi logg 'Ensuring `node` and `npm` are installed using `volta`' if [ -z "$VOLTA_HOME" ]; then volta setup fi export PATH="$VOLTA_HOME/bin:$PATH" volta install node fi fi elif [ "$1" = 'pacman' ]; then if command -v pacman > /dev/null; then logg '`pacman` is available' else logg '`pacman` is not installed' && exit 106 fi elif [ "$1" = 'pkg' ]; then if command -v pkg > /dev/null; then logg '`pkg` is available' else logg '`pkg` is not installed' && exit 107 elif [ "$1" = 'port' ]; then if command -v port > /dev/null; then logg '`port` is available' else # TODO - Install port on macOS fi elif [ "$1" = 'scoop' ]; then if command -v scoop > /dev/null; then logg '`scoop` is available' else # TODO - does this work? can we run PowerShell in a bash script? powershell 'Set-ExecutionPolicy RemoteSigned -Scope CurrentUser' powershell 'irm get.scoop.sh | iex' fi elif [ "$1" = 'snap' ]; then if command -v snap > /dev/null; then logg '`snap` is available' else logg 'Installing `snap` via system package manager' if command -v apt > /dev/null; then # Source: https://snapcraft.io/docs/installing-snap-on-linux-mint if [ -f /etc/apt/preferences.d/nosnap.pref ]; then sudo mv /etc/apt/preferences.d/nosnap.pref /etc/apt/nosnap.pref.bak fi sudo apt install -y snapd # TODO: Following may be required on Kali -> https://snapcraft.io/docs/installing-snap-on-kali # systemctl enable --now snapd apparmor elif command -v dnf > /dev/null; then sudo dnf install -y snapd if [ ! -d /snap ]; then sudo ln -s /var/lib/snapd/snap /snap fi elif command -v yum > /dev/null; then sudo yum install -y snapd sudo systemctl enable --now snapd.socket if [ ! -d /snap ]; then sudo ln -s /var/lib/snapd/snap /snap fi elif command -v pacman > /dev/null; then if [ -f /etc/arch-release ]; then sudo git clone https://aur.archlinux.org/snapd.git /usr/local/src/snapd CURRENT_DIRECTORY="$(pwd)" cd /usr/local/src/snapd sudo makepkg -si cd "$CURRENT_DIRECTORY" else sudo pacman -S snapd sudo systemctl enable --now snapd.socket if [ ! -d /snap ]; then sudo ln -s /var/lib/snapd/snap /snap fi fi elif command -v zypper > /dev/null; then # TODO: See https://snapcraft.io/docs/installing-snap-on-opensuse else logg 'Could not find a package manager to install `snap` with' fi if command -v snap > /dev/null; then logg 'Ensuring latest `snap` is available by running `sudo snap install core`' sudo snap install core fi fi elif [ "$1" = 'whalebrew' ]; if command -v whalebrew > /dev/null; then logg '`whalebrew` is available' else ensurePackageManagerHomebrew logg 'Installing `whalebrew` via `brew`' brew install whalebrew fi elif [ "$1" = 'winget' ]; then # TODO elif [ "$1" = 'yay' ]; then if command -v yay > /dev/null; then logg '`yay` is available' else logg 'Installing `yay` requirements' sudo pacman -S --needed base-devel git if [ -d /usr/local/src ]; then logg 'Cloning `yay` source code to `/usr/local/src/yay`' git clone https://aur.archlinux.org/yay.git /usr/local/src/yay CURRENT_DIRECTORY="$(pwd)" cd /usr/local/src/yay makepkg -si cd "$CURRENT_DIRECTORY" logg '`yay` installed` else logg error '`/usr/local/src` is not present on the system' && exit 105 fi fi elif [ "$1" = 'zypper' ]; then if command -v zypper > /dev/null; then logg '`zypper` is available' else logg '`zypper` is not installed' && exit 104 fi fi } ### Ensure Homebrew is installed ensurePackageManagerHomebrew() { if ! command -v brew > /dev/null; then if type sudo &> /dev/null && sudo -n true; then echo | bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" else logg info 'Homebrew is not installed. Password may be required.' bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || BREW_EXIT_CODE="$?" if [ -n "$BREW_EXIT_CODE" ]; then if command -v brew > /dev/null; then logg warn 'Homebrew was installed but part of the installation failed. Attempting to fix..' BREW_DIRS="share/man share/doc share/zsh/site-functions etc/bash_completion.d" for BREW_DIR in $BREW_DIRS; do if [ -d "$(brew --prefix)/$BREW_DIR" ]; then sudo chown -R "$(whoami)" "$(brew --prefix)/$BREW_DIR" fi done brew update --force --quiet fi fi fi fi } ### Installs a list of packages via the specified package manager installPackageList() { ensurePackageManager "$1" if [ "$1" = 'appimage' ]; then elif [ "$1" = 'apk' ]; then elif [ "$1" = 'apt' ]; then sudo apt-get install -y $@ elif [ "$1" = 'basher' ]; then elif [ "$1" = 'binary' ]; then elif [ "$1" = 'bpkg' ]; then elif [ "$1" = 'brew' ]; then elif [ "$1" = 'cargo' ]; then elif [ "$1" = 'cask' ]; then elif [ "$1" = 'choco' ]; then choco install -y $@ elif [ "$1" = 'crew' ]; then elif [ "$1" = 'dnf' ]; if command -v dnf > /dev/null; then dnf install -y $@ elif command -v yum > /dev/null; then yum install -y $@ else logg warn 'Both `dnf` and `yum` are not present on the system' fi elif [ "$1" = 'flatpak' ]; then elif [ "$1" = 'gem' ]; then gem install $@ elif [ "$1" = 'go' ]; then for GO_PACKAGE in "$@"; do go install "$GO_PACKAGE" elif [ "$1" = 'nix' ]; then # TODO elif [ "$1" = 'npm' ]; then volta install $@ elif [ "$1" = 'pacman' ]; then sudo pacman -Sy --noconfirm --needed $@ elif [ "$1" = 'pkg' ]; then # TODO elif [ "$1" = 'port' ]; then for PORT_PACKAGE in "$@"; do sudo port install $PORT_PACKAGE done elif [ "$1" = 'scoop' ]; then scoop install $@ elif [ "$1" = 'snap' ]; then sudo snap install -y $@ elif [ "$1" = 'whalebrew' ]; then elif [ "$1" = 'winget' ]; then elif [ "$1" = 'yay' ]; then elif [ "$1" = 'zypper' ]; then fi }