A declarative and reproducible starting point for multi-repo clojure projects.
devenv.sh provides a declarative and reproducible environment.
Devenv will download and prepare few clojure utilities:
Please refer to those projects' documentation for more detailed usage instructions.
To start a new project, feel free to clone this repo first.
.devcontainer.json
is auto-generated from devenv.nix
enabling this repo to be run in VSCode Devcontainer or Github Codespace with calva and nix extensions ready.
There are (at least) 3 different ways of running this project:
Follow devenv getting-started guide to setup nix, devenv, direnv and then run devenv shell
- it will download and prepare all the rest!
When you open this repo in VSCode it should prompt you to run it as Devcontainer.
If it doesn't happen, hit ⇧
⌘
P
on keyboard to Show Command Panel
and choose Dev Containers: Open Folder in Container...
.
This should be enough to get everything up and ready!
If you're viewing this on github.com:
- press
.
on your keyboard (or click here) to view this repo in online editor, - then start it in a codespace:
- hit keyboard shortcut
⇧
⌘
P
toShow Command Panel
- then choose
Codespaces: Continue Working in New Codespace
- hit keyboard shortcut
It should start a new Codespace container and once it's ready you will land in a fully configured and functional clojure dev environment! 🎉
The recommended way of working with this project is to:
- start launchpad (
bb launchpad
orbin/launchpad
) - connect Calva launchpad's REPL via
Calva: Connect to a Running REPL in the Project
(keyboard shortcut:^
⌥
C
+^
⌥
C
) - generate sub-projects from templates via
neil new ...
, - or
git clone
existing repos here to manage them as sub-projects, - then add sub-projects to deps.edn aliases as launchpad suggests,
- try out new dependencies (without reloading the REPL!) via
neil dep add ... --deps-file deps.local.edn
Feel free to play around with different devenv.nix
and launchpad configurations, this repo is just a humble starter.
The world is now your declarative oyster! 🦪