dotfiles/modules/programs/direnv.nix

38 lines
877 B
Nix

{ config
, lib
, pkgs
, ...
}:
with lib;
let
cfg = config.my.programs.direnv;
in
{
options.my.programs.direnv.enable = mkEnableOption "direnv";
config = mkIf cfg.enable {
home-manager.users.moritz.programs.direnv = {
enable = true;
nix-direnv.enable = true;
stdlib = ''
layout_poetry() {
if [[ ! -f pyproject.toml ]]; then
log_error 'No pyproject.toml found. Use `poetry new` or `poetry init` to create one first.'
exit 2
fi
local VENV=$(poetry env info --path)
if [[ -z $VENV || ! -d $VENV/bin ]]; then
log_error 'No poetry virtual environment found. Use `poetry install` to create one first.'
exit 2
fi
export VIRTUAL_ENV=$VENV
export POETRY_ACTIVE=1
PATH_add "$VENV/bin"
}
'';
};
};
}