
Some checks are pending
🏠 Home Lab CI/CD Pipeline / 🔍 Validate Configuration (push) Waiting to run
🏠 Home Lab CI/CD Pipeline / 🔨 Build Configurations (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 🔒 Security Audit (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 📚 Documentation & Modules (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 🔄 Update Dependencies (push) Waiting to run
🏠 Home Lab CI/CD Pipeline / 🚀 Deploy Configuration (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 📢 Notify Results (push) Blocked by required conditions
∙ ∙ User Accounts: ∙ ✅ geir - Primary user (development, desktop, multimedia) ∙ ✅ sma - Admin user (Diziet Sma, system administration) ∙ ✅ common.nix - Shared user settings and security ∙ ∙ Key Features: ∙ 🔧 Culture character naming (sma = Diziet Sma, SC agent) ∙ 🔒 Security-focused admin account (SSH keys only, passwordless sudo) ∙ 🛠<fe0f> Development-focused primary user (containers, virtualization, creative tools) ∙ 📦 Modern CLI tools and shell enhancements ∙ 🎯 Role-based package selection and group memberships ∙ ∙ Security Model: ∙ - SSH key authentication for admin users ∙ - Separate admin and daily-use accounts ∙ - Principle of least privilege ∙ - No root login allowed ∙ ∙ Integration: ∙ - Container runtime access (podman, incus) ∙ - Virtualization management (libvirt, virt-manager) ∙ - Development workflow (git, editors, languages) ∙ - Desktop environments (GNOME, Cosmic, Sway) ∙ ∙ Ready for machine-specific deployment across home lab infrastructure.
3.9 KiB
3.9 KiB
User Configurations
This directory contains modular user configurations for the home lab infrastructure.
Philosophy
Following the Culture ship naming convention and Emacs org-mode literate programming approach, user configurations are organized to be:
- Modular: Each user has their own configuration module
- Shared: Common settings are in
common.nix
- Character-driven: User names follow Culture character names
- Functional: Focus on practical daily use and system administration
User Accounts
Primary Users
geir
- Primary User Account
- Role: Development, desktop use, daily computing
- Access: Full desktop environments (GNOME, Cosmic, Sway)
- Focus: Development tools, creative applications, multimedia
- Groups: wheel, networkmanager, libvirt, incus-admin, podman, audio, video, render
sma
- System Administrator
- Full Name: Named after Diziet Sma (Special Circumstances agent)
- Role: System administration, security oversight, maintenance
- Access: SSH-only, command-line focused
- Focus: Monitoring, containers, security, infrastructure management
- Groups: wheel, networkmanager, libvirt, incus-admin, podman
- Security: SSH key authentication only, passwordless sudo
Service Accounts (Future)
- Consider adding service-specific users for:
forgejo-admin
: Forgejo administrationmedia-admin
: Jellyfin/media server managementbackup-agent
: Automated backup operations
File Structure
modules/users/
├── common.nix # Shared user settings and packages
├── geir.nix # Primary user configuration
├── sma.nix # Admin user configuration
└── README.md # This documentation
Design Principles
Security
- SSH key-based authentication for admin users
- Principle of least privilege
- Separate admin and daily-use accounts
- No root login allowed
Convenience
- Modern CLI tools and aliases
- Development-focused package selection
- Shell enhancements (zsh, starship, syntax highlighting)
- Container and virtualization integration
Consistency
- Common aliases and environment variables
- Shared shell configuration
- Standardized directory permissions
- Culture-inspired naming convention
Integration Points
With System Configuration
- Desktop environment modules automatically enable GUI applications
- Virtualization modules grant appropriate group memberships
- Network modules configure user network access
With User Configs
- Literate configurations stored in
/home/geir/Home-lab/user_configs/
- Emacs org-mode files for complex configurations
- Automatic tangling of configuration files
- Version control integration
With Services
- User accounts automatically configured for enabled services
- Container runtime access for development users
- Monitoring and administration access for admin users
Usage Examples
Adding a New User
- Create new module file:
modules/users/new-username.nix
- Choose appropriate Culture character name
- Define role-specific packages and groups
- Import in machine configuration
- Document in this README
Modifying User Access
- Edit
extraGroups
for service access - Update
packages
for new tools - Modify shell aliases for workflow improvements
- Adjust sudo rules for administrative access
Security Considerations
- Regular audit of user accounts and permissions
- SSH key rotation schedule
- Monitor sudo usage and administrative actions
- Review group memberships quarterly
Culture Character Reference
- Diziet Sma: Pragmatic SC agent, perfect for system administration
- Cheradenine Zakalwe: Complex SC agent, high-capability operations
- Jernau Morat Gurgeh: Strategic game player, systematic thinking
- Perosteck Balveda: Professional SC agent, reliable operations
Choose character names that reflect the user's role and personality within the home lab infrastructure.