authorgravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-05-21 10:44:59-07:00
committergravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-05-21 10:44:59-07:00
log6fea0a1f4e10affd9f1a3fbdec86a1a82564570b
tree247e873d557fb0665c6a7701d888028b0b9466b1
parent10453abfb1d3dd180ecef7c8951f1a88d391c4eb
signature Commit is signed but in an unrecognized format.

nearly at parity with lua-based config


10 files changed, 132 insertions(+), 79 deletions(-)

flake.nix-1
......@@ -49,7 +49,6 @@
4949 }@inputs:
5050 let
5151 lib = nixpkgs.lib;
52
5352 # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere.
5453 overlays = [
5554 inputs.zig.overlays.default
lib/mkSystem.nix+1-1
......@@ -7,7 +7,7 @@
77 mkNeovim,
88}: name: {
99 user, # ./users/{name}
10 host, # ./users/{name}/{host} (optional)
10 host, # ./users/{name}/{host}
1111 system, # arch-os
1212 extraModules ? [],
1313}: let
modules/macos/homebrew.nix+2-14
......@@ -4,27 +4,15 @@ _: {
44 enable = true;
55
66 onActivation = {
7 autoUpdate = true;
7 autoUpdate = false;
88 cleanup = "none";
9 upgrade = true;
9 upgrade = false;
1010 };
1111
1212 brews = [
13 "imagemagick"
14 "opam"
1513 ];
1614
1715 casks = [
18 "battle-net"
19 "stremio"
20 "alt-tab"
21 "legcord"
22 "zulip"
23 "zen-browser"
24 "supertuxkart"
25 "sf-symbols"
26
27 "mediosz/tap/swipeaerospace"
2816 ];
2917
3018 masApps = {
modules/neovim/default.nix-3
......@@ -87,9 +87,6 @@
8787 ripgrep.enable = true;
8888 };
8989 friendly-snippets.enable = true;
90 setupOpts = {
91 keymap.preset = "super-tab";
92 };
9390 };
9491 };
9592 statusline = {
users/natalie/desktop/configuration.nix+1
......@@ -9,6 +9,7 @@
99 # Include the results of the hardware scan.
1010 ./hardware-configuration.nix
1111 ];
12 documentation.man.generateCaches = false;
1213 programs = {
1314 gamemode.enable = true;
1415
users/natalie/home.nix+2-2
......@@ -2,8 +2,7 @@
22 pkgs,
33 lib,
44 ...
5}@args:
6{
5} @ args: {
76 programs = {
87 # sort-lines:start
98 atuin.enable = true;
......@@ -11,6 +10,7 @@
1110 hyfetch.enable = true;
1211 direnv.enable = true;
1312 fish.enable = true;
13 man.generateCaches = false;
1414 # sort-lines:end
1515 };
1616
users/natalie/laptop/configuration.nix+6-12
......@@ -1,5 +1,4 @@
1{ pkgs, ... }:
2{
1{pkgs, ...}: {
32 environment.systemPackages = with pkgs; [
43 pinentry_mac
54 signal-desktop-bin
......@@ -8,7 +7,7 @@
87 # Custom configuration modules in "modules" are shared between users,
98 # and can be configured in this "shared" namespace
109 shared.darwin = {
11 macAppStoreApps = [ "wireguard" ];
10 macAppStoreApps = ["wireguard"];
1211 };
1312
1413 # Create /etc/zshrc that loads the nix-darwin environment.
......@@ -30,14 +29,6 @@
3029
3130 # Use homebrew to install casks
3231 homebrew = {
33 enable = true;
34
35 onActivation = {
36 autoUpdate = true;
37 cleanup = "none";
38 upgrade = true;
39 };
40
4132 brews = [
4233 "imagemagick"
4334 "opam"
......@@ -49,8 +40,11 @@
4940 "alt-tab"
5041 "legcord"
5142 "zulip"
52 "zen-browser"
43 "zen"
5344 "supertuxkart"
45 "sf-symbols"
46
47 "mediosz/tap/swipeaerospace"
5448 ];
5549 };
5650}
users/natalie/vim.nix+20-1
......@@ -1,8 +1,27 @@
1{...}: {
1{pkgs, ...}: {
22 imports = [
33 ./vim/default.nix
44 ];
55 vim = {
6 options = {
7 tabstop = 2;
8 softtabstop = 2;
9 shiftwidth = 2;
10 undofile = true;
11 swapfile = false;
12 showmode = false;
13 foldmethod = "expr";
14 foldexpr = "v:lua.vim.treesitter.foldexpr()";
15 };
16
17 autocmds = [
18 {
19 event = ["LspAttach"];
20 pattern = ["*"];
21 desc = "User: Set LSP folding if client supports it";
22 callback = pkgs.lib.generators.mkLuaInline ''function(ctx) local client = assert(vim.lsp.get_client_by_id(ctx.data.client_id)) if client:supports_method("textDocument/foldingRange") then local win = vim.api.nvim_get_current_win() vim.wo[win][0].foldexpr = "v:lua.vim.lsp.foldexpr()" end end'';
23 }
24 ];
625 theme = {
726 name = "catppuccin";
827 style = "mocha";
users/natalie/vim/keybinds.nix+5-3
......@@ -1,4 +1,5 @@
1{...}: let
1{ ... }:
2let
23 mkKeymap = mode: key: action: desc: {
34 inherit
45 mode
......@@ -7,7 +8,8 @@
78 desc
89 ;
910 };
10in {
11in
12{
1113 vim = {
1214 keymaps = [
1315 (mkKeymap "n" "<leader>e" ":lua require('snacks').explorer()<CR>" "File Explorer")
......@@ -17,7 +19,7 @@ in {
1719 (mkKeymap "n" "<leader>ff" ":lua require('snacks').picker.files()<CR>" "Find File")
1820 (mkKeymap "n" "<leader>fg" ":lua require('snacks').picker.grep()<CR>" "Grep Files")
1921 # Lsp
20 (mkKeymap "n" "K" ":lua vim.lsp.buf.hover()<CR>" "Hover docs")
22 (mkKeymap "n" "K" ":Lspsaga hover_doc<CR>" "Hover docs")
2123 (mkKeymap "n" "lr" ":lua vim.lsp.buf.rename()<CR>" "Rename")
2224 # (mkKeymap "n" "<leader>th" ":lua function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end<CR>" "Toggle Inlay Hints")
2325 ];
users/natalie/vim/languages.nix+95-42
......@@ -1,63 +1,95 @@
11{
22 flake,
3 userConfig,
3 user,
4 host,
45 pkgs,
56 ...
6}: {
7}: let
8 darwin =
9 if host.darwin
10 then "darwin"
11 else "nixos";
12 flakePath = "/${
13 if host.darwin
14 then "Users"
15 else "home"
16 }/${user.username}/.dotfiles";
17
18 # BIG HACK DO NOT DO PLS
19
20 hostname =
21 if host.darwin
22 then "Natalies-MacBook-Air"
23 else "nixos";
24in {
725 vim = {
826 extraPackages = with pkgs; [
927 python312Packages.pylatexenc
1028 ];
1129 lsp = {
30 lightbulb.enable = false;
31 lspsaga = {
32 enable = true;
33 setupOpts = {
34 lightbulb = {
35 virtual_text = false;
36 };
37 };
38 };
1239 nvim-docs-view.enable = true;
1340 inlayHints.enable = true;
14 servers.nixd.settings = {
15 nixd.nixpkgs.expr = ''import "${flake.inputs.nixpkgs}" { }'';
16 options = {
17 nixos = {
18 expr = ''
19 (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'';
20 };
21 nix_darwin = {
22 expr = ''
23 (let pkgs = import "${flake.inputs.nixpkgs}" {}; inherit (pkgs) lib; in (lib.evalModules { modules = import ("${flake.inputs.darwin}/modules/module-list.nix"); check = false;})).options'';
41 servers.nixd.settings.nixd = {
42 nixpkgs.expr = ''import "<nixpkgs>" { }'';
43 options =
44 {
45 home-manager = {
46 expr = ''(builtins.getFlake "${flakePath}").${darwin}Configurations.${hostname}.options.home-manager.users.type.getSubOptions [ ]'';
47 };
48 }
49 // pkgs.lib.optionalAttrs host.darwin {
50 nix-darwin = {
51 expr = ''(builtins.getFlake "${flakePath}").darwinConfigurations.${hostname}.options'';
52 };
53 }
54 // pkgs.lib.optionalAttrs host.linux {
55 nixos = {
56 expr = ''(builtins.getFlake "${flakePath}").nixosConfigurations.${hostname}.options'';
57 };
2458 };
25 home_manager = {
26 expr = ''
27 (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'';
28 };
29 };
30 mappings = {
31 codeAction = "<leader>ca";
32 goToDeclaration = "gD";
33 goToDefinition = "gd";
34 listReferences = "gr";
35 goToType = "gy";
36 hover = "K";
37 nextDiagnostic = "<leader>d";
38 openDiagnosticFloat = "<leader>df";
39 renameSymbol = "rn";
40 documentHighlight = null;
41 listDocumentSymbols = null;
42 listImplementations = null;
43 listWorkspaceFolders = null;
44 previousDiagnostic = null;
45 removeWorkspaceFolder = null;
46 signatureHelp = null;
47 toggleFormatOnSave = null;
48 };
59 };
60 mappings = {
61 codeAction = "<leader>ca";
62 goToDeclaration = "gD";
63 goToDefinition = "gd";
64 listReferences = "gr";
65 goToType = "gy";
66 hover = null;
67 nextDiagnostic = "<leader>d";
68 openDiagnosticFloat = "<leader>df";
69 renameSymbol = "rn";
70 documentHighlight = null;
71 listDocumentSymbols = null;
72 listImplementations = null;
73 listWorkspaceFolders = null;
74 previousDiagnostic = null;
75 removeWorkspaceFolder = null;
76 signatureHelp = null;
77 toggleFormatOnSave = null;
4978 };
5079 };
5180 languages = {
5281 enableDAP = true;
53 # haskell.enable = true;
5482 lua.enable = true;
5583 python.enable = true;
5684 python.format.type = "ruff";
57 markdown.extensions.render-markdown-nvim = {
85 markdown = {
5886 enable = true;
87 extensions.render-markdown-nvim = {
88 enable = true;
89 };
5990 };
6091 };
92
6193 formatter.conform-nvim = {
6294 enable = true;
6395 setupOpts = {
......@@ -84,9 +116,13 @@
84116 additionalVimRegexHighlighting = true;
85117 };
86118
87 context.enable = true;
119 grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
120 markdown_inline
121 markdown
122 ];
123
88124 highlight.enable = true;
89 indent.enable = true;
125 indent.enable = false;
90126 };
91127
92128 visuals = {
......@@ -98,13 +134,30 @@
98134 };
99135 autocomplete.blink-cmp = {
100136 enable = true;
101 # mappings = {
102 # };
137 mappings = {
138 close = null;
139 complete = null;
140 confirm = null;
141 next = null;
142 previous = null;
143 scrollDocsDown = null;
144 scrollDocsUp = null;
145 };
103146
104147 setupOpts = {
148 keymap = {
149 preset = "super-tab";
150 };
105151 completion = {
106152 ghost_text.enabled = false;
107153 list.selection.preselect = true;
154 trigger = {
155 show_in_snippet = true;
156 };
157 accept.auto_brackets.enabled = true;
158 };
159 signature = {
160 enabled = true;
108161 };
109162 };
110163 };