Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
bbenne10 committed Apr 22, 2024
1 parent ba0cf20 commit a69341c
Showing 1 changed file with 24 additions and 23 deletions.
47 changes: 24 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,51 +294,52 @@ nix invocation.

#### Tracked files

`nix-direnv` makes a performance trade-off and only considers changes in a
limited number of files when deciding to update its cache.
As a convenience, `nix-direnv` adds common files to direnv's watched file list
automatically.

- for `use nix` this is:
The list of additionally tracked files is as follows:

- for `use nix`:
- `~/.direnvrc`
- `~/.config/direnv/direnvrc`
- `.envrc`,
- A single nix file. In order of preference:
- The file argument to `use nix`
- `shell.nix` if it exists
- `default.nix` if it exists
- `shell.nix` if it exists

- for `use flake` this is:
- for `use flake`:
- `~/.direnvrc`
- `~/.config/direnv/direnvrc`
- `.envrc`
- `flake.nix`
- `flake.lock`
- `devshell.toml` if it exists

To add more files to be checked use `watch_file` like this

```shell
watch_file your-file.nix
use nix # or use flake
```

Or - if you don't mind the overhead (runtime and conceptual) of watching all
nix-files:
Users are free to use direnv's builtin `watch_file` function to track additional
files. `watch_file` must be invoked before either `use flake` or `use nix` to
take effect.

```shell
watch_file $(find . -name "*.nix" -printf '"%p" ')
```
#### Environment Variables

Note that this will re-execute direnv for any nix change, regardless of whether
that change is meaningful for the devShell in use.
nix-direnv sets the following environment variables for user consumption. All
other environment variables are either a product of the underlying nix
invocation or are purely incidental and should not be relied upon.

`watch_file` must be invoked before either `use flake` or `use nix` to take
effect.
- `NIX_DIRENV_DID_FALLBACK`: Set when the current revision of your nix shell or
flake's devShell are invalid and nix-direnv has loaded the last known working
shell.

## General direnv tips

- [Changing where direnv stores its cache](https://github.com/direnv/direnv/wiki/Customizing-cache-location)
- [Quickly setting up direnv in a new nix project](https://github.com/nix-community/nix-direnv/wiki/Shell-integration)
- [Changing where direnv stores its cache][cache_location]
- [Quickly setting up direnv in a new nix project][new_project]
- [Disable the diff notice (requires direnv 2.34+)][hide_diff_notice]: Note that
this goes into direnv's TOML configuration!

[cache_location]: https://github.com/direnv/direnv/wiki/Customizing-cache-location
[new_project]: https://github.com/nix-community/nix-direnv/wiki/Shell-integration
[hide_diff_notice]: https://direnv.net/man/direnv.toml.1.html#codehideenvdiffcode

## Other projects in the field

Expand Down

0 comments on commit a69341c

Please sign in to comment.