fix: Remove incorrect ./parts/fleet-data.nix import from flake.nix and use correct flake-parts structure
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
(import ./fleet-data.nix { inherit inputs lib; })
|
||||
./fs.nix
|
||||
./boot.nix
|
||||
./user-config.nix
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
inputs,
|
||||
fleet ? null,
|
||||
hwTypes ? null,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
@@ -13,26 +13,12 @@
|
||||
# configurations with flexible type associations.
|
||||
|
||||
let
|
||||
nixpkgs = inputs.nixpkgs;
|
||||
lib = nixpkgs.lib;
|
||||
|
||||
# Evaluate inventory to get fleet data
|
||||
# Import fleet-option.nix (defines athenix.fleet) and inventory.nix (sets values)
|
||||
# We use a minimal module here to avoid circular dependencies from common.nix's imports
|
||||
inventoryModule = lib.evalModules {
|
||||
modules = [
|
||||
(import ./fleet-option.nix { inherit inputs; })
|
||||
{
|
||||
_module.args = {
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
};
|
||||
}
|
||||
(lib.mkIf (fleet != null) { athenix.fleet = lib.mkForce fleet; })
|
||||
(lib.mkIf (hwTypes != null) { athenix.hwTypes = lib.mkForce hwTypes; })
|
||||
];
|
||||
};
|
||||
|
||||
hostTypes = inventoryModule.config.athenix.hwTypes;
|
||||
|
||||
hostTypes = config.athenix.hwTypes;
|
||||
|
||||
# Helper to create a single NixOS system configuration
|
||||
mkHost =
|
||||
@@ -64,9 +50,7 @@ let
|
||||
null;
|
||||
|
||||
# Load users.nix to find external user modules
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
usersData = import ../users.nix { inherit pkgs; };
|
||||
accounts = usersData.athenix.users or { };
|
||||
accounts = config.athenix.users or { };
|
||||
|
||||
# Build a map of user names to their nixos module paths (if they exist)
|
||||
# We'll use this to conditionally import modules based on user.enable
|
||||
@@ -285,7 +269,7 @@ let
|
||||
lib.recursiveUpdate deviceHosts countHosts
|
||||
);
|
||||
|
||||
fleetData = inventoryModule.config.athenix.fleet;
|
||||
fleetData = config.athenix.fleet;
|
||||
|
||||
# Flatten the nested structure
|
||||
allHosts = lib.foldl' lib.recursiveUpdate { } (lib.attrValues (processInventory fleetData));
|
||||
|
||||
65
fleet/fleet-data.nix
Normal file
65
fleet/fleet-data.nix
Normal file
@@ -0,0 +1,65 @@
|
||||
# ============================================================================
|
||||
# Fleet Data for NixOS Configurations
|
||||
# ============================================================================
|
||||
# This module exposes only the fleet inventory data (not hwTypes module functions)
|
||||
# to individual NixOS configurations. Used by fleet/common.nix.
|
||||
{ inputs, lib, ... }:
|
||||
let
|
||||
fleetDefinition = lib.mkOption {
|
||||
description = "Hardware types definitions for the fleet.";
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.submodule (
|
||||
{ name, ... }:
|
||||
{
|
||||
options = {
|
||||
type = lib.mkOption {
|
||||
type = lib.types.oneOf [
|
||||
lib.types.str
|
||||
lib.types.listOf lib.types.str
|
||||
];
|
||||
default = name;
|
||||
description = "Type(s) of system configuration for this device.";
|
||||
};
|
||||
system = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "x86_64-linux";
|
||||
description = "NixOS system architecture for this hardware type.";
|
||||
};
|
||||
devices = lib.mkOption {
|
||||
type = lib.types.oneOf [
|
||||
lib.types.int
|
||||
(lib.types.attrsOf (
|
||||
lib.types.submodule (
|
||||
{ name, ... }:
|
||||
{
|
||||
freeformType = lib.types.attrs;
|
||||
}
|
||||
)
|
||||
))
|
||||
];
|
||||
};
|
||||
count = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = 0;
|
||||
description = "Number of devices of this type to create.";
|
||||
};
|
||||
defaultCount = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = 0;
|
||||
description = "Default number of devices to create with default configurations and numbered hostnames.";
|
||||
};
|
||||
overrides = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = { };
|
||||
description = "Overrides to apply to all devices of this type.";
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
);
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [ ../inventory.nix ];
|
||||
options.athenix.fleet = fleetDefinition;
|
||||
}
|
||||
@@ -3,8 +3,7 @@
|
||||
# ============================================================================
|
||||
# This module only defines the athenix.fleet option without any dependencies.
|
||||
# Used by fleet/default.nix to evaluate inventory data without circular dependencies.
|
||||
{ inputs, ... }:
|
||||
{ lib, ... }:
|
||||
{ inputs, lib, ... }:
|
||||
let
|
||||
fleetDefinition = lib.mkOption {
|
||||
description = "Hardware types definitions for the fleet.";
|
||||
@@ -70,6 +69,5 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
config.athenix.fleet = lib.mkDefault (import ../inventory.nix);
|
||||
config.athenix.hwTypes = lib.mkDefault (import ../hw { inherit inputs; });
|
||||
}
|
||||
|
||||
@@ -15,8 +15,7 @@
|
||||
|
||||
let
|
||||
# Load users.nix to get account definitions
|
||||
usersData = import ../users.nix { inherit pkgs; };
|
||||
accounts = usersData.athenix.users or { };
|
||||
accounts = config.athenix.users or { };
|
||||
|
||||
# Helper: Resolve external module path from fetchGit/fetchTarball/path
|
||||
resolveExternalPath =
|
||||
|
||||
Reference in New Issue
Block a user