Directories¶
Directories is the shared path-resolution helper in Nalix.Common.Environment.
Source mapping¶
src/Nalix.Common/Environment/Directories.Lazy.cssrc/Nalix.Common/Environment/Directories.Properties.cssrc/Nalix.Common/Environment/Directories.PublicMethods.cssrc/Nalix.Common/Environment/Directories.UnixDirPerms.cs
What it does¶
- resolves standard runtime directories for data, logs, config, storage, database, cache, uploads, backups, and temp files
- supports environment-variable overrides
- detects container environments
- creates directories lazily on first access
- hardens permissions depending on platform
- exposes helper methods for building safe child paths
Main properties¶
Common entry points:
BaseAssetsDirectoryLogsDirectoryDataDirectoryConfigurationDirectoryTemporaryDirectoryStorageDirectoryDatabaseDirectoryCacheDirectoryUploadsDirectoryBackupsDirectoryIsRunningInContainer
Resolution behavior¶
The current implementation resolves paths in this order:
- internal base-path override for tests
- explicit environment variable override
- container defaults such as
/data,/logs,/config,/storage,/db - OS-specific fallback
Typical environment variables:
NALIX_BASE_PATHNALIX_DATA_PATHNALIX_LOGS_PATHNALIX_CONFIG_PATHNALIX_STORAGE_PATHNALIX_DB_PATHNALIX_TEMP_PATH
Container and platform behavior¶
- on Windows, the base fallback is under
%ProgramData%\Nalix - on Unix-like systems, the base fallback is under
$XDG_DATA_HOMEor~/.local/share/Nalix - in containers, the helper prefers well-known mounted directories such as
/dataand/config
Default config locations
Windows
C:\ProgramData\Nalix\config\default.ini
Linux / macOS
~/.local/share/Nalix/config/default.ini
Docker / Container
/config/default.ini
Public helper methods¶
Useful methods include:
CreateSubdirectory(...)CreateTimestampedDirectory(...)GetFilePath(...)GetTempFilePath(...)GetLogFilePath(...)GetConfigFilePath(...)GetStorageFilePath(...)GetDatabaseFilePath(...)DeleteOldFiles(...)EnumerateFiles(...)CalculateDirectorySize(...)CreateDateDirectory(...)CreateHierarchicalDateDirectory(...)EnsureShardedPath(...)CanAccessAllDirectories()
Event hooks¶
Directories also lets you subscribe to directory-creation events:
Safety notes¶
- child paths are built through a safe combine routine that rejects path traversal outside the base directory
- directory creation is guarded by a lock for thread-safe first access
- Unix permissions are hardened according to directory purpose
Typical usage¶
string configFile = Directories.GetConfigFilePath("default.ini");
string logFile = Directories.GetLogFilePath("server.log");
string uploads = Directories.CreateSubdirectory(Directories.DataDirectory, "imports");
Example: Docker Compose¶
Run Nalix with mounted config and persistent storage.
services:
nalix:
image: your-image
ports:
- "57206:57206"
volumes:
- ./config:/config
- ./data:/data
- ./logs:/logs
environment:
- NALIX_CONFIG_PATH=/config
- NALIX_DATA_PATH=/data
- NALIX_LOGS_PATH=/logs