76 lines
2.1 KiB
Nix
76 lines
2.1 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 = [ "fzf" "unison-language" ];
|
|
}
|