A flake-parts
module for your Nix devshell scripts
https://community.flake.parts/mission-control
Important
We recommend that you use just over this module. For migration, see this PR. Specifically, you may be interested in just-flake.
Got questions? See #41
To try out mission-control using the example template, start from one of the following ways:
- Run
nix flake init -t github:Platonic-Systems/mission-control
to create a templateflake.nix
file. Runnix develop
on it. - Or, clone this repo and checkout the example. On this directory, run
nix develop --override-input mission-control path:../.
1 (or simplydirenv allow
if you already use direnv) to drop into the Nix shell
The example configures the scripts in Nix as follows:
mission-control/example/flake.nix
Lines 16 to 29 in a562943
Which produces a banner in the devshell like below:
### ️🔨 Welcome to the Nix devshell ###
Available commands:
## Commands
, hello : Say Hello
, ponysay : Cowsay reimplemention for ponies
## Tools
, fmt : Format the Nix files
(Run ',' to display this menu again)
Once you are in the dev shell, you can run any of these scripts prefixed with the wrapper name ,
. For example, , fmt
to format the Nix files.
Note: The scripts will always be run from the project root directory2 regardless of the current working directory. You can disable this behaviour by setting the cdToProjectRoot
option to false
.
These repositories use mission-control
to provide development shell workflow scripts:
- https://github.com/srid/haskell-template
- https://github.com/srid/ema-template
- https://github.com/NiXium-org/NiXium
Footnotes
-
The
--override-input
option is to be used when running from this repository to make sure that we are using the local version ofmission-control
. If you are copying thisflake.nix
to your project (without also copying the outdatedflake.lock
), you can simply runnix develop
. ↩ -
"Project root directory" is determined by traversing the directory up until we find the unique file that exists only at the root. This unique file is
flake.nix
by default, which can be overridden using the flake-root module that this module mandatorily requires; i.e.;flake-root.projectRootFile = "stack.yaml";
↩