Setup .envrc
Standard provides an extension to the stdlib
via direnv_lib.sh
.
The integrity hash below ensures it is downloaded only once and cached from there on.
#!/bin/sh
# shellcheck disable=SC1090
. "$(fetchurl "https://raw.githubusercontent.com/paisano-nix/direnv/main/lib" "sha256-R3K8Flvbovj4IOvdlWNtQKLMMSQV464WjG9eU29ixHk=")"
use envreload //_automation/devshells/default //_automation/configs
NOTE: In the above code
use std
cells
//std/...
refers to the folder where Cells are grown from. If your folder is e.g.nix
, adapt touse std
nix
//...
and so forth.
It is used to automatically set up file watches on files that could modify the current devshell, discoverable through these or similar logs during loading:
direnv: loading https://raw.githubusercontent.com/divnix/std/...
direnv: using std cells //_automation/devshells:default
direnv: Watching: cells/_automation/devshells.nix
direnv: Watching: cells/_automation/devshells (recursively)
For reference, the above example loads the default
devshell from:
{
inputs,
cell,
}: let
l = nixpkgs.lib // builtins;
inherit (inputs) nixpkgs;
inherit (inputs.cells) std lib;
in
l.mapAttrs (_: lib.dev.mkShell) rec {
default = {...}: {
name = "Standard";
nixago = [
(lib.cfg.conform {data = {inherit (inputs) cells;};})
(lib.cfg.treefmt cell.configs.treefmt)
(lib.cfg.editorconfig cell.configs.editorconfig)
(lib.cfg.just cell.configs.just)
(lib.cfg.githubsettings cell.configs.githubsettings)
lib.cfg.lefthook
lib.cfg.adrgen
(lib.dev.mkNixago cell.configs.cog)
];
commands =
[
{
package = nixpkgs.reuse;
category = "legal";
}
{
package = nixpkgs.delve;
category = "cli-dev";
name = "dlv";
}
{
package = nixpkgs.go;
category = "cli-dev";
}
{
package = nixpkgs.gotools;
category = "cli-dev";
}
{
package = nixpkgs.gopls;
category = "cli-dev";
}
]
++ l.optionals nixpkgs.stdenv.isLinux [
{
package = nixpkgs.golangci-lint;
category = "cli-dev";
}
];
imports = [std.devshellProfiles.default book];
};
book = {...}: {
nixago = [
(lib.cfg.mdbook cell.configs.mdbook)
];
};
checks = {...}: {
name = "checks";
imports = [std.devshellProfiles.default];
commands = [
{
name = "blocktype-data";
command = "cat $(tail -n1 <<< $(std //_tests/data/example:write))";
}
{
name = "blocktype-devshells";
command = "std //_automation/devshell/default:enter -- echo OK";
}
{
name = "blocktype-runnables";
command = "std //std/cli/default:run -- std OK";
}
];
};
}