No description
Find a file
2024-03-13 15:51:47 -04:00
.github/workflows Add github workflow to proxy tests from sr.ht 2024-01-13 09:32:09 -05:00
bin Format with ocamlformat 2024-01-08 15:40:13 -05:00
lib Format with ocamlformat 2024-01-08 15:40:13 -05:00
tests Enable testing during nix builds 2024-01-11 08:31:52 -05:00
.gitignore Add pre-commit-hooks.nix integration 2024-03-13 15:51:47 -04:00
.ocamlformat Lock ocamlformat version 2024-01-08 14:52:46 -05:00
.pre-commit-config.yaml Add pre-commit-hooks.nix integration 2024-03-13 15:51:47 -04:00
default.nix Enable testing during nix builds 2024-01-11 08:31:52 -05:00
direnvrc Continue moving heavy-lifting into library 2024-01-08 14:59:00 -05:00
dune-project Continue moving heavy-lifting into library 2024-01-08 14:59:00 -05:00
dune-workspace Add tests 2024-01-08 14:59:28 -05:00
flake.lock Add pre-commit-hooks.nix integration 2024-03-13 15:51:47 -04:00
flake.nix Add pre-commit-hooks.nix integration 2024-03-13 15:51:47 -04:00
flake_env.opam Continue moving heavy-lifting into library 2024-01-08 14:59:00 -05:00
Justfile More tests for version.extract_version_number 2024-01-08 15:30:18 -05:00
LICENSE Initial commit 2023-12-21 09:36:09 -05:00
README.md Add note about justfile in readme 2024-01-08 15:43:53 -05:00

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:

watch_file **/*.nix
use flake_env .

Developing

This repo uses just 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.