basic exteral system module
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
result
|
||||
result-*
|
||||
.direnv/
|
||||
86
README.md
Normal file
86
README.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# USDA Dashboard System Configuration
|
||||
|
||||
External NixOS module configuration for the usda-dash LXC container.
|
||||
|
||||
## Overview
|
||||
|
||||
This repository contains the system configuration for the USDA Dashboard, managed as an external module for the nixos-systems fleet.
|
||||
|
||||
## Usage
|
||||
|
||||
### From nixos-systems inventory.nix
|
||||
|
||||
Replace the inline configuration with this external module:
|
||||
|
||||
```nix
|
||||
nix-lxc = {
|
||||
devices = {
|
||||
"usda-dash" = builtins.fetchGit {
|
||||
url = "https://github.com/UGA-Innovation-Factory/usda-dash-config";
|
||||
rev = "abc123..."; # Commit hash for reproducibility
|
||||
};
|
||||
};
|
||||
overrides = {
|
||||
ugaif.host.useHostPrefix = false;
|
||||
extraUsers = [ "sv22900" "hdh20267" ]; # Users remain in inventory
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
### Local Development
|
||||
|
||||
For testing changes locally before pushing:
|
||||
|
||||
```nix
|
||||
nix-lxc = {
|
||||
devices = {
|
||||
"usda-dash" = /path/to/local/usda-dash-config;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
## Configuration Structure
|
||||
|
||||
```
|
||||
usda-dash-config/
|
||||
├── default.nix # Main module configuration
|
||||
├── README.md # This file
|
||||
└── services/ # Optional: Additional service modules
|
||||
```
|
||||
|
||||
## Module Contents
|
||||
|
||||
The `default.nix` module includes:
|
||||
- Base system packages
|
||||
- SSH configuration
|
||||
- Service configurations (nginx, postgresql, etc.)
|
||||
- Firewall rules
|
||||
- Dashboard-specific settings
|
||||
|
||||
## Integration
|
||||
|
||||
This module:
|
||||
- Receives the same flake inputs as nixos-systems (nixpkgs, home-manager, etc.)
|
||||
- Can use ugaif.* options from the host type module
|
||||
- Is merged with inventory.nix overrides and extraUsers
|
||||
- Works with all build methods (LXC, Proxmox, ISO)
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. Make changes to `default.nix`
|
||||
2. Test locally by pointing inventory.nix to local path
|
||||
3. Build: `nix build .#nixosConfigurations.usda-dash.config.system.build.toplevel`
|
||||
4. Commit and push changes
|
||||
5. Update inventory.nix with new commit hash
|
||||
|
||||
## Deployment
|
||||
|
||||
After updating the configuration:
|
||||
|
||||
```bash
|
||||
cd /path/to/nixos-systems
|
||||
# Update the rev in inventory.nix
|
||||
nix flake lock --update-input usda-dash-config # If using flake input
|
||||
# Or just update the rev in the fetchGit call
|
||||
./deploy usda-dash
|
||||
```
|
||||
61
default.nix
Normal file
61
default.nix
Normal file
@@ -0,0 +1,61 @@
|
||||
{ inputs, ... }:
|
||||
|
||||
# ============================================================================
|
||||
# USDA Dashboard External System Module
|
||||
# ============================================================================
|
||||
# External system configuration for usda-dash
|
||||
# This module can be referenced from nixos-systems/inventory.nix using:
|
||||
#
|
||||
# nix-lxc = {
|
||||
# devices = {
|
||||
# "usda-dash" = builtins.fetchGit {
|
||||
# url = "https://github.com/UGA-Innovation-Factory/usda-dash-config";
|
||||
# rev = "commit-hash";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
# ========== Module Configuration ==========
|
||||
config = {
|
||||
# System packages specific to usda-dash
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Add any dashboard-specific tools here
|
||||
git
|
||||
vim
|
||||
htop
|
||||
curl
|
||||
wget
|
||||
];
|
||||
|
||||
# Enable SSH for remote access
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
};
|
||||
};
|
||||
|
||||
# Configure users (these will be added via inventory.nix extraUsers)
|
||||
# ugaif.users.sv22900.enable = true;
|
||||
# ugaif.users.hdh20267.enable = true;
|
||||
|
||||
# Dashboard-specific services could go here
|
||||
# Example:
|
||||
# services.nginx.enable = true;
|
||||
# services.postgresql.enable = true;
|
||||
|
||||
# Firewall configuration
|
||||
# networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
|
||||
# Any other usda-dash specific configuration
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user