Home Projects Blog Dotfiles About Me RSS Git

Homebrew Configuration

Set up Homebrew. I disable the quarantine automatically and ensure that the state of Homebrew is exactly as specified here.

{ config, pkgs, ... }:

{
  homebrew = {
    enable = true;

    caskArgs.no_quarantine = true;

    global.autoUpdate = false;
    onActivation = {
      autoUpdate = true;
      cleanup = "zap";
      upgrade = true;
    };

    taps = [
      "camillescholtz/formulae"
      "d12frosted/emacs-plus"
      "homebrew/bundle"
      "homebrew/cask-fonts"
      "homebrew/cask-versions"
      "homebrew/services"
      "jorgelbg/tap"
      "osx-cross/avr"
    ];

    brews = [
      # emacs is handled better by homebrew on mac
      {
        name = "emacs-plus@30";
        args = [
          "with-native-comp"
          "with-imagemagick"
          "with-xwidgets"
          "with-mailutils"
          "with-ctags"
          "with-retro-emacs-logo-icon"
        ];
      }

      # problematic nix builds
      "choose-gui" # nix version fails to build
      "clang-format" # nix version screws up clang setup
      "openjdk" # there's really no jdk for mac from nix?
      "pinentry-touchid" # no nix version

      # need for grading purposes
      "avrdude"
      "open-mpi"
      "open-ocd"
      "osx-cross/avr/avr-binutils"
      "osx-cross/avr/avarice"
      "osx-cross/avr/avr-gcc@14"

      # needed for pdf-tools for emacs
      "autoconf"
      "automake"
      "pkg-config"
      "poppler"

      # required by emacs-plus@30
      "imagemagick"
      "jansson"
      "jpeg"
      "libgccjit"
      "librsvg"
      "zlib"

      "mailutils"
      "tree-sitter"

      # required by pinentry-touchid
      "libassuan@2"
      "gnupg"
      "pinentry-mac"
    ];

    # homebrew handles graphical applications better than nix
    casks = [
      "audacity"
      "blender"
      "cabal"
      "calibre"
      "desmume"
      "discord"
      "dwarf-fortress-lmp"
      "firefox"
      "gcc-arm-embedded"
      "ghostty"
      "gimp"
      "godot"
      "gzdoom"
      "inkscape"
      "krita"
      "librewolf"
      "multimc"
      "obs"
      "openemu"
      "openmw"
      "pokemon-showdown"
      "proton-drive"
      "proton-mail-bridge"
      "protonvpn"
      "qbittorrent"
      "rar"
      "syncthing"
      "thunderbird"
      "tor-browser"
      "vlc"
      "whisky"
      "zotero"
     ];
  };
}