{ description = "nix-darwin system flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-25.11-darwin"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs@{ self, nix-darwin, nixpkgs, nixpkgs-unstable }: let configuration = { pkgs, ... }: { environment.systemPackages = let # TODO is there a better way to do this? pkgsUnstable = import nixpkgs-unstable { localSystem = pkgs.stdenv.system; config.allowUnfree = true; }; in [ pkgsUnstable.claude-code pkgsUnstable.jujutsu ]; nix.settings.experimental-features = "nix-command flakes"; system.primaryUser = "joe"; # Set Git commit hash for darwin-version. system.configurationRevision = self.rev or self.dirtyRev or null; # Used for backwards compatibility, please read the changelog before changing. # $ darwin-rebuild changelog system.stateVersion = 6; # The platform the configuration will be used on. nixpkgs.hostPlatform = "aarch64-darwin"; nixpkgs.config.allowUnfree = true; }; apps = { pkgs, ... }: { homebrew = { enable = true; onActivation.cleanup = "uninstall"; brews = [ "mas" ]; casks = [ "linearmouse" ]; masApps = { "Kagi for Safari" = 1622835804; "KeePassium (KeePass passwords)" = 1435127111; Xcode = 497799835; }; }; }; in { darwinConfigurations.mojo = nix-darwin.lib.darwinSystem { modules = [ configuration apps ]; }; }; }