Environment Variables
Manage per-project environment variables without touching your global shell configuration.
Basic Usage
flk env add DATABASE_URL "postgresql://localhost:5432/mydb"
flk env add NODE_ENV "development"
flk env remove DATABASE_URL
flk env list
Profile Targeting
Environment variables are stored per-profile. Use --profile to target a specific one:
flk env add API_URL "http://localhost:3000" --profile backend
flk env list --profile frontend
How It Works
Variables are stored in the envVars block of your profile file (.flk/profiles/<profile>.nix):
envVars = {
DATABASE_URL = "postgresql://localhost:5432/mydb";
NODE_ENV = "development";
};
They are automatically exported when you activate the environment via flk activate, nix develop, or direnv.
Naming Rules
Variable names must follow these rules:
- Start with a letter or underscore
- Contain only letters, numbers, and underscores
- Examples:
DATABASE_URL,MY_VAR,_PRIVATE_KEY - Invalid:
123VAR,my-var,my var
Security Considerations
Warning: Do not store secrets (API keys, passwords, tokens) directly in profile files, especially if your project is version-controlled.
For sensitive values, consider:
- Using direnv with a
.envrc.localfile (add to.gitignore) - Referencing secrets from a secrets manager at runtime
- Using environment-specific tooling outside of flk