Experimental nix expression to package all MacOS casks from homebrew automatically.
Requires at least nixos 24.11 or nixos-unstable to work due to relying on builtins.convertHash
from nix 2.19
- No homebrew needed, packages are fully managed by nix.
- Fully nix package expressions, everything is type checked and it will give you an error when you specify an invalid package for example.
- Running most programs with
nix run
wont work, so you should install them first. - Some programs refuse to run from non standard locations, since this is automatic there isnt a good way to fix it.
- About 700 casks dont come with hashes, so you have to override the package and provide the hash yourself.
- Having multiple generations of this will take A LOT of space, so keep that in mind
nix build github:BatteredBunny/brew-nix#blender
./result/Applications/Blender.app/Contents/MacOS/Blender
Many casks come with no hash so you have to provide on yourself
home.packages = with pkgs; [
(brewCasks.marta.overrideAttrs (o: {
src = pkgs.fetchurl {
url = builtins.head oldAttrs.src.urls;
hash = lib.fakeHash; # Replace me with real hash after building once
};
}))
];
See examples/flake.nix
.
# flake.nix
inputs = {
brew-nix = {
url = "github:BatteredBunny/brew-nix";
inputs.brew-api.follows = "brew-api";
};
brew-api = {
url = "github:BatteredBunny/brew-api";
flake = false;
};
};
# home.nix
nixpkgs = {
overlays = [
inputs.brew-nix.overlays.default
];
};
home.packages = with pkgs; [
brewCasks.marta
brewCasks."firefox@developer-edition" # Casks with special characters in their name need to be defined in quotes
];