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