Back to skills
SkillHub ClubShip Full StackFull Stack
flox
Reproducible development environments powered by Nix.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Stars
9
Hot score
84
Updated
March 19, 2026
Overall rating
C3.6
Composite score
3.6
Best-practice grade
C67.9
Install command
npx @skill-hub/cli install plurigrid-asi-flox
Repository
plurigrid/asi
Skill path: skills/flox
Reproducible development environments powered by Nix.
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: plurigrid.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install flox into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/plurigrid/asi before adding flox to shared team environments
- Use flox for development workflows
Works across
Claude CodeCodex CLIGemini CLIOpenCode
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: flox
description: Reproducible development environments powered by Nix.
version: 1.0.0
---
# flox
Reproducible development environments powered by Nix.
**Repository**: https://github.com/flox/flox
**Documentation**: https://flox.dev/docs
**FloxHub**: https://hub.flox.dev
---
## Overview
Flox provides declarative, reproducible development environments using Nix as the package backend. Environments are defined in `manifest.toml` and can be shared via FloxHub.
```
.flox/
├── env/
│ └── manifest.toml # Environment definition
├── env.json # Environment metadata
└── env.lock # Lockfile
```
---
## Installation
```bash
# macOS
brew install flox/flox/flox
# Linux
curl -fsSL https://downloads.flox.dev/by-env/stable/install | bash
```
---
## CLI Commands
### Environment Management
```bash
flox init # Create new environment
flox init -n myenv # Named environment
flox init --auto-setup # Auto-detect languages
flox activate # Enter environment
flox activate -d ./path # Activate in directory
flox activate -r user/env # Activate remote environment
flox edit # Edit manifest.toml
flox edit -n newname # Rename environment
flox delete # Delete environment
```
### Package Management
```bash
flox search ripgrep # Search packages
flox show ripgrep # Package details
flox install ripgrep # Install package
flox uninstall ripgrep # Remove package
flox list # List installed packages
flox upgrade # Upgrade packages
flox update # Update catalog
```
### Sharing (FloxHub)
```bash
flox auth login # OAuth2 login
flox auth logout # Remove token
flox auth status # Check login status
flox push # Push to FloxHub
flox push --force # Overwrite remote
flox pull user/env # Pull from FloxHub
flox pull --force # Overwrite local
flox envs # List environments
```
### Services
```bash
flox services start # Start all services
flox services start db # Start specific service
flox services stop # Stop all services
flox services restart # Restart services
flox services status # Check service status
flox services logs db # View logs
```
### Containerization
```bash
flox containerize # Create container image
flox containerize -f out.tar # Output to file
flox containerize | docker load # Pipe to Docker
```
---
## manifest.toml
Complete manifest reference:
```toml
# ═══════════════════════════════════════════════════════════════════
# VERSION
# ═══════════════════════════════════════════════════════════════════
version = 1
# ═══════════════════════════════════════════════════════════════════
# INSTALL - Packages to install
# ═══════════════════════════════════════════════════════════════════
[install]
ripgrep.pkg-path = "ripgrep"
nodejs.pkg-path = "nodejs"
python.pkg-path = "python312"
pip.pkg-path = "python312Packages.pip"
# With version constraints
jq.pkg-path = "jq"
jq.version = "^1.7"
# ═══════════════════════════════════════════════════════════════════
# VARS - Environment variables
# ═══════════════════════════════════════════════════════════════════
[vars]
DATABASE_URL = "postgres://localhost:5432/mydb"
NODE_ENV = "development"
GAY_SEED = "1069"
# ═══════════════════════════════════════════════════════════════════
# HOOK - Scripts run on activation
# ═══════════════════════════════════════════════════════════════════
[hook]
on-activate = """
echo "Activating $FLOX_ENV_DESCRIPTION..."
# Create Python venv
if [ ! -d .venv ]; then
python -m venv .venv
fi
# Export dynamic variables
export VENV_DIR="$PWD/.venv"
# Start background processes
eval "$(ssh-agent)"
"""
# ═══════════════════════════════════════════════════════════════════
# PROFILE - Shell-specific scripts
# ═══════════════════════════════════════════════════════════════════
[profile]
common = """
echo "Welcome to the environment"
"""
bash = """
source .venv/bin/activate
alias ll="ls -la"
set -o vi
"""
zsh = """
source .venv/bin/activate
alias ll="ls -la"
bindkey -v
"""
fish = """
source .venv/bin/activate.fish
alias ll="ls -la"
"""
# ═══════════════════════════════════════════════════════════════════
# SERVICES - Background services
# ═══════════════════════════════════════════════════════════════════
[services.postgres]
command = "postgres -D $PGDATA"
vars.PGDATA = "$FLOX_ENV_CACHE/pgdata"
vars.PGPORT = "5432"
[services.redis]
command = "redis-server"
vars.REDIS_PORT = "6379"
[services.api]
command = "npm run dev"
is-daemon = false
[services.worker]
command = "./worker.sh"
is-daemon = true
shutdown.command = "pkill -f worker.sh"
# ═══════════════════════════════════════════════════════════════════
# OPTIONS - Environment behavior
# ═══════════════════════════════════════════════════════════════════
[options]
systems = ["aarch64-darwin", "x86_64-linux"]
cuda-detection = false
[options.allow]
broken = false
unfree = true
licenses = ["MIT", "Apache-2.0"]
# ═══════════════════════════════════════════════════════════════════
# INCLUDE - Compose with other environments
# ═══════════════════════════════════════════════════════════════════
[[include.environments]]
# Remote environment from FloxHub
name = "bmorphism/effective-topos"
[[include.environments]]
# Local environment
dir = "../shared-tools"
# ═══════════════════════════════════════════════════════════════════
# CONTAINERIZE - Container image config
# ═══════════════════════════════════════════════════════════════════
[containerize.config]
cmd = ["/bin/bash", "-c", "flox activate -- npm start"]
exposed-ports = ["3000/tcp", "5432/tcp"]
```
---
## Environment Types
| Type | Location | Remote Sync | Use Case |
|------|----------|-------------|----------|
| **PathEnvironment** | Local `.flox/` | No | Personal development |
| **ManagedEnvironment** | Local + FloxHub | Yes | Team collaboration |
| **RemoteEnvironment** | FloxHub only | Read-only | Quick access |
---
## FloxHub Workflow
### Push to FloxHub
```bash
# First time - creates managed environment
flox push
# Subsequent pushes sync changes
flox edit
flox push
# Force overwrite remote
flox push --force
```
### Pull from FloxHub
```bash
# Clone remote environment
flox pull bmorphism/effective-topos
# Update existing managed environment
flox pull
# Force overwrite local
flox pull --force
# Copy without remote link
flox pull bmorphism/effective-topos --copy
```
### Activate Remote
```bash
# Temporary activation (no local clone)
flox activate -r bmorphism/effective-topos
```
---
## Services
Services use `process-compose` as the backend orchestrator.
### Service Descriptor Options
| Option | Type | Description |
|--------|------|-------------|
| `command` | String | Bash command to start service |
| `vars` | Map | Service-specific environment variables |
| `is-daemon` | Bool | Service spawns background process |
| `shutdown.command` | String | Command to stop service (required if is-daemon) |
| `systems` | List | Compatible systems |
### Service Lifecycle
```bash
# Start all services
flox services start
# Check status
flox services status
# NAME STATUS PID
# postgres Running 12345
# redis Running 12346
# api Stopped -
# Stop specific service
flox services stop postgres
# Restart with new config
flox edit # modify manifest
flox services restart
```
---
## Environment Composition
Include other environments for modularity:
```toml
[[include.environments]]
name = "bmorphism/effective-topos" # Remote
[[include.environments]]
dir = "../base-tools" # Local
[[include.environments]]
name = "company/shared-config"
```
### Merge Priority (lowest to highest)
1. First included environment
2. Subsequent included environments
3. Current manifest (highest priority)
### Merge Behavior
| Section | Behavior |
|---------|----------|
| `[install]` | Overwrite by ID |
| `[vars]` | Overwrite by key |
| `[hook]` | Append (lower → higher) |
| `[profile]` | Append (lower → higher) |
| `[services]` | Overwrite by name |
| `[options]` | Deep merge |
---
## Integration with Music-Topos
### FloxHub Publications
| Environment | Contents |
|-------------|----------|
| `bmorphism/effective-topos` | 606 man pages, 97 info manuals, guile, ghc, cargo |
| `bmorphism/ies` | Babashka, Julia, ffmpeg, tailscale |
### Activation
```bash
# Pull and activate
flox pull bmorphism/effective-topos -d ~/.topos
flox activate -d ~/.topos
# Or remote activation
flox activate -r bmorphism/effective-topos
```
### Gay.jl Integration
```toml
[vars]
GAY_SEED = "1069"
GAY_PORT = "42069"
[services.gay-mcp]
command = "julia --project=@gay -e 'using Gay; Gay.serve_mcp()'"
vars.GAY_INTERVAL = "30"
```
---
## Key Directories
```bash
$FLOX_ENV # Current environment path
$FLOX_ENV_CACHE # Persistent cache (~/.cache/flox/...)
$FLOX_ENV_PROJECT # Project root
$FLOX_ENV_DESCRIPTION # Human-readable name
```
---
## Examples
### Python Development
```toml
[install]
python.pkg-path = "python312"
pip.pkg-path = "python312Packages.pip"
uv.pkg-path = "uv"
[hook]
on-activate = """
if [ ! -d .venv ]; then
uv venv .venv
fi
source .venv/bin/activate
uv pip install -r requirements.txt
"""
```
### Node.js + PostgreSQL
```toml
[install]
nodejs.pkg-path = "nodejs_20"
postgresql.pkg-path = "postgresql_15"
[vars]
DATABASE_URL = "postgres://localhost:5432/dev"
[services.db]
command = "postgres -D $PGDATA -k $FLOX_ENV_CACHE"
vars.PGDATA = "$FLOX_ENV_CACHE/pgdata"
[hook]
on-activate = """
if [ ! -d "$PGDATA" ]; then
initdb -D "$PGDATA"
fi
"""
```
### Rust + Cargo
```toml
[install]
rustc.pkg-path = "rustc"
cargo.pkg-path = "cargo"
rust-analyzer.pkg-path = "rust-analyzer"
[vars]
CARGO_HOME = "$FLOX_ENV_CACHE/cargo"
RUSTUP_HOME = "$FLOX_ENV_CACHE/rustup"
```
---
## References
- GitHub: https://github.com/flox/flox
- Documentation: https://flox.dev/docs
- FloxHub: https://hub.flox.dev
- DeepWiki: https://deepwiki.com/flox/flox
## Scientific Skill Interleaving
This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
### Graph Theory
- **networkx** [○] via bicomodule
- Universal graph hub
### Bibliography References
- `general`: 734 citations in bib.duckdb
## Cat# Integration
This skill maps to **Cat# = Comod(P)** as a bicomodule in the equipment structure:
```
Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ⊗
Kan Role: Adj
Color: #26D826
```
### GF(3) Naturality
The skill participates in triads satisfying:
```
(-1) + (0) + (+1) ≡ 0 (mod 3)
```
This ensures compositional coherence in the Cat# equipment structure.