From b46d42c560eb97f214d0b767c0ffee44711ecfba Mon Sep 17 00:00:00 2001 From: Ryan Schanzenbacher Date: Thu, 25 Jun 2026 00:14:18 -0400 Subject: Various changes. Homebrew is now fully declarative --- flake.lock | 70 +++++++++++++++++++++++++++++++++++++++++ flake.nix | 21 +++++++++---- hosts/RyanMac/configuration.nix | 23 +++++++++++--- hosts/RyanMac/taps.nix | 16 ++++++++++ users/ryan/home.nix | 1 + 5 files changed, 120 insertions(+), 11 deletions(-) create mode 100644 hosts/RyanMac/taps.nix diff --git a/flake.lock b/flake.lock index 8905305..fad022e 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,22 @@ { "nodes": { + "brew-src": { + "flake": false, + "locked": { + "lastModified": 1781226006, + "narHash": "sha256-w4ZTuOnhYiDxjaynrMTASzp802QblBWmo3wpB8wVN4Y=", + "owner": "Homebrew", + "repo": "brew", + "rev": "109191be4988470b51a60a5ef1998520aa24c01b", + "type": "github" + }, + "original": { + "owner": "Homebrew", + "ref": "6.0.1", + "repo": "brew", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -161,6 +178,38 @@ "type": "github" } }, + "homebrew-cask": { + "flake": false, + "locked": { + "lastModified": 1782355557, + "narHash": "sha256-LjoFTRTn/SxBKSPLX5c1FPJrh0fcR6CPRa2OoRDx6dA=", + "owner": "homebrew", + "repo": "homebrew-cask", + "rev": "dabdc97cde3fc9b28db4864dc94697670aab42c3", + "type": "github" + }, + "original": { + "owner": "homebrew", + "repo": "homebrew-cask", + "type": "github" + } + }, + "homebrew-core": { + "flake": false, + "locked": { + "lastModified": 1782356982, + "narHash": "sha256-yhSKSuq4qlcrgxxtRqvdNYJaS5PiLS11Sj+rYrcz134=", + "owner": "homebrew", + "repo": "homebrew-core", + "rev": "3c02d2ed3e52772e24ec557142d3a575e574ab5b", + "type": "github" + }, + "original": { + "owner": "homebrew", + "repo": "homebrew-core", + "type": "github" + } + }, "nix": { "inputs": { "flake-parts": "flake-parts", @@ -182,6 +231,24 @@ "url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A" } }, + "nix-homebrew": { + "inputs": { + "brew-src": "brew-src" + }, + "locked": { + "lastModified": 1781389246, + "narHash": "sha256-ORqLAo/hoJdsZC7UPAuEHev6S0+XIqKEC7vjo5prz1k=", + "owner": "zhaofengli", + "repo": "nix-homebrew", + "rev": "de7953a08ed4bb9245be043e468561c17b89130d", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "repo": "nix-homebrew", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1773222311, @@ -263,6 +330,9 @@ "darwin": "darwin", "determinate": "determinate", "home-manager": "home-manager", + "homebrew-cask": "homebrew-cask", + "homebrew-core": "homebrew-core", + "nix-homebrew": "nix-homebrew", "nixpkgs": "nixpkgs_3", "zen-browser": "zen-browser" } diff --git a/flake.nix b/flake.nix index b7d3714..c75f436 100644 --- a/flake.nix +++ b/flake.nix @@ -16,9 +16,18 @@ url = "github:0xc000022070/zen-browser-flake"; inputs = { nixpkgs.follows = "nixpkgs"; - home-manager.follows = "home-manager"; + home-manager.follows = "home-manager"; }; }; + nix-homebrew.url = "github:zhaofengli/nix-homebrew"; + homebrew-core = { + url = "github:homebrew/homebrew-core"; + flake = false; + }; + homebrew-cask = { + url = "github:homebrew/homebrew-cask"; + flake = false; + }; }; outputs = { nixpkgs, home-manager, ... }@inputs: { @@ -34,11 +43,11 @@ home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.ryan = { - imports = [ - inputs.zen-browser.homeModules.beta - ./users/ryan/home.nix - ]; - }; + imports = [ + inputs.zen-browser.homeModules.beta + ./users/ryan/home.nix + ]; + }; } ]; }; diff --git a/hosts/RyanMac/configuration.nix b/hosts/RyanMac/configuration.nix index c964d97..16e1006 100644 --- a/hosts/RyanMac/configuration.nix +++ b/hosts/RyanMac/configuration.nix @@ -4,6 +4,8 @@ let defaultBrowser = "zen"; + thirdPartyTaps = import ./taps.nix; + pinnedNixpkgs = pkgs.writeText "flake-registry.json" (builtins.toJSON { version = 2; flakes = [ @@ -41,6 +43,7 @@ let in { # Modules imports = [ + inputs.nix-homebrew.darwinModules.nix-homebrew ../../modules/darwin/random-wallpaper.nix ]; @@ -107,28 +110,38 @@ in { zsh.enable = true; }; + # Install homebrew itself + nix-homebrew = { + enable = true; + enableRosetta = true; + user = "${username}"; + mutableTaps = false; + taps = thirdPartyTaps; + trust.taps = builtins.attrNames thirdPartyTaps; + }; + # Install homebrew casks/apps homebrew = { enable = true; onActivation = { cleanup = "zap"; - extraFlags = [ "--force-cleanup" ]; }; - taps = [ - "netbirdio/tap" - "FelixKratz/formulae" - ]; + global.brewfile = true; + + taps = builtins.attrNames thirdPartyTaps; brews = [ "borders" + "mqttx-cli" ]; casks = [ "utm" "ghostty" "zen" + "ungoogled-chromium" "tailscale-app" "netbird-ui" ]; diff --git a/hosts/RyanMac/taps.nix b/hosts/RyanMac/taps.nix new file mode 100644 index 0000000..12235d8 --- /dev/null +++ b/hosts/RyanMac/taps.nix @@ -0,0 +1,16 @@ +{ + "netbirdio/homebrew-tap" = builtins.fetchGit { + url = "https://github.com/netbirdio/homebrew-tap"; + rev = "98a5d193c8d2c03b639aad03159004c64496c3e7"; + }; + + "FelixKratz/homebrew-formulae" = builtins.fetchGit { + url = "https://github.com/FelixKratz/homebrew-formulae"; + rev = "70b2071488b61c14f773ce9e1bf6626ee851981a"; + }; + + "emqx/homebrew-mqttx" = builtins.fetchGit { + url = "https://github.com/emqx/homebrew-mqttx"; + rev = "9889d741ba44940340d12dcad31fe867f62e7ea8"; + }; +} diff --git a/users/ryan/home.nix b/users/ryan/home.nix index 9ff5870..a83257b 100644 --- a/users/ryan/home.nix +++ b/users/ryan/home.nix @@ -131,6 +131,7 @@ talosctl audacity ffmpeg + blender ]; # Home Manager is pretty good at managing dotfiles. The primary way to manage -- cgit v1.3