mirror of
https://github.com/nmasur/dotfiles
synced 2026-09-14 09:28:11 +00:00
Compare commits
3
Commits
5ecefd4589
...
4ba1ed807c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4ba1ed807c | ||
|
|
32989f1758 | ||
|
|
b0b08d2475 |
@@ -1,7 +1,20 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 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:
|
||||||
|
- 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.
|
||||||
|
|
||||||
## 2026-08-16
|
## 2026-08-16
|
||||||
|
|
||||||
|
- Fixed Zellij new tab directory tracking by adding `__fish_update_cwd_osc` override in `presets/programs/zellij.nix`. Fish's default OSC 7 sequence includes `$hostname`, which on macOS or dynamic network environments evaluates to `Noah-MacBook-Pro.local` or a domain suffix. Zellij compares the OSC 7 hostname against its system hostname (`Noah-MacBook-Pro`), finds a mismatch, and silently ignores the CWD update, leaving new tabs stuck in a previous directory or session default. Overriding `__fish_update_cwd_osc` to send `file://<PWD>` (empty hostname) ensures Zellij always updates its cached CWD on every `cd` and prompt render.
|
||||||
- Fixed Firefox "profile cannot be loaded" error on macOS by removing `home.file."Library/Application Support/Firefox/installs.ini"`. Hardcoding an installation hash in `installs.ini` broke whenever Firefox was updated or rebuilt in the Nix store because the nix store path changed, causing Firefox to compute a new installation hash, fail to match or write to the read-only `installs.ini` symlink, and error out. Firefox on macOS uses `profiles.ini` (managed by Home Manager) and `MOZ_LEGACY_PROFILES=1` (exported by nixpkgs' launcher wrapper).
|
- Fixed Firefox "profile cannot be loaded" error on macOS by removing `home.file."Library/Application Support/Firefox/installs.ini"`. Hardcoding an installation hash in `installs.ini` broke whenever Firefox was updated or rebuilt in the Nix store because the nix store path changed, causing Firefox to compute a new installation hash, fail to match or write to the read-only `installs.ini` symlink, and error out. Firefox on macOS uses `profiles.ini` (managed by Home Manager) and `MOZ_LEGACY_PROFILES=1` (exported by nixpkgs' launcher wrapper).
|
||||||
|
|
||||||
## 2026-08-03
|
## 2026-08-03
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
dotnetCorePackages,
|
dotnetCorePackages,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
if !stdenv.isLinux then
|
if !stdenv.hostPlatform.isLinux then
|
||||||
null
|
null
|
||||||
else
|
else
|
||||||
buildDotnetModule rec {
|
buildDotnetModule rec {
|
||||||
|
|||||||
@@ -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" ''
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -69,9 +69,6 @@ in
|
|||||||
set -g fish_cursor_insert line
|
set -g fish_cursor_insert line
|
||||||
set -g fish_cursor_visual block
|
set -g fish_cursor_visual block
|
||||||
set -g fish_cursor_replace_one underscore
|
set -g fish_cursor_replace_one underscore
|
||||||
|
|
||||||
# Fix for lagging after exiting TUIs with Zellij and Ghostty
|
|
||||||
set -a fish_features no-query-term
|
|
||||||
'';
|
'';
|
||||||
loginShellInit = "";
|
loginShellInit = "";
|
||||||
shellAbbrs = {
|
shellAbbrs = {
|
||||||
@@ -117,10 +114,17 @@ in
|
|||||||
dr = "docker run --rm -it";
|
dr = "docker run --rm -it";
|
||||||
db = "docker build . -t";
|
db = "docker build . -t";
|
||||||
};
|
};
|
||||||
shellInit = "";
|
shellInit = ''
|
||||||
|
# Fix for lagging/hanging after exiting TUIs inside terminal multiplexers like Zellij:
|
||||||
|
# Disable fish terminal querying at startup so fish does not query DA1/termcap on return.
|
||||||
|
set -gx fish_features no-query-term
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables.fish_greeting = "";
|
home.sessionVariables = {
|
||||||
|
fish_greeting = "";
|
||||||
|
fish_features = "no-query-term";
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ 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 = true;
|
enableFishIntegration = false; # Handled conditionally below to avoid conflicts inside Zellij/TMUX
|
||||||
enableBashIntegration = true;
|
enableBashIntegration = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
installBatSyntax = false; # The file doesn't seem to exist in the pkg
|
installBatSyntax = false; # The file doesn't seem to exist in the pkg
|
||||||
@@ -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"
|
||||||
@@ -81,5 +81,12 @@ in
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Conditionally enable Ghostty fish shell integration only when NOT running inside multiplexers like Zellij/TMUX
|
||||||
|
programs.fish.shellInit = ''
|
||||||
|
if set -q GHOSTTY_RESOURCES_DIR; and not set -q ZELLIJ; and not set -q TMUX
|
||||||
|
source "$GHOSTTY_RESOURCES_DIR/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish"
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -75,6 +75,17 @@ in
|
|||||||
${lib.getExe pkgs.zellij} action new-pane --start-suspended -- gh run watch
|
${lib.getExe pkgs.zellij} action new-pane --start-suspended -- gh run watch
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
__fish_update_cwd_osc = {
|
||||||
|
description = "Notify Zellij/terminal of CWD changes without hostname mismatch";
|
||||||
|
body = # fish
|
||||||
|
''
|
||||||
|
if test "$TERM" != "dumb"
|
||||||
|
printf \e\]7\;file://%s\a (string escape --style=url -- $PWD)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
onVariable = "PWD";
|
||||||
|
onEvent = "fish_prompt";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -129,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" ];
|
||||||
};
|
};
|
||||||
@@ -169,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"
|
||||||
@@ -243,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"
|
||||||
@@ -284,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
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -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 = [
|
||||||
|
|||||||
Reference in New Issue
Block a user