rcgit

/ nixos

Commit 426b868b

SHA 426b868b168d0fbad72405a474b008022c0a16d4
Author Petri Hienonen <petri.hienonen at gmail dot com>
Author Date 2025-12-01 12:54 +0200
Committer Petri Hienonen <petri.hienonen at gmail dot com>
Commit Date 2025-12-01 14:23 +0200
Parent(s) e736ed88f4b9 (diff)
Tree 25d7663302c3

patch snapshot

Remove termfilechooser as it causes problems
File + - Graph
M home/default.nix +68 -19
1 file(s) changed, 68 insertions(+), 19 deletions(-)

home/default.nix

diff --git a/home/default.nix b/home/default.nix
index 48d0e8b..083b428 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -163,9 +163,12 @@ in
       enableNushellIntegration = true;
       enableFishIntegration = true;
       settings = {
-        manager = {
+        mgr = {
           show_hidden = true;
           show_symlink = true;
+          sort_by = "mtime";
+          sort_dir_first = true;
+          sort_reverse = true;
         };
         preview = {
           image_filter = "lanczos3";
@@ -215,6 +218,9 @@ in
     pistol.enable = true;
     ghostty = {
       enable = true;
+      systemd = {
+        enable = true;
+      };
       installVimSyntax = true;
       enableFishIntegration = true;
       settings = {
@@ -365,6 +371,7 @@ in
       OPENAI_API_KEY = "$(${pkgs.coreutils}/bin/cat ${config.age.secrets.openai_auth_token.path})";
       SHIORI_PASSWORD = "$(${pkgs.coreutils}/bin/cat ${config.age.secrets.shiori_password.path})";
       UNSPLASH_ACCESS_KEY = "$(${pkgs.coreutils}/bin/cat ${config.age.secrets.unsplash_access_key.path})";
+      TERMCMD = "${pkgs.ghostty}/bin/ghostty";
     };
 
     pointerCursor = {
@@ -390,7 +397,6 @@ in
       tenere # llm tui
       ticker # stock ticker
       wthrr # weather forecast from openmeteo
-      yazi # file manager
 
       # gui
       bitwarden-desktop # password mananger
@@ -508,11 +514,11 @@ in
     autostart.enable = true;
     portal = {
       enable = true;
-      xdgOpenUsePortal = true;
       config.common = {
         default = [ "*" ];
         "org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
       };
+      xdgOpenUsePortal = true;
       extraPortals = with pkgs; [
         xdg-desktop-portal-wlr
         xdg-desktop-portal-termfilechooser
@@ -596,25 +602,68 @@ in
     };
   };
 
-  xdg.configFile."xdg-desktop-portal-termfilechooser/config".text =
-    let
-      launcherDeps = pkgs.buildEnv {
-        name = "yazi-launcher-dependencies";
-        paths = with pkgs; [
-          coreutils
-          yazi
-          gnused
-          bashInteractive
-        ];
-      };
-    in
-    ''
+  xdg.configFile."xdg-desktop-portal-termfilechooser/config" = {
+    force = true;
+    text = ''
       [filechooser]
-      env=PATH='${launcherDeps}/bin'
-      env=TERMCMD='${pkgs.ghostty}/bin/ghostty'
-      cmd='${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh'
+      cmd=yazi-wrapper.sh
+      open_mode=suggested
+      save_mode=last
       default_dir=$HOME/Downloads
     '';
+  };
+
+  xdg.configFile."xdg-desktop-portal-termfilechooser/yazi-wrapper.sh" = {
+    force = true;
+    executable = true;
+    text = ''
+      #!/usr/bin/env sh
+      # This wrapper script is invoked by xdg-desktop-portal-termfilechooser.
+      #
+      # For more information about input/output arguments read `xdg-desktop-portal-termfilechooser(5)`
+
+      set -e
+
+      if [ "$6" -ge 4 ]; then
+        set -x
+      fi
+
+      multiple="$1"
+      directory="$2"
+      save="$3"
+      path="$4"
+      out="$5"
+
+      # Build yazi arguments
+      yazi_args=""
+      if [ "$save" = "1" ]; then
+        # save a file
+        yazi_args="--chooser-file=$out $path"
+      elif [ "$directory" = "1" ]; then
+        # upload files from a directory
+        yazi_args="--chooser-file=$out --cwd-file=$out.1 $path"
+      elif [ "$multiple" = "1" ]; then
+        # upload multiple files
+        yazi_args="--chooser-file=$out $path"
+      else
+        # upload only 1 file
+        yazi_args="--chooser-file=$out $path"
+      fi
+
+      # Execute ghostty with yazi
+      ${pkgs.ghostty}/bin/ghostty -e ${pkgs.yazi}/bin/yazi $yazi_args
+
+      # Handle directory case output
+      if [ "$directory" = "1" ]; then
+        if [ ! -s "$out" ] && [ -s "$out.1" ]; then
+          ${pkgs.coreutils}/bin/cat "$out.1" > "$out"
+          rm -f "$out.1"
+        else
+          rm -f "$out.1"
+        fi
+      fi
+    '';
+  };
 
   systemd.user.services.bt-notify = {
     Unit = {