{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nur.url = "github:nix-community/NUR"; impermanence.url = "github:nix-community/impermanence"; hm-isolation.url = "github:3442/hm-isolation"; nixvirt = { url = "github:AshleyYakeley/NixVirt"; inputs = { nixpkgs.follows = "nixpkgs"; #FIXME: Por qué existe esto? nixpkgs-ovmf.follows = "nixpkgs"; }; }; flake-utils.url = "github:numtide/flake-utils"; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.1"; inputs = { nixpkgs.follows = "nixpkgs"; flake-utils.follows = "flake-utils"; pre-commit-hooks-nix.follows = ""; }; }; vpsadminos.url = "github:vpsfreecz/vpsadminos"; }; outputs = flakes@{ self , nixpkgs , unstable , home-manager , nur , impermanence , hm-isolation , nixvirt , flake-utils , lanzaboote , vpsadminos }: let system = "x86_64-linux"; pkgs = importPkgs nixpkgs; importPkgs = flake: import flake { inherit system; config = import ./pkgs/config nixpkgs.lib; overlays = [ nur.overlay self.overlays.default ]; }; inherit (pkgs.local.lib) importAll; local = import ./pkgs; in with pkgs.lib; { formatter.${system} = pkgs.nixpkgs-fmt; packages.${system} = pkgs.local; overlays.default = final: prev: let locals = local final prev; in { local = locals; unstable = importPkgs unstable; } // locals.override; nixosConfigurations = let nixosSystem = { modules }: makeOverridable nixpkgs.lib.nixosSystem { inherit modules pkgs system; specialArgs = { inherit flakes; }; }; hostConfig = host: nixosSystem { modules = [ ./sys host ]; }; in mapAttrs (_: hostConfig) (importAll { root = ./sys/platform; }); homeConfigurations = let registry = { ... }: { config.nix.registry = mapAttrs (_: value: { flake = value; }) flakes; }; 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; }); }; }