{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11"; nixpkgsUnstable.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, nixpkgsUnstable, home-manager , nur, impermanence, hm-isolation, ... }: with nixpkgs.lib; let util = import ./util; inherit (util nixpkgs.lib) importAll; pkgSet = pkgs: import ./pkgs pkgs; in { packages."x86_64-linux" = pkgSet nixpkgs.legacyPackages."x86_64-linux"; overlay = self: super: { local = pkgSet super; unstable = import nixpkgsUnstable { inherit (super) config system; }; }; nixosConfigurations = let hostConfig = host: (makeOverridable nixosSystem) { system = "x86_64-linux"; modules = [ (import ./sys { inherit self impermanence; }) host ]; }; in mapAttrs (_: hostConfig) (importAll { root = ./sys/platform; }); homeConfigurations = let configuration = import ./home { inherit self nixpkgs nixpkgsUnstable nur hm-isolation; }; username = "ale"; home = platform: home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { system = "x86_64-linux"; }; modules = [ configuration platform ]; # Optionally use extraSpecialArgs # to pass through arguments to home.nix extraSpecialArgs = {}; }; platformHome = name: platform: { name = "${username}@${name}"; value = home platform; }; in mapAttrs' platformHome (importAll { root = ./home/platform; }); }; }