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 @@
3939 nix-index-database.url = "github:nix-community/nix-index-database";
4040 nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
4141 };
42 outputs = {
43 self,
44 nixpkgs,
45 nixos-cosmic,
46 darwin,
47 ...
48 } @ inputs: let
49 lib = nixpkgs.lib;
50
51 # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere.
52 overlays = [
53 inputs.zig.overlays.default
54 inputs.rust-overlay.overlays.default
55 inputs.nh.overlays.default
56
57 # https://github.com/LnL7/nix-darwin/issues/1041
58 (_: prev: {
59 karabiner-elements = prev.karabiner-elements.overrideAttrs (old: {
60 version = "14.13.0";
61
62 src = prev.fetchurl {
63 inherit (old.src) url;
64 hash = "sha256-gmJwoht/Tfm5qMecmq1N6PSAIfWOqsvuHU8VDJY8bLw=";
65 };
66 });
67 })
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 );
42 outputs =
43 {
44 self,
45 nixpkgs,
46 nixos-cosmic,
47 darwin,
48 ...
49 }@inputs:
50 let
51 lib = nixpkgs.lib;
52
53 # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere.
54 overlays = [
55 inputs.zig.overlays.default
56 inputs.rust-overlay.overlays.default
57 inputs.nh.overlays.default
58
59 # https://github.com/LnL7/nix-darwin/issues/1041
60 (_: prev: {
61 karabiner-elements = prev.karabiner-elements.overrideAttrs (old: {
62 version = "14.13.0";
63
64 src = prev.fetchurl {
65 inherit (old.src) url;
66 hash = "sha256-gmJwoht/Tfm5qMecmq1N6PSAIfWOqsvuHU8VDJY8bLw=";
67 };
68 });
8669 })
87 systems
88 );
70 ];
8971
90 mkSystem = import ./lib/mkSystem.nix {
91 inherit
92 overlays
93 nixpkgs
94 inputs
95 mkNeovim
96 ;
97 };
98 mkNeovim = import ./lib/mkNeovim.nix {
99 inherit self overlays nixpkgs inputs;
100 };
101 in rec {
102 inherit self;
103 # "nix fmt"
104 formatter = forAllSystems (inputs: inputs.pkgs.nixfmt-tree);
105 packages = forAllSystems (
106 {system, ...}:
72 # Users of this flake currently use x86_64 Linux and Apple Silicon
73 systems = [
74 "x86_64-linux"
75 "aarch64-darwin"
76 ];
77 forAllSystems =
78 f:
79 builtins.listToAttrs (
80 builtins.map (system: {
81 name = system;
82 value = f (
83 inputs
84 // {
85 inherit system;
86 pkgs = nixpkgs.legacyPackages.${system};
87 }
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, ... }:
107115 {
108116 nvim-chloe = mkNeovim "chloe" system;
109117 nvim-natalie = mkNeovim "natalie" system;
......@@ -112,47 +120,49 @@
112120 # "nix run .#darwin-rebuild"
113121 darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild;
114122 }
115 );
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 };
123 );
132124
133 # chloe's mac studio "sandwich"
134 darwinConfigurations.sandwich = mkSystem "sandwich" {
135 user = "chloe";
136 host = "sandwich";
137 system = "aarch64-darwin";
138 };
139 # chloe's macbook air "paperback"
140 darwinConfigurations.paperback = mkSystem "paperback" {
141 user = "chloe";
142 host = "paperback";
143 system = "aarch64-darwin";
125 # natalie's desktop computer
126 nixosConfigurations.nixos = mkSystem "nixos" {
127 user = "natalie";
128 host = "desktop";
129 system = "x86_64-linux";
130 extraModules = [
131 nixos-cosmic.nixosModules.default
132 ];
133 };
134 # natalie's laptop
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 );
144167 };
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 };
158168}
modules/neovim/default.nix+1-2
......@@ -74,7 +74,7 @@
7474 };
7575 filetree = {
7676 neo-tree = {
77 enable = true;
77 enable = false;
7878 };
7979 };
8080 tabline = {
......@@ -133,7 +133,6 @@
133133 indent = 2;
134134 padding = 1;
135135 }
136 {section = "startup";}
137136 ];
138137 };
139138 image.enable = true;
modules/shared/nix.nix+4-3
......@@ -1,14 +1,14 @@
1{ inputs, ... }:
2{
1{inputs, ...}: {
32 nixpkgs.config = {
43 allowUnfree = true;
54 };
65
76 nix = {
8 nixPath = [ "nixpkgs = ${inputs.nixpkgs}" ];
7 # nixPath = ["nixpkgs = ${inputs.nixpkgs}"];
98 extraOptions = ''
109 warn-dirty = false
1110 '';
11 channel.enable = false;
1212
1313 optimise = {
1414 automatic = true;
......@@ -19,6 +19,7 @@
1919 "nix-command"
2020 "flakes"
2121 ];
22 extra-nix-path = "nixpkgs=flake:nixpkgs";
2223 substituters = [
2324 "https://cache.nixos.org/?priority=10"
2425
users/natalie/packages.nix+3-5
......@@ -1,7 +1,6 @@
11# Packages installed with home-manager
2{ pkgs, ... }:
3with pkgs;
4[
2{pkgs, ...}:
3with pkgs; [
54 #general development
65 just
76 pkg-config
......@@ -36,7 +35,7 @@ with pkgs;
3635 nh
3736
3837 #terminal stuff
39 (btop.override { cudaSupport = true; })
38 (btop.override {cudaSupport = true;})
4039 tmux
4140 zellij
4241 lazygit
......@@ -83,7 +82,6 @@ with pkgs;
8382 lua51Packages.lua
8483 lua51Packages.luarocks-nix
8584 codespell
86 typst
8785 tree-sitter
8886
8987 #python
users/natalie/vim.nix+1
......@@ -7,5 +7,6 @@
77 name = "catppuccin";
88 style = "mocha";
99 };
10 hideSearchHighlight = true;
1011 };
1112}
users/natalie/vim/default.nix+2
......@@ -2,5 +2,7 @@
22 imports = [
33 ./keybinds.nix
44 ./languages.nix
5 ./latex.nix
56 ];
7
68}
users/natalie/vim/keybinds.nix+7-16
......@@ -10,25 +10,16 @@
1010in {
1111 vim = {
1212 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
1515 # Snacks Picker Replaces Telescope!?
16 (mkKeymap "n" "<leader><space>" "<cmd>lua require('snacks').picker.smart()" "Smart Find Files")
17 (mkKeymap "n" "<leader>ff" "<cmd>lua require('snacks').picker.files()<cr>" "Find File")
18 # (mkKeymap "n" "<leader>fr" "<cmd>lua require('snacks').picker.recent()<cr>" "Open Recent File")
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
16 (mkKeymap "n" "<leader><space>" ":lua require('snacks').picker.smart()<CR>" "Smart Find Files")
17 (mkKeymap "n" "<leader>ff" ":lua require('snacks').picker.files()<CR>" "Find File")
18 (mkKeymap "n" "<leader>fg" ":lua require('snacks').picker.grep()<CR>" "Grep Files")
2619 # Lsp
27 (mkKeymap "n" "gd" "<cmd>lua require('snacks').picker.lsp_definitions<cr>" "Goto Definition")
28 (mkKeymap "n" "gD" "<cmd>lua require('snacks').picker.lsp_declarations<cr>" "Goto Declarations")
29 (mkKeymap "n" "gI" "<cmd>lua require('snacks').picker.lsp_implementations<cr>" "Goto Implementation")
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")
20 (mkKeymap "n" "K" ":lua vim.lsp.buf.hover()<CR>" "Hover docs")
21 (mkKeymap "n" "lr" ":lua vim.lsp.buf.rename()<CR>" "Rename")
22 # (mkKeymap "n" "<leader>th" ":lua function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end<CR>" "Toggle Inlay Hints")
3223 ];
3324 };
3425}
users/natalie/vim/languages.nix+83-44
......@@ -1,54 +1,61 @@
1{flake, ...}: {
1{
2 flake,
3 userConfig,
4 pkgs,
5 ...
6}: {
27 vim = {
3 lsp.servers.nixd.settings = {
4 nixd.nixpkgs.expr = "import '${flake.inputs.nixpkgs}' { }";
8 extraPackages = with pkgs; [
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 };
550 };
651 languages = {
752 enableDAP = true;
8 haskell.enable = true;
53 # haskell.enable = true;
954 lua.enable = true;
1055 python.enable = true;
1156 python.format.type = "ruff";
12 # markdown.extensions.markview-nvim = {
13 # 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 };
57 markdown.extensions.render-markdown-nvim = {
58 enable = true;
5259 };
5360 };
5461 formatter.conform-nvim = {
......@@ -69,5 +76,37 @@
6976 haskell = ["hlint"];
7077 };
7178 };
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 };
72111 };
73112}
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}