{ description = "System Configuration"; inputs = { nixpkgs-unstable = { url = "github:nixos/nixpkgs?ref=nixos-unstable"; }; nixpkgs-stable = { url = "github:nixos/nixpkgs?ref=nixos-24.11"; }; home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; hyprland = { url = "github:hyprwm/Hyprland"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; hy3 = { url = "github:outfoxxed/hy3"; inputs.hyprland.follows = "hyprland"; }; split-monitor-workspaces = { url = "github:Duckonaut/split-monitor-workspaces"; inputs.hyprland.follows = "hyprland"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs-stable"; }; }; outputs = { self, nixpkgs, ... }@inputs: let local = import ./lib; # TODO: Convert other configurations to use this function. mkNixosConfig = { path, system ? "x86_64-linux", nixpkgs ? inputs.nixpkgs-unstable, }: nixpkgs.lib.nixosSystem { inherit system; modules = [ inputs.home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit inputs local; }; } path ]; specialArgs = { inherit inputs local; }; }; in { nixosConfigurations = { altair = mkNixosConfig { path = ./system/hosts/altair; }; mcp = (import ./system/hosts/mcp) { inherit inputs; inherit self; nixpkgs = inputs.nixpkgs-stable; }; vega = (import ./system/hosts/vega) { inherit inputs; inherit self; nixpkgs = inputs.nixpkgs-unstable; }; }; features = { development = (import ./home-manager/features/development/development.nix); }; }; }