{ description = "Nix for Poby's MacOS"; # TODO: is this necessary? # nixConfig = { # substituters = [ # "https://nix-community.cachix.org" # "https://cache.nixos.org" # ]; # }; inputs = { # nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-unstable"; # comment out for unstable version nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-25.11-darwin"; home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs-darwin"; }; darwin = { url = "github:nix-darwin/nix-darwin/nix-darwin-25.11"; inputs.nixpkgs.follows = "nixpkgs-darwin"; }; # Homebrew nix-homebrew.url = "github:zhaofengli/nix-homebrew"; # Optional: Declarative tap management homebrew-core = { url = "github:homebrew/homebrew-core"; flake = false; }; homebrew-cask = { url = "github:homebrew/homebrew-cask"; flake = false; }; # NVF for neovim nvf = { url = "github:notashelf/nvf"; inputs.nixpkgs.follows = "nixpkgs"; }; # sops-nix for secrets sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs-darwin"; }; }; outputs = inputs@{ self, nixpkgs, darwin, home-manager, nvf, sops-nix, nix-homebrew, homebrew-core, homebrew-cask, ... }: let system = "aarch64-darwin"; username = "poby"; useremail = "smg981024@gmail.com"; hostname = "fenrir"; # TODO break down to multiple hosts specialArgs = inputs // { inherit username useremail hostname; }; in { darwinConfigurations."${hostname}" = darwin.lib.darwinSystem { inherit system specialArgs; modules = [ ./modules/nix-core.nix ./modules/system.nix ./modules/apps.nix ./modules/host-users.nix nix-homebrew.darwinModules.nix-homebrew { nix-homebrew = { enable = true; enableRosetta = true; user = username; taps = { "homebrew/homebrew-core" = homebrew-core; "homebrew/homebrew-cask" = homebrew-cask; }; mutableTaps = false; }; } ( { config, ... }: { homebrew.taps = builtins.attrNames config.nix-homebrew.taps; } ) home-manager.darwinModules.home-manager { home-manager = { useGlobalPkgs = true; useUserPackages = true; backupFileExtension = "backup"; extraSpecialArgs = specialArgs; sharedModules = [ nvf.homeManagerModules.nvf sops-nix.homeManagerModules.sops ]; users.${username} = import ./home; }; } ]; }; formatter.${system} = nixpkgs.legacyPackages.${system}.alejandra; }; }