From 7584b9ebfce2d6af0ec71fc1f728e9422b25f1a1 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 00:36:55 -0700 Subject: [PATCH 01/12] corrections and improvements to have all neovim lsp and completions working --- programs/fish/default.nix | 2 +- programs/nixvim/_plugins/default.nix | 1 + programs/nixvim/_plugins/lsp.nix | 89 +++++++++++++++++++++------- programs/nixvim/autocommands.nix | 34 +++++++++++ programs/nixvim/completion.nix | 28 +++++++-- programs/nixvim/default.nix | 5 +- programs/nixvim/options.nix | 2 +- 7 files changed, 130 insertions(+), 31 deletions(-) create mode 100644 programs/nixvim/autocommands.nix diff --git a/programs/fish/default.nix b/programs/fish/default.nix index 312537e..37c75e9 100644 --- a/programs/fish/default.nix +++ b/programs/fish/default.nix @@ -54,7 +54,7 @@ set -xg TOOLCHAINS swift - set -xg DEVELOPER_DIR "/Library/Developer/CommandLineTools" + # set -xg DEVELOPER_DIR "/Library/Developer/CommandLineTools" set -xg OPENAI_API_KEY (cat ~/.openai) set -xg ANTHROPIC_API_KEY (cat ~/.anthropic) ''; diff --git a/programs/nixvim/_plugins/default.nix b/programs/nixvim/_plugins/default.nix index c384695..b89a7cb 100644 --- a/programs/nixvim/_plugins/default.nix +++ b/programs/nixvim/_plugins/default.nix @@ -99,6 +99,7 @@ }; trouble.enable = true; + typst-preview.enable = true; which-key.enable = true; }; }; diff --git a/programs/nixvim/_plugins/lsp.nix b/programs/nixvim/_plugins/lsp.nix index ed030e5..4558e29 100644 --- a/programs/nixvim/_plugins/lsp.nix +++ b/programs/nixvim/_plugins/lsp.nix @@ -7,6 +7,29 @@ lsp = { inlayHints.enable = true; servers = { + basedpyright = { + enable = true; + settings.settings.basedpyright = { + analysis = { + autoImportCompletions = true; + autoSearchPaths = true; + inlayHints = { + callArgumentNames = true; + }; + diagnosticMode = "openFilesOnly"; + reportMissingImports = true; + reportMissingParameterType = true; + reportUnnecessaryComparison = true; + reportUnnecessaryContains = true; + reportUnusedClass = true; + reportUnusedFunction = true; + reportUnsedImports = true; + reportUnsusedVariables = true; + typeCheckingMode = "recommended"; + useLibraryCodeForTypes = true; + }; + }; + }; bashls.enable = true; html.enable = true; jqls.enable = true; @@ -19,33 +42,55 @@ metals.enable = true; nil_ls.enable = true; nixd.enable = true; - pyrefly.enable = true; rust_analyzer.enable = true; - sourcekit.enable = true; + sourcekit = { + enable = true; + settings = { + cmd = [ + "xcrun" + "sourcekit-lsp" + ]; + }; + }; + tinymist.enable = true; ts_ls.enable = true; yamlls.enable = true; }; - keymaps = - lib.mapAttrsToList - ( - key: props: - { - inherit key; - options.silent = true; - } - // props - ) - { - "k".action.__raw = "function() vim.diagnostic.jump({ count=-1, float=true }) end"; - "j".action.__raw = "function() vim.diagnostic.jump({ count=1, float=true }) end"; - gd.lspBufAction = "definition"; - gD.lspBufAction = "references"; - gt.lspBufAction = "type_definition"; - gi.lspBufAction = "implementation"; - K.lspBufAction = "hover"; - "".lspBufAction = "rename"; - }; + keymaps = [ + { + key = "k"; + action.__raw = "function() vim.diagnostic.jump({ count=-1, float=true }) end"; + } + { + key = "j"; + action.__raw = "function() vim.diagnostic.jump({ count=1, float=true }) end"; + } + { + key = "gd"; + lspBufAction = "definition"; + } + { + key = "gD"; + lspBufAction = "references"; + } + { + key = "gt"; + lspBufAction = "type_definition"; + } + { + key = "gi"; + lspBufAction = "implementation"; + } + { + key = "K"; + lspBufAction = "hover"; + } + { + key = ""; + lspBufAction = "rename"; + } + ]; }; plugins = { diff --git a/programs/nixvim/autocommands.nix b/programs/nixvim/autocommands.nix new file mode 100644 index 0000000..71cf023 --- /dev/null +++ b/programs/nixvim/autocommands.nix @@ -0,0 +1,34 @@ +{ ... }: + +{ + programs.nixvim.autoCmd = [ + # Vertically center document when entering insert mode + { + event = "InsertEnter"; + command = "norm zz"; + } + + # Open help in a vertical split + { + event = "FileType"; + pattern = "help"; + command = "wincmd L"; + } + + # Enable spellcheck for some filetypes + { + event = "FileType"; + pattern = [ + "markdown" + ]; + command = "setlocal spell spelllang=en"; + } + + # Set indentation for specific filetypes + { + event = "FileType"; + pattern = ["swift" "json" "lua" "nix"]; + command = "setlocal shiftwidth=2 tabstop=2 softtabstop=2 expandtab"; + } + ]; +} diff --git a/programs/nixvim/completion.nix b/programs/nixvim/completion.nix index 18b1ce3..27e88a6 100644 --- a/programs/nixvim/completion.nix +++ b/programs/nixvim/completion.nix @@ -11,6 +11,17 @@ plugins = { luasnip.enable = true; + cmp-buffer.enable = true; + cmp-cmdline.enable = true; + cmp-fish.enable = true; + cmp-git.enable = true; + cmp_luasnip.enable = true; + cmp-nvim-lsp.enable = true; + cmp-nvim-lsp-document-symbol.enable = true; + cmp-nvim-lsp-signature-help.enable = true; + cmp-nvim-lua.enable = true; + cmp-path.enable = true; + lspkind = { enable = true; @@ -19,11 +30,10 @@ enable = true; menu = { nvim_lsp = "[LSP]"; - nvim_lua = "[api]"; - path = "[path]"; luasnip = "[snip]"; buffer = "[buffer]"; - cmp_tabby = "[Tabby]"; + path = "[path]"; + nvim_lua = "[api]"; }; }; }; @@ -31,8 +41,14 @@ cmp = { enable = true; - + autoEnableSources = true; settings = { + performance = { + debounce = 60; + throttle = 30; + fetching_timeout = 200; + }; + snippet.expand = '' function(args) require('luasnip').lsp_expand(args.body) @@ -50,13 +66,15 @@ }; sources = [ - { name = "path"; } { name = "nvim_lsp"; } { name = "luasnip"; } { name = "buffer"; option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; } + { name = "path"; } + { name = "nvim_lua"; } + { name = "cmp-nvim-lsp-signature-help"; } ]; }; }; diff --git a/programs/nixvim/default.nix b/programs/nixvim/default.nix index 8ad3bef..7143ccf 100644 --- a/programs/nixvim/default.nix +++ b/programs/nixvim/default.nix @@ -2,9 +2,10 @@ { imports = [ - ./options.nix - ./keymappings.nix + ./autocommands.nix ./completion.nix + ./keymappings.nix + ./options.nix ./_plugins ]; diff --git a/programs/nixvim/options.nix b/programs/nixvim/options.nix index 1d1e3b1..99284df 100644 --- a/programs/nixvim/options.nix +++ b/programs/nixvim/options.nix @@ -24,7 +24,7 @@ tabstop = 2; termguicolors = true; undofile = true; - updatetime = 250; + updatetime = 100; wrap = false; }; From 10e3123b7f7f7661f712bb3a31170ecd7edf4378 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 15:47:32 -0700 Subject: [PATCH 02/12] re-organize nixvim --- programs/fish/default.nix | 5 - programs/nixvim/README.md | 163 ++++++++++++++++++ programs/nixvim/_plugins/default.nix | 106 ------------ programs/nixvim/_plugins/lsp.nix | 106 ------------ programs/nixvim/default.nix | 4 +- programs/nixvim/plugins/ai.nix | 11 ++ .../nixvim/{_plugins => plugins}/avante.nix | 0 .../nixvim/{_plugins => plugins}/conform.nix | 0 programs/nixvim/plugins/default.nix | 24 +++ programs/nixvim/plugins/editing.nix | 44 +++++ .../nixvim/{_plugins => plugins}/floaterm.nix | 0 programs/nixvim/plugins/git.nix | 17 ++ programs/nixvim/plugins/lsp/default.nix | 9 + programs/nixvim/plugins/lsp/formatting.nix | 19 ++ programs/nixvim/plugins/lsp/keymaps.nix | 43 +++++ programs/nixvim/plugins/lsp/servers.nix | 79 +++++++++ .../nixvim/{_plugins => plugins}/lualine.nix | 0 .../nixvim/{_plugins => plugins}/neo-tree.nix | 0 .../{_plugins => plugins}/telescope.nix | 0 .../{_plugins => plugins}/treesitter.nix | 0 programs/nixvim/plugins/ui.nix | 40 +++++ programs/nixvim/plugins/utility.nix | 29 ++++ 22 files changed, 480 insertions(+), 219 deletions(-) create mode 100644 programs/nixvim/README.md delete mode 100644 programs/nixvim/_plugins/default.nix delete mode 100644 programs/nixvim/_plugins/lsp.nix create mode 100644 programs/nixvim/plugins/ai.nix rename programs/nixvim/{_plugins => plugins}/avante.nix (100%) rename programs/nixvim/{_plugins => plugins}/conform.nix (100%) create mode 100644 programs/nixvim/plugins/default.nix create mode 100644 programs/nixvim/plugins/editing.nix rename programs/nixvim/{_plugins => plugins}/floaterm.nix (100%) create mode 100644 programs/nixvim/plugins/git.nix create mode 100644 programs/nixvim/plugins/lsp/default.nix create mode 100644 programs/nixvim/plugins/lsp/formatting.nix create mode 100644 programs/nixvim/plugins/lsp/keymaps.nix create mode 100644 programs/nixvim/plugins/lsp/servers.nix rename programs/nixvim/{_plugins => plugins}/lualine.nix (100%) rename programs/nixvim/{_plugins => plugins}/neo-tree.nix (100%) rename programs/nixvim/{_plugins => plugins}/telescope.nix (100%) rename programs/nixvim/{_plugins => plugins}/treesitter.nix (100%) create mode 100644 programs/nixvim/plugins/ui.nix create mode 100644 programs/nixvim/plugins/utility.nix diff --git a/programs/fish/default.nix b/programs/fish/default.nix index 37c75e9..9f7ec13 100644 --- a/programs/fish/default.nix +++ b/programs/fish/default.nix @@ -54,7 +54,6 @@ set -xg TOOLCHAINS swift - # set -xg DEVELOPER_DIR "/Library/Developer/CommandLineTools" set -xg OPENAI_API_KEY (cat ~/.openai) set -xg ANTHROPIC_API_KEY (cat ~/.anthropic) ''; @@ -80,12 +79,9 @@ ghauth = "gh auth login --with-token < ~/.ghauth"; gitpurgemain = ''git branch --merged | grep -v "\*" | grep -v "main" | xargs -n 1 git branch -d''; gitpurgemaster = ''git branch --merged | grep -v "\*" | grep -v "master" | xargs -n 1 git branch -d''; - giscala = "gitignore scala,vim,java,sbt > .gitignore"; gforksync = "git fetch upstream && git merge upstream/master && git push origin master"; grep = "grep --color=auto"; - hg = "kitten hyperlinked-grep"; lg = "lazygit"; - new-sbt = "sbt new scala/scala-seed.g8"; nixc = "cd ~/.config/nixpkgs"; nixre = "nix build && sudo ./result/activate"; nixinfo = "nix-shell -p nix-info --run \"nix-info -m\""; @@ -93,7 +89,6 @@ nixq = "nix-env -qa"; nixstorerepair = "nix-store --repair --verify --check-contents"; nixupgrade = "nix upgrade-nix"; - o = "echo (ollama run qwen2.5-coder \"Provide only the MacOS terminal command (without markdown) to: $argv\")"; rmxcodederived = "rm -fr ~/Library/Developer/Xcode/DerivedData"; v = "nvim"; sshhcloud1 = "ssh salar@hcloud1.softinio.net"; diff --git a/programs/nixvim/README.md b/programs/nixvim/README.md new file mode 100644 index 0000000..03efadd --- /dev/null +++ b/programs/nixvim/README.md @@ -0,0 +1,163 @@ +# Nixvim Configuration + +This directory contains a modular Neovim configuration managed through [nixvim](https://github.com/nix-community/nixvim). + +## Directory Structure + +``` +nixvim/ +├── default.nix # Main entry point +├── options.nix # Core Neovim options (line numbers, tabs, etc.) +├── keymappings.nix # Global key mappings +├── autocommands.nix # Auto commands for various events +├── completion.nix # Completion configuration (nvim-cmp) +└── plugins/ # Plugin configurations + ├── default.nix # Plugin imports + ├── ui.nix # UI enhancements (colorscheme, icons, etc.) + ├── git.nix # Git integration + ├── editing.nix # Editing enhancements + ├── utility.nix # Utility plugins + ├── ai.nix # AI assistants (Copilot, Avante) + ├── lsp/ # Language Server Protocol + │ ├── default.nix # LSP imports + │ ├── servers.nix # Language server configurations + │ ├── keymaps.nix # LSP-specific key mappings + │ └── formatting.nix # Auto-formatting settings + ├── avante.nix # Avante AI configuration + ├── conform.nix # Code formatting + ├── floaterm.nix # Floating terminal + ├── lualine.nix # Status line + ├── neo-tree.nix # File explorer + ├── telescope.nix # Fuzzy finder + └── treesitter.nix # Syntax highlighting +``` + +## Configuration Categories + +### Core Settings (`options.nix`) +- Editor options (line numbers, indentation, etc.) +- Update time and performance settings +- Clipboard configuration +- Leader key mappings + +### Key Mappings (`keymappings.nix`) +- Window navigation +- Buffer management +- Text manipulation +- Custom shortcuts + +### Auto Commands (`autocommands.nix`) +- FileType-specific settings +- Auto-formatting rules +- UI behavior modifications + +### Completion (`completion.nix`) +- nvim-cmp configuration +- Snippet support +- LSP integration +- Multiple completion sources + +### Plugins + +#### UI Enhancements (`ui.nix`) +- **Colorscheme**: Tokyo Night theme with custom background +- **Icons**: File type icons via web-devicons +- **Visual aids**: Indent guides, color highlighting, markdown preview + +#### Git Integration (`git.nix`) +- **Gitsigns**: Shows git changes in the gutter + +#### Editing (`editing.nix`) +- **Auto-pairs**: Automatic bracket/quote closing +- **Flash**: Enhanced jump/search +- **Trim**: Whitespace management +- **Image support**: Clipboard image pasting + +#### Utilities (`utility.nix`) +- **Oil**: File manager +- **Todo-comments**: Highlight TODO/FIXME comments +- **Trouble**: Diagnostics list +- **Which-key**: Show available keybindings + +#### AI Assistants (`ai.nix`) +- **Copilot**: GitHub Copilot integration +- **Avante**: Advanced AI assistant + +#### LSP (`lsp/`) +- **Language Servers**: Support for 15+ languages +- **Key mappings**: Go-to-definition, references, hover docs +- **Auto-formatting**: Format on save for all supported languages + +## Adding New Configurations + +### Adding a New Plugin + +1. Create a new file in `plugins/` or add to an existing category file +2. Add the import to `plugins/default.nix` +3. Configure the plugin following nixvim documentation + +Example: +```nix +# plugins/my-plugin.nix +{ ... }: +{ + programs.nixvim.plugins.my-plugin = { + enable = true; + settings = { + # Plugin-specific settings + }; + }; +} +``` + +### Adding a New Language Server + +Edit `plugins/lsp/servers.nix` and add your server configuration: +```nix +my_language_ls = { + enable = true; + settings = { + # Server-specific settings + }; +}; +``` + +### Adding Key Mappings + +- **Global mappings**: Add to `keymappings.nix` +- **LSP mappings**: Add to `plugins/lsp/keymaps.nix` +- **Plugin-specific**: Add to the plugin's configuration file + +## Applying Changes + +After making changes, rebuild your nix configuration: +```bash +nixre # Alias for darwin-rebuild switch --flake ~/.config/nixpkgs#salarm3max +``` + +## Performance Tuning + +Key performance settings: +- `updatetime`: Controls LSP/diagnostic update speed (currently 100ms) +- `performance.debounce`: Completion debounce time (60ms) +- `performance.throttle`: Completion throttle time (30ms) + +Adjust these in `options.nix` and `completion.nix` respectively. + +## Troubleshooting + +### LSP Not Working +1. Check if language server is installed: `:LspInfo` +2. Verify keymaps are loaded: `:map gd` +3. Check for errors: `:messages` + +### Slow Performance +1. Increase `updatetime` in `options.nix` +2. Adjust completion performance settings in `completion.nix` +3. Disable unused language servers in `lsp/servers.nix` + +## Resources + +- [Nixvim Documentation](https://nix-community.github.io/nixvim/) +- [Neovim Documentation](https://neovim.io/doc/) +- [LSP Specification](https://microsoft.github.io/language-server-protocol/) \ No newline at end of file diff --git a/programs/nixvim/_plugins/default.nix b/programs/nixvim/_plugins/default.nix deleted file mode 100644 index b89a7cb..0000000 --- a/programs/nixvim/_plugins/default.nix +++ /dev/null @@ -1,106 +0,0 @@ -{ ... }: - -{ - imports = [ - ./avante.nix - ./conform.nix - ./floaterm.nix - ./lsp.nix - ./lualine.nix - ./neo-tree.nix - ./telescope.nix - ./treesitter.nix - ]; - - # Global plugin configurations can go here - programs.nixvim = { - colorschemes.tokyonight = { - enable = true; - settings = { - style = "night"; - on_colors.__raw = "function(colors) colors.bg = \"#000000\" end"; - }; - }; - - plugins = { - # Lazy loading - lz-n.enable = true; - - web-devicons.enable = true; - - gitsigns = { - enable = true; - settings.signs = { - add.text = "+"; - change.text = "~"; - delete.text = "_"; - topdelete.text = "‾"; - changedelete.text = "~"; - }; - }; - - nvim-autopairs.enable = true; - - colorizer = { - enable = true; - settings.user_default_options.names = false; - }; - - copilot-vim.enable = true; - - fidget.enable = true; - - flash.enable = true; - - img-clip = { - enable = true; - settings = { - default = { - embed_image_as_base64 = false; - prompt_for_file_name = false; - drag_and_drop = { - insert_mode = true; - }; - use_absolute_path = true; - }; - }; - }; - - indent-blankline.enable = true; - - markview.enable = true; - - nui.enable = true; - - oil = { - enable = true; - lazyLoad.settings.cmd = "Oil"; - }; - - snacks.enable = true; - - todo-comments = { - enable = true; - keymaps.todoTelescope.key = "t"; - }; - - trim = { - enable = true; - settings = { - highlight = true; - ft_blocklist = [ - "checkhealth" - "floaterm" - "lspinfo" - "neo-tree" - "TelescopePrompt" - ]; - }; - }; - - trouble.enable = true; - typst-preview.enable = true; - which-key.enable = true; - }; - }; -} diff --git a/programs/nixvim/_plugins/lsp.nix b/programs/nixvim/_plugins/lsp.nix deleted file mode 100644 index 4558e29..0000000 --- a/programs/nixvim/_plugins/lsp.nix +++ /dev/null @@ -1,106 +0,0 @@ -{ lib, ... }: - -{ - programs.nixvim = { - diagnostic.settings.virtual_text = true; - - lsp = { - inlayHints.enable = true; - servers = { - basedpyright = { - enable = true; - settings.settings.basedpyright = { - analysis = { - autoImportCompletions = true; - autoSearchPaths = true; - inlayHints = { - callArgumentNames = true; - }; - diagnosticMode = "openFilesOnly"; - reportMissingImports = true; - reportMissingParameterType = true; - reportUnnecessaryComparison = true; - reportUnnecessaryContains = true; - reportUnusedClass = true; - reportUnusedFunction = true; - reportUnsedImports = true; - reportUnsusedVariables = true; - typeCheckingMode = "recommended"; - useLibraryCodeForTypes = true; - }; - }; - }; - bashls.enable = true; - html.enable = true; - jqls.enable = true; - jsonls.enable = true; - lua_ls = { - enable = true; - settings.settings.diagnostics.globals = [ "vim" ]; - }; - marksman.enable = true; - metals.enable = true; - nil_ls.enable = true; - nixd.enable = true; - rust_analyzer.enable = true; - sourcekit = { - enable = true; - settings = { - cmd = [ - "xcrun" - "sourcekit-lsp" - ]; - }; - }; - tinymist.enable = true; - ts_ls.enable = true; - yamlls.enable = true; - }; - - keymaps = [ - { - key = "k"; - action.__raw = "function() vim.diagnostic.jump({ count=-1, float=true }) end"; - } - { - key = "j"; - action.__raw = "function() vim.diagnostic.jump({ count=1, float=true }) end"; - } - { - key = "gd"; - lspBufAction = "definition"; - } - { - key = "gD"; - lspBufAction = "references"; - } - { - key = "gt"; - lspBufAction = "type_definition"; - } - { - key = "gi"; - lspBufAction = "implementation"; - } - { - key = "K"; - lspBufAction = "hover"; - } - { - key = ""; - lspBufAction = "rename"; - } - ]; - }; - - plugins = { - lsp-format = { - enable = true; - lspServersToEnable = "all"; - }; - - # Sane defaults for all servers - lspconfig.enable = true; - }; - }; -} diff --git a/programs/nixvim/default.nix b/programs/nixvim/default.nix index 7143ccf..90938d1 100644 --- a/programs/nixvim/default.nix +++ b/programs/nixvim/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ ... }: { imports = [ @@ -6,7 +6,7 @@ ./completion.nix ./keymappings.nix ./options.nix - ./_plugins + ./plugins ]; programs.nixvim = { diff --git a/programs/nixvim/plugins/ai.nix b/programs/nixvim/plugins/ai.nix new file mode 100644 index 0000000..ad9c454 --- /dev/null +++ b/programs/nixvim/plugins/ai.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + programs.nixvim.plugins = { + # GitHub Copilot + copilot-vim.enable = true; + + # Avante AI assistant (imported from separate file) + # avante config is in avante.nix + }; +} \ No newline at end of file diff --git a/programs/nixvim/_plugins/avante.nix b/programs/nixvim/plugins/avante.nix similarity index 100% rename from programs/nixvim/_plugins/avante.nix rename to programs/nixvim/plugins/avante.nix diff --git a/programs/nixvim/_plugins/conform.nix b/programs/nixvim/plugins/conform.nix similarity index 100% rename from programs/nixvim/_plugins/conform.nix rename to programs/nixvim/plugins/conform.nix diff --git a/programs/nixvim/plugins/default.nix b/programs/nixvim/plugins/default.nix new file mode 100644 index 0000000..6fb88e1 --- /dev/null +++ b/programs/nixvim/plugins/default.nix @@ -0,0 +1,24 @@ +{ ... }: + +{ + imports = [ + # Core plugin categories + ./ui.nix + ./git.nix + ./editing.nix + ./utility.nix + ./ai.nix + + # LSP configuration + ./lsp + + # Individual plugin configurations + ./avante.nix + ./conform.nix + ./floaterm.nix + ./lualine.nix + ./neo-tree.nix + ./telescope.nix + ./treesitter.nix + ]; +} \ No newline at end of file diff --git a/programs/nixvim/plugins/editing.nix b/programs/nixvim/plugins/editing.nix new file mode 100644 index 0000000..8ad8c13 --- /dev/null +++ b/programs/nixvim/plugins/editing.nix @@ -0,0 +1,44 @@ +{ ... }: + +{ + programs.nixvim.plugins = { + # Auto-close brackets and quotes + nvim-autopairs.enable = true; + + # Flash jump/search enhancement + flash.enable = true; + + # Image clipboard support + img-clip = { + enable = true; + settings = { + default = { + embed_image_as_base64 = false; + prompt_for_file_name = false; + drag_and_drop = { + insert_mode = true; + }; + use_absolute_path = true; + }; + }; + }; + + # Trim trailing whitespace + trim = { + enable = true; + settings = { + highlight = true; + ft_blocklist = [ + "checkhealth" + "floaterm" + "lspinfo" + "neo-tree" + "TelescopePrompt" + ]; + }; + }; + + # Collection of small useful plugins + snacks.enable = true; + }; +} \ No newline at end of file diff --git a/programs/nixvim/_plugins/floaterm.nix b/programs/nixvim/plugins/floaterm.nix similarity index 100% rename from programs/nixvim/_plugins/floaterm.nix rename to programs/nixvim/plugins/floaterm.nix diff --git a/programs/nixvim/plugins/git.nix b/programs/nixvim/plugins/git.nix new file mode 100644 index 0000000..d2874ee --- /dev/null +++ b/programs/nixvim/plugins/git.nix @@ -0,0 +1,17 @@ +{ ... }: + +{ + programs.nixvim.plugins = { + # Git signs in the gutter + gitsigns = { + enable = true; + settings.signs = { + add.text = "+"; + change.text = "~"; + delete.text = "_"; + topdelete.text = "‾"; + changedelete.text = "~"; + }; + }; + }; +} \ No newline at end of file diff --git a/programs/nixvim/plugins/lsp/default.nix b/programs/nixvim/plugins/lsp/default.nix new file mode 100644 index 0000000..d0fd37d --- /dev/null +++ b/programs/nixvim/plugins/lsp/default.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + imports = [ + ./servers.nix + ./keymaps.nix + ./formatting.nix + ]; +} \ No newline at end of file diff --git a/programs/nixvim/plugins/lsp/formatting.nix b/programs/nixvim/plugins/lsp/formatting.nix new file mode 100644 index 0000000..5e8ea47 --- /dev/null +++ b/programs/nixvim/plugins/lsp/formatting.nix @@ -0,0 +1,19 @@ +{ ... }: + +{ + programs.nixvim = { + # Diagnostics display + diagnostic.settings.virtual_text = true; + + plugins = { + # Auto-format on save + lsp-format = { + enable = true; + lspServersToEnable = "all"; + }; + + # Sane defaults for all servers + lspconfig.enable = true; + }; + }; +} \ No newline at end of file diff --git a/programs/nixvim/plugins/lsp/keymaps.nix b/programs/nixvim/plugins/lsp/keymaps.nix new file mode 100644 index 0000000..4ad5c8d --- /dev/null +++ b/programs/nixvim/plugins/lsp/keymaps.nix @@ -0,0 +1,43 @@ +{ ... }: + +{ + programs.nixvim.lsp.keymaps = [ + # Diagnostics navigation + { + key = "k"; + action.__raw = "function() vim.diagnostic.jump({ count=-1, float=true }) end"; + } + { + key = "j"; + action.__raw = "function() vim.diagnostic.jump({ count=1, float=true }) end"; + } + + # LSP navigation + { + key = "gd"; + lspBufAction = "definition"; + } + { + key = "gD"; + lspBufAction = "references"; + } + { + key = "gt"; + lspBufAction = "type_definition"; + } + { + key = "gi"; + lspBufAction = "implementation"; + } + + # Documentation and refactoring + { + key = "K"; + lspBufAction = "hover"; + } + { + key = ""; + lspBufAction = "rename"; + } + ]; +} \ No newline at end of file diff --git a/programs/nixvim/plugins/lsp/servers.nix b/programs/nixvim/plugins/lsp/servers.nix new file mode 100644 index 0000000..6e35c82 --- /dev/null +++ b/programs/nixvim/plugins/lsp/servers.nix @@ -0,0 +1,79 @@ +{ ... }: + +{ + programs.nixvim.lsp = { + inlayHints.enable = true; + + servers = { + # Python + basedpyright = { + enable = true; + settings.settings.basedpyright = { + analysis = { + autoImportCompletions = true; + autoSearchPaths = true; + inlayHints = { + callArgumentNames = true; + }; + diagnosticMode = "openFilesOnly"; + reportMissingImports = true; + reportMissingParameterType = true; + reportUnnecessaryComparison = true; + reportUnnecessaryContains = true; + reportUnusedClass = true; + reportUnusedFunction = true; + reportUnsedImports = true; + reportUnsusedVariables = true; + typeCheckingMode = "recommended"; + useLibraryCodeForTypes = true; + }; + }; + }; + + # Shell scripting + bashls.enable = true; + + # Web development + html.enable = true; + jsonls.enable = true; + yamlls.enable = true; + ts_ls.enable = true; + + # Query languages + jqls.enable = true; + + # Lua + lua_ls = { + enable = true; + settings.settings.diagnostics.globals = [ "vim" ]; + }; + + # Documentation + marksman.enable = true; + + # Scala + metals.enable = true; + + # Nix + nil_ls.enable = true; + nixd.enable = true; + + # Rust + rust_analyzer.enable = true; + + # Swift/iOS development + sourcekit = { + enable = true; + settings = { + cmd = [ + "xcrun" + "sourcekit-lsp" + ]; + }; + }; + + # Typst + tinymist.enable = true; + }; + }; +} \ No newline at end of file diff --git a/programs/nixvim/_plugins/lualine.nix b/programs/nixvim/plugins/lualine.nix similarity index 100% rename from programs/nixvim/_plugins/lualine.nix rename to programs/nixvim/plugins/lualine.nix diff --git a/programs/nixvim/_plugins/neo-tree.nix b/programs/nixvim/plugins/neo-tree.nix similarity index 100% rename from programs/nixvim/_plugins/neo-tree.nix rename to programs/nixvim/plugins/neo-tree.nix diff --git a/programs/nixvim/_plugins/telescope.nix b/programs/nixvim/plugins/telescope.nix similarity index 100% rename from programs/nixvim/_plugins/telescope.nix rename to programs/nixvim/plugins/telescope.nix diff --git a/programs/nixvim/_plugins/treesitter.nix b/programs/nixvim/plugins/treesitter.nix similarity index 100% rename from programs/nixvim/_plugins/treesitter.nix rename to programs/nixvim/plugins/treesitter.nix diff --git a/programs/nixvim/plugins/ui.nix b/programs/nixvim/plugins/ui.nix new file mode 100644 index 0000000..937882f --- /dev/null +++ b/programs/nixvim/plugins/ui.nix @@ -0,0 +1,40 @@ +{ ... }: + +{ + programs.nixvim = { + # Colorscheme + colorschemes.tokyonight = { + enable = true; + settings = { + style = "night"; + on_colors.__raw = "function(colors) colors.bg = \"#000000\" end"; + }; + }; + + plugins = { + # Icons for file types + web-devicons.enable = true; + + # Color highlighter (shows colors in code) + colorizer = { + enable = true; + settings.user_default_options.names = false; + }; + + # Indentation guides + indent-blankline.enable = true; + + # Markdown preview with live rendering + markview.enable = true; + + # UI component library + nui.enable = true; + + # Loading/progress indicators + fidget.enable = true; + + # Status line (imported from separate file) + # lualine is in lualine.nix + }; + }; +} \ No newline at end of file diff --git a/programs/nixvim/plugins/utility.nix b/programs/nixvim/plugins/utility.nix new file mode 100644 index 0000000..9ddf0a2 --- /dev/null +++ b/programs/nixvim/plugins/utility.nix @@ -0,0 +1,29 @@ +{ ... }: + +{ + programs.nixvim.plugins = { + # Lazy loading support + lz-n.enable = true; + + # File manager + oil = { + enable = true; + lazyLoad.settings.cmd = "Oil"; + }; + + # TODO comment highlighting + todo-comments = { + enable = true; + keymaps.todoTelescope.key = "t"; + }; + + # Diagnostics list + trouble.enable = true; + + # Typst language preview + typst-preview.enable = true; + + # Key binding help + which-key.enable = true; + }; +} \ No newline at end of file From 8c247f2ca05ec0397cf5ca2309c66651e8755373 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 15:55:55 -0700 Subject: [PATCH 03/12] remove wezterm --- programs/default.nix | 1 - programs/wezterm/default.nix | 11 --- programs/wezterm/wezterm.lua | 128 ----------------------------------- 3 files changed, 140 deletions(-) delete mode 100644 programs/wezterm/default.nix delete mode 100644 programs/wezterm/wezterm.lua diff --git a/programs/default.nix b/programs/default.nix index bcbdd5a..067d89f 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -7,7 +7,6 @@ ./jujutsu ./nixvim ./tmux - ./wezterm ./vscode ./zed ] diff --git a/programs/wezterm/default.nix b/programs/wezterm/default.nix deleted file mode 100644 index c63a016..0000000 --- a/programs/wezterm/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ ... }: - -let - weztermConfig = builtins.readFile ./wezterm.lua; -in -{ - programs.wezterm = { - enable = true; - extraConfig = weztermConfig; - }; -} diff --git a/programs/wezterm/wezterm.lua b/programs/wezterm/wezterm.lua deleted file mode 100644 index cf9c394..0000000 --- a/programs/wezterm/wezterm.lua +++ /dev/null @@ -1,128 +0,0 @@ -local wezterm = require 'wezterm' -local mux = wezterm.mux -local act = wezterm.action - -wezterm.on('update-right-status', function(window, pane) - window:set_right_status(window:active_workspace()) -end) - -wezterm.on('gui-startup', function(cmd) - local tab, pane, window = mux.spawn_window(cmd or {}) - window:gui_window():maximize() - pane:split { size = 0.2 } -end) - -return { - adjust_window_size_when_changing_font_size = false, - check_for_updates = false, - color_scheme = 'Tango (terminal.sexy)', - default_gui_startup_args = { 'connect', 'unix' }, - font = wezterm.font_with_fallback { 'JetBrains Mono', 'Noto Sans' }, - font_size = 12.0, - freetype_load_flags = 'NO_HINTING', - dpi = 144, - scrollback_lines = 50000, - initial_cols = 400, - initial_rows = 80, - leader = { key = 'b', mods = 'SUPER', timeout_milliseconds = 1000 }, - default_prog = { '/etc/profiles/per-user/salar/bin/fish' }, - window_decorations = 'RESIZE', - ssh_domains = { - { - name = 'hcloud1', - remote_address = 'hcloud1.softinio.net', - username = 'salar', - remote_wezterm_path = '/run/current-system/sw/bin/wezterm', - }, - }, - unix_domains = { - { - name = 'unix', - proxy_command = { 'nc', '-U', '/Users/salar/.local/share/wezterm/sock' }, - }, - }, - keys = { - { key = '-', mods = 'LEADER', action = wezterm.action { SplitVertical = { domain = 'CurrentPaneDomain' } } }, - { key = "'", mods = 'LEADER', action = wezterm.action { SplitHorizontal = { domain = 'CurrentPaneDomain' } } }, - { key = 'k', mods = 'SUPER', action = act.TogglePaneZoomState }, - { key = 'h', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Left' } }, - { key = 'j', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Down' } }, - { key = 'k', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Up' } }, - { key = 'l', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Right' } }, - { key = 'H', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Left', 5 } } }, - { key = 'J', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Down', 5 } } }, - { key = 'K', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Up', 5 } } }, - { key = 'L', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Right', 5 } } }, - { key = '1', mods = 'LEADER', action = wezterm.action { ActivateTab = 0 } }, - { key = '2', mods = 'LEADER', action = wezterm.action { ActivateTab = 1 } }, - { key = '3', mods = 'LEADER', action = wezterm.action { ActivateTab = 2 } }, - { key = '4', mods = 'LEADER', action = wezterm.action { ActivateTab = 3 } }, - { key = '5', mods = 'LEADER', action = wezterm.action { ActivateTab = 4 } }, - { key = '6', mods = 'LEADER', action = wezterm.action { ActivateTab = 5 } }, - { key = '7', mods = 'LEADER', action = wezterm.action { ActivateTab = 6 } }, - { key = '8', mods = 'LEADER', action = wezterm.action { ActivateTab = 7 } }, - { key = '9', mods = 'LEADER', action = wezterm.action { ActivateTab = 8 } }, - { key = '&', mods = 'LEADER', action = wezterm.action { CloseCurrentTab = { confirm = true } } }, - { key = 'x', mods = 'LEADER', action = wezterm.action { CloseCurrentPane = { confirm = true } } }, - { key = 'Enter', mods = 'ALT', action = act.DisableDefaultAssignment }, - { key = 'c', mods = 'SUPER', action = act.CopyTo 'Clipboard' }, - { key = 'v', mods = 'SUPER', action = act.PasteFrom 'Clipboard' }, - { key = 'n', mods = 'SUPER', action = act.SpawnWindow }, - { key = 't', mods = 'SUPER', action = act.SpawnTab 'CurrentPaneDomain' }, - { key = 'h', mods = 'SUPER', action = act { SpawnCommandInNewTab = { cwd = wezterm.home_dir } } }, - { key = 'q', mods = 'SUPER', action = act.QuitApplication }, - { key = 'i', mods = 'CTRL|SHIFT', action = act.SwitchToWorkspace }, - { - key = '8', - mods = 'ALT', - action = wezterm.action_callback(function(window, pane) - -- Here you can dynamically construct a longer list if needed - - local home = wezterm.home_dir - local workspaces = { - { id = home, label = 'Home' }, - { id = home .. '/Projects', label = 'My Projects' }, - { id = home .. '/OpenSource', label = 'Open Source Projects' }, - { id = home .. '/.config/nixpkgs', label = 'Nix Config' }, - { id = home .. '/Projects/scalanews', label = 'Scala News' }, - } - - window:perform_action( - act.InputSelector { - action = wezterm.action_callback(function(inner_window, inner_pane, id, label) - if not id and not label then - wezterm.log_info 'cancelled' - else - wezterm.log_info('id = ' .. id) - wezterm.log_info('label = ' .. label) - inner_window:perform_action( - act.SwitchToWorkspace { - name = label, - spawn = { - label = 'Workspace: ' .. label, - cwd = id, - }, - }, - inner_pane - ) - end - end), - title = 'Choose Workspace', - choices = workspaces, - fuzzy = true, - fuzzy_description = 'Fuzzy find and/or make a workspace', - }, - pane - ) - end), - }, - { - key = '9', - mods = 'ALT', - action = act.ShowLauncherArgs { - flags = 'FUZZY|WORKSPACES', - }, - }, - { key = 'Tab', mods = 'CTRL', action = wezterm.action.DisableDefaultAssignment }, - }, -} From 13ada6b7bdfbff952927ea8c8d728d02870866e2 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 15:58:12 -0700 Subject: [PATCH 04/12] update aider model and git cleanup comments --- programs/aider/aider.yml | 2 +- programs/git/default.nix | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/programs/aider/aider.yml b/programs/aider/aider.yml index a68dbba..6332ff8 100644 --- a/programs/aider/aider.yml +++ b/programs/aider/aider.yml @@ -18,7 +18,7 @@ # Main model: ## Specify the model to use for the main chat -model: anthropic/claude-sonnet-4-20250514 +model: anthropic/claude-sonnet-4-5-20250929 ######################## # API Keys and settings: diff --git a/programs/git/default.nix b/programs/git/default.nix index 83b517a..f5e1730 100644 --- a/programs/git/default.nix +++ b/programs/git/default.nix @@ -34,6 +34,7 @@ let pull = { rebase = true; }; + # Commented out as xcode had issues with it. # url = { # "git@github.com:" = { # insteadOf = "https://github.com/"; @@ -62,8 +63,8 @@ let "*.metals" "*.metals.sbt" "*metals.sbt" - "*.envrc" # there is lorri, nix-direnv & simple direnv; let people decide - "*hie.yaml" # ghcide files + "*.envrc" + "*hie.yaml" "*.vscode" "result" ]; From 6b37f9ec83b04bbe79f95c957d224090c918acc1 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 16:57:36 -0700 Subject: [PATCH 05/12] Flake update --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index d5d00b4..f838378 100644 --- a/flake.lock +++ b/flake.lock @@ -67,11 +67,11 @@ ] }, "locked": { - "lastModified": 1759536080, - "narHash": "sha256-0aXlKPxm2M+F5oywX2TTbY0e6h+tQ+6OYyx7UZn3A4A=", + "lastModified": 1759702766, + "narHash": "sha256-011pCUbIq/fhCiZ20AzqJYNjLzQ1oYkzYEgzcUYVTBg=", "owner": "nix-community", "repo": "home-manager", - "rev": "edafd6da1936426708f1be0b1a4288007f16639a", + "rev": "5b45dcf4790bb94fec7e550d2915fc2540a3cdd6", "type": "github" }, "original": { @@ -130,11 +130,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1759417375, - "narHash": "sha256-O7eHcgkQXJNygY6AypkF9tFhsoDQjpNEojw3eFs73Ow=", + "lastModified": 1759632233, + "narHash": "sha256-krgZxGAIIIKFJS+UB0l8do3sYUDWJc75M72tepmVMzE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dc704e6102e76aad573f63b74c742cd96f8f1e6c", + "rev": "d7f52a7a640bc54c7bb414cca603835bf8dd4b10", "type": "github" }, "original": { @@ -170,11 +170,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1759527752, - "narHash": "sha256-+sncyvy1dkwRBeq7vw/YpsKqB18UuaKuW2lKRRv6/EI=", + "lastModified": 1759670959, + "narHash": "sha256-OjvEGJEZDkAri6m1oUV0DE+pRKqh6KEcVuCIlmLN7QU=", "owner": "nix-community", "repo": "nixvim", - "rev": "42d87fd4d8f51ea8c591b0b72af76b0aba991f54", + "rev": "e45e9214dcc2ea770418fe407a43902b0438ce78", "type": "github" }, "original": { @@ -189,11 +189,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1759527694, - "narHash": "sha256-fuQw+vP25GSQxPKTPAHZBUXuoFeN9dCTwfJxEv5sv0Y=", + "lastModified": 1759696599, + "narHash": "sha256-GkGJdNkR9gnVQt9OXwhGrD72EpK185jNVT7qoCh/3q4=", "owner": "nix-community", "repo": "nur", - "rev": "b2b1349ad22d5ba62a3e069e9a3745f40fbb9203", + "rev": "dce08ba6904fcaad93c17ab65cf6b3e5dfc2d301", "type": "github" }, "original": { From 82aa68744f4c5de2aa3bc286050d90c8d1925c24 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 17:34:20 -0700 Subject: [PATCH 06/12] jj update and corrections for github copilot lsp --- home.nix | 2 +- programs/jujutsu/default.nix | 20 ++++++++++++++++++-- programs/nixvim/completion.nix | 2 ++ programs/nixvim/plugins/ai.nix | 18 ++++++++++++------ 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/home.nix b/home.nix index 99dba20..465616e 100644 --- a/home.nix +++ b/home.nix @@ -73,7 +73,7 @@ nix-index nixfmt-rfc-style nix-prefetch-git - nodejs + nodejs-slim noto-fonts noto-fonts-color-emoji ollama diff --git a/programs/jujutsu/default.nix b/programs/jujutsu/default.nix index a8d885a..6f0ebb9 100644 --- a/programs/jujutsu/default.nix +++ b/programs/jujutsu/default.nix @@ -4,7 +4,16 @@ let l = [ "log" "-r" - "(main@origin..@):: | (main@origin..@)-" + "ancestors(reachable(@, mutable()), 2)" + ]; + n = [ "new" ]; + tug = [ + "bookmark" + "move" + "--from" + "closest_bookmark(@-)" + "--to" + "@-" ]; }; in @@ -13,11 +22,18 @@ in enable = true; settings = { aliases = MyAliases; + gerrit.enabled = false; + git = { + subprocess = true; + }; signing = { key = "~/.ssh/id_ed25519.pub"; }; + templates = { + git_push_bookmark = "'\"softinio/push-\" ++ change_id.short()'"; + }; ui = { - default-command = "log"; + default-command = "l"; diff-formatter = [ "difft" "--color=always" diff --git a/programs/nixvim/completion.nix b/programs/nixvim/completion.nix index 27e88a6..3a82179 100644 --- a/programs/nixvim/completion.nix +++ b/programs/nixvim/completion.nix @@ -30,6 +30,7 @@ enable = true; menu = { nvim_lsp = "[LSP]"; + copilot-vim = "[copilot]"; luasnip = "[snip]"; buffer = "[buffer]"; path = "[path]"; @@ -67,6 +68,7 @@ sources = [ { name = "nvim_lsp"; } + { name = "copilot-vim"; } { name = "luasnip"; } { name = "buffer"; diff --git a/programs/nixvim/plugins/ai.nix b/programs/nixvim/plugins/ai.nix index ad9c454..b887537 100644 --- a/programs/nixvim/plugins/ai.nix +++ b/programs/nixvim/plugins/ai.nix @@ -1,11 +1,17 @@ -{ ... }: +{ pkgs, lib, ... }: { - programs.nixvim.plugins = { - # GitHub Copilot - copilot-vim.enable = true; + programs.nixvim = { + plugins = { + # GitHub Copilot + copilot-vim.enable = true; - # Avante AI assistant (imported from separate file) - # avante config is in avante.nix + # Avante AI assistant (imported from separate file) + # avante config is in avante.nix + }; + + globals = { + copilot_node_command = lib.mkForce "${pkgs.nodejs-slim}/bin/node"; + }; }; } \ No newline at end of file From 43b2c9efb920916500903312851c0cf9b62618c0 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 19:02:14 -0700 Subject: [PATCH 07/12] jj correction to prefix --- programs/jujutsu/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/programs/jujutsu/default.nix b/programs/jujutsu/default.nix index 6f0ebb9..eadbade 100644 --- a/programs/jujutsu/default.nix +++ b/programs/jujutsu/default.nix @@ -30,7 +30,9 @@ in key = "~/.ssh/id_ed25519.pub"; }; templates = { - git_push_bookmark = "'\"softinio/push-\" ++ change_id.short()'"; + git_push_bookmark = '' + '"softinio/push-" ++ change_id.short()' + ''; }; ui = { default-command = "l"; From a73c53f5c9c8235de66c0e05984437b48e0ea232 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 19:04:59 -0700 Subject: [PATCH 08/12] jj correction to prefix again --- programs/jujutsu/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/programs/jujutsu/default.nix b/programs/jujutsu/default.nix index eadbade..2f833ba 100644 --- a/programs/jujutsu/default.nix +++ b/programs/jujutsu/default.nix @@ -30,9 +30,7 @@ in key = "~/.ssh/id_ed25519.pub"; }; templates = { - git_push_bookmark = '' - '"softinio/push-" ++ change_id.short()' - ''; + git_push_bookmark = ''"softinio/push-" ++ change_id.short()''; }; ui = { default-command = "l"; From b4a848af400f2c2980276f33ab8901f7438d2f37 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 19:08:15 -0700 Subject: [PATCH 09/12] jj correction to prefix again --- programs/jujutsu/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/programs/jujutsu/default.nix b/programs/jujutsu/default.nix index 2f833ba..352138f 100644 --- a/programs/jujutsu/default.nix +++ b/programs/jujutsu/default.nix @@ -30,7 +30,9 @@ in key = "~/.ssh/id_ed25519.pub"; }; templates = { - git_push_bookmark = ''"softinio/push-" ++ change_id.short()''; + git_push_bookmark = '' + \'"softinio/push-" ++ change_id.short()\' + ''; }; ui = { default-command = "l"; From 16ec312f861005bd684094aa2d061aff3dc71841 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 19:16:51 -0700 Subject: [PATCH 10/12] jj correction to prefix again --- programs/jujutsu/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/programs/jujutsu/default.nix b/programs/jujutsu/default.nix index 352138f..806d54a 100644 --- a/programs/jujutsu/default.nix +++ b/programs/jujutsu/default.nix @@ -30,9 +30,7 @@ in key = "~/.ssh/id_ed25519.pub"; }; templates = { - git_push_bookmark = '' - \'"softinio/push-" ++ change_id.short()\' - ''; + git_push_bookmark = '''''"softinio/push-" ++ change_id.short()'''''; }; ui = { default-command = "l"; From 61759f618a228cae8d812465fee9a8c81998d055 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 19:18:52 -0700 Subject: [PATCH 11/12] jj correction to prefix again --- programs/jujutsu/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/jujutsu/default.nix b/programs/jujutsu/default.nix index 806d54a..6f0ebb9 100644 --- a/programs/jujutsu/default.nix +++ b/programs/jujutsu/default.nix @@ -30,7 +30,7 @@ in key = "~/.ssh/id_ed25519.pub"; }; templates = { - git_push_bookmark = '''''"softinio/push-" ++ change_id.short()'''''; + git_push_bookmark = "'\"softinio/push-\" ++ change_id.short()'"; }; ui = { default-command = "l"; From 241a8ed039949a3da6f12bb17c0439e1972c0311 Mon Sep 17 00:00:00 2001 From: Salar Rahmanian Date: Sun, 5 Oct 2025 19:22:16 -0700 Subject: [PATCH 12/12] jj correction to prefix again --- programs/jujutsu/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/jujutsu/default.nix b/programs/jujutsu/default.nix index 6f0ebb9..f0455bb 100644 --- a/programs/jujutsu/default.nix +++ b/programs/jujutsu/default.nix @@ -30,7 +30,7 @@ in key = "~/.ssh/id_ed25519.pub"; }; templates = { - git_push_bookmark = "'\"softinio/push-\" ++ change_id.short()'"; + git_push_bookmark = "\"softinio/push-\" ++ change_id.short()"; }; ui = { default-command = "l";