{ 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, ... }: 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 = [ ./hosts nix-homebrew.darwinModules.nix-homebrew 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; }; }