docs: Update inline code docs for LSP help
All checks were successful
CI / Format Check (push) Successful in 2s
CI / Flake Check (push) Successful in 1m39s
CI / Evaluate Key Configurations (nix-builder) (push) Successful in 8s
CI / Evaluate Key Configurations (nix-desktop1) (push) Successful in 7s
CI / Evaluate Key Configurations (nix-laptop1) (push) Successful in 7s
CI / Evaluate Artifacts (installer-iso-nix-laptop1) (push) Successful in 14s
CI / Evaluate Artifacts (lxc-nix-builder) (push) Successful in 8s
CI / Build and Publish Documentation (push) Successful in 5s

This commit is contained in:
UGA Innovation Factory
2026-01-27 14:48:07 -05:00
parent 13fdc3a7a1
commit 1a7bf29448
7 changed files with 202 additions and 161 deletions

View File

@@ -17,9 +17,11 @@ let
cfg = config.athenix.sw.builders; cfg = config.athenix.sw.builders;
in in
{ {
options.athenix.sw.builders = { options.athenix.sw.builders = mkOption {
type = lib.types.submodule {
options = {
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable build server configuration. Enable build server configuration.
@@ -34,9 +36,11 @@ in
example = true; example = true;
}; };
giteaRunner = { giteaRunner = mkOption {
type = lib.types.submodule {
options = {
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable Gitea Actions self-hosted runner. Enable Gitea Actions self-hosted runner.
@@ -48,7 +52,7 @@ in
}; };
url = mkOption { url = mkOption {
type = types.str; type = lib.types.str;
description = '' description = ''
URL of the Gitea instance to connect to. URL of the Gitea instance to connect to.
This should be the base URL without any path components. This should be the base URL without any path components.
@@ -57,7 +61,7 @@ in
}; };
tokenFile = mkOption { tokenFile = mkOption {
type = types.path; type = lib.types.path;
default = "/var/lib/gitea-runner-token"; default = "/var/lib/gitea-runner-token";
description = '' description = ''
Path to file containing Gitea runner registration token. Path to file containing Gitea runner registration token.
@@ -75,7 +79,7 @@ in
}; };
extraLabels = mkOption { extraLabels = mkOption {
type = types.listOf types.str; type = lib.types.listOf lib.types.str;
default = [ ]; default = [ ];
description = '' description = ''
Additional labels to identify this runner in workflow files. Additional labels to identify this runner in workflow files.
@@ -89,7 +93,7 @@ in
}; };
name = mkOption { name = mkOption {
type = types.str; type = lib.types.str;
default = "athenix"; default = "athenix";
description = '' description = ''
Unique name for this runner instance. Unique name for this runner instance.
@@ -99,6 +103,14 @@ in
}; };
}; };
}; };
default = { };
description = "Gitea Actions runner configuration.";
};
};
};
default = { };
description = "Build server configuration (CI/CD, Gitea Actions).";
};
config = mkIf cfg.enable (mkMerge [ config = mkIf cfg.enable (mkMerge [
(import ./programs.nix { (import ./programs.nix {

View File

@@ -37,8 +37,11 @@ in
]; ];
options.athenix.sw = { options.athenix.sw = {
# Software submodule for the Athenix system suite. sw.enable enables
# base packages and common configuration. Each sw.<type>.enable enables
# additional packages and services for that system type.
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable standard workstation configuration with base packages. Enable standard workstation configuration with base packages.
@@ -53,17 +56,18 @@ in
''; '';
}; };
type = mkOption {
# DEPRECATED: Backwards compatibility for external modules # DEPRECATED: Backwards compatibility for external modules
# Use athenix.sw.<type>.enable instead # Use athenix.sw.<type>.enable instead
type = mkOption { type = lib.types.nullOr (lib.types.either lib.types.str (lib.types.listOf lib.types.str));
type = types.nullOr (types.either types.str (types.listOf types.str));
default = null; default = null;
description = "DEPRECATED: Use athenix.sw.<type>.enable instead. Legacy type selection."; description = "DEPRECATED: Use athenix.sw.<type>.enable instead. Legacy type selection.";
visible = false; visible = false;
}; };
extraPackages = mkOption { extraPackages = mkOption {
type = types.listOf types.package; # Additional packages to install beyond the defaults
type = lib.types.listOf lib.types.package;
default = [ ]; default = [ ];
description = '' description = ''
Additional system packages to install beyond the defaults. Additional system packages to install beyond the defaults.
@@ -73,7 +77,8 @@ in
}; };
excludePackages = mkOption { excludePackages = mkOption {
type = types.listOf types.package; # Packages to exclude from the default package list
type = lib.types.listOf lib.types.package;
default = [ ]; default = [ ];
description = '' description = ''
Packages to exclude from the default package list. Packages to exclude from the default package list.

View File

@@ -17,9 +17,11 @@ let
cfg = config.athenix.sw.desktop; cfg = config.athenix.sw.desktop;
in in
{ {
options.athenix.sw.desktop = { options.athenix.sw.desktop = mkOption {
type = lib.types.submodule {
options = {
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable full desktop environment with KDE Plasma 6. Enable full desktop environment with KDE Plasma 6.
@@ -37,6 +39,10 @@ in
example = true; example = true;
}; };
}; };
};
default = { };
description = "Desktop environment configuration (KDE Plasma 6).";
};
config = mkIf cfg.enable (mkMerge [ config = mkIf cfg.enable (mkMerge [
(import ./programs.nix { (import ./programs.nix {

View File

@@ -17,9 +17,11 @@ let
cfg = config.athenix.sw.headless; cfg = config.athenix.sw.headless;
in in
{ {
options.athenix.sw.headless = { options.athenix.sw.headless = mkOption {
type = lib.types.submodule {
options = {
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable minimal headless server configuration. Enable minimal headless server configuration.
@@ -35,6 +37,10 @@ in
example = true; example = true;
}; };
}; };
};
default = { };
description = "Headless server configuration (SSH, minimal CLI tools).";
};
config = mkIf cfg.enable (mkMerge [ config = mkIf cfg.enable (mkMerge [
(import ./programs.nix { (import ./programs.nix {

View File

@@ -14,9 +14,11 @@ let
cfg = config.athenix.sw.stateless-kiosk; cfg = config.athenix.sw.stateless-kiosk;
in in
{ {
options.athenix.sw.stateless-kiosk = { options.athenix.sw.stateless-kiosk = mkOption {
type = lib.types.submodule {
options = {
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable stateless kiosk mode for diskless PXE boot systems. Enable stateless kiosk mode for diskless PXE boot systems.
@@ -34,7 +36,7 @@ in
}; };
kioskUrl = mkOption { kioskUrl = mkOption {
type = types.str; type = lib.types.str;
default = "https://ha.factory.uga.edu"; default = "https://ha.factory.uga.edu";
description = '' description = ''
Default URL to display in the kiosk browser. Default URL to display in the kiosk browser.
@@ -45,6 +47,10 @@ in
example = "https://homeassistant.lan:8123/lovelace/dashboard"; example = "https://homeassistant.lan:8123/lovelace/dashboard";
}; };
}; };
};
default = { };
description = "Stateless kiosk configuration (PXE boot, Sway, MAC-based routing).";
};
config = mkIf cfg.enable (mkMerge [ config = mkIf cfg.enable (mkMerge [
(import ./kiosk-browser.nix { (import ./kiosk-browser.nix {

View File

@@ -12,9 +12,11 @@ let
cfg = config.athenix.sw.tablet-kiosk; cfg = config.athenix.sw.tablet-kiosk;
in in
{ {
options.athenix.sw.tablet-kiosk = { options.athenix.sw.tablet-kiosk = mkOption {
type = lib.types.submodule {
options = {
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable tablet kiosk mode with touch-optimized interface. Enable tablet kiosk mode with touch-optimized interface.
@@ -33,7 +35,7 @@ in
}; };
kioskUrl = mkOption { kioskUrl = mkOption {
type = types.str; type = lib.types.str;
default = "https://ha.factory.uga.edu"; default = "https://ha.factory.uga.edu";
description = '' description = ''
URL to display in the kiosk browser on startup. URL to display in the kiosk browser on startup.
@@ -42,6 +44,10 @@ in
example = "https://dashboard.example.com"; example = "https://dashboard.example.com";
}; };
}; };
};
default = { };
description = "Tablet kiosk configuration (Phosh, touch interface).";
};
config = mkIf cfg.enable (mkMerge [ config = mkIf cfg.enable (mkMerge [
(import ./programs.nix { (import ./programs.nix {

View File

@@ -9,10 +9,10 @@ with lib;
{ {
options.athenix.sw.remoteBuild = lib.mkOption { options.athenix.sw.remoteBuild = lib.mkOption {
type = types.submodule { type = lib.types.submodule {
options = { options = {
hosts = mkOption { hosts = mkOption {
type = types.listOf types.str; type = lib.types.listOf lib.types.str;
default = [ "engr-ugaif@192.168.11.133 x86_64-linux" ]; default = [ "engr-ugaif@192.168.11.133 x86_64-linux" ];
description = '' description = ''
List of remote build hosts for system rebuilding. List of remote build hosts for system rebuilding.
@@ -31,7 +31,7 @@ with lib;
}; };
enable = mkOption { enable = mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Whether to enable remote builds for the 'update-system' command. Whether to enable remote builds for the 'update-system' command.