{ description = "I have no idea what I'm doing"; inputs = { nixpkgs.url = "github:nixos/nixpkgs"; apple-silicon = { url = "github:tpwrules/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils.url = "github:numtide/flake-utils"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-darwin = { url = "github:nix-darwin/nix-darwin/master"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:mic92/sops-nix"; inputs.nix.follows = "nixpkgs"; }; }; outputs = { apple-silicon, flake-utils, home-manager, nix-darwin, nixpkgs, nur, self, sops-nix, }@inputs: let outputs = inputs.self; overlays = [ apple-silicon.overlays.apple-silicon-overlay nur.overlays.default ]; supportedSystems = [ "x86_64-linux" "aarch64-darwin" "aarch64-linux" ]; in { nixosConfigurations = { laptop = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./nixos/common.nix ./nixos/hosts/laptop/default.nix ./nixos/hosts/laptop/hardware-configuration.nix ]; }; homeserver = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ ./nixos/common.nix ./nixos/hosts/homeserver/default.nix ./nixos/hosts/homeserver/hardware-configuration.nix apple-silicon.nixosModules.apple-silicon-support ]; specialArgs = inputs; }; }; homeManagerModules = import ./modules/home-manager; homeConfigurations = { role = [ "desktop" "minimal" "server" ]; system = supportedSystems; } |> nixpkgs.lib.cartesianProduct |> nixpkgs.lib.foldl' ( c: e: c // { "irl-${e.role}-${e.system}" = home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { inherit overlays; system = e.system; }; extraSpecialArgs = { inherit outputs; }; modules = [ ./home-manager/irl.nix { role = "${e.role}"; } ]; }; } ) { }; } // flake-utils.lib.eachSystem supportedSystems (system: { formatter = nixpkgs.legacyPackages.${system}.nixfmt-tree; }) // { darwinConfigurations."irl-mac-mini" = nix-darwin.lib.darwinSystem { system = "aarch64-darwin"; modules = [ ./darwin/common.nix ./darwin/irl-mac-mini.nix ]; }; }; }