{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11"; unstable.url = "github:nixos/nixpkgs"; home-manager = { url = "github:nix-community/home-manager/release-22.11"; inputs.nixpkgs.follows = "nixpkgs"; }; nur.url = "github:nix-community/NUR"; impermanence.url = "github:nix-community/impermanence"; hm-isolation.url = "/home/ale/hm-isolation"; }; outputs = { self, nixpkgs, unstable, home-manager, nur, impermanence, hm-isolation, ... }: let system = "x86_64-linux"; pkgs = pkgsNoLocal.extend self.overlays.default; pkgsNoLocal = importPkgs nixpkgs; importPkgs = flake: import flake { inherit system; config = import ./pkgs/config nixpkgs.lib; overlays = [ nur.overlay ]; }; util = import ./util; inherit (util pkgs.lib) importAll; local = import ./pkgs; in with pkgs.lib; { formatter.${system} = pkgs.nixpkgs-fmt; packages.${system} = local pkgs pkgsNoLocal; overlays.default = final: prev: { local = local final prev; unstable = (importPkgs unstable).extend self.overlays.default; }; nixosConfigurations = let hostConfig = host: (makeOverridable nixpkgs.lib.nixosSystem) { inherit pkgs system; modules = [ ./sys host nixpkgs.nixosModules.notDetected impermanence.nixosModule ]; }; in mapAttrs (_: hostConfig) (importAll { root = ./sys/platform; }); homeConfigurations = let registry = { ... }: { config.nix.registry = { "nixpkgs".flake = nixpkgs; "unstable".flake = unstable; "nur".flake = nur; }; }; home = platform: home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ ./home platform registry hm-isolation.homeManagerModule ]; }; platformHome = platform: let value = home platform; in { inherit value; name = "${value.config.home.username}@${value.config.local.hostname}"; }; in mapAttrs' (_: platformHome) (importAll { root = ./home/platform; }); }; }