38 lines
870 B
Nix
38 lines
870 B
Nix
{ config
|
|
, lib
|
|
, ...
|
|
}:
|
|
|
|
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"
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
}
|