{
  config,
  lib,
  pkgs,
  ...
}:
{
  options.athenix = {
    system.gc = {
      enable = lib.mkOption {
        type = lib.types.bool;
        default = true;
        description = "Whether to enable automatic garbage collection.";
      };
      frequency = lib.mkOption {
        type = lib.types.str;
        default = "weekly";
        description = "How often to run garbage collection (systemd timer format).";
      };
      retentionDays = lib.mkOption {
        type = lib.types.int;
        default = 30;
        description = "Number of days to keep old generations before deletion.";
      };
      optimise = lib.mkOption {
        type = lib.types.bool;
        default = true;
        description = "Whether to automatically optimize the Nix store.";
      };
    };

    host.buildMethods = lib.mkOption {
      type = lib.types.listOf lib.types.str;
      default = [ "installer-iso" ];
      description = ''
        List of allowed build methods for this host (used by installer/artifacts.nix).
        Supported methods:
        - "installer-iso": Generates an auto-install ISO that installs this configuration to disk.
        - "iso": Generates a live ISO (using nixos-generators).
        - "ipxe": Generates iPXE netboot artifacts (kernel, initrd, script).
        - "lxc": Generates an LXC container tarball.
        - "proxmox": Generates a Proxmox VMA archive.
      '';
    };
  };

  config = {
    # Automatic Garbage Collection
    nix.gc = lib.mkIf config.athenix.system.gc.enable {
      automatic = true;
      dates = config.athenix.system.gc.frequency;
      options = "--delete-older-than ${toString config.athenix.system.gc.retentionDays}d";
    };

    # Optimize storage
    nix.optimise.automatic = config.athenix.system.gc.optimise;
  };
}
