rec { description = "TimmyOS System Config"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; arkenfox = { url = "github:dwarfmaster/arkenfox-nixos"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, ... }@inputs: let extLib = nixpkgs.lib.extend (final: prev: import ./lib); mkNixosConfiguration = system: hostname: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs; inherit hostname; lib = extLib; }; modules = [ ./hosts/${hostname}/configuration.nix ./hosts/${hostname}/hardware-configuration.nix ./archetypes ./nixos ./pkgs ./users inputs.sops-nix.nixosModules.sops inputs.home-manager.nixosModules.home-manager { home-manager = { backupFileExtension = "backup"; # In case file is overwritten useGlobalPkgs = true; useUserPackages = true; sharedModules = [ inputs.arkenfox.hmModules.arkenfox ./home-manager ]; }; } ]; }; mkNixosConfigurations = hostsBySystem: builtins.listToAttrs ( builtins.concatMap (system: map (host: { name = host; value = mkNixosConfiguration system host; }) hostsBySystem.${system} ) (builtins.attrNames hostsBySystem) ); in { # Configured system hostnames go here under their respective system architecture nixosConfigurations = mkNixosConfigurations { x86_64-linux = [ "T495" "X230" "flex-wg-router" "hp-envy-office" "libreX60" "optiplex" "poweredge" ]; aarch64-linux = [ "piframe" ]; }; }; }