flake_env/README.md
2024-01-08 15:43:53 -05:00

54 lines
1.7 KiB
Markdown

# flake_env
Yet another direnv plugin for flakes.
This one is kind of experimental.
## Why not `nix-direnv`?
I am one of the core contributors on nix_direnv, but wanted to try a new approach.
nix-direnv got held up a bit by depending on differing behaviors of external programs not shipped with bash
(or things that *are* shipped with bash, but a differing implementation ended up in front of the bash version in PATH).
This is an attempt to simplify a bit.
I ported the nix-direnv `use_flake` function to ReasonML.
Implementing most things by hand in ReasonML is pretty simple and (more importantly) portable.
This removes *most* of the dependencies besides bash and nix.
The bash that exists is pretty portable between versions, since it only does environment manipulation.
## Installation & Usage
### Installation
These details are evolving.
I'll make sure to update this document when things change.
For now, there is no NixOS, nix-darwin, or home-manager module that points at this tool.
The only thing you can really do is use this repo's flake as an input.
Then you'll probably need to source `${flake_env}/share/flake_env/direnvrc`.
You should be able to do that with:
* `programs.direnv.direnvrcExtra` on NixOS
* `programs.direnv.stdlib` if using home-manager
### Usage
Example `.envrc`:
```sh
watch_file **/*.nix
use flake_env .
```
## Developing
This repo uses [just](https://just.systems/) to manage simple build jobs.
After activating the development environment in the repo, run `just -l` to list tasks.
Please remember to format code before issuing patches.
## Credits
This takes huge inspiration (and literal code-chunks) from nix-direnv.
Thanks to Mic92 for nix-direnv and kingarrrt for their recent contributions.