devenv environments in the Omarchy shell, on the bar and on a key

devenv environments for the Omarchy shell on nixarchy. This plugin puts every project you have on the bar and behind Super+Alt+E. A new one, in any of seventeen stacks, is a form away.

Creating a project from the keyboard: c, a name, a template, enter. The project is listed a moment later, and enter opens devenv shell in it.

Who it is for

You use devenv: a devenv.nix per project, with its languages, tools, services and processes pinned by a lock. You have a dozen of these across your source folders, and you would rather press a key than remember which one is where, which is allowed, and which has a database running.

The problem

devenv is a command line, one project at a time:

cd ~/Source/GitHub/api && devenv shell       # which folder was it?
devenv up -d                                 # is it already running?
devenv processes down
devenv update
devenv allow                                 # or was it revoke?

On nixarchy it was also split in two. Language presets lived inside nixarchy (nixarchy dev init python), so a new template meant a nixarchy release. The cloud templates lived in their own repository, and there was no Java, Kotlin, .NET or mobile template anywhere. Nothing listed the projects you had.

What it does

The full-screen menu listing demo projects with their folder, template and state
The menu: allowed projects first, then the most recently edited. A filled dot means it activates on cd. The row under the cursor says whether its processes are running.
The create form with the template list open
The create form. Templates are grouped, and typing filters them.
The create form with the cloud template and provider checkboxes
Cloud projects: tick one provider or several.

Twenty-seven templates on x86_64

The Android template is x86_64-only, so aarch64 shows twenty-six.

Group Templates
Languages Node.js, React, TypeScript, Python, Go, Rust, Java (Gradle), Java (Maven), Kotlin, .NET, PHP, Ruby
Web Frontend web, Backend web
Data & ML Machine learning (uv, CUDA/ROCm), Jupyter
AI Local AI, AI providers
Mobile Flutter, Android (x86_64)
Cloud cloud-projects-templates: AWS, Azure, GCP, OCI, Kubernetes, Cloudflare, Hetzner, DigitalOcean
Omarchy Omarchy plugin starter
NixOS NixOS configuration starter
Yours any folder in ~/.config/nixarchy-devenv/templates/

Language templates are a handful of devenv option lines, while the Omarchy and NixOS starters create small independent project trees. There is nothing of nixarchy’s in a generated project, and nothing a teammate without nixarchy cannot read. Before a release, every template is scaffolded and evaluated against a real devenv.

How-to guides: AI projects, Omarchy plugins and NixOS configurations, cloud infrastructure, and encrypted secrets.

Removing, carefully

The removal chooser with four tiers, the cursor on Revoke
x starts on the choice that deletes nothing. .devenv/state, where a database keeps its data, goes only if you ask for it. The folder goes only if you type its name.

The command that deletes checks everything again right before it acts. It refuses:

Bound environments

A directory bound with devenv --from <source> allow has an environment but no devenv.nix of its own: its configuration lives somewhere else. It is in the list anyway, reading from <source> where a template would be.

demo-bound has no devenv.nix; it is bound to demo-shared. x offers revoke only. enter opens its shell, and hello answers from demo-shared's configuration. Revoking it from the menu forgets the binding, and the row leaves the list.
The menu listing demo projects, demo-bound first, reading from path to demo-shared, with no edit button
The bound row has no edit button: there is no devenv.nix here to edit.
The removal chooser for demo-bound, with Revoke as its only choice
Nothing to delete, so one choice. Revoke says what else it forgets.

How it works

The plugin is a Quickshell QML surface. All of its logic is in one tested JavaScript file, and it never touches a project directory itself. A small command, nixarchy-devenv, does the listing, creating, status and removal, and answers in JSON. You can use the same command in a terminal, and on nixarchy it is nixarchy dev init.

Set it up

On nixarchy it is on by default. Anywhere else with Nix:

inputs.nixarchy-devenv.url = "github:olafkfreund/nixarchy-devenv";

The flake has three outputs: packages.<system>.cli (the command), packages.<system>.plugin (the plugin folder) and homeManagerModules.default (the key). Without Nix:

$ omarchy plugin add https://github.com/olafkfreund/nixarchy-devenv

The manual has the rest: requirements, every key, your own templates, settings and troubleshooting.