From 10453abfb1d3dd180ecef7c8951f1a88d391c4eb Mon Sep 17 00:00:00 2001 From: Natalie Date: Tue, 20 May 2025 21:30:54 -0700 Subject: [PATCH] commiting for posterity --- flake.nix | 210 +++++++++++++++++--------------- modules/neovim/default.nix | 3 +- modules/shared/nix.nix | 7 +- users/natalie/packages.nix | 8 +- users/natalie/vim.nix | 1 + users/natalie/vim/default.nix | 2 + users/natalie/vim/keybinds.nix | 23 ++-- users/natalie/vim/languages.nix | 127 ++++++++++++------- users/natalie/vim/latex.nix | 55 +++++++++ 9 files changed, 266 insertions(+), 170 deletions(-) create mode 100644 users/natalie/vim/latex.nix diff --git a/flake.nix b/flake.nix index 4ae14a6..1269413 100644 --- a/flake.nix +++ b/flake.nix @@ -39,71 +39,79 @@ nix-index-database.url = "github:nix-community/nix-index-database"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = { - self, - nixpkgs, - nixos-cosmic, - darwin, - ... - } @ inputs: let - lib = nixpkgs.lib; + outputs = + { + self, + nixpkgs, + nixos-cosmic, + darwin, + ... + }@inputs: + let + lib = nixpkgs.lib; - # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere. - overlays = [ - inputs.zig.overlays.default - inputs.rust-overlay.overlays.default - inputs.nh.overlays.default + # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere. + overlays = [ + inputs.zig.overlays.default + inputs.rust-overlay.overlays.default + inputs.nh.overlays.default - # https://github.com/LnL7/nix-darwin/issues/1041 - (_: prev: { - karabiner-elements = prev.karabiner-elements.overrideAttrs (old: { - version = "14.13.0"; + # https://github.com/LnL7/nix-darwin/issues/1041 + (_: prev: { + karabiner-elements = prev.karabiner-elements.overrideAttrs (old: { + version = "14.13.0"; - src = prev.fetchurl { - inherit (old.src) url; - hash = "sha256-gmJwoht/Tfm5qMecmq1N6PSAIfWOqsvuHU8VDJY8bLw="; - }; - }); - }) - ]; - - # Users of this flake currently use x86_64 Linux and Apple Silicon - systems = [ - "x86_64-linux" - "aarch64-darwin" - ]; - forAllSystems = f: - builtins.listToAttrs ( - builtins.map (system: { - name = system; - value = f ( - inputs - // { - inherit system; - pkgs = nixpkgs.legacyPackages.${system}; - } - ); + src = prev.fetchurl { + inherit (old.src) url; + hash = "sha256-gmJwoht/Tfm5qMecmq1N6PSAIfWOqsvuHU8VDJY8bLw="; + }; + }); }) - systems - ); + ]; - mkSystem = import ./lib/mkSystem.nix { - inherit - overlays - nixpkgs - inputs - mkNeovim - ; - }; - mkNeovim = import ./lib/mkNeovim.nix { - inherit self overlays nixpkgs inputs; - }; - in rec { - inherit self; - # "nix fmt" - formatter = forAllSystems (inputs: inputs.pkgs.nixfmt-tree); - packages = forAllSystems ( - {system, ...}: + # Users of this flake currently use x86_64 Linux and Apple Silicon + systems = [ + "x86_64-linux" + "aarch64-darwin" + ]; + forAllSystems = + f: + builtins.listToAttrs ( + builtins.map (system: { + name = system; + value = f ( + inputs + // { + inherit system; + pkgs = nixpkgs.legacyPackages.${system}; + } + ); + }) systems + ); + + mkSystem = import ./lib/mkSystem.nix { + inherit + overlays + nixpkgs + inputs + mkNeovim + ; + }; + mkNeovim = import ./lib/mkNeovim.nix { + inherit + self + overlays + nixpkgs + inputs + ; + }; + in + rec { + inherit self; + # "nix fmt" + formatter = forAllSystems (inputs: inputs.pkgs.nixfmt-tree); + packages = forAllSystems ( + { system, ... }: { nvim-chloe = mkNeovim "chloe" system; nvim-natalie = mkNeovim "natalie" system; @@ -112,47 +120,49 @@ # "nix run .#darwin-rebuild" darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild; } - ); + ); - # natalie's desktop computer - nixosConfigurations.nixos = mkSystem "nixos" { - user = "natalie"; - host = "desktop"; - system = "x86_64-linux"; - extraModules = [ - nixos-cosmic.nixosModules.default - ]; - }; - # natalie's laptop - darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { - user = "natalie"; - host = "laptop"; - system = "aarch64-darwin"; - }; + # natalie's desktop computer + nixosConfigurations.nixos = mkSystem "nixos" { + user = "natalie"; + host = "desktop"; + system = "x86_64-linux"; + extraModules = [ + nixos-cosmic.nixosModules.default + ]; + }; + # natalie's laptop + darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { + user = "natalie"; + host = "laptop"; + system = "aarch64-darwin"; + }; - # chloe's mac studio "sandwich" - darwinConfigurations.sandwich = mkSystem "sandwich" { - user = "chloe"; - host = "sandwich"; - system = "aarch64-darwin"; - }; - # chloe's macbook air "paperback" - darwinConfigurations.paperback = mkSystem "paperback" { - user = "chloe"; - host = "paperback"; - system = "aarch64-darwin"; - }; + # chloe's mac studio "sandwich" + darwinConfigurations.sandwich = mkSystem "sandwich" { + user = "chloe"; + host = "sandwich"; + system = "aarch64-darwin"; + }; + # chloe's macbook air "paperback" + darwinConfigurations.paperback = mkSystem "paperback" { + user = "chloe"; + host = "paperback"; + system = "aarch64-darwin"; + }; - # generate checks for "nix flake check --all-systems --no-build" - checks.aarch64-darwin = builtins.listToAttrs ( - builtins.map ( - name: let - d = darwinConfigurations.${name}.system; - in { - name = "darwinConfiguration-" + d.name; - value = d; - } - ) (builtins.attrNames darwinConfigurations) - ); - }; + # generate checks for "nix flake check --all-systems --no-build" + checks.aarch64-darwin = builtins.listToAttrs ( + builtins.map ( + name: + let + d = darwinConfigurations.${name}.system; + in + { + name = "darwinConfiguration-" + d.name; + value = d; + } + ) (builtins.attrNames darwinConfigurations) + ); + }; } diff --git a/modules/neovim/default.nix b/modules/neovim/default.nix index df65a2c..461f6d1 100644 --- a/modules/neovim/default.nix +++ b/modules/neovim/default.nix @@ -74,7 +74,7 @@ }; filetree = { neo-tree = { - enable = true; + enable = false; }; }; tabline = { @@ -133,7 +133,6 @@ indent = 2; padding = 1; } - {section = "startup";} ]; }; image.enable = true; diff --git a/modules/shared/nix.nix b/modules/shared/nix.nix index 2070f0c..b8bff36 100644 --- a/modules/shared/nix.nix +++ b/modules/shared/nix.nix @@ -1,14 +1,14 @@ -{ inputs, ... }: -{ +{inputs, ...}: { nixpkgs.config = { allowUnfree = true; }; nix = { - nixPath = [ "nixpkgs = ${inputs.nixpkgs}" ]; + # nixPath = ["nixpkgs = ${inputs.nixpkgs}"]; extraOptions = '' warn-dirty = false ''; + channel.enable = false; optimise = { automatic = true; @@ -19,6 +19,7 @@ "nix-command" "flakes" ]; + extra-nix-path = "nixpkgs=flake:nixpkgs"; substituters = [ "https://cache.nixos.org/?priority=10" diff --git a/users/natalie/packages.nix b/users/natalie/packages.nix index 3ae3b5c..7195aa8 100644 --- a/users/natalie/packages.nix +++ b/users/natalie/packages.nix @@ -1,7 +1,6 @@ # Packages installed with home-manager -{ pkgs, ... }: -with pkgs; -[ +{pkgs, ...}: +with pkgs; [ #general development just pkg-config @@ -36,7 +35,7 @@ with pkgs; nh #terminal stuff - (btop.override { cudaSupport = true; }) + (btop.override {cudaSupport = true;}) tmux zellij lazygit @@ -83,7 +82,6 @@ with pkgs; lua51Packages.lua lua51Packages.luarocks-nix codespell - typst tree-sitter #python diff --git a/users/natalie/vim.nix b/users/natalie/vim.nix index 912ec95..ae57a12 100644 --- a/users/natalie/vim.nix +++ b/users/natalie/vim.nix @@ -7,5 +7,6 @@ name = "catppuccin"; style = "mocha"; }; + hideSearchHighlight = true; }; } diff --git a/users/natalie/vim/default.nix b/users/natalie/vim/default.nix index 4725d1f..a4f01cf 100644 --- a/users/natalie/vim/default.nix +++ b/users/natalie/vim/default.nix @@ -2,5 +2,7 @@ imports = [ ./keybinds.nix ./languages.nix + ./latex.nix ]; + } diff --git a/users/natalie/vim/keybinds.nix b/users/natalie/vim/keybinds.nix index e18c273..b077e50 100644 --- a/users/natalie/vim/keybinds.nix +++ b/users/natalie/vim/keybinds.nix @@ -10,25 +10,16 @@ in { vim = { keymaps = [ - (mkKeymap "n" "e" "lua require('snacks').explorer()" "File Explorer") + (mkKeymap "n" "e" ":lua require('snacks').explorer()" "File Explorer") # Snacks Picker Replaces Telescope!? - (mkKeymap "n" "" "lua require('snacks').picker.smart()" "Smart Find Files") - (mkKeymap "n" "ff" "lua require('snacks').picker.files()" "Find File") - # (mkKeymap "n" "fr" "lua require('snacks').picker.recent()" "Open Recent File") - (mkKeymap "n" "fg" "lua require('snacks').picker.grep()" "Grep Files") - # (mkKeymap "n" "fb" "lua require('snacks').picker.buffers()" "Grep Buffers") - # (mkKeymap "n" "fh" "lua require('snacks').picker.help()" "Grep Help Tags") - # (mkKeymap "n" "fg" "lua require('snacks').picker.git_files()" "Grep Git Files") - # (mkKeymap "n" "fd" "lua require('snacks').picker.diagnostics()" "Grep Diagnostics") - # (mkKeymap "n" "fc" "lua require('aerial').snacks_picker()" "Code Outline") - + (mkKeymap "n" "" ":lua require('snacks').picker.smart()" "Smart Find Files") + (mkKeymap "n" "ff" ":lua require('snacks').picker.files()" "Find File") + (mkKeymap "n" "fg" ":lua require('snacks').picker.grep()" "Grep Files") # Lsp - (mkKeymap "n" "gd" "lua require('snacks').picker.lsp_definitions" "Goto Definition") - (mkKeymap "n" "gD" "lua require('snacks').picker.lsp_declarations" "Goto Declarations") - (mkKeymap "n" "gI" "lua require('snacks').picker.lsp_implementations" "Goto Implementation") - (mkKeymap "n" "gr" "lua require('snacks').picker.lsp_references" "Goto References") - (mkKeymap "n" "gy" "lua require('snacks').picker.lsp_type_definitions" "Goto T[y]pe Definition") + (mkKeymap "n" "K" ":lua vim.lsp.buf.hover()" "Hover docs") + (mkKeymap "n" "lr" ":lua vim.lsp.buf.rename()" "Rename") + # (mkKeymap "n" "th" ":lua function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end" "Toggle Inlay Hints") ]; }; } diff --git a/users/natalie/vim/languages.nix b/users/natalie/vim/languages.nix index b3e52a6..94bc705 100644 --- a/users/natalie/vim/languages.nix +++ b/users/natalie/vim/languages.nix @@ -1,54 +1,61 @@ -{flake, ...}: { +{ + flake, + userConfig, + pkgs, + ... +}: { vim = { - lsp.servers.nixd.settings = { - nixd.nixpkgs.expr = "import '${flake.inputs.nixpkgs}' { }"; + extraPackages = with pkgs; [ + python312Packages.pylatexenc + ]; + lsp = { + nvim-docs-view.enable = true; + inlayHints.enable = true; + servers.nixd.settings = { + nixd.nixpkgs.expr = ''import "${flake.inputs.nixpkgs}" { }''; + options = { + nixos = { + expr = '' + (let pkgs = import "${flake.inputs.nixpkgs}" {}; inherit (pkgs) lib; in (lib.evalModules { modules = (import "${flake.inputs.nixpkgs}/nixos/modules/module-list.nix"); check = false;})).options''; + }; + nix_darwin = { + expr = '' + (let pkgs = import "${flake.inputs.nixpkgs}" {}; inherit (pkgs) lib; in (lib.evalModules { modules = import ("${flake.inputs.darwin}/modules/module-list.nix"); check = false;})).options''; + }; + home_manager = { + expr = '' + (let pkgs = import "${flake.inputs.nixpkgs}" {}; lib = import "${flake.inputs.home-manager}/modules/lib/stdlib-extended.nix" pkgs.lib; in (lib.evalModules { modules = (import "${flake.inputs.home-manager}/modules/modules.nix") { inherit lib pkgs; check = false; };})).options''; + }; + }; + mappings = { + codeAction = "ca"; + goToDeclaration = "gD"; + goToDefinition = "gd"; + listReferences = "gr"; + goToType = "gy"; + hover = "K"; + nextDiagnostic = "d"; + openDiagnosticFloat = "df"; + renameSymbol = "rn"; + documentHighlight = null; + listDocumentSymbols = null; + listImplementations = null; + listWorkspaceFolders = null; + previousDiagnostic = null; + removeWorkspaceFolder = null; + signatureHelp = null; + toggleFormatOnSave = null; + }; + }; }; languages = { enableDAP = true; - haskell.enable = true; + # haskell.enable = true; lua.enable = true; python.enable = true; python.format.type = "ruff"; - # markdown.extensions.markview-nvim = { - # enable = true; - # setupOpts = { - # }; - # }; - nix = { - lsp = { - server = "nixd"; - options = { - nixos = { - expr = "(let - pkgs = import '${flake.inputs.nixpkgs}' {}; - inherit (pkgs) lib; - in (lib.evalModules { - modules = import '${flake.inputs.nixpkgs}/nixos/modules/module-list.nix'; - check = false; - })).options"; - }; - nix_darwin = { - expr = "(let - pkgs = import ''${flake.inputs.nixpkgs}' {}; - inherit (pkgs) lib; - in (lib.evalModules { - modules = import '${flake.inputs.darwin}/modules/module-list.nix'; - check = false; - })).options"; - }; - home_manager = { - expr = "(let - pkgs = import '${flake.inputs.nixpkgs}' {}; - lib = import '${flake.inputs.home-manager}/modules/lib/stdlib-extended.nix' pkgs.lib; - in (lib.evalModules { - modules = (import '${flake.inputs.home-manager}/modules/modules.nix') { - inherit lib pkgs; - check = false; - }; - })).options"; - }; - }; - }; + markdown.extensions.render-markdown-nvim = { + enable = true; }; }; formatter.conform-nvim = { @@ -69,5 +76,37 @@ haskell = ["hlint"]; }; }; + treesitter = { + enable = true; + fold = true; + addDefaultGrammars = true; + highlight = { + additionalVimRegexHighlighting = true; + }; + + context.enable = true; + highlight.enable = true; + indent.enable = true; + }; + + visuals = { + fidget-nvim = { + setupOpts = { + logger.level = "trace"; + }; + }; + }; + autocomplete.blink-cmp = { + enable = true; + # mappings = { + # }; + + setupOpts = { + completion = { + ghost_text.enabled = false; + list.selection.preselect = true; + }; + }; + }; }; } diff --git a/users/natalie/vim/latex.nix b/users/natalie/vim/latex.nix new file mode 100644 index 0000000..b38cace --- /dev/null +++ b/users/natalie/vim/latex.nix @@ -0,0 +1,55 @@ +{pkgs, ...}: { + vim = { + lazy.plugins.vimtex = { + enabled = true; + package = pkgs.vimPlugins.vimtex; + lazy = true; + ft = "tex"; + }; + + globals = { + tex_flavor = "latex"; + maplocalleader = "\\"; + vimtex_compiler_method = "latexmk"; + vimtex_view_method = "zathura"; + vimtex_compiler_latexmk = { + callback = 1; + continuous = 1; + executable = "latexmk"; + hooks = []; + options = [ + "-verbose" + "-file-line-error" + "-synctex=1" + "-interaction=nonstopmode" + "-shell-escape" + ]; + }; + vimtex_log_ignore = [ + "Underfull" + "Overfull" + "specifier changed to" + "Token not allowed in a PDF string" + ]; + vimtex_quickfix_ignore_filters = [ + "Underfull" + "Overfull" + ]; + }; + + lsp = { + servers = { + texlab = { + enable = true; + cmd = ["${pkgs.texlab}/bin/texlab"]; + filetypes = ["tex"]; + }; + }; + }; + treesitter = { + grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ + latex + ]; + }; + }; +}