dotfiles.nix/darwin/homebrew.nix

95 lines
2.6 KiB
Nix

{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
mkIfCaskPresent = cask: mkIf (lib.any (x: x == cask) config.homebrew.casks);
brewEnabled = config.homebrew.enable;
gamesEnabled = config.games.enable;
in
{
# perma-enabling to prevent losing brew when we skip bundling
# environment.shellInit = mkIf brewEnabled ''
environment.shellInit = ''
eval "$(${config.homebrew.brewPrefix}/brew shellenv)"
'';
# https://docs.brew.sh/Shell-Completion#configuring-completions-in-fish
# For some reason if the Fish completions are added at the end of `fish_complete_path` they don't
# seem to work, but they do work if added at the start.
# programs.fish.interactiveShellInit = mkIf brewEnabled ''
programs.fish.interactiveShellInit = ''
if test -d (brew --prefix)"/share/fish/completions"
set -p fish_complete_path (brew --prefix)/share/fish/completions
end
if test -d (brew --prefix)"/share/fish/vendor_completions.d"
set -p fish_complete_path (brew --prefix)/share/fish/vendor_completions.d
end
'';
homebrew.enable = pkgs.lib.homebrew-enabled;
homebrew.autoUpdate = true;
homebrew.cleanup = "zap";
homebrew.global.brewfile = true;
homebrew.global.noLock = true;
homebrew.taps = [
"homebrew/cask"
"homebrew/cask-drivers"
"homebrew/cask-fonts"
"homebrew/cask-versions"
"homebrew/core"
"homebrew/services"
"nrlquaker/createzap"
"unisonweb/unison"
];
# Prefer installing application from the Mac App Store
homebrew.masApps = {
Bitwarden = 1352778147;
Spark = 1176895641;
# UTM = 1538878817;
Wireguard = 1451685025;
Xcode = 497799835;
};
# If an app isn't available in the Mac App Store, or the version in the App Store has
# limitiations, e.g., Transmit, install the Homebrew Cask.
homebrew.casks = [
"aerial"
"alfred"
"bartender"
"firefox"
"jitsi-meet"
"knockknock"
"lulu"
"mimestream"
# "mullvadvpn"
"rectangle"
"seaglass"
"secretive"
"signal"
"transmission"
# "twitch"
# "utm"
# "zoom"
] ++ lib.optionals gamesEnabled [
# games
"gog-galaxy"
"origin"
"steam"
];
# Configuration related to casks
environment.variables.SSH_AUTH_SOCK = mkIfCaskPresent "secretive"
"/Users/${config.users.primaryUser}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh";
# For cli packages that aren't currently available for macOS in `nixpkgs`.Packages should be
# installed in `../home/default.nix` whenever possible.
homebrew.brews = [
"fileicon"
"fzf"
"unison-language"
];
}