mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-11-13 12:13:36 +01:00
* refactor(shells): use native Home Manager Nushell environment Replace the Bash login-shell wrapper and hand-maintained Nushell PATH with programs.nushell.loadSessionVariables and home.sessionPath. Launch Nushell directly from Kitty, Ghostty, and Zed, with the macOS config-home override and Ghostty's vendor autoload directory. Upstream feature: https://github.com/nix-community/home-manager/pull/9666 Assisted-by: DeepSeek Harness (deepseek-flash) * feat(hosts): use Nushell as login shell on Ruby and Kana Set the per-user shell explicitly and add Nushell to the system shell list. The system default shell and root remain unchanged. Assisted-by: DeepSeek Harness (deepseek-flash) * fix(ssh): preserve tuios session marker across SSH Forward TUIOS_SESSION and accept it on NixOS sshd, so an SSH session opened from inside tuios does not auto-attach a nested remote tuios. Assisted-by: DeepSeek Harness (deepseek-flash) * feat(nixos): use Nushell login shell on non-desktop hosts Enable the Nushell login shell through a shared module imported by the server and agent profiles. Desktop profiles continue to use Bash. Assisted-by: DeepSeek Harness (deepseek-flash) * fix(tuios): skip auto-attach in SSH sessions Remote interactive shells now stay plain Nushell instead of starting a nested TUIOS when the SSH client is already inside a local TUIOS session. Local TUIOS auto-start is unchanged. Assisted-by: DeepSeek Harness (deepseek-flash)
139 lines
3.1 KiB
Nix
139 lines
3.1 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
{
|
|
catppuccin.zed.enable = true;
|
|
|
|
programs.zed-editor = {
|
|
enable = true;
|
|
mutableUserSettings = true;
|
|
|
|
userSettings = {
|
|
# Language-specific settings
|
|
languages = {
|
|
Python = {
|
|
formatter.language_server.name = "ruff";
|
|
language_servers = [
|
|
"ty"
|
|
"ruff"
|
|
"!basedpyright"
|
|
"!pyrefly"
|
|
"!pyright"
|
|
"!pylsp"
|
|
];
|
|
};
|
|
Rust = {
|
|
hard_tabs = false;
|
|
formatter.language_server.name = "rust-analyzer";
|
|
language_servers = [
|
|
"rust-analyzer"
|
|
"!rustc"
|
|
];
|
|
};
|
|
Go = {
|
|
formatter.language_server.name = "gopls";
|
|
language_servers = [
|
|
"gopls"
|
|
"!goimports"
|
|
];
|
|
};
|
|
};
|
|
|
|
# Terminal
|
|
terminal.shell.with_arguments = {
|
|
program = lib.getExe config.programs.nushell.package;
|
|
args = [
|
|
"--config-home"
|
|
config.programs.nushell.configDir
|
|
];
|
|
};
|
|
|
|
# Editor behavior
|
|
auto_signature_help = true;
|
|
autosave = "on_focus_change";
|
|
code_lens = "on";
|
|
completion_menu_item_kind = "symbol";
|
|
completions.lsp_fetch_timeout_ms = 2000;
|
|
diagnostics.inline.enabled = true;
|
|
document_folding_ranges = "off";
|
|
inlay_hints.enabled = true;
|
|
minimap.show = "auto";
|
|
relative_line_numbers = "enabled";
|
|
semantic_tokens = "combined";
|
|
soft_wrap = "editor_width";
|
|
vertical_scroll_margin = 5.0;
|
|
which_key.enabled = true;
|
|
indent_guides = {
|
|
background_coloring = "indent_aware";
|
|
coloring = "indent_aware";
|
|
};
|
|
|
|
# Search
|
|
search.regex = true;
|
|
use_smartcase_search = true;
|
|
|
|
# Formatting
|
|
prettier.allowed = true;
|
|
|
|
# UI chrome
|
|
tabs = {
|
|
file_icons = true;
|
|
git_status = true;
|
|
};
|
|
title_bar = {
|
|
show_branch_status_icon = true;
|
|
show_menus = false;
|
|
show_user_menu = true;
|
|
};
|
|
|
|
# Git
|
|
git.inline_blame.show_commit_summary = true;
|
|
|
|
# Modal editing
|
|
helix_mode = true;
|
|
vim = {
|
|
use_smartcase_find = true;
|
|
toggle_relative_line_numbers = true;
|
|
};
|
|
|
|
# Fonts
|
|
ui_font_family = lib.mkDefault "LXGW WenKai Screen";
|
|
ui_font_size = lib.mkDefault 16.0;
|
|
buffer_font_family = lib.mkDefault "Maple Mono NF CN";
|
|
buffer_font_size = lib.mkDefault 14.0;
|
|
agent_ui_font_size = lib.mkDefault 16.0;
|
|
agent_buffer_font_size = lib.mkDefault 15.0;
|
|
|
|
# App behavior
|
|
auto_update = false;
|
|
cli_default_open_behavior = "existing_window";
|
|
|
|
# AI/editor integrations
|
|
agent.play_sound_when_agent_done = "when_hidden";
|
|
agent_servers = {
|
|
opencode.type = "registry";
|
|
codex-acp.type = "registry";
|
|
};
|
|
|
|
# Privacy
|
|
edit_predictions.allow_data_collection = "no";
|
|
telemetry = {
|
|
diagnostics = false;
|
|
metrics = false;
|
|
};
|
|
};
|
|
|
|
extensions = [
|
|
"catppuccin"
|
|
"dockerfile"
|
|
"just"
|
|
"nix"
|
|
"nu"
|
|
"terraform"
|
|
"toml"
|
|
];
|
|
};
|
|
}
|