diff --git a/.gitignore b/.gitignore index bf1867608..c08a7a6c5 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,5 @@ tags # Ignore result ref +.env +.env.local diff --git a/home-manager/programs/fish/default.nix b/home-manager/programs/fish/default.nix index 6463680ab..1e3f6d2b1 100644 --- a/home-manager/programs/fish/default.nix +++ b/home-manager/programs/fish/default.nix @@ -13,7 +13,7 @@ fish_add_path -p /etc/profiles/per-user/${config.home.username}/bin ''; interactiveShellInit = '' - # disable fish greeting + __hm_load_env_file set fish_greeting set fish_theme dracula fish_add_path -p ~/.nix-profile/bin diff --git a/home-manager/programs/fish/functions/__hm_load_env_file.fish b/home-manager/programs/fish/functions/__hm_load_env_file.fish new file mode 100644 index 000000000..dc4f6cc5f --- /dev/null +++ b/home-manager/programs/fish/functions/__hm_load_env_file.fish @@ -0,0 +1,46 @@ +function __hm_load_env_file --description 'Load environment variables from .env' + set -l candidate_paths + if set -q DOTFILES_ENV_FILE + set -a candidate_paths $DOTFILES_ENV_FILE + end + set -a candidate_paths $HOME/dotfiles/.env $HOME/.env + + set -l env_file + for candidate in $candidate_paths + if test -f $candidate + set env_file $candidate + break + end + end + + if test -z "$env_file" + return + end + + while read -l line + set -l trimmed (string trim $line) + if test -z "$trimmed" + continue + end + if string match -qr '^#' -- $trimmed + continue + end + + set trimmed (string replace -r '^export\\s+' '' -- $trimmed) + set -l parts (string split -m2 '=' -- $trimmed) + if test (count $parts) -lt 2 + continue + end + + set -l key (string trim $parts[1]) + set -l value (string trim $parts[2]) + + if string match -qr "^'.*'\z" -- $value + set value (string trim --chars "'" -- $value) + else if string match -qr '^".*"$' -- $value + set value (string trim --chars '"' -- $value) + end + + set -gx $key $value + end < $env_file +end diff --git a/rules b/rules index b140aa578..bf5e1f9d9 160000 --- a/rules +++ b/rules @@ -1 +1 @@ -Subproject commit b140aa578f4f84e3c6cabca7f6fa63d2d2685f3c +Subproject commit bf5e1f9d9a505a57b15f80945d105e992b77a9f6