rec { description = "TimmyOS System Config"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; 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"; }; reposync = { url = "git://git.tjkeller.xyz/hm-reposync"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, home-manager, ... }@inputs: let extLib = nixpkgs.lib.extend (final: prev: import ./lib); extLibHomeManagerStandalone = nixpkgs.lib.extend (final: prev: import ./lib/home-manager); homeManagerModules = [ inputs.arkenfox.hmModules.arkenfox inputs.reposync.hmModules.reposync ./home-manager ]; 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 home-manager.nixosModules.home-manager { home-manager = { backupFileExtension = "backup"; # In case file is overwritten useGlobalPkgs = true; useUserPackages = true; sharedModules = homeManagerModules; }; } ]; }; mkNixosConfigurations = hostsBySystem: builtins.listToAttrs ( builtins.concatMap (system: map (host: { name = host; value = mkNixosConfiguration system host; }) hostsBySystem.${system} ) (builtins.attrNames hostsBySystem) ); mkHomeConfiguration = user: system: hostname: home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs; inherit hostname; lib = extLibHomeManagerStandalone; }; modules = homeManagerModules ++ [ ./hosts/${hostname}/home-${user}/configuration.nix ./archetypes/profiles ./pkgs ./users/default-home.nix ]; }; mkHomeConfigurations = hostsBySystem: builtins.listToAttrs ( builtins.concatMap (system: map (host: { name = host; value = mkHomeConfiguration "timmy" system host; # TODO }) 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" ]; }; homeConfigurations = mkHomeConfigurations { x86_64-linux = [ "libreX60" ]; }; }; }