fix(nix): resolve stdenv deprecation warnings and gemini-cli deprecation

This commit is contained in:
Noah Masur
2026-08-24 20:22:43 -06:00
parent 32989f1758
commit 4ba1ed807c
23 changed files with 48 additions and 43 deletions
+6
View File
@@ -2,6 +2,12 @@
## 2026-08-25 ## 2026-08-25
- Fixed Nix evaluation warnings for `stdenv` deprecation and `gemini-cli`:
- Replaced deprecated `stdenv.isLinux` and `stdenv.isDarwin` checks across module presets and package definitions with `stdenv.hostPlatform.isLinux` and `stdenv.hostPlatform.isDarwin`.
- Replaced deprecated `pkgs.gemini-cli` with `pkgs.antigravity-cli` (and updated binary invocation to `agy`) in `experimental.nix` profile and `daily-summary.nix` launchd service.
## 2026-08-25
- Fixed multi-second hang and permanent typing latency in Fish after exiting TUIs inside Zellij and Ghostty: - Fixed multi-second hang and permanent typing latency in Fish after exiting TUIs inside Zellij and Ghostty:
- Exported `fish_features = "no-query-term"` in `home.sessionVariables` and added `set -gx fish_features no-query-term` to Fish's top-level `shellInit`. Previous attempt (`set -a fish_features no-query-term` in `interactiveShellInit`) set a local variable inside an anonymous initialization function block that went out of scope immediately after startup. Furthermore, Fish reads `fish_features` at binary launch before interactive init functions run. Without `no-query-term` exported prior to Fish startup, Fish attempted terminal feature queries (Primary Device Attributes `DA1` / `\e[?c` and termcap) whenever a TUI (e.g. Neovim, Lazygit, Yazi) exited and returned control to Fish. Zellij drops or delays DA1 response sequences, causing Fish to block on a multi-second stdin timeout, followed by severe input reader desynchronization and typing latency on every subsequent keystroke. - Exported `fish_features = "no-query-term"` in `home.sessionVariables` and added `set -gx fish_features no-query-term` to Fish's top-level `shellInit`. Previous attempt (`set -a fish_features no-query-term` in `interactiveShellInit`) set a local variable inside an anonymous initialization function block that went out of scope immediately after startup. Furthermore, Fish reads `fish_features` at binary launch before interactive init functions run. Without `no-query-term` exported prior to Fish startup, Fish attempted terminal feature queries (Primary Device Attributes `DA1` / `\e[?c` and termcap) whenever a TUI (e.g. Neovim, Lazygit, Yazi) exited and returned control to Fish. Zellij drops or delays DA1 response sequences, causing Fish to block on a multi-second stdin timeout, followed by severe input reader desynchronization and typing latency on every subsequent keystroke.
- Disabled `programs.ghostty.enableFishIntegration` and conditionally sourced Ghostty's shell integration script in `shellInit` only when NOT running inside a multiplexer (`not set -q ZELLIJ` and `not set -q TMUX`). Sourcing Ghostty's shell integration inside Zellij sent duplicate and conflicting OSC 133 prompt markers and DECSCUSR cursor escape sequences to Zellij's PTY parser. - Disabled `programs.ghostty.enableFishIntegration` and conditionally sourced Ghostty's shell integration script in `shellInit` only when NOT running inside a multiplexer (`not set -q ZELLIJ` and `not set -q TMUX`). Sourcing Ghostty's shell integration inside Zellij sent duplicate and conflicting OSC 133 prompt markers and DECSCUSR cursor escape sequences to Zellij's PTY parser.
+1 -1
View File
@@ -1,7 +1,7 @@
# Fix: Volnoti error: 'volnoti' has been removed due to lack of maintenance upstream. # Fix: Volnoti error: 'volnoti' has been removed due to lack of maintenance upstream.
{ pkgs, lib, ... }: { pkgs, lib, ... }:
if !pkgs.stdenv.isLinux then if !pkgs.stdenv.hostPlatform.isLinux then
null null
else else
pkgs.stdenv.mkDerivation { pkgs.stdenv.mkDerivation {
+1 -1
View File
@@ -6,7 +6,7 @@
dotnetCorePackages, dotnetCorePackages,
}: }:
if !stdenv.isLinux then if !stdenv.hostPlatform.isLinux then
null null
else else
buildDotnetModule rec { buildDotnetModule rec {
+1 -1
View File
@@ -3,7 +3,7 @@
# Inspired by https://github.com/cleverca22/nix-tests/blob/master/kexec/justdoit.nix # Inspired by https://github.com/cleverca22/nix-tests/blob/master/kexec/justdoit.nix
# This script will partition and format drives; use at your own risk! # This script will partition and format drives; use at your own risk!
if !pkgs.stdenv.isLinux then if !pkgs.stdenv.hostPlatform.isLinux then
null null
else else
pkgs.writeShellScriptBin "installer" '' pkgs.writeShellScriptBin "installer" ''
+1 -1
View File
@@ -2,7 +2,7 @@
pkgs.writeShellScriptBin "rebuild" '' pkgs.writeShellScriptBin "rebuild" ''
echo ${pkgs.stdenv.hostPlatform.system} echo ${pkgs.stdenv.hostPlatform.system}
SYSTEM=${if pkgs.stdenv.isDarwin then "darwin" else "linux"} SYSTEM=${if pkgs.stdenv.hostPlatform.isDarwin then "darwin" else "linux"}
if [ "$SYSTEM" == "darwin" ]; then if [ "$SYSTEM" == "darwin" ]; then
sudo darwin-rebuild switch --flake ${builtins.toString ../../../../.} sudo darwin-rebuild switch --flake ${builtins.toString ../../../../.}
else else
@@ -23,7 +23,7 @@ in
home.packages = [ home.packages = [
pkgs._1password-cli pkgs._1password-cli
] ]
++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]); ++ (if pkgs.stdenv.hostPlatform.isLinux then [ pkgs._1password-gui ] else [ ]);
# # Firefox extension # # Firefox extension
# programs.firefox.profiles.default.extensions.packages = [ # programs.firefox.profiles.default.extensions.packages = [
@@ -203,13 +203,13 @@ in
}; };
# Used for macOS # Used for macOS
xdg.enable = lib.mkIf pkgs.stdenv.isDarwin true; xdg.enable = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin true;
xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux) { xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux) {
name = "aerc"; name = "aerc";
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} -e aerc %u"; exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} -e aerc %u";
}; };
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux { xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
"${config.xsession.windowManager.i3.config.modifier}+Shift+e" = "${config.xsession.windowManager.i3.config.modifier}+Shift+e" =
let let
terminal = config.nmasur.presets.services.i3.terminal; terminal = config.nmasur.presets.services.i3.terminal;
@@ -14,12 +14,12 @@ in
options.nmasur.presets.programs.calibre.enable = lib.mkEnableOption "Calibre e-book manager"; options.nmasur.presets.programs.calibre.enable = lib.mkEnableOption "Calibre e-book manager";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home.packages = lib.mkIf pkgs.stdenv.isLinux [ pkgs.calibre ]; home.packages = lib.mkIf pkgs.stdenv.hostPlatform.isLinux [ pkgs.calibre ];
home.sessionVariables = { home.sessionVariables = {
CALIBRE_USE_DARK_PALETTE = 1; CALIBRE_USE_DARK_PALETTE = 1;
}; };
home.file.".Brewfile".text = lib.mkIf pkgs.stdenv.isDarwin /* homebrew */ '' home.file.".Brewfile".text = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin /* homebrew */ ''
cask "calibre" # Nix package broken on macOS cask "calibre" # Nix package broken on macOS
''; '';
@@ -18,7 +18,7 @@ in
programs.chawan = { programs.chawan = {
enable = true; enable = true;
settings = { settings = {
external.copy-cmd = if pkgs.stdenv.isLinux then "xclip -selection clipboard -in" else "pbcopy"; external.copy-cmd = if pkgs.stdenv.hostPlatform.isLinux then "xclip -selection clipboard -in" else "pbcopy";
}; };
}; };
@@ -25,7 +25,7 @@ in
enable = true; enable = true;
package = pkgs.firefox; package = pkgs.firefox;
# Use appropriate default path depending on the OS # Use appropriate default path depending on the OS
configPath = if pkgs.stdenv.isDarwin then "Library/Application Support/Firefox" else ".mozilla/firefox"; configPath = if pkgs.stdenv.hostPlatform.isDarwin then "Library/Application Support/Firefox" else ".mozilla/firefox";
profiles.default = { profiles.default = {
id = 0; id = 0;
name = "default"; name = "default";
@@ -57,7 +57,7 @@ in
"app.update.auto" = false; "app.update.auto" = false;
"browser.aboutConfig.showWarning" = false; "browser.aboutConfig.showWarning" = false;
"browser.warnOnQuit" = false; "browser.warnOnQuit" = false;
"browser.quitShortcut.disabled" = if pkgs.stdenv.isLinux then true else false; "browser.quitShortcut.disabled" = if pkgs.stdenv.hostPlatform.isLinux then true else false;
"browser.theme.dark-private-windows" = true; "browser.theme.dark-private-windows" = true;
"browser.toolbars.bookmarks.visibility" = false; "browser.toolbars.bookmarks.visibility" = false;
"browser.startup.page" = 3; # Restore previous session "browser.startup.page" = 3; # Restore previous session
@@ -189,7 +189,7 @@ in
}; };
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux { xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
"${config.xsession.windowManager.i3.config.modifier}+Shift+b" = "exec ${ "${config.xsession.windowManager.i3.config.modifier}+Shift+b" = "exec ${
# Don't name the script `firefox` or it will affect grep # Don't name the script `firefox` or it will affect grep
toString ( toString (
@@ -21,7 +21,7 @@ in
programs.ghostty = { programs.ghostty = {
enable = true; enable = true;
package = if pkgs.stdenv.isDarwin then pkgs.ghostty-bin else pkgs.ghostty; package = if pkgs.stdenv.hostPlatform.isDarwin then pkgs.ghostty-bin else pkgs.ghostty;
enableFishIntegration = false; # Handled conditionally below to avoid conflicts inside Zellij/TMUX enableFishIntegration = false; # Handled conditionally below to avoid conflicts inside Zellij/TMUX
enableBashIntegration = true; enableBashIntegration = true;
@@ -33,8 +33,8 @@ in
macos-titlebar-style = "hidden"; macos-titlebar-style = "hidden";
window-decoration = false; window-decoration = false;
macos-non-native-fullscreen = true; macos-non-native-fullscreen = true;
quit-after-last-window-closed = lib.mkIf pkgs.stdenv.isDarwin true; quit-after-last-window-closed = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin true;
fullscreen = if pkgs.stdenv.isDarwin then true else false; fullscreen = if pkgs.stdenv.hostPlatform.isDarwin then true else false;
keybind = [ keybind = [
"super+t=unbind" # Pass super-t to underlying tool (e.g. zellij tabs) "super+t=unbind" # Pass super-t to underlying tool (e.g. zellij tabs)
"super+shift+]=unbind" "super+shift+]=unbind"
@@ -723,7 +723,7 @@ in
# Create a desktop option for launching Helix from a file manager # Create a desktop option for launching Helix from a file manager
# (Requires launching the terminal and then executing Helix) # (Requires launching the terminal and then executing Helix)
xdg.desktopEntries.helix = xdg.desktopEntries.helix =
lib.mkIf (pkgs.stdenv.isLinux && config.nmasur.presets.services.i3.enable) lib.mkIf (pkgs.stdenv.hostPlatform.isLinux && config.nmasur.presets.services.i3.enable)
{ {
name = "Helix wrapper"; name = "Helix wrapper";
exec = ''sh -c "${lib.getExe config.nmasur.presets.services.i3.terminal} --command='hx \$1'" _ %F ''; # TODO: change to work for any terminal exec = ''sh -c "${lib.getExe config.nmasur.presets.services.i3.terminal} --command='hx \$1'" _ %F ''; # TODO: change to work for any terminal
@@ -18,7 +18,7 @@ in
nmasur.presets.services.i3.terminal = pkgs.kitty; nmasur.presets.services.i3.terminal = pkgs.kitty;
# Set the Rofi terminal for running programs # Set the Rofi terminal for running programs
programs.rofi.terminal = lib.mkIf pkgs.stdenv.isLinux (lib.mkDefault "${pkgs.kitty}/bin/kitty"); programs.rofi.terminal = lib.mkIf pkgs.stdenv.hostPlatform.isLinux (lib.mkDefault "${pkgs.kitty}/bin/kitty");
# Display images in the terminal # Display images in the terminal
programs.fish.interactiveShellInit = # fish programs.fish.interactiveShellInit = # fish
@@ -63,7 +63,7 @@ in
# Create a desktop option for launching Neovim from a file manager # Create a desktop option for launching Neovim from a file manager
# (Requires launching the terminal and then executing Neovim) # (Requires launching the terminal and then executing Neovim)
xdg.desktopEntries.nvim = xdg.desktopEntries.nvim =
lib.mkIf (pkgs.stdenv.isLinux && config.nmasur.presets.services.i3.enable) lib.mkIf (pkgs.stdenv.hostPlatform.isLinux && config.nmasur.presets.services.i3.enable)
{ {
name = "Neovim wrapper"; name = "Neovim wrapper";
exec = ''${lib.getExe config.nmasur.presets.services.i3.terminal} --command="nvim %F"''; # TODO: change to generic exec = ''${lib.getExe config.nmasur.presets.services.i3.terminal} --command="nvim %F"''; # TODO: change to generic
@@ -15,7 +15,7 @@ in
description = "Nixpkgs tools for macOS"; description = "Nixpkgs tools for macOS";
default = default =
config.nmasur.presets.programs.nixpkgs.enable config.nmasur.presets.programs.nixpkgs.enable
&& pkgs.stdenv.isDarwin && pkgs.stdenv.hostPlatform.isDarwin
&& config.nmasur.presets.programs.dotfiles.enable; && config.nmasur.presets.programs.dotfiles.enable;
}; };
@@ -13,7 +13,7 @@ in
options.nmasur.presets.programs.noti.enable = lib.mkEnableOption "Noti CLI notifications"; options.nmasur.presets.programs.noti.enable = lib.mkEnableOption "Noti CLI notifications";
config = lib.mkIf (cfg.enable && (pkgs.stdenv.isDarwin || config.services.dunst.enable)) { config = lib.mkIf (cfg.enable && (pkgs.stdenv.hostPlatform.isDarwin || config.services.dunst.enable)) {
home.packages = [ pkgs.noti ]; home.packages = [ pkgs.noti ];
programs.fish = { programs.fish = {
shellAbbrs = { shellAbbrs = {
@@ -42,7 +42,7 @@ in
}; };
cmd_duration = { cmd_duration = {
min_time = 5001; min_time = 5001;
show_notifications = if pkgs.stdenv.isLinux then false else true; show_notifications = if pkgs.stdenv.hostPlatform.isLinux then false else true;
min_time_to_notify = 30000; min_time_to_notify = 30000;
format = "[$duration]($style) "; format = "[$duration]($style) ";
}; };
@@ -105,7 +105,7 @@ in
} }
config.font = wezterm.font('${cfg.font}', { weight = 'Bold'}) config.font = wezterm.font('${cfg.font}', { weight = 'Bold'})
config.font_size = ${if pkgs.stdenv.isLinux then "14.0" else "18.0"} config.font_size = ${if pkgs.stdenv.hostPlatform.isLinux then "14.0" else "18.0"}
-- Fix color blocks instead of text -- Fix color blocks instead of text
config.front_end = "WebGpu" config.front_end = "WebGpu"
@@ -114,7 +114,7 @@ in
config.hide_tab_bar_if_only_one_tab = true config.hide_tab_bar_if_only_one_tab = true
config.window_frame = { config.window_frame = {
font = wezterm.font('${cfg.font}', { weight = 'Bold'}), font = wezterm.font('${cfg.font}', { weight = 'Bold'}),
font_size = ${if pkgs.stdenv.isLinux then "12.0" else "16.0"}, font_size = ${if pkgs.stdenv.hostPlatform.isLinux then "12.0" else "16.0"},
} }
config.colors = { config.colors = {
@@ -191,7 +191,7 @@ in
-- super-t open new tab in new dir -- super-t open new tab in new dir
{ {
key = 't', key = 't',
mods = ${if pkgs.stdenv.isDarwin then "'SUPER'" else "'ALT'"}, mods = ${if pkgs.stdenv.hostPlatform.isDarwin then "'SUPER'" else "'ALT'"},
action = wezterm.action.SpawnCommandInNewTab { action = wezterm.action.SpawnCommandInNewTab {
cwd = wezterm.home_dir, cwd = wezterm.home_dir,
}, },
@@ -140,17 +140,17 @@ in
show_startup_tips = false; show_startup_tips = false;
keybinds = { keybinds = {
locked = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) { locked = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux && !config.programs.ghostty.enable) {
# For servers that I SSH into, use c-a-G to unlock # For servers that I SSH into, use c-a-G to unlock
"bind \"Ctrl Alt G\"" = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) { "bind \"Ctrl Alt G\"" = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux && !config.programs.ghostty.enable) {
SwitchToMode = { SwitchToMode = {
_args = [ "normal" ]; _args = [ "normal" ];
}; };
}; };
}; };
normal = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) { normal = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux && !config.programs.ghostty.enable) {
# For servers that I SSH into, use c-a-G to lock # For servers that I SSH into, use c-a-G to lock
"bind \"Ctrl Alt G\"" = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) { "bind \"Ctrl Alt G\"" = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux && !config.programs.ghostty.enable) {
SwitchToMode = { SwitchToMode = {
_args = [ "locked" ]; _args = [ "locked" ];
}; };
@@ -180,7 +180,7 @@ in
"bind \"Alt Shift s\"" = { "bind \"Alt Shift s\"" = {
Run = { Run = {
_args = _args =
if pkgs.stdenv.isDarwin then if pkgs.stdenv.hostPlatform.isDarwin then
[ [
# "env" # "env"
# "PATH=/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin" # "PATH=/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin"
@@ -254,7 +254,7 @@ in
"bind \"Alt Shift j\"" = { "bind \"Alt Shift j\"" = {
Run = { Run = {
_args = _args =
if pkgs.stdenv.isDarwin then if pkgs.stdenv.hostPlatform.isDarwin then
[ [
"env" "env"
"PATH=${config.home.homeDirectory}/.nix-profile/bin:/etc/profiles/per-user/${username}/bin:/usr/bin" "PATH=${config.home.homeDirectory}/.nix-profile/bin:/etc/profiles/per-user/${username}/bin:/usr/bin"
@@ -295,24 +295,24 @@ in
"bind \"Ctrl Shift Tab\"" = { "bind \"Ctrl Shift Tab\"" = {
GoToPreviousTab = { }; GoToPreviousTab = { };
}; };
"bind \"Super t\"" = lib.mkIf pkgs.stdenv.isDarwin { "bind \"Super t\"" = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin {
NewTab = { }; NewTab = { };
}; };
"bind \"Alt t\"" = lib.mkIf pkgs.stdenv.isLinux { "bind \"Alt t\"" = lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
NewTab = { }; NewTab = { };
}; };
"bind \"Super k\"" = lib.mkIf pkgs.stdenv.isDarwin { "bind \"Super k\"" = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin {
SwitchToMode = { SwitchToMode = {
_args = [ "scroll" ]; _args = [ "scroll" ];
}; };
}; };
"bind \"Super Shift e\"" = lib.mkIf pkgs.stdenv.isDarwin { "bind \"Super Shift e\"" = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin {
EditScrollback = { }; EditScrollback = { };
SwitchToMode = { SwitchToMode = {
_args = [ "locked" ]; _args = [ "locked" ];
}; };
}; };
"bind \"Alt Shift e\"" = lib.mkIf pkgs.stdenv.isLinux { "bind \"Alt Shift e\"" = lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
EditScrollback = { }; EditScrollback = { };
SwitchToMode = { SwitchToMode = {
_args = [ "locked" ]; _args = [ "locked" ];
@@ -43,14 +43,14 @@ in
}; };
# Automatically check for mail and keep files synced locally # Automatically check for mail and keep files synced locally
services.mbsync = lib.mkIf pkgs.stdenv.isLinux { services.mbsync = lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
enable = true; enable = true;
frequency = "*:0/5"; frequency = "*:0/5";
postExec = "${lib.getExe pkgs.notmuch} new"; postExec = "${lib.getExe pkgs.notmuch} new";
}; };
# Used to watch for new mail and trigger sync # Used to watch for new mail and trigger sync
services.imapnotify.enable = pkgs.stdenv.isLinux; services.imapnotify.enable = pkgs.stdenv.hostPlatform.isLinux;
# Allows sending email from CLI/sendmail # Allows sending email from CLI/sendmail
programs.msmtp.enable = true; programs.msmtp.enable = true;
@@ -15,7 +15,7 @@ in
home.username = config.nmasur.settings.username; home.username = config.nmasur.settings.username;
home.homeDirectory = home.homeDirectory =
if pkgs.stdenv.isDarwin then "/Users/${config.home.username}" else "/home/${config.home.username}"; if pkgs.stdenv.hostPlatform.isDarwin then "/Users/${config.home.username}" else "/home/${config.home.username}";
home.packages = [ home.packages = [
pkgs.dig # DNS lookup pkgs.dig # DNS lookup
@@ -40,7 +40,6 @@ in
# LLM # LLM
pkgs.gemini-cli # AI LLM Agent
pkgs.antigravity-cli # AI LLM Agent pkgs.antigravity-cli # AI LLM Agent
pkgs.pi-coding-agent # AI LLM Agent pkgs.pi-coding-agent # AI LLM Agent
@@ -29,10 +29,10 @@ in
# This replaces program and args entirely # This replaces program and args entirely
# script = '' # script = ''
# ${process_urls}/bin/process-urls /Users/${username}/Downloads/Sidebery/ # ${process_urls}/bin/process-urls /Users/${username}/Downloads/Sidebery/
# GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.gemini-cli}/bin/gemini --allowed-tools all --yolo --include-directories /Users/${username}/Downloads/Sidebery/ --include-directories /Users/${username}/dev/personal/notes/ "${prompt}" # GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.antigravity-cli}/bin/agy --allowed-tools all --yolo --include-directories /Users/${username}/Downloads/Sidebery/ --include-directories /Users/${username}/dev/personal/notes/ "${prompt}"
# ''; # '';
script = '' script = ''
GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.gemini-cli}/bin/gemini --allowed-tools all --yolo --include-directories "/Users/${username}/Downloads/firefox-history/,/Users/${username}/dev/personal/notes/" "${prompt} | tee -a /Users/${username}/dev/personal/gemini-archive/daily-summary-logs/$(date +"%Y-%m-%d").log" GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.antigravity-cli}/bin/agy --allowed-tools all --yolo --include-directories "/Users/${username}/Downloads/firefox-history/,/Users/${username}/dev/personal/notes/" "${prompt} | tee -a /Users/${username}/dev/personal/gemini-archive/daily-summary-logs/$(date +"%Y-%m-%d").log"
''; '';
path = [ path = [