---
brew:
  emoji: "🍺"
  commands:
    list: "brew list -1"
    update: "brew update --quiet"
    upgrade: "brew upgrade --quiet"
    install: "brew install "
    cleanup: "brew cleanup"
  packages:
    # these are all for both macOS and Debian
    default:
      # neither macos nor debian are using 3.12 yet, so we have to install it
      - python@3.12
      # for installing python programs with cli interfaces
      - pipx
      # for working w/ images and making lsimg work, is lorg
      - imagemagick
      # cool interactive python with colors + docs
      - bpython
      # TUI browser
      - w3m
      # less complicated curl
      - wget
      # tmux replacement :)
      - zellij
      # recording a shell session to share with others
      - asciinema
      # TUI IDE is neovim
      - neovim
      # fuzzy search, helps with completion and searching
      - fzf
      # ls replacement written in rust: https://github.com/Peltoche/lsd
      - lsd
      #  A cat(1) clone with syntax highlighting and Git integration.
      - bat
      # pretty formatting and syntax highlighting
      - rich-cli
      # file TUI: https://www.geeksforgeeks.org/ranger-a-cli-file-manager/
      - ranger
      # cat images in the terminal (e.g. img2sixel imagename.png)
      - libsixel
      # ag command: like grep or ack, but more modern, for searching file text
      - the_silver_searcher
      # diff, but with colors
      - colordiff
      # prettier top alternatives in C++ and Rust respectively
      # - btop
      - bottom
      # quick system metrics, typically used as an MOTD
      - fastfetch
      # prettier du/df outputs: https://github.com/muesli/duf
      - duf
      # blocky fonts with the options for colors
      - toilet
      # less: b/c you get new features if you stay up2date, & brew is up2date
      - less
      # The Matrix screensaver for the terminal
      - cmatrix
      # terminal user interface for git
      - gitui
      # node.js
      - node
      # linter for YAML
      - yamllint
      # for parsing json via cli
      - jq
      # it's like jq but for yaml
      - yq
      # search stackoverflow e.g. howdoi extend a dictionary in python
      - howdoi
      # get the quick, short text of how to use various commands
      - tealdeer
      # password management
      - bitwarden-cli
      # TUI for gpg keys, for the lazy, like me
      - gpg-tui
    # macOS specific stuff. Won't work with LinuxBrew
    macOS:
      # this is installed via apt for linux
      - git
      # python 3.11 already ships with Debian bookworm, only needed for macOS
      - python@3.11
      # for hiding the top bar on an M1
      - topnotch
      # for testing apis and downloading things
      - curl
      # current version of bash 😍
      - bash
      # so that bash completion stuff works
      - "bash-completion@2"
      # fonts
      - "--cask homebrew/cask-fonts/font-mononoki"
      - "--cask homebrew/cask-fonts/font-symbols-only-nerd-font"
      - "--cask homebrew/cask-fonts/font-victor-mono"
      # - "--cask font-hack-nerd-font"
      # this lets us resize windows on macOS
      - "--cask rectangle"
      # Default browser
      - "--cask firefox"
      # File server cloud replacement
      - "--cask nextcloud"
      # wezterm: Rust based terminal the is cross-OS-compatible
      - "--cask wez/wezterm/wezterm"
      # gives us the default gnu/linux sed we all know and love
      - "gnu-sed"
      # remap keys on macOS
      # - "--cask karabiner-elements"
      # primary media player
      - "--cask vlc"
      # youtube replacement
      - "--cask freetube"
      # firewall
      - "--cask lulu"
      # password manager
      - "--cask bitwarden"
      # VPN
      - "--cask protonvpn"
      # libreoffice is a FOSS office suite that replaces Google Docs/Office365
      - "--cask libreoffice"
      # docker desktop
      # - "--cask docker"
      # colima is a docker desktop replacement
      - colima
    devops:
      # this install the minio cli called mc
      - minio-mc
      # for github actions linting
      - actionlint
      # vale helps with english grammar formatting and markdown formatting
      - vale
      # for k8s helm chart development
      - helm/tap/chart-releaser
      - chart-testing
      - norwoodj/tap/helm-docs
      # for removing passwords or large files from git history
      - bfg
      - pyenv
      - pyenv-virtualenv
      # docker cli
      - docker
      # docker dashboard tui
      - lazydocker
      # linter for dockerfiles
      - hadolint
      # programming languages and their package managers
      - go
      # cli for k8s (kubernetes)
      - kubectl
      # kubectl plugin manager
      - krew
      # kubecolor, a kubectl colorizer
      - hidetatz/tap/kubecolor
      # terminal based dashbaord for k8s
      - k9s
      - kompose
      # package manager for k8s
      - helm
      # for kustomize k8s manifest directories
      - kustomize
      # gitops continuous delivery for k8s configs
      - argocd
      # KinD (Kubernetes in Docker), for small k8s clusters for testing
      - kind
      # k3s (slim k8s) in docker
      - k3d
      # generating SSL certs and random strings
      - openssl@3
      # Bitnami sealed-secrets cli: encrypt secrets in yaml files for gitops
      # - kubeseal
      # gitlab cli
      - glab
      # github cli
      - gh
      # for backups
      - restic
      # terraform for building stuff
      - tfenv
      - tflint
      - terraform-docs
    extras:
      # installs cargo and rust
      # - rustup
      # preview videos in the terminal. commented by default because it is big
      # - ffmpegthumbnailer
      # a cow that says things
      - cowsay
      # steam locomotive
      - sl
      # rainbow text
      - lolcat
      # tool for mirroring android screen
      - scrcpy
    mail:
      # fetch your mail locally for neomutt
      - offlineimap
      # anti virus mostly for mail
      - clamav
      # TUI email client
      - neomutt
      # markdown rendering
      - pandoc
      # zathura is a document viewer, that is not working yet
      # - zegervdv/zathura/zathura
      # - zegervdv/zathura/zathura-pdf-mupdf
      # proton bridge for getting mail locally
      - "--cask protonmail-bridge"
    work:
      # for work chats
      - "--cask slack"
      - "--cask zoom"
    music:
      # spotify daemon
      - spotifyd
      # spotify TUI: written in rust, but no longer maintained
      # - spotify-tui
      - nuclear
    Linux:
      # linuxbrew asks for this
      - gcc
      # this should solve font issues :D but...
      # linuxbrew fonts aren't working for some reason
      # - "homebrew/linux-fonts/font-mononoki"
      # - "homebrew/linux-fonts/font-symbols-only-nerd-font"
    gui:
      # wezterm: Rust based terminal the is cross-OS-compatible
      - "wez/wezterm-linuxbrew/wezterm"

apt:
  emoji: "🙃"
  commands:
    update: "sudo apt-get update -y"
    upgrade: "sudo apt-get upgrade -y"
    install: "sudo apt-get install -y --no-install-recommends "
    cleanup: "sudo apt-get autoremove -y"
  packages:
    default:
      - bash-completion
      - build-essential
      # this is just to keep us up to date
      - git
      - curl
      - python3
      - python3-dev
      - python3-pip
      # needed for python virtual environments, especially for jedi
      - python3-venv
      # grep alternative
      - silversearcher-ag
      # this should let you use the a yubikey for auth
      - libpam-yubico
      # troubleshooting
      - sysstat
      # networking and firewall
      - iptables
      - net-tools
      # print a pretty pallete to see all colors the terminal can render
      - colortest
      # help fix locale issues
      - "locales-all"
      # for installing stuff through ssh - might not be needed with powerline anymore
      - "openssh-client"
    devops:
      - docker-ce
      # vpn
      - wireguard
      # like top but for GPUs
      - nvtop
      # was for euporie - notebooks in terminals, but gcc is already installed
      # by brew so might be able to remove this
      # - gcc-11
    gui:
      # my favorite font :)
      - fonts-mononoki
      # package manager we don't use right now
      # - snapd
      # package manager for gui apps that we also don't use
      # - flatpak
      # this is for android development
      - adb
      # needed for freetube
      - youtube-dl
      # this lets you install flatpak packages via the gui
      - gnome-software-plugin-flatpak
      # gui firewall
      - gufw
      # pdf viewer with themeing
      - zathura
      # nextcloud is a self hosted file share app
      - nextcloud-desktop
      # libreoffice is a FOSS office suite that replaces Google Docs/Office365
      - libreoffice
      # GUI interface for pulseaudio, so you can disable audio devices
      - pavucontrol
    gaming:
      # helpful for gaming on linux
      - "nvidia-driver-libs:i386"
      - "steam:i386"
      # to format disks to exFAT; FAT is too thin for modern windows 10 ISOs
      # - exfat-utils
    music:
      - vlc
      - pulseaudio

flatpak:
  emoji: "🫓 "
  commands:
    setup: "flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo"
    list: "flatpak list --user --columns=application"
    install: "flatpak install --user --app -y "
  packages:
    gui:
      # - "org.freedesktop.Platform/x86_64/21.08"
      # password manager
      # - com.bitwarden.desktop
      # youtube alternative
      # - io.freetubeapp.FreeTube
    gaming:
      - lutris

snap:
  emoji: "🫰 "
  commands:
    upgrade: "sudo snap refresh"
    list: "snap list"
    install: "sudo snap install "
  packages:
    gui:
      - core
      # screen debugger/sharing tool for android
      # - scrcpy

# most of this is actually for powerline, my shell prompt
pip3.12:
  emoji: "🐍"
  commands:
    list: "pip3.12 list"
    # this is just till there's a better solution than pipx for Debian Bookworm
    # ref: https://salsa.debian.org/cpython-team/python3/-/blob/master/debian/README.venv
    install: "pip3.12 install --upgrade --user --break-system-packages "
  # env_vars:
  #   PYTHONUSERBASE: ""
  packages:
    default:
      # pip itself needs to be kept up to up2date
      - pip
      # powerline: for the internal ip address prompt segment
      - netifaces
      # neovim: needed for neovim's python3 interface, I think
      - pynvim
      # powerline: (status line for tmux/BASH), this works on linux
      - "git+https://github.com/jessebot/powerline@patch-2"
      # these are powerline extensions
      - powerline-kubernetes
      - powerline-gitstatus
      # python development: linting/auto-linting
      # - ruff
      # - flake8
      # - pyflakes
      # - autoflake
      # this is needed to make python respect XDG Base directory specific
      - xdg_base_dirs
    music:
      # powerline: supposed to work spotify info
      - dbus

pipx:
  emoji: "🐍"
  commands:
    list: "pipx list"
    # this is just till there's a better solution than pipx for Debian Bookworm
    # ref: https://salsa.debian.org/cpython-team/python3/-/blob/master/debian/README.venv
    install: "pipx install "
  packages:
    default:
      - onboardme
      # this is for git pre-commits
      - pre-commit
    devops:
      - smol-k8s-lab
      - poetry
      - ruff
      # aws stuff
      - aws-mfa
      - euporie
      # need this for python notebooks
      # - ipykernel
      # notebook-driven development platform
      # - nbdev
      # this is for markdown notebook docs and such
      # - quarto
      # notebooks in the terminal 💚
      # - jupyterlab
      # classic python notebooks
      # - notebook
    music:
      # terminal based youtube player
      - yewtube
      # python spotify tui: https://github.com/ceuk/spotui
      - spotui
