Fast, reproducible, and concurrent development environment and process manager
grind
incorporates ideas from procfiles, makefiles, and uses the nix package
manager to create a development environment that is reproducible and lightweight.
It was created out of a desire for something with the reproducibility of docker
without the resources. nix
satisfies a lot of this however it is an incredibly
complex tool that is not always easy to setup. It also does not provide an easy
way to run multiple processes at the same time, like foreman.
grind
requires a few things to run properly.
- Linux or MacOS (Windows is not supported by nix)
- nix package manager
sh <(curl -L https://nixos.org/nix/install) --daemon
To get started quickly, run grind init
in your project. Once your project has
a grind.yml
file in it, you will need to define services and the dependencies
that they require. You can find out more on how to define these in the
grind.yml Spec documentation. Once you have defined these,
simply run grind run
to concurrently run any services that you have defined
in a nix-shell
. Any tasks that are defined will be outputted in the help usage
as well and can be run with grind [task-name]
. Run grind help
to see the
detailed output.
- Why grind:
grind
stands for GRind Is Not Docker. Named so because I wanted a tool that was a lot more light weight for development, and did not kill my battery. - Why tho?: Because I also wanted to automate some things I use nix for and a few other tools all into one.
- Is this true nix?: No honestly it is a misuse of nix really. I know this is not how you're supposed to use it, but I find this a lot more usable and straight forward.