dotfiles.nix/darwin/homebrew.nix

76 lines
2.2 KiB
Nix

{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
mkIfCaskPresent = cask: mkIf (lib.any (x: x == cask) config.homebrew.casks);
brewEnabled = config.homebrew.enable;
in
{
environment.shellInit = mkIf brewEnabled ''
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 ''
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 = true;
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;
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"
"firefox"
"gog-galaxy"
"jitsi-meet"
"knockknock"
"lulu"
"mullvadvpn"
"rectangle"
"signal"
"steam"
"twitch"
"zoom"
];
# 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" ];
}