feat: Rename project to 'Athenix'

This commit is contained in:
UGA Innovation Factory
2025-12-18 12:07:25 -05:00
committed by Hunter Halloran
parent d97ece898c
commit d205211c7d
39 changed files with 278 additions and 277 deletions

View File

@@ -6,7 +6,7 @@ This repository manages NixOS configurations for the UGA Innovation Factory's fl
This is a **NixOS system configuration repository** that uses:
- **Nix flakes** for dependency management and reproducible builds
- **Custom namespace** (`ugaif.*`) for all Innovation Factory-specific options
- **Custom namespace** (`athenix.*`) for all Innovation Factory-specific options
- **Inventory-based** host generation from `inventory.nix`
- **External module support** for user and system configurations
- **Multiple hardware types**: desktops, laptops, Surface tablets, LXC containers, WSL
@@ -30,18 +30,18 @@ This is a **NixOS system configuration repository** that uses:
- **`templates/`**: Templates for external configurations
### Naming Conventions
- Module options: Use `ugaif.*` namespace for all custom options
- Module options: Use `athenix.*` namespace for all custom options
- Hostnames: `{type}{number}` or `{type}-{name}` (e.g., `nix-laptop1`, `nix-surface-alpha`)
- Hardware types: Prefix with `nix-` (e.g., `nix-desktop`, `nix-laptop`)
- Software types: Use descriptive names (`desktop`, `tablet-kiosk`, `headless`)
## Custom Namespace (`ugaif`)
## Custom Namespace (`athenix`)
All Innovation Factory-specific options MUST use the `ugaif` namespace:
All Innovation Factory-specific options MUST use the `athenix` namespace:
### Host Options (`ugaif.host.*`)
### Host Options (`athenix.host.*`)
```nix
ugaif.host = {
athenix.host = {
filesystem.device = "/dev/sda"; # Boot disk
filesystem.swapSize = "32G"; # Swap size
buildMethods = [ "iso" ]; # Artifact types
@@ -50,9 +50,9 @@ ugaif.host = {
};
```
### Software Options (`ugaif.sw.*`)
### Software Options (`athenix.sw.*`)
```nix
ugaif.sw = {
athenix.sw = {
type = "desktop"; # System type
kioskUrl = "https://..."; # Kiosk browser URL
python.enable = true; # Python tools (pixi, uv)
@@ -64,13 +64,13 @@ ugaif.sw = {
};
```
### User Options (`ugaif.users.*`)
### User Options (`athenix.users.*`)
```nix
ugaif.users = {
athenix.users = {
accounts = { ... }; # User definitions
enabledUsers = [ "root" "engr-ugaif" ]; # Enabled users
};
ugaif.forUser = "username"; # Convenience: enable user + set WSL user
athenix.forUser = "username"; # Convenience: enable user + set WSL user
```
## Development Workflow
@@ -90,8 +90,8 @@ ugaif.forUser = "username"; # Convenience: enable user + set WSL user
### Common Tasks
#### Adding a New User
1. Edit `users.nix` to add user definition under `ugaif.users.accounts`
2. Enable user in `inventory.nix` via `ugaif.users.username.enable = true` or use `ugaif.forUser = "username"`
1. Edit `users.nix` to add user definition under `athenix.users.accounts`
2. Enable user in `inventory.nix` via `athenix.users.username.enable = true` or use `athenix.forUser = "username"`
3. Test: `nix flake check`
#### Adding a New Host
@@ -102,7 +102,7 @@ ugaif.forUser = "username"; # Convenience: enable user + set WSL user
#### Modifying Software Configuration
1. Edit appropriate file in `sw/` directory based on system type
2. For system-wide changes: modify `sw/{type}/programs.nix`
3. For specific hosts: use `ugaif.sw.extraPackages` in `inventory.nix`
3. For specific hosts: use `athenix.sw.extraPackages` in `inventory.nix`
4. Test: `nix flake check`
#### Creating External Modules
@@ -114,7 +114,7 @@ ugaif.forUser = "username"; # Convenience: enable user + set WSL user
## Important Constraints
### What NOT to Do
- **Never** use options outside the `ugaif` namespace for Innovation Factory-specific functionality
- **Never** use options outside the `athenix` namespace for Innovation Factory-specific functionality
- **Never** remove or modify working host configurations unless explicitly requested
- **Never** break existing functionality when adding new features
- **Never** hardcode values that should be configurable
@@ -122,7 +122,7 @@ ugaif.forUser = "username"; # Convenience: enable user + set WSL user
### What to ALWAYS Do
- **Always** run `nix flake check` before finalizing changes
- **Always** use the `ugaif.*` namespace for custom options
- **Always** use the `athenix.*` namespace for custom options
- **Always** preserve existing comment styles and documentation
- **Always** test that configurations build successfully
- **Always** consider impact on existing hosts when making changes
@@ -140,7 +140,7 @@ myuser.external = builtins.fetchGit {
rev = "abc123..."; # Pin to specific commit
};
# The external user.nix file contains BOTH user account options
# (ugaif.users.myuser) AND home-manager configuration
# (athenix.users.myuser) AND home-manager configuration
```
### System Configurations
@@ -184,7 +184,7 @@ nix flake show
```
### Artifact Types
Set via `ugaif.host.buildMethods`:
Set via `athenix.host.buildMethods`:
- `"iso"` - Installer ISO with auto-install
- `"live-iso"` - Live boot ISO without installer
- `"lxc"` - LXC container tarball
@@ -231,7 +231,7 @@ Set via `ugaif.host.buildMethods`:
## Code Review Checklist
When reviewing or generating code:
- [ ] Uses `ugaif.*` namespace for custom options
- [ ] Uses `athenix.*` namespace for custom options
- [ ] Runs `nix flake check` successfully
- [ ] Follows existing code style and formatting
- [ ] Preserves existing functionality