{ 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"; inputs.nixpkgs.follows = "nixpkgs-stable"; }; home-manager-unstable = { url = "github:nix-community/home-manager"; 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-stable, }: 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; nixpkgs = inputs.nixpkgs-unstable; # Required for Tailwind until 25.05 is cut }; vega = mkNixosConfig { path = ./system/hosts/vega; nixpkgs = inputs.nixpkgs-unstable; # Required for Tailwind until 25.05 is cut }; mcp = mkNixosConfig { path = ./system/hosts/mcp; }; }; features = { development = (import ./home-manager/features/development/development.nix); }; }; }