commiting for posterity

This commit is contained in:
Natalie 2025-05-20 21:30:54 -07:00
parent 69e9b167cb
commit 10453abfb1
No known key found for this signature in database
GPG key ID: 61F4EAEB0C9C3D5F
9 changed files with 266 additions and 170 deletions

210
flake.nix
View file

@ -39,71 +39,79 @@
nix-index-database.url = "github:nix-community/nix-index-database"; nix-index-database.url = "github:nix-community/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = { outputs =
self, {
nixpkgs, self,
nixos-cosmic, nixpkgs,
darwin, nixos-cosmic,
... darwin,
} @ inputs: let ...
lib = nixpkgs.lib; }@inputs:
let
lib = nixpkgs.lib;
# TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere. # TODO: apply these overlays sooner and remove uses of legacyPackages elsewhere.
overlays = [ overlays = [
inputs.zig.overlays.default inputs.zig.overlays.default
inputs.rust-overlay.overlays.default inputs.rust-overlay.overlays.default
inputs.nh.overlays.default inputs.nh.overlays.default
# https://github.com/LnL7/nix-darwin/issues/1041 # https://github.com/LnL7/nix-darwin/issues/1041
(_: prev: { (_: prev: {
karabiner-elements = prev.karabiner-elements.overrideAttrs (old: { karabiner-elements = prev.karabiner-elements.overrideAttrs (old: {
version = "14.13.0"; version = "14.13.0";
src = prev.fetchurl { src = prev.fetchurl {
inherit (old.src) url; inherit (old.src) url;
hash = "sha256-gmJwoht/Tfm5qMecmq1N6PSAIfWOqsvuHU8VDJY8bLw="; 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};
}
);
}) })
systems ];
);
mkSystem = import ./lib/mkSystem.nix { # Users of this flake currently use x86_64 Linux and Apple Silicon
inherit systems = [
overlays "x86_64-linux"
nixpkgs "aarch64-darwin"
inputs ];
mkNeovim forAllSystems =
; f:
}; builtins.listToAttrs (
mkNeovim = import ./lib/mkNeovim.nix { builtins.map (system: {
inherit self overlays nixpkgs inputs; name = system;
}; value = f (
in rec { inputs
inherit self; // {
# "nix fmt" inherit system;
formatter = forAllSystems (inputs: inputs.pkgs.nixfmt-tree); pkgs = nixpkgs.legacyPackages.${system};
packages = forAllSystems ( }
{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-chloe = mkNeovim "chloe" system;
nvim-natalie = mkNeovim "natalie" system; nvim-natalie = mkNeovim "natalie" system;
@ -112,47 +120,49 @@
# "nix run .#darwin-rebuild" # "nix run .#darwin-rebuild"
darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild; darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild;
} }
); );
# natalie's desktop computer # natalie's desktop computer
nixosConfigurations.nixos = mkSystem "nixos" { nixosConfigurations.nixos = mkSystem "nixos" {
user = "natalie"; user = "natalie";
host = "desktop"; host = "desktop";
system = "x86_64-linux"; system = "x86_64-linux";
extraModules = [ extraModules = [
nixos-cosmic.nixosModules.default nixos-cosmic.nixosModules.default
]; ];
}; };
# natalie's laptop # natalie's laptop
darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" {
user = "natalie"; user = "natalie";
host = "laptop"; host = "laptop";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
# chloe's mac studio "sandwich" # chloe's mac studio "sandwich"
darwinConfigurations.sandwich = mkSystem "sandwich" { darwinConfigurations.sandwich = mkSystem "sandwich" {
user = "chloe"; user = "chloe";
host = "sandwich"; host = "sandwich";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
# chloe's macbook air "paperback" # chloe's macbook air "paperback"
darwinConfigurations.paperback = mkSystem "paperback" { darwinConfigurations.paperback = mkSystem "paperback" {
user = "chloe"; user = "chloe";
host = "paperback"; host = "paperback";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
# generate checks for "nix flake check --all-systems --no-build" # generate checks for "nix flake check --all-systems --no-build"
checks.aarch64-darwin = builtins.listToAttrs ( checks.aarch64-darwin = builtins.listToAttrs (
builtins.map ( builtins.map (
name: let name:
d = darwinConfigurations.${name}.system; let
in { d = darwinConfigurations.${name}.system;
name = "darwinConfiguration-" + d.name; in
value = d; {
} name = "darwinConfiguration-" + d.name;
) (builtins.attrNames darwinConfigurations) value = d;
); }
}; ) (builtins.attrNames darwinConfigurations)
);
};
} }

View file

@ -74,7 +74,7 @@
}; };
filetree = { filetree = {
neo-tree = { neo-tree = {
enable = true; enable = false;
}; };
}; };
tabline = { tabline = {
@ -133,7 +133,6 @@
indent = 2; indent = 2;
padding = 1; padding = 1;
} }
{section = "startup";}
]; ];
}; };
image.enable = true; image.enable = true;

View file

@ -1,14 +1,14 @@
{ inputs, ... }: {inputs, ...}: {
{
nixpkgs.config = { nixpkgs.config = {
allowUnfree = true; allowUnfree = true;
}; };
nix = { nix = {
nixPath = [ "nixpkgs = ${inputs.nixpkgs}" ]; # nixPath = ["nixpkgs = ${inputs.nixpkgs}"];
extraOptions = '' extraOptions = ''
warn-dirty = false warn-dirty = false
''; '';
channel.enable = false;
optimise = { optimise = {
automatic = true; automatic = true;
@ -19,6 +19,7 @@
"nix-command" "nix-command"
"flakes" "flakes"
]; ];
extra-nix-path = "nixpkgs=flake:nixpkgs";
substituters = [ substituters = [
"https://cache.nixos.org/?priority=10" "https://cache.nixos.org/?priority=10"

View file

@ -1,7 +1,6 @@
# Packages installed with home-manager # Packages installed with home-manager
{ pkgs, ... }: {pkgs, ...}:
with pkgs; with pkgs; [
[
#general development #general development
just just
pkg-config pkg-config
@ -36,7 +35,7 @@ with pkgs;
nh nh
#terminal stuff #terminal stuff
(btop.override { cudaSupport = true; }) (btop.override {cudaSupport = true;})
tmux tmux
zellij zellij
lazygit lazygit
@ -83,7 +82,6 @@ with pkgs;
lua51Packages.lua lua51Packages.lua
lua51Packages.luarocks-nix lua51Packages.luarocks-nix
codespell codespell
typst
tree-sitter tree-sitter
#python #python

View file

@ -7,5 +7,6 @@
name = "catppuccin"; name = "catppuccin";
style = "mocha"; style = "mocha";
}; };
hideSearchHighlight = true;
}; };
} }

View file

@ -2,5 +2,7 @@
imports = [ imports = [
./keybinds.nix ./keybinds.nix
./languages.nix ./languages.nix
./latex.nix
]; ];
} }

View file

@ -10,25 +10,16 @@
in { in {
vim = { vim = {
keymaps = [ keymaps = [
(mkKeymap "n" "<leader>e" "<cmd>lua require('snacks').explorer()<cr>" "File Explorer") (mkKeymap "n" "<leader>e" ":lua require('snacks').explorer()<CR>" "File Explorer")
# Snacks Picker Replaces Telescope!? # Snacks Picker Replaces Telescope!?
(mkKeymap "n" "<leader><space>" "<cmd>lua require('snacks').picker.smart()" "Smart Find Files") (mkKeymap "n" "<leader><space>" ":lua require('snacks').picker.smart()<CR>" "Smart Find Files")
(mkKeymap "n" "<leader>ff" "<cmd>lua require('snacks').picker.files()<cr>" "Find File") (mkKeymap "n" "<leader>ff" ":lua require('snacks').picker.files()<CR>" "Find File")
# (mkKeymap "n" "<leader>fr" "<cmd>lua require('snacks').picker.recent()<cr>" "Open Recent File") (mkKeymap "n" "<leader>fg" ":lua require('snacks').picker.grep()<CR>" "Grep Files")
(mkKeymap "n" "<leader>fg" "<cmd>lua require('snacks').picker.grep()<cr>" "Grep Files")
# (mkKeymap "n" "<leader>fb" "<cmd>lua require('snacks').picker.buffers()<cr>" "Grep Buffers")
# (mkKeymap "n" "<leader>fh" "<cmd>lua require('snacks').picker.help()<cr>" "Grep Help Tags")
# (mkKeymap "n" "<leader>fg" "<cmd>lua require('snacks').picker.git_files()<cr>" "Grep Git Files")
# (mkKeymap "n" "<leader>fd" "<cmd>lua require('snacks').picker.diagnostics()<cr>" "Grep Diagnostics")
# (mkKeymap "n" "<leader>fc" "<cmd>lua require('aerial').snacks_picker()<cr>" "Code Outline")
# Lsp # Lsp
(mkKeymap "n" "gd" "<cmd>lua require('snacks').picker.lsp_definitions<cr>" "Goto Definition") (mkKeymap "n" "K" ":lua vim.lsp.buf.hover()<CR>" "Hover docs")
(mkKeymap "n" "gD" "<cmd>lua require('snacks').picker.lsp_declarations<cr>" "Goto Declarations") (mkKeymap "n" "lr" ":lua vim.lsp.buf.rename()<CR>" "Rename")
(mkKeymap "n" "gI" "<cmd>lua require('snacks').picker.lsp_implementations<cr>" "Goto Implementation") # (mkKeymap "n" "<leader>th" ":lua function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end<CR>" "Toggle Inlay Hints")
(mkKeymap "n" "gr" "<cmd>lua require('snacks').picker.lsp_references<cr>" "Goto References")
(mkKeymap "n" "gy" "<cmd>lua require('snacks').picker.lsp_type_definitions<cr>" "Goto T[y]pe Definition")
]; ];
}; };
} }

View file

@ -1,54 +1,61 @@
{flake, ...}: { {
flake,
userConfig,
pkgs,
...
}: {
vim = { vim = {
lsp.servers.nixd.settings = { extraPackages = with pkgs; [
nixd.nixpkgs.expr = "import '${flake.inputs.nixpkgs}' { }"; 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 = "<leader>ca";
goToDeclaration = "gD";
goToDefinition = "gd";
listReferences = "gr";
goToType = "gy";
hover = "K";
nextDiagnostic = "<leader>d";
openDiagnosticFloat = "<leader>df";
renameSymbol = "rn";
documentHighlight = null;
listDocumentSymbols = null;
listImplementations = null;
listWorkspaceFolders = null;
previousDiagnostic = null;
removeWorkspaceFolder = null;
signatureHelp = null;
toggleFormatOnSave = null;
};
};
}; };
languages = { languages = {
enableDAP = true; enableDAP = true;
haskell.enable = true; # haskell.enable = true;
lua.enable = true; lua.enable = true;
python.enable = true; python.enable = true;
python.format.type = "ruff"; python.format.type = "ruff";
# markdown.extensions.markview-nvim = { markdown.extensions.render-markdown-nvim = {
# enable = true; 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";
};
};
};
}; };
}; };
formatter.conform-nvim = { formatter.conform-nvim = {
@ -69,5 +76,37 @@
haskell = ["hlint"]; 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;
};
};
};
}; };
} }

View file

@ -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
];
};
};
}