authorgravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-05-20 21:30:54-07:00
committergravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-05-20 21:30:54-07:00
log10453abfb1d3dd180ecef7c8951f1a88d391c4eb
tree9b2caa7e161c38750c04703669c705c08c86ac1a
parent69e9b167cbf154160adcdd28dcc7f6c4f901ee97
signature Commit is signed but in an unrecognized format.

commiting for posterity


9 files changed, 270 insertions(+), 174 deletions(-)

flake.nix+114-104
...@@ -39,71 +39,79 @@...@@ -39,71 +39,79 @@
39 nix-index-database.url = "github:nix-community/nix-index-database";39 nix-index-database.url = "github:nix-community/nix-index-database";
40 nix-index-database.inputs.nixpkgs.follows = "nixpkgs";40 nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
41 };41 };
42 outputs = {42 outputs =
43 self,43 {
44 nixpkgs,44 self,
45 nixos-cosmic,45 nixpkgs,
46 darwin,46 nixos-cosmic,
47 ...47 darwin,
48 } @ inputs: let48 ...
49 lib = nixpkgs.lib;49 }@inputs:
5050 let
51 # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere.51 lib = nixpkgs.lib;
52 overlays = [52
53 inputs.zig.overlays.default53 # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere.
54 inputs.rust-overlay.overlays.default54 overlays = [
55 inputs.nh.overlays.default55 inputs.zig.overlays.default
5656 inputs.rust-overlay.overlays.default
57 # https://github.com/LnL7/nix-darwin/issues/104157 inputs.nh.overlays.default
58 (_: prev: {58
59 karabiner-elements = prev.karabiner-elements.overrideAttrs (old: {59 # https://github.com/LnL7/nix-darwin/issues/1041
60 version = "14.13.0";60 (_: prev: {
6161 karabiner-elements = prev.karabiner-elements.overrideAttrs (old: {
62 src = prev.fetchurl {62 version = "14.13.0";
63 inherit (old.src) url;63
64 hash = "sha256-gmJwoht/Tfm5qMecmq1N6PSAIfWOqsvuHU8VDJY8bLw=";64 src = prev.fetchurl {
65 };65 inherit (old.src) url;
66 });66 hash = "sha256-gmJwoht/Tfm5qMecmq1N6PSAIfWOqsvuHU8VDJY8bLw=";
67 })67 };
68 ];68 });
69
70 # Users of this flake currently use x86_64 Linux and Apple Silicon
71 systems = [
72 "x86_64-linux"
73 "aarch64-darwin"
74 ];
75 forAllSystems = f:
76 builtins.listToAttrs (
77 builtins.map (system: {
78 name = system;
79 value = f (
80 inputs
81 // {
82 inherit system;
83 pkgs = nixpkgs.legacyPackages.${system};
84 }
85 );
86 })69 })
87 systems70 ];
88 );
8971
90 mkSystem = import ./lib/mkSystem.nix {72 # Users of this flake currently use x86_64 Linux and Apple Silicon
91 inherit73 systems = [
92 overlays74 "x86_64-linux"
93 nixpkgs75 "aarch64-darwin"
94 inputs76 ];
95 mkNeovim77 forAllSystems =
96 ;78 f:
97 };79 builtins.listToAttrs (
98 mkNeovim = import ./lib/mkNeovim.nix {80 builtins.map (system: {
99 inherit self overlays nixpkgs inputs;81 name = system;
100 };82 value = f (
101 in rec {83 inputs
102 inherit self;84 // {
103 # "nix fmt"85 inherit system;
104 formatter = forAllSystems (inputs: inputs.pkgs.nixfmt-tree);86 pkgs = nixpkgs.legacyPackages.${system};
105 packages = forAllSystems (87 }
106 {system, ...}:88 );
89 }) systems
90 );
91
92 mkSystem = import ./lib/mkSystem.nix {
93 inherit
94 overlays
95 nixpkgs
96 inputs
97 mkNeovim
98 ;
99 };
100 mkNeovim = import ./lib/mkNeovim.nix {
101 inherit
102 self
103 overlays
104 nixpkgs
105 inputs
106 ;
107 };
108 in
109 rec {
110 inherit self;
111 # "nix fmt"
112 formatter = forAllSystems (inputs: inputs.pkgs.nixfmt-tree);
113 packages = forAllSystems (
114 { system, ... }:
107 {115 {
108 nvim-chloe = mkNeovim "chloe" system;116 nvim-chloe = mkNeovim "chloe" system;
109 nvim-natalie = mkNeovim "natalie" system;117 nvim-natalie = mkNeovim "natalie" system;
...@@ -112,47 +120,49 @@...@@ -112,47 +120,49 @@
112 # "nix run .#darwin-rebuild"120 # "nix run .#darwin-rebuild"
113 darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild;121 darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild;
114 }122 }
115 );123 );
116
117 # natalie's desktop computer
118 nixosConfigurations.nixos = mkSystem "nixos" {
119 user = "natalie";
120 host = "desktop";
121 system = "x86_64-linux";
122 extraModules = [
123 nixos-cosmic.nixosModules.default
124 ];
125 };
126 # natalie's laptop
127 darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" {
128 user = "natalie";
129 host = "laptop";
130 system = "aarch64-darwin";
131 };
132124
133 # chloe's mac studio "sandwich"125 # natalie's desktop computer
134 darwinConfigurations.sandwich = mkSystem "sandwich" {126 nixosConfigurations.nixos = mkSystem "nixos" {
135 user = "chloe";127 user = "natalie";
136 host = "sandwich";128 host = "desktop";
137 system = "aarch64-darwin";129 system = "x86_64-linux";
138 };130 extraModules = [
139 # chloe's macbook air "paperback"131 nixos-cosmic.nixosModules.default
140 darwinConfigurations.paperback = mkSystem "paperback" {132 ];
141 user = "chloe";133 };
142 host = "paperback";134 # natalie's laptop
143 system = "aarch64-darwin";135 darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" {
136 user = "natalie";
137 host = "laptop";
138 system = "aarch64-darwin";
139 };
140
141 # chloe's mac studio "sandwich"
142 darwinConfigurations.sandwich = mkSystem "sandwich" {
143 user = "chloe";
144 host = "sandwich";
145 system = "aarch64-darwin";
146 };
147 # chloe's macbook air "paperback"
148 darwinConfigurations.paperback = mkSystem "paperback" {
149 user = "chloe";
150 host = "paperback";
151 system = "aarch64-darwin";
152 };
153
154 # generate checks for "nix flake check --all-systems --no-build"
155 checks.aarch64-darwin = builtins.listToAttrs (
156 builtins.map (
157 name:
158 let
159 d = darwinConfigurations.${name}.system;
160 in
161 {
162 name = "darwinConfiguration-" + d.name;
163 value = d;
164 }
165 ) (builtins.attrNames darwinConfigurations)
166 );
144 };167 };
145
146 # generate checks for "nix flake check --all-systems --no-build"
147 checks.aarch64-darwin = builtins.listToAttrs (
148 builtins.map (
149 name: let
150 d = darwinConfigurations.${name}.system;
151 in {
152 name = "darwinConfiguration-" + d.name;
153 value = d;
154 }
155 ) (builtins.attrNames darwinConfigurations)
156 );
157 };
158}168}
modules/neovim/default.nix+1-2
...@@ -74,7 +74,7 @@...@@ -74,7 +74,7 @@
74 };74 };
75 filetree = {75 filetree = {
76 neo-tree = {76 neo-tree = {
77 enable = true;77 enable = false;
78 };78 };
79 };79 };
80 tabline = {80 tabline = {
...@@ -133,7 +133,6 @@...@@ -133,7 +133,6 @@
133 indent = 2;133 indent = 2;
134 padding = 1;134 padding = 1;
135 }135 }
136 {section = "startup";}
137 ];136 ];
138 };137 };
139 image.enable = true;138 image.enable = true;
modules/shared/nix.nix+4-3
...@@ -1,14 +1,14 @@...@@ -1,14 +1,14 @@
1{ inputs, ... }:1{inputs, ...}: {
2{
3 nixpkgs.config = {2 nixpkgs.config = {
4 allowUnfree = true;3 allowUnfree = true;
5 };4 };
65
7 nix = {6 nix = {
8 nixPath = [ "nixpkgs = ${inputs.nixpkgs}" ];7 # nixPath = ["nixpkgs = ${inputs.nixpkgs}"];
9 extraOptions = ''8 extraOptions = ''
10 warn-dirty = false9 warn-dirty = false
11 '';10 '';
11 channel.enable = false;
1212
13 optimise = {13 optimise = {
14 automatic = true;14 automatic = true;
...@@ -19,6 +19,7 @@...@@ -19,6 +19,7 @@
19 "nix-command"19 "nix-command"
20 "flakes"20 "flakes"
21 ];21 ];
22 extra-nix-path = "nixpkgs=flake:nixpkgs";
22 substituters = [23 substituters = [
23 "https://cache.nixos.org/?priority=10"24 "https://cache.nixos.org/?priority=10"
2425
users/natalie/packages.nix+3-5
...@@ -1,7 +1,6 @@...@@ -1,7 +1,6 @@
1# Packages installed with home-manager1# Packages installed with home-manager
2{ pkgs, ... }:2{pkgs, ...}:
3with pkgs;3with pkgs; [
4[
5 #general development4 #general development
6 just5 just
7 pkg-config6 pkg-config
...@@ -36,7 +35,7 @@ with pkgs;...@@ -36,7 +35,7 @@ with pkgs;
36 nh35 nh
3736
38 #terminal stuff37 #terminal stuff
39 (btop.override { cudaSupport = true; })38 (btop.override {cudaSupport = true;})
40 tmux39 tmux
41 zellij40 zellij
42 lazygit41 lazygit
...@@ -83,7 +82,6 @@ with pkgs;...@@ -83,7 +82,6 @@ with pkgs;
83 lua51Packages.lua82 lua51Packages.lua
84 lua51Packages.luarocks-nix83 lua51Packages.luarocks-nix
85 codespell84 codespell
86 typst
87 tree-sitter85 tree-sitter
8886
89 #python87 #python
users/natalie/vim.nix+1
...@@ -7,5 +7,6 @@...@@ -7,5 +7,6 @@
7 name = "catppuccin";7 name = "catppuccin";
8 style = "mocha";8 style = "mocha";
9 };9 };
10 hideSearchHighlight = true;
10 };11 };
11}12}
users/natalie/vim/default.nix+2
...@@ -2,5 +2,7 @@...@@ -2,5 +2,7 @@
2 imports = [2 imports = [
3 ./keybinds.nix3 ./keybinds.nix
4 ./languages.nix4 ./languages.nix
5 ./latex.nix
5 ];6 ];
7
6}8}
users/natalie/vim/keybinds.nix+7-16
...@@ -10,25 +10,16 @@...@@ -10,25 +10,16 @@
10in {10in {
11 vim = {11 vim = {
12 keymaps = [12 keymaps = [
13 (mkKeymap "n" "<leader>e" "<cmd>lua require('snacks').explorer()<cr>" "File Explorer")13 (mkKeymap "n" "<leader>e" ":lua require('snacks').explorer()<CR>" "File Explorer")
1414
15 # Snacks Picker Replaces Telescope!?15 # Snacks Picker Replaces Telescope!?
16 (mkKeymap "n" "<leader><space>" "<cmd>lua require('snacks').picker.smart()" "Smart Find Files")16 (mkKeymap "n" "<leader><space>" ":lua require('snacks').picker.smart()<CR>" "Smart Find Files")
17 (mkKeymap "n" "<leader>ff" "<cmd>lua require('snacks').picker.files()<cr>" "Find File")17 (mkKeymap "n" "<leader>ff" ":lua require('snacks').picker.files()<CR>" "Find File")
18 # (mkKeymap "n" "<leader>fr" "<cmd>lua require('snacks').picker.recent()<cr>" "Open Recent File")18 (mkKeymap "n" "<leader>fg" ":lua require('snacks').picker.grep()<CR>" "Grep Files")
19 (mkKeymap "n" "<leader>fg" "<cmd>lua require('snacks').picker.grep()<cr>" "Grep Files")
20 # (mkKeymap "n" "<leader>fb" "<cmd>lua require('snacks').picker.buffers()<cr>" "Grep Buffers")
21 # (mkKeymap "n" "<leader>fh" "<cmd>lua require('snacks').picker.help()<cr>" "Grep Help Tags")
22 # (mkKeymap "n" "<leader>fg" "<cmd>lua require('snacks').picker.git_files()<cr>" "Grep Git Files")
23 # (mkKeymap "n" "<leader>fd" "<cmd>lua require('snacks').picker.diagnostics()<cr>" "Grep Diagnostics")
24 # (mkKeymap "n" "<leader>fc" "<cmd>lua require('aerial').snacks_picker()<cr>" "Code Outline")
25
26 # Lsp19 # Lsp
27 (mkKeymap "n" "gd" "<cmd>lua require('snacks').picker.lsp_definitions<cr>" "Goto Definition")20 (mkKeymap "n" "K" ":lua vim.lsp.buf.hover()<CR>" "Hover docs")
28 (mkKeymap "n" "gD" "<cmd>lua require('snacks').picker.lsp_declarations<cr>" "Goto Declarations")21 (mkKeymap "n" "lr" ":lua vim.lsp.buf.rename()<CR>" "Rename")
29 (mkKeymap "n" "gI" "<cmd>lua require('snacks').picker.lsp_implementations<cr>" "Goto Implementation")22 # (mkKeymap "n" "<leader>th" ":lua function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end<CR>" "Toggle Inlay Hints")
30 (mkKeymap "n" "gr" "<cmd>lua require('snacks').picker.lsp_references<cr>" "Goto References")
31 (mkKeymap "n" "gy" "<cmd>lua require('snacks').picker.lsp_type_definitions<cr>" "Goto T[y]pe Definition")
32 ];23 ];
33 };24 };
34}25}
users/natalie/vim/languages.nix+83-44
...@@ -1,54 +1,61 @@...@@ -1,54 +1,61 @@
1{flake, ...}: {1{
2 flake,
3 userConfig,
4 pkgs,
5 ...
6}: {
2 vim = {7 vim = {
3 lsp.servers.nixd.settings = {8 extraPackages = with pkgs; [
4 nixd.nixpkgs.expr = "import '${flake.inputs.nixpkgs}' { }";9 python312Packages.pylatexenc
10 ];
11 lsp = {
12 nvim-docs-view.enable = true;
13 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'';
24 };
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 };
49 };
5 };50 };
6 languages = {51 languages = {
7 enableDAP = true;52 enableDAP = true;
8 haskell.enable = true;53 # haskell.enable = true;
9 lua.enable = true;54 lua.enable = true;
10 python.enable = true;55 python.enable = true;
11 python.format.type = "ruff";56 python.format.type = "ruff";
12 # markdown.extensions.markview-nvim = {57 markdown.extensions.render-markdown-nvim = {
13 # enable = true;58 enable = true;
14 # setupOpts = {
15 # };
16 # };
17 nix = {
18 lsp = {
19 server = "nixd";
20 options = {
21 nixos = {
22 expr = "(let
23 pkgs = import '${flake.inputs.nixpkgs}' {};
24 inherit (pkgs) lib;
25 in (lib.evalModules {
26 modules = import '${flake.inputs.nixpkgs}/nixos/modules/module-list.nix';
27 check = false;
28 })).options";
29 };
30 nix_darwin = {
31 expr = "(let
32 pkgs = import ''${flake.inputs.nixpkgs}' {};
33 inherit (pkgs) lib;
34 in (lib.evalModules {
35 modules = import '${flake.inputs.darwin}/modules/module-list.nix';
36 check = false;
37 })).options";
38 };
39 home_manager = {
40 expr = "(let
41 pkgs = import '${flake.inputs.nixpkgs}' {};
42 lib = import '${flake.inputs.home-manager}/modules/lib/stdlib-extended.nix' pkgs.lib;
43 in (lib.evalModules {
44 modules = (import '${flake.inputs.home-manager}/modules/modules.nix') {
45 inherit lib pkgs;
46 check = false;
47 };
48 })).options";
49 };
50 };
51 };
52 };59 };
53 };60 };
54 formatter.conform-nvim = {61 formatter.conform-nvim = {
...@@ -69,5 +76,37 @@...@@ -69,5 +76,37 @@
69 haskell = ["hlint"];76 haskell = ["hlint"];
70 };77 };
71 };78 };
79 treesitter = {
80 enable = true;
81 fold = true;
82 addDefaultGrammars = true;
83 highlight = {
84 additionalVimRegexHighlighting = true;
85 };
86
87 context.enable = true;
88 highlight.enable = true;
89 indent.enable = true;
90 };
91
92 visuals = {
93 fidget-nvim = {
94 setupOpts = {
95 logger.level = "trace";
96 };
97 };
98 };
99 autocomplete.blink-cmp = {
100 enable = true;
101 # mappings = {
102 # };
103
104 setupOpts = {
105 completion = {
106 ghost_text.enabled = false;
107 list.selection.preselect = true;
108 };
109 };
110 };
72 };111 };
73}112}
users/natalie/vim/latex.nix created+55
...@@ -0,0 +1,55 @@
1{pkgs, ...}: {
2 vim = {
3 lazy.plugins.vimtex = {
4 enabled = true;
5 package = pkgs.vimPlugins.vimtex;
6 lazy = true;
7 ft = "tex";
8 };
9
10 globals = {
11 tex_flavor = "latex";
12 maplocalleader = "\\";
13 vimtex_compiler_method = "latexmk";
14 vimtex_view_method = "zathura";
15 vimtex_compiler_latexmk = {
16 callback = 1;
17 continuous = 1;
18 executable = "latexmk";
19 hooks = [];
20 options = [
21 "-verbose"
22 "-file-line-error"
23 "-synctex=1"
24 "-interaction=nonstopmode"
25 "-shell-escape"
26 ];
27 };
28 vimtex_log_ignore = [
29 "Underfull"
30 "Overfull"
31 "specifier changed to"
32 "Token not allowed in a PDF string"
33 ];
34 vimtex_quickfix_ignore_filters = [
35 "Underfull"
36 "Overfull"
37 ];
38 };
39
40 lsp = {
41 servers = {
42 texlab = {
43 enable = true;
44 cmd = ["${pkgs.texlab}/bin/texlab"];
45 filetypes = ["tex"];
46 };
47 };
48 };
49 treesitter = {
50 grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
51 latex
52 ];
53 };
54 };
55}