Skip to content

Packages

Matrix of packages to install with different package managers.

name apt brew python snap script
1password-cli ✔️ ✔️
age ✔️ ✔️
apt-transport-https ✔️
autorestic ✔️ ✔️
bazel ✔️
build-essential ✔️
code ✔️
code-cli ✔️
commitizen ✔️
containerd.io ✔️
copier ✔️ ✔️
coreutils ✔️
direnv ✔️ ✔️
docker-ce ✔️
docker-ce-cli ✔️
docker-compose-plugin ✔️
doppler ✔️
dopplerhq/cli/doppler ✔️
dotdrop ✔️ ✔️
file ✔️
findutils ✔️
font-fira-code ✔️
font-fira-code-nerd-font ✔️
fzf ✔️ ✔️
gh ✔️ ✔️
git-sizer ✔️ ✔️
git-workspace ✔️
gitmojify ✔️
gnupg ✔️
go ✔️ ✔️
go-task ✔️ ✔️
google-perftools ✔️
gpa ✔️
gpg-suite ️✔️
helm ✔️ ✔️
jq ✔️ ✔️
locales ✔️
locales-all ✔️
lsb-release ✔️
microk8s ✔️ ✔️
mypy ✔️
ngrok ✔️
node ✔️
openssh-server ✔️
pass ✔️ ✔️
pinentry-curses ✔️
pinentry-mac ✔️
pip ✔️
pipx ✔️ ✔️
poethepoet ✔️ ✔️
poetry ✔️
pre-commit ✔️
procps ✔️
python3-dev ✔️
python3-pip ✔️
python3-setuptools ✔️
python3-testresources ✔️
python3-venv ✔️
restic ✔️
rust
sdkman ️✔️
seahorse ✔️
serviceman ✔️
setuptools ✔️
snapd ✔️
sops ✔️
stow ✔️ ✔️
tmux ✔️ ✔️
tree ✔️ ✔️
tzdata ✔️
unzip ✔️ ✔️
vim ✔️
webi ✔️
xclip ✔️
yq ✔️ ✔️
zip ✔️
zsh ✔️ ✔️

Configuration

DOTFILES_VERSION: 0.39.3
packages:
  - name: 1password-cli
    apt: true
    brewcask: true
    keyring_file: 1password-archive-keyring.gpg
    keyring_url: https://downloads.1password.com/linux/keys/1password.asc
    source_list_file: 1password.list
    source_list_line: "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/1password-archive-keyring.gpg] https://downloads.1password.com/linux/debian/amd64 stable main"
    scope: optional
    allow_upgrade: true
  - name: age
    brew: true
    scope: minimal
  - name: apt-transport-https
    apt: true
    scope: minimal
  - name: autorestic
    brew: true
    script: true
    script_cmd: install-autorestic
    scope: optional
  - name: bazel
    apt: true
    keyring_file: bazel-archive-keyring.gpg
    keyring_url: https://bazel.build/bazel-release.pub.gpg
    source_list_file: bazel.list
    source_list_line: "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8"
    scope: full
  - name: build-essential
    apt: true
    scope: minimal
  - name: bzip2
    apt: true
    brew: true
    scope: minimal
  - name: cloudflared
    script: true
    script_cmd: install-cloudflared
    scope: optional
  - name: code
    apt: true
    keyring_file: packages.microsoft.gpg
    keyring_url: https://packages.microsoft.com/keys/microsoft.asc
    source_list_file: vscode.list
    source_list_line: "deb [arch=amd64,arm64,armhf signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main"
    scope: optional
  - name: code-cli
    brew: true
    scope: optional
  - name: codecov-cli
    pipx: true
    check_installed: command -v codecovcli &>/dev/null
    scope: optional
  - name: commitizen
    brew: false
    pipx: true
    check_installed: command -v cz &>/dev/null
    scope: optional
  - name: containerd.io
    apt: true
    scope: system
  - name: coreutils
    brew: true
    scope: minimal
  - name: copier
    brew: false
    pipx: true
    scope: full
    allow_upgrade: true
  - name: cz-conventional-gitmoji
    pipx: true
    check_installed: command -v gitmojify &>/dev/null
    scope: optional
  - name: direnv
    apt: true
    brew: true
    scope: minimal
  - name: docker-ce
    apt: true
    apt_remove: docker
    keyring_file: docker.gpg
    keyring_url: https://download.docker.com/linux/ubuntu/gpg
    source_list_file: docker.list
    source_list_line: "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    scope: system
  - name: docker-ce-cli
    apt: true
    scope: system
  - name: docker-compose-plugin
    apt: true
    scope: system
  - name: doppler
    apt: true
    brew: true
    keyring_file: doppler-archive-keyring.gpg
    keyring_url: https://packages.doppler.com/public/cli/gpg.DE2A7741A397C129.key
    source_list_file: doppler-cli.list
    source_list_line: "deb [signed-by=/usr/share/keyrings/doppler-archive-keyring.gpg] https://packages.doppler.com/public/cli/deb/debian any-version main"
    scope: optional
  - name: dotdrop
    brew: false
    pipx: true
    scope: optional
    allow_upgrade: true
  - name: fig
    brew: true
    scope: optional
  - name: file
    apt: true
    scope: minimal
  - name: findutils
    brew: true
    scope: minimal
  - name: font-fira-code
    brewcask: true
    scope: minimal
  - name: font-fira-code-nerd-font
    brewcask: true
    scope: minimal
  - name: fzf
    apt: true
    brew: true
    scope: minimal
    allow_upgrade: true
  - name: gh
    apt: true
    brew: true
    keyring_file: githubcli-archive-keyring.gpg
    keyring_url: https://cli.github.com/packages/githubcli-archive-keyring.gpg
    source_list_file: github-cli.list
    source_list_line: "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main"
    scope: minimal
    allow_upgrade: true
  - name: git
    brew: true
    scope: minimal
    allow_upgrade: true
  - name: git-lfs
    apt: true
    brew: true
    scope: minimal
    repository_script: https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh
    source_list_file: github_git-lfs.list
    allow_upgrade: true
  - name: git-sizer
    apt: true
    brew: true
    scope: minimal
  - name: git-workspace
    brew: true
    scope: optional
  - name: google-cloud-cli
    apt: true
    keyring_file: cloud.google.gpg
    keyring_url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
    source_list_file: google-cloud-sdk.list
    source_list_line: "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main"
    scope: optional
  - name: google-perftools
    apt: true
    scope: full
  - name: gnupg
    brew: true
    scope: minimal
  - name: go
    brew: true
    script: true
    script_cmd: install-go
    current_version: "$(go version | awk '{print $3}')"
    latest_version: "$(curl -s 'https://go.dev/VERSION?m=text' | head -n 1)"
    scope: minimal
    allow_upgrade: true
  - name: go-age
    script: true
    script_cmd: go install filippo.io/age/cmd/...@latest
    script_prereqs: "source ${HOME}/.config/shrc/00-dotfiles-export"
    check_prereqs: "command -v go &> /dev/null"
    check_installed: command -v age &>/dev/null
    current_version: "age --version | cut -d' ' -f2"
    latest_version: $(curl -s https://api.github.com/repos/FiloSottile/age/releases/latest | grep tag_name | cut -d '"' -f4)
    scope: minimal
  - name: go-sops
    script: true
    script_cmd: go install go.mozilla.org/sops/v3/cmd/sops@latest
    script_prereqs: "source ${HOME}/.config/shrc/00-dotfiles-export"
    check_prereqs: "command -v go &> /dev/null"
    check_installed: command -v sops &>/dev/null
    current_version: "sops --version | awk '{print $NF}'"
    latest_version: $(curl -s https://api.github.com/repos/mozilla/sops/releases/latest | grep 'tag_name' | cut -d'"' -f4)
    scope: optional
  - name: go-task
    brew: true
    script: true
    script_cmd: install-go-task
    check_installed: command -v task &>/dev/null
    current_version: $(task --version | awk '{print $3}')
    latest_version: $(curl -s https://api.github.com/repos/go-task/task/releases/latest | grep 'tag_name' | cut -d'"' -f4)
    scope: minimal
    allow_upgrade: true
  - name: gpa
    apt: true
    scope: gui
  - name: gpg-suite
    brewcask: true
    scope: optional
  - name: helm
    apt: true
    brew: true
    keyring_file: helm.gpg
    keyring_url: https://baltocdn.com/helm/signing.asc
    source_list_file: helm-stable-debian.list
    source_list_line: "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main"
    scope: optional
  - name: hyfi
    pipx: true
    scope: optional
    allow_upgrade: true
  - name: inxi
    apt: true
    brew: true
    scope: system
  - name: jq
    apt: true
    brew: true
    scope: minimal
  - name: linux-generic-hwe-18.04
    apt: true
  - name: linux-generic-hwe-20.04
    apt: true
  - name: locales
    apt: true
    scope: minimal
  - name: locales-all
    apt: true
    scope: minimal
  - name: lsb-release
    apt: true
    scope: minimal
  - name: microk8s
    brew: true
    snap: true
    post_install: id -nG "${USER}" | grep -qw microk8s || sudo usermod -a -G microk8s "${USER}"
    scope: optional
  - name: mypy
    pipx: true
    check_installed: command -v dmypy &>/dev/null
    scope: optional
  - name: neofetch
    apt: true
    brew: true
    scope: system
  - name: ngrok
    apt: true
    gpg_key_file: ngrok.asc
    gpg_key_url: https://ngrok-agent.s3.amazonaws.com/ngrok.asc
    source_list_file: ngrok.list
    source_list_line: "deb https://ngrok-agent.s3.amazonaws.com buster main"
    scope: optional
  - name: node
    brew: true
    scope: minimal
  - name: nox
    pipx: true
    pipx_extra: nox-poetry
    scope: optional
  - name: nvidia-container-toolkit
    apt: true
    keyring_file: nvidia-container-toolkit-keyring.gpg
    keyring_url: https://nvidia.github.io/libnvidia-container/gpgkey
    source_list_file: nvidia-container-toolkit.list
    # ISSUE: use ubuntu18.04 in the .list files for all later Ubuntu versions.
    # ref: https://github.com/NVIDIA/nvidia-container-toolkit/issues/94
    source_list_line: "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/$(. /etc/os-release;echo $ID'18.04/$(ARCH)') /"
    scope: system
  - name: nvm
    script: true
    script_cmd: "curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash"
    check_installed: "[[ -f ${HOME}/.nvm/nvm.sh ]]"
    scope: minimal
  - name: openai
    pipx: true
    scope: optional
  - name: openssh-server
    apt: true
    scope: full
  - name: pass
    apt: true
    brew: true
    scope: system
  - name: passage
    script: true
    script_cmd: install-passage
    scope: minimal
  - name: pinentry-curses
    apt: true
    scope: gui
  - name: pinentry-mac
    brew: true
    scope: gui
  - name: pip
    pip: true
    scope: optional
    allow_upgrade: true
  - name: pipx
    brew: true
    pip: true
    scope: optional
    allow_upgrade: true
  - name: poetry
    brew: false
    script: false
    pipx: true
    script_cmd: curl -sSL https://install.python-poetry.org | python3 -
    scope: optional
  - name: poethepoet
    pipx: true
    check_installed: command -v poe &>/dev/null
    completion_file: ${HOME}/.oh-my-zsh/completions/_poe
    completion_cmd: poe _zsh_completion
    scope: optional
    allow_upgrade: false
  - name: pre-commit
    brew: false
    pipx: true
    scope: optional
    allow_upgrade: false
  - name: procps
    apt: true
    scope: minimal
  - name: python3-dev
    apt: true
    scope: full
  - name: python3-pip
    apt: true
    scope: full
  - name: python3-setuptools
    apt: true
    scope: full
  - name: python3-testresources
    apt: true
    scope: full
  - name: python3-venv
    apt: true
    scope: full
  - name: python-semantic-release
    pipx: true
    check_installed: command -v semantic-release &>/dev/null
    scope: optional
  - name: rbenv
    script: true
    script_cmd: "curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash"
    check_installed: "command -v rbenv &> /dev/null"
    scope: optional
  - name: restic
    brew: true
    scope: optional
  - name: rust
    script: true
    script_cmd: "curl https://sh.rustup.rs -sSf | sh -s -- -y --profile=minimal"
    check_installed: "command -v rustup &> /dev/null"
    scope: full
  - name: sdkman
    script: true
    script_cmd: "curl -s 'https://get.sdkman.io' | bash"
    check_prereqs: "command -v unzip &> /dev/null"
    check_installed: "[[ -f ${HOME}/.sdkman/bin/sdkman-init.sh ]]"
    scope: full
  - name: seahorse
    apt: true
    scope: gui
  - name: serviceman
    script: true
    script_cmd: webi serviceman
    check_prereqs: "command -v webi &> /dev/null"
    scope: optional
  - name: setuptools
    pip: true
    scope: optional
    allow_upgrade: true
  - name: snapd
    apt: true
    scope: full
  - name: sops
    brew: true
    scope: minimal
  - name: sourcery
    pipx: true
    scope: optional
  - name: sourcegraph
    script: true
    script_cmd: curl -L https://sourcegraph.com/.api/src-cli/src_linux_amd64 -o ${HOME}/.local/bin/src && chmod +x ${HOME}/.local/bin/src
    check_installed: command -v src &>/dev/null
    scope: optional
  - name: sourcegraph/src-cli/src-cli
    brew: true
    check_installed: command -v src &>/dev/null
    scope: optional
  - name: stow
    apt: true
    brew: true
    scope: optional
  - name: tree
    apt: true
    brew: true
    scope: minimal
  - name: tmux
    apt: true
    brew: true
    scope: minimal
    allow_upgrade: true
  - name: tzdata
    apt: true
    scope: minimal
  - name: unzip
    apt: true
    brew: true
    scope: minimal
  - name: vim
    apt: true
    scope: minimal
  - name: wakatime
    pipx: true
    scope: optional
  - name: webi
    script: true
    script_cmd: curl https://webi.sh/webi | sh
    cmd_name: webi
    scope: gui
  - name: wheel
    pip: true
    scpoe: optional
  - name: wslu
    apt: true
  - name: xclip
    apt: true
    scope: gui
  - name: yq
    brew: true
    script: true
    script_cmd: install-yq
    scope: minimal
  - name: zip
    apt: true
    scope: minimal
  - name: zsh
    apt: true
    brew: true
    scope: minimal