My dotfiles (written in Nix, btw!) ❄
1{
2 self,
3 lib,
4 pkgs,
5 systemSettings,
6 userSettings,
7 ...
8}: {
9 programs.nixvim = {
10 enable = true;
11
12 opts = {
13 number = true;
14 relativenumber = true;
15 signcolumn = "yes";
16 ignorecase = true;
17 smartcase = true;
18 tabstop = 2;
19 undofile = true;
20 };
21 colorschemes.nord.enable = true;
22 plugins = {
23 lsp = {
24 enable = true;
25 inlayHints = true;
26 servers = {
27 nixd = let
28 flake = ''(builtins.getFlake "${self}")'';
29 in {
30 enable = true;
31 settings = {
32 nixpkgs.expr = "import ${flake}.inputs.nixpkgs { }";
33 formatting.command = ["${lib.getExe pkgs.alejandra}"];
34 options = {
35 nixos.expr = "${flake}.nixosConfigurations.${systemSettings.hostname}.options";
36 home-manager.expr = "${flake}.nixosConfigurations.${userSettings.username}.options";
37 };
38 };
39 };
40 gopls.enable = true;
41 gleam.enable = true;
42 cssls.enable = true;
43 html = {
44 enable = true;
45 filetypes = ["html" "templ"];
46 };
47 emmet_ls = {
48 enable = true;
49 filetypes = ["html" "templ"];
50 };
51 htmx = {
52 enable = true;
53 filetypes = ["html" "templ"];
54 };
55 tailwindcss = {
56 enable = true;
57 filetypes = ["html" "templ"];
58 settings.tailwindCSS.includeLanguages = {
59 templ = "html";
60 };
61 };
62 templ.enable = true;
63 zls.enable = true;
64 };
65 };
66
67 lsp-format.enable = true; #formatting
68 lsp-lines.enable = true; #multiple lines for errors
69 lsp-signature.enable = true; #show function signature
70 lsp-status.enable = true; #more things at the lualine
71 lspkind.enable = true; #pictograms
72 neocord.enable = true; #discord
73 lualine.enable = true; #bottom status line
74 web-devicons.enable = true; #icons
75 treesitter.enable = true;
76 bufferline.enable = true;
77 telescope.enable = true;
78 cmp = {
79 enable = true;
80 settings = {
81 sources = [
82 {name = "nvim_lsp";}
83 {name = "path";}
84 {name = "buffer";}
85 ];
86 mapping = {
87 "<C-b>" = "cmp.mapping.scroll_docs(-4)";
88 "<C-f>" = "cmp.mapping.scroll_docs(4)";
89 "<C-Space>" = "cmp.mapping.complete()";
90 "<C-e>" = "cmp.mapping.abort()";
91 "<CR>" = "cmp.mapping.confirm({ select = true })";
92 "<Tab>" = "cmp.select_next_item()";
93 "<S-Tab>" = "cmp.select_prev_item()";
94 };
95 };
96 };
97 dressing.enable = true;
98 };
99 };
100}