diff --git a/README.md b/README.md index 13a9fe2..3130360 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is the [Nix] and [Home Manager] configuration for managing my MacBook. ## Usage -First install [Nix]. Then, in the repo directory, run `nix develop` to get into the Nix shell. +First install [Nix] and [Homebrew]. Then, in the repo directory, run `nix develop` to get into the Nix shell. To set up the MacBook as per the config, run: @@ -31,5 +31,6 @@ just /switch # or update or clean ``` [Nix]: https://nixos.org +[Homebrew]: https://brew.sh [Home Manager]: https://github.com/nix-community/home-manager [`just`]: https://just.systems diff --git a/flake.nix b/flake.nix index 9b55c3e..f90684a 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Home Manager configuration of Abhinav Sarkar"; + description = "Nix Darwin + Home Manager configuration of Abhinav Sarkar"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?rev=5f5210aa20e343b7e35f40c033000db0ef80d7b9"; @@ -47,6 +47,7 @@ specialArgs = { inherit inputs; }; modules = [ ./configuration.nix + ./homebrew.nix home-manager.darwinModules.home-manager { home-manager.useGlobalPkgs = true; diff --git a/homebrew.nix b/homebrew.nix new file mode 100644 index 0000000..ca7e298 --- /dev/null +++ b/homebrew.nix @@ -0,0 +1,47 @@ +{ ... }: { + homebrew = { + enable = true; + onActivation = { + autoUpdate = false; + cleanup = "uninstall"; + upgrade = false; + }; + global = { + autoUpdate = false; + brewfile = true; + }; + casks = [ + "amethyst" + "appcleaner" + "calibre" + "dropbox" + "fanny" + "firefox" + "garmin-express" + "google-chrome" + "homebrew/cask/handbrake" + "monodraw" + "obsidian" + "spotify" + "steam" + "telegram" + "utm" + "vlc" + ]; + masApps = { + Amphetamine = 937984704; + Bear = 1091189122; + GarageBand = 682658836; + iMovie = 408981434; + Ivory = 6444602274; + Keynote = 409183694; + Kindle = 302584613; + NextDNS = 1464122853; + Numbers = 409203825; + Pages = 409201541; + Reeder = 1449412482; + TestFlight = 899247664; + Xcode = 497799835; + }; + }; +} diff --git a/justfile b/justfile index 29cd659..1929bdb 100644 --- a/justfile +++ b/justfile @@ -30,15 +30,21 @@ _switch: _build # switch to latest home-manager generation switch: (_run "_switch") -_update: && _switch +_update: && _switch _brew-update nix flake update --commit-lock-file "{{ root_dir }}" $NIXPKGS_PATH/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh > \ {{ root_dir }}/programs/vscode/extensions.nix +_brew-update: + brew update + brew upgrade + mas upgrade + # update packages and switch update: (_run "_update") # clean up nix garbage clean: home-manager expire-generations "-7 days" - nix-collect-garbage -d --delete-old + sudo nix-collect-garbage -d --delete-older-than 7d + brew cleanup --prune 7 diff --git a/programs/fish.nix b/programs/fish.nix index cb9a115..4b710ce 100644 --- a/programs/fish.nix +++ b/programs/fish.nix @@ -1,4 +1,4 @@ -{ inputs, config, pkgs, ... }: +{ inputs, config, osConfig, pkgs, ... }: let username = config.home.username; in { @@ -25,6 +25,14 @@ in { interactiveShellInit = '' fzf_configure_bindings --git_status=\cs --history=\cr --variables=\cv --directory=\cf --git_log=\cg neofetch + + 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 ''; shellInit = '' @@ -32,6 +40,7 @@ in { fenv source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh fenv source /etc/profiles/per-user/${username}/etc/profile.d/hm-session-vars.sh fish_add_path -m ~/.local/bin ~/.cabal/bin /etc/profiles/per-user/${username}/bin + eval "$(${osConfig.homebrew.brewPrefix}/brew shellenv)" ''; }; }