about summary refs log tree commit diff stats
path: root/home-manager
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--home-manager/soispha/config/lf/commands/default.nix4
-rwxr-xr-xhome-manager/soispha/config/lf/commands/scripts/go_project_root13
-rw-r--r--home-manager/soispha/config/lf/keybindings/default.nix2
3 files changed, 18 insertions, 1 deletions
diff --git a/home-manager/soispha/config/lf/commands/default.nix b/home-manager/soispha/config/lf/commands/default.nix
index a915a21c..80d20ca8 100644
--- a/home-manager/soispha/config/lf/commands/default.nix
+++ b/home-manager/soispha/config/lf/commands/default.nix
@@ -172,6 +172,10 @@ in {
     file = ./scripts/open;
     dependencies = builtins.attrValues {inherit (pkgs) file xdg-utils;};
   };
+  go_project_base_directory = async {
+    file = ./scripts/go_project_root;
+    dependencies = [];
+  };
   open_config = shell {
     file = ./scripts/open_config;
     dependencies = builtins.attrValues {
diff --git a/home-manager/soispha/config/lf/commands/scripts/go_project_root b/home-manager/soispha/config/lf/commands/scripts/go_project_root
new file mode 100755
index 00000000..ce4081f3
--- /dev/null
+++ b/home-manager/soispha/config/lf/commands/scripts/go_project_root
@@ -0,0 +1,13 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="1.1.4" . %SHELL_LIBRARY_PATH
+
+flake_base_dir="$(search_flake_base_dir)";
+if [ "$flake_base_dir" ]; then
+    cd "$flake_base_dir" || die "Bug: No base dir ($flake_base_dir)"
+else
+    die "Unable to locate base dir";
+fi
+
+# vim: ft=sh
diff --git a/home-manager/soispha/config/lf/keybindings/default.nix b/home-manager/soispha/config/lf/keybindings/default.nix
index 1e7712e0..ab34d7d4 100644
--- a/home-manager/soispha/config/lf/keybindings/default.nix
+++ b/home-manager/soispha/config/lf/keybindings/default.nix
@@ -64,7 +64,7 @@
   bg = "set_wall_paper";
   o = "open_config";
   r = "rename";
-  H = "top";
+  H = "go_project_base_directory";
   L = "bottom";
   R = "reload";
   C = "clear";