34 lines
988 B
Bash
34 lines
988 B
Bash
if declare -f use_flake >/dev/null; then
|
|
__dotfiles_use_flake_definition="$(declare -f use_flake)"
|
|
eval "${__dotfiles_use_flake_definition/use_flake/__dotfiles_nix_direnv_use_flake}"
|
|
unset __dotfiles_use_flake_definition
|
|
|
|
use_flake() {
|
|
local flake_expr="${1:-.}"
|
|
|
|
if [[ "$flake_expr" == //* ]]; then
|
|
local git_root
|
|
if ! git_root="$(git rev-parse --show-toplevel 2>/dev/null)"; then
|
|
log_error 'use flake // requires a Git repository'
|
|
return 1
|
|
fi
|
|
|
|
local flake_suffix="${flake_expr#//}"
|
|
if [[ -n "$flake_suffix" && "$flake_suffix" != \#* && "$flake_suffix" != /* ]]; then
|
|
flake_expr="path:${git_root}/${flake_suffix}"
|
|
else
|
|
flake_expr="path:${git_root}${flake_suffix}"
|
|
fi
|
|
|
|
shift
|
|
__dotfiles_nix_direnv_use_flake "$flake_expr" "$@"
|
|
return
|
|
fi
|
|
|
|
__dotfiles_nix_direnv_use_flake "$@"
|
|
}
|
|
else
|
|
log_error 'nix-direnv must define use_flake before the // wrapper loads'
|
|
return 1
|
|
fi
|