diff options
| author | seth <[email protected]> | 2023-02-22 02:22:10 -0500 |
|---|---|---|
| committer | seth <[email protected]> | 2023-02-22 02:22:10 -0500 |
| commit | 01ccb0cead584733e6c89fcad44c441fe05bc5c7 (patch) | |
| tree | 54703a80882ed366b237c27f88b858f3106eb0e3 | |
| parent | 9c4a04054f5c72c3c66973b0bea06d10e042947c (diff) | |
switch back to alejandra
nixpkgs-fmt is weird...
29 files changed, 538 insertions, 525 deletions
@@ -9,73 +9,71 @@ lanzaboote.url = "github:nix-community/lanzaboote"; }; - outputs = - inputs @ { home-manager - , lanzaboote - , nixos-hardware - , nixos-wsl - , nixpkgs - , nixpkgsUnstable - , ... - }: - let - util = import ./util { inherit inputs home-manager; }; - inherit (util) host user; - in - { - homeConfigurations = { - seth = user.mkHMUser { - username = "seth"; - stateVersion = "23.05"; - channel = nixpkgsUnstable; - modules = [ ]; - }; + outputs = inputs @ { + home-manager, + lanzaboote, + nixos-hardware, + nixos-wsl, + nixpkgs, + nixpkgsUnstable, + ... + }: let + util = import ./util {inherit inputs home-manager;}; + inherit (util) host user; + in { + homeConfigurations = { + seth = user.mkHMUser { + username = "seth"; + stateVersion = "23.05"; + channel = nixpkgsUnstable; + modules = []; }; + }; - nixosConfigurations = - (host.mkHost { - name = "glados"; - modules = [ - nixos-hardware.nixosModules.common-cpu-amd-pstate - nixos-hardware.nixosModules.common-gpu-nvidia-nonprime - nixos-hardware.nixosModules.common-pc-ssd - lanzaboote.nixosModules.lanzaboote + nixosConfigurations = + (host.mkHost { + name = "glados"; + modules = [ + nixos-hardware.nixosModules.common-cpu-amd-pstate + nixos-hardware.nixosModules.common-gpu-nvidia-nonprime + nixos-hardware.nixosModules.common-pc-ssd + lanzaboote.nixosModules.lanzaboote - ./users/seth - ]; - specialArgs = { - desktop = "gnome"; - wsl = false; - }; - version = "23.05"; - pkgs = nixpkgsUnstable; - }) - // (host.mkHost { - name = "glados-wsl"; - modules = [ - nixos-wsl.nixosModules.wsl + ./users/seth + ]; + specialArgs = { + desktop = "gnome"; + wsl = false; + }; + version = "23.05"; + pkgs = nixpkgsUnstable; + }) + // (host.mkHost { + name = "glados-wsl"; + modules = [ + nixos-wsl.nixosModules.wsl - { - wsl = { - enable = true; - defaultUser = "seth"; - nativeSystemd = true; - wslConf.network.hostname = "glados-wsl"; - startMenuLaunchers = false; - interop.includePath = false; - }; - } + { + wsl = { + enable = true; + defaultUser = "seth"; + nativeSystemd = true; + wslConf.network.hostname = "glados-wsl"; + startMenuLaunchers = false; + interop.includePath = false; + }; + } - ./users/seth - ]; - specialArgs = { - desktop = ""; - wsl = true; - }; - version = "23.05"; - pkgs = nixpkgsUnstable; - }); + ./users/seth + ]; + specialArgs = { + desktop = ""; + wsl = true; + }; + version = "23.05"; + pkgs = nixpkgsUnstable; + }); - formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixpkgs-fmt; - }; + formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra; + }; } diff --git a/hosts/common/desktop/default.nix b/hosts/common/desktop/default.nix index 3496df9..3a651ea 100644 --- a/hosts/common/desktop/default.nix +++ b/hosts/common/desktop/default.nix @@ -1,22 +1,21 @@ -{ lib -, desktop -, ... -}: -let - gui = desktop != ""; -in { + lib, + desktop, + ... +}: let + gui = desktop != ""; +in { imports = - [ ] + [] ++ ( if (desktop == "gnome") - then [ ./gnome.nix ] - else [ ] + then [./gnome.nix] + else [] ) ++ ( if (desktop == "plasma") - then [ ./plasma.nix ] - else [ ] + then [./plasma.nix] + else [] ); environment.noXlibs = lib.mkForce false; diff --git a/hosts/common/desktop/gnome.nix b/hosts/common/desktop/gnome.nix index f8d59a5..b72d757 100644 --- a/hosts/common/desktop/gnome.nix +++ b/hosts/common/desktop/gnome.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: { +{pkgs, ...}: { environment = { gnome.excludePackages = with pkgs; [ epiphany diff --git a/hosts/common/desktop/plasma.nix b/hosts/common/desktop/plasma.nix index cd31983..61dc1da 100644 --- a/hosts/common/desktop/plasma.nix +++ b/hosts/common/desktop/plasma.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: { +{pkgs, ...}: { services.xserver = { displayManager.sddm.enable = true; desktopManager.plasma5 = { diff --git a/hosts/common/documentation.nix b/hosts/common/documentation.nix index 64b78a3..bd22316 100644 --- a/hosts/common/documentation.nix +++ b/hosts/common/documentation.nix @@ -1,5 +1,5 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ man-pages man-pages-posix ]; +{pkgs, ...}: { + environment.systemPackages = with pkgs; [man-pages man-pages-posix]; documentation = { dev.enable = true; man.enable = true; diff --git a/hosts/common/fonts.nix b/hosts/common/fonts.nix index a9b133c..7f260dc 100644 --- a/hosts/common/fonts.nix +++ b/hosts/common/fonts.nix @@ -1,11 +1,10 @@ -{ pkgs -, desktop -, ... -}: -let - gui = desktop != ""; -in { + pkgs, + desktop, + ... +}: let + gui = desktop != ""; +in { fonts = { enableDefaultFonts = gui; fonts = @@ -17,17 +16,17 @@ in noto-fonts-emoji noto-fonts-cjk-sans fira-code - (nerdfonts.override { fonts = [ "FiraCode" ]; }) + (nerdfonts.override {fonts = ["FiraCode"];}) ] - else [ ]; + else []; fontconfig.defaultFonts = if gui then { - serif = [ "Noto Serif" ]; - sansSerif = [ "Noto Sans" ]; - emoji = [ "Noto Color Emoji" ]; - monospace = [ "Fira Code" ]; + serif = ["Noto Serif"]; + sansSerif = ["Noto Sans"]; + emoji = ["Noto Color Emoji"]; + monospace = ["Fira Code"]; } - else { }; + else {}; }; } diff --git a/hosts/common/hardware/nvidia.nix b/hosts/common/hardware/nvidia.nix index 5306c56..6a4b177 100644 --- a/hosts/common/hardware/nvidia.nix +++ b/hosts/common/hardware/nvidia.nix @@ -1,6 +1,7 @@ -{ config -, pkgs -, ... +{ + config, + pkgs, + ... }: { hardware = { nvidia = { @@ -19,5 +20,5 @@ }; }; - services.xserver.videoDrivers = [ "nvidia" ]; + services.xserver.videoDrivers = ["nvidia"]; } diff --git a/hosts/common/packages.nix b/hosts/common/packages.nix index eb60f10..3a4d2b2 100644 --- a/hosts/common/packages.nix +++ b/hosts/common/packages.nix @@ -1,24 +1,26 @@ -{ pkgs -, desktop -, ... -}: -let +{ + pkgs, + desktop, + ... +}: let gui = desktop != ""; pinentry = with pkgs; if desktop == "gnome" then pinentry-gnome else pinentry-curses; -in -{ +in { environment.systemPackages = with pkgs; [ neofetch python311 ] - ++ [ pinentry ]; + ++ [pinentry]; programs = { - firefox.enable = if gui then true else false; + firefox.enable = + if gui + then true + else false; git.enable = true; gnupg = { agent = { diff --git a/hosts/common/security.nix b/hosts/common/security.nix index d150236..a6c7e57 100644 --- a/hosts/common/security.nix +++ b/hosts/common/security.nix @@ -1,4 +1,4 @@ -{ wsl, ... }: { +{wsl, ...}: { security = { apparmor.enable = !wsl; audit.enable = !wsl; @@ -13,13 +13,13 @@ execWheelOnly = true; extraRules = [ { - users = [ "root" ]; - groups = [ "root" ]; - commands = [ "ALL" ]; + users = ["root"]; + groups = ["root"]; + commands = ["ALL"]; } { - users = [ "seth" ]; - commands = [ "ALL" ]; + users = ["seth"]; + commands = ["ALL"]; } ]; }; diff --git a/hosts/common/systemd.nix b/hosts/common/systemd.nix index d54a2ed..86fea4a 100644 --- a/hosts/common/systemd.nix +++ b/hosts/common/systemd.nix @@ -1,4 +1,4 @@ -{ wsl, ... }: { +{wsl, ...}: { services = { journald.extraConfig = '' MaxRetentionSec=1w diff --git a/hosts/common/users.nix b/hosts/common/users.nix index fd31ab0..6ca24c4 100644 --- a/hosts/common/users.nix +++ b/hosts/common/users.nix @@ -1,6 +1,7 @@ -{ config -, pkgs -, ... +{ + config, + pkgs, + ... }: { users = { defaultUserShell = pkgs.bash; diff --git a/hosts/glados-wsl/default.nix b/hosts/glados-wsl/default.nix index ec65d48..af6e712 100644 --- a/hosts/glados-wsl/default.nix +++ b/hosts/glados-wsl/default.nix @@ -1,4 +1,4 @@ -{ modulesPath, ... }: { +{modulesPath, ...}: { imports = [ (modulesPath + "/profiles/minimal.nix") ]; diff --git a/hosts/glados/boot.nix b/hosts/glados/boot.nix index 4d905cb..bba1bef 100644 --- a/hosts/glados/boot.nix +++ b/hosts/glados/boot.nix @@ -1,7 +1,8 @@ -{ config -, lib -, pkgs -, ... +{ + config, + lib, + pkgs, + ... }: { environment.systemPackages = with pkgs; [ sbctl @@ -9,7 +10,7 @@ boot = { kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; - kernelParams = [ "nohibernate" ]; + kernelParams = ["nohibernate"]; bootspec.enable = true; loader.systemd-boot.enable = lib.mkForce false; @@ -18,6 +19,6 @@ enable = true; pkiBundle = "/etc/secureboot"; }; - supportedFilesystems = [ "zfs" "ntfs" ]; + supportedFilesystems = ["zfs" "ntfs"]; }; } diff --git a/hosts/glados/hardware-configuration.nix b/hosts/glados/hardware-configuration.nix index 891c896..20d2eda 100644 --- a/hosts/glados/hardware-configuration.nix +++ b/hosts/glados/hardware-configuration.nix @@ -1,43 +1,44 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config -, lib -, pkgs -, modulesPath -, ... +{ + config, + lib, + pkgs, + modulesPath, + ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-amd"]; + boot.extraModulePackages = []; fileSystems."/" = { device = "rpool/nixos/root"; fsType = "zfs"; - options = [ "zfsutil" "X-mount.mkdir" ]; + options = ["zfsutil" "X-mount.mkdir"]; }; fileSystems."/home" = { device = "rpool/nixos/home"; fsType = "zfs"; - options = [ "zfsutil" "X-mount.mkdir" ]; + options = ["zfsutil" "X-mount.mkdir"]; }; fileSystems."/nix" = { device = "rpool/nixos/nixstore"; fsType = "zfs"; - options = [ "zfsutil" "X-mount.mkdir" ]; + options = ["zfsutil" "X-mount.mkdir"]; }; fileSystems."/var/log" = { device = "rpool/nixos/var/log"; fsType = "zfs"; - options = [ "zfsutil" "X-mount.mkdir" ]; + options = ["zfsutil" "X-mount.mkdir"]; }; fileSystems."/boot" = { @@ -45,7 +46,7 @@ fsType = "vfat"; }; - swapDevices = [ ]; + swapDevices = []; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/users/seth/default.nix b/users/seth/default.nix index b278973..5f21214 100644 --- a/users/seth/default.nix +++ b/users/seth/default.nix @@ -1,11 +1,12 @@ -{ config -, pkgs -, home-manager -, desktop -, ... +{ + config, + pkgs, + home-manager, + desktop, + ... }: { users.users.seth = { - extraGroups = [ "wheel" ]; + extraGroups = ["wheel"]; isNormalUser = true; hashedPassword = "***REMOVED***"; shell = pkgs.fish; @@ -24,8 +25,8 @@ ] ++ ( if (desktop != "") - then [ ./desktop ] - else [ ] + then [./desktop] + else [] ); home.stateVersion = config.system.stateVersion; diff --git a/users/seth/desktop/default.nix b/users/seth/desktop/default.nix index 7ad6434..254a831 100644 --- a/users/seth/desktop/default.nix +++ b/users/seth/desktop/default.nix @@ -1,6 +1,7 @@ -{ pkgs -, desktop -, ... +{ + pkgs, + desktop, + ... }: { imports = [ @@ -8,8 +9,8 @@ ] ++ ( if (desktop == "gnome") - then [ ./gnome.nix ] - else [ ./plasma.nix ] + then [./gnome.nix] + else [./plasma.nix] ); home.packages = with pkgs; [ diff --git a/users/seth/desktop/gnome.nix b/users/seth/desktop/gnome.nix index 6b80e14..f6dcd75 100644 --- a/users/seth/desktop/gnome.nix +++ b/users/seth/desktop/gnome.nix @@ -1,5 +1,5 @@ -{ pkgs, ... }: { - home.packages = with pkgs; [ adw-gtk3 ] ++ (with pkgs.gnomeExtensions; [ appindicator blur-my-shell caffeine ]); +{pkgs, ...}: { + home.packages = with pkgs; [adw-gtk3] ++ (with pkgs.gnomeExtensions; [appindicator blur-my-shell caffeine]); dconf.settings = { "org/gnome/shell" = { diff --git a/users/seth/desktop/plasma.nix b/users/seth/desktop/plasma.nix index dea84c2..fe8f986 100644 --- a/users/seth/desktop/plasma.nix +++ b/users/seth/desktop/plasma.nix @@ -1,3 +1,3 @@ -{ pkgs, ... }: { - home.packages = with pkgs; [ catppuccin-kde ]; +{pkgs, ...}: { + home.packages = with pkgs; [catppuccin-kde]; } diff --git a/users/seth/programs/default.nix b/users/seth/programs/default.nix index a3471af..2b80cc8 100644 --- a/users/seth/programs/default.nix +++ b/users/seth/programs/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: { +{pkgs, ...}: { imports = [ ./git.nix ./neovim.nix @@ -22,5 +22,14 @@ statix ]; + programs = { + direnv = { + enable = true; + nix-direnv = { + enable = true; + }; + }; + }; + xdg.enable = true; } diff --git a/users/seth/programs/git.nix b/users/seth/programs/git.nix index e4ddfa1..4ec67b8 100644 --- a/users/seth/programs/git.nix +++ b/users/seth/programs/git.nix @@ -2,8 +2,8 @@ _: { programs.git = { enable = true; extraConfig = { - init = { defaultBranch = "main"; }; - safe = { directory = "/etc/nixos"; }; + init = {defaultBranch = "main";}; + safe = {directory = "/etc/nixos";}; }; signing = { key = "D31BD0D494BBEE86"; diff --git a/users/seth/programs/mangohud.nix b/users/seth/programs/mangohud.nix index 2b33471..222501f 100644 --- a/users/seth/programs/mangohud.nix +++ b/users/seth/programs/mangohud.nix @@ -1,5 +1,5 @@ -{ pkgs, ... }: { - home.packages = with pkgs; [ mangohud ]; +{pkgs, ...}: { + home.packages = with pkgs; [mangohud]; xdg.configFile."MangoHud.conf" = { text = '' diff --git a/users/seth/programs/neovim.nix b/users/seth/programs/neovim.nix index f5c3a59..2a597b8 100644 --- a/users/seth/programs/neovim.nix +++ b/users/seth/programs/neovim.nix @@ -1,8 +1,9 @@ -{ pkgs, ... }: { +{pkgs, ...}: { programs.neovim = { enable = true; defaultEditor = true; extraPackages = with pkgs; [ + alejandra clang codespell deadnix @@ -10,7 +11,6 @@ nodePackages.bash-language-server nodePackages.prettier nodePackages.pyright - nixpkgs-fmt pylint rust-analyzer rustfmt @@ -44,303 +44,303 @@ vim-vsnip ]; extraLuaConfig = '' - local cmd = vim.cmd - local opt = vim.opt - - -- text options - opt.tabstop = 2 - opt.shiftwidth = 2 - opt.expandtab = false - opt.smartindent = true - opt.wrap = false - - - -- appearance - opt.syntax = "on" - cmd("filetype plugin indent on") - opt.termguicolors = true - - -- filetypes - local filetypes = { - filename = { - PKGBUILD = "text", - [".makepkg.conf"] = "text", - }, - } - - vim.filetype.add(filetypes) - - - -- helper functions/variables - local cmp = require("cmp") - local luasnip = require("luasnip") - local null_ls = require("null-ls") - - --- catppuccin - local compile_path = vim.fn.stdpath("cache") .. "/catppuccin-nvim" - vim.fn.mkdir(compile_path, "p") - vim.opt.runtimepath:append(compile_path) - - ---- cmp - local mapping = cmp.mapping - local has_words_before = function() - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil - end - - local feedkey = function(key, mode) - vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true) - end - - local capabilities = require("cmp_nvim_lsp").default_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true - - ---- null ls - ------ nulls-ls shorthand - local diagnostics = null_ls.builtins.diagnostics - local formatting = null_ls.builtins.formatting - - ------ auto-format - -- for neovim >= 8 - local lsp_formatting = function(bufnr) - vim.lsp.buf.format({ - filter = function(client) - return client.name == "null-ls" - end, - bufnr = bufnr, - }) - end - - local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) - local formatting_on_attach = function(client, bufnr) - if client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - -- for neovim < 8 - ---- local params = require("vim.lsp.util").make_formatting_params({}) - ---- client.request("textDocument/formatting", params, nil, bufnr) - lsp_formatting(bufnr) -- neovim >= 8 - end, - }) - end - end - - - -- plugin config - bufferline_config = { - animation = true, - auto_hide = true, - icons = true, - maximum_padding = 2, - semantic_letters = true, - } - - catppuccin_config = { - compile_path = compile_path, - flavour = "mocha", -- mocha, macchiato, frappe, latte - integrations = { - barbar = true, - gitsigns = true, - lightspeed = true, - cmp = true, - nvimtree = true, - treesitter_context = true, - treesitter = true, - telescope = true, - lsp_trouble = true, - }, - no_italic = true, - } - - cmp_config = { - snippet = { - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) - luasnip.lsp_expand(args.body) - end, - }, - - mapping = mapping.preset.insert({ - ["<Tab>"] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif vim.fn["vsnip#available"](1) == 1 then - feedkey("<Plug>(vsnip-expand-or-jump)", "") - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - ["<S-Tab>"] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - elseif vim.fn["vsnip#available"](-1) == 1 then - feedkey("<Plug>(vsnip-jump-prev)", "") - else - fallback() - end - end, { "i", "s" }), - }), - - sources = cmp.config.sources({ - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "vsnip" }, - { name = "buffer" }, - { name = "path" }, - }), - - capabilities = capabilities, - - on_attach = function(_, bufnr) - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - end, - } - - sources = { - lsp_servers = { "rust_analyzer", "pyright", "bashls" }, - null_ls = { - diagnostics.alex, - diagnostics.codespell, - diagnostics.deadnix, - diagnostics.pylint, - diagnostics.statix, - formatting.codespell, - formatting.nixpkgs_fmt, - formatting.prettier, - formatting.rustfmt, - formatting.stylua, - formatting.yapf, - } - } - - local lsp_on_attach = function(client, bufnr) - cmp_config.on_attach(client, bufnr) - end - - local all_config = { - capabilities = cmp.capabilities, - on_attach = lsp_on_attach, - } - - servers = {} - for _, server in ipairs(sources.lsp_servers) do - servers[server] = all_config - end - - servers["lua_ls"] = { - capabilities = cmp_config.capabilities, - on_attach = lsp_on_attach, - settings = { - Lua = { - runtime = { - version = "LuaJIT", - }, - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - }, - }, - } - - lsp_config = { - servers = servers - } - - lualine_config = { - options = { - theme = "catppuccin", - }, - extensions = { "nvim-tree" }, - } - - null_ls_config = { - on_attach = formatting_on_attach, - sources = sources.null_ls, - } - - tree_config = {} - - treesitter_config = { - auto_install = false, - highlight = { - enable = true, - additional_vim_regex_highlighting = false, - }, - } - - trouble = {} - - - -- init plugins - local lspconfig = require("lspconfig") - - require("bufferline").setup(bufferline_config) - require("catppuccin").setup(catppuccin_config) - vim.api.nvim_command("colorscheme catppuccin") - require("cmp").setup(cmp_config) - require("gitsigns").setup() - require("lualine").setup(lualine_config) - require("null-ls").setup(null_ls_config) - require("nvim-tree").setup(tree_config) - require("nvim-treesitter.configs").setup(treesitter_config) - require("trouble").setup(trouble_config) - - for server, settings in pairs(lsp_config.servers) do - lspconfig[server].setup(settings) - end - - - -- filetypes - local opts = { noremap = true, silent = true } - local set = function(mode, key, cmd) - vim.keymap.set(mode, key, cmd, opts) - end - - - -- keybinds - set("n", "<leader>t", function() - vim.cmd("NvimTreeToggle") - end) - - for i = 1, 9 do - set("n", "<leader>" .. i, function() - local cmd = "BufferGoto " .. i - vim.cmd(cmd) - end) - end - - set("n", "<leader>p", function() - vim.cmd("BufferPick") - end) - - set("n", "<leader>q", function() - vim.cmd("BufferClose") - end) - - set("n", "<space>e", vim.diagnostic.open_float) - set("n", "[d", vim.diagnostic.goto_prev) - set("n", "]d", vim.diagnostic.goto_next) - set("n", "<space>q", vim.diagnostic.setloclist) - - set("n", "<space>f", function() - vim.cmd("Telescope") - end) - - set("n", "<space>t", function() - vim.cmd("TroubleToggle") - end) + local cmd = vim.cmd + local opt = vim.opt + + -- text options + opt.tabstop = 2 + opt.shiftwidth = 2 + opt.expandtab = false + opt.smartindent = true + opt.wrap = false + + + -- appearance + opt.syntax = "on" + cmd("filetype plugin indent on") + opt.termguicolors = true + + -- filetypes + local filetypes = { + filename = { + PKGBUILD = "text", + [".makepkg.conf"] = "text", + }, + } + + vim.filetype.add(filetypes) + + + -- helper functions/variables + local cmp = require("cmp") + local luasnip = require("luasnip") + local null_ls = require("null-ls") + + --- catppuccin + local compile_path = vim.fn.stdpath("cache") .. "/catppuccin-nvim" + vim.fn.mkdir(compile_path, "p") + vim.opt.runtimepath:append(compile_path) + + ---- cmp + local mapping = cmp.mapping + local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil + end + + local feedkey = function(key, mode) + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true) + end + + local capabilities = require("cmp_nvim_lsp").default_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true + + ---- null ls + ------ nulls-ls shorthand + local diagnostics = null_ls.builtins.diagnostics + local formatting = null_ls.builtins.formatting + + ------ auto-format + -- for neovim >= 8 + local lsp_formatting = function(bufnr) + vim.lsp.buf.format({ + filter = function(client) + return client.name == "null-ls" + end, + bufnr = bufnr, + }) + end + + local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + local formatting_on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + -- for neovim < 8 + ---- local params = require("vim.lsp.util").make_formatting_params({}) + ---- client.request("textDocument/formatting", params, nil, bufnr) + lsp_formatting(bufnr) -- neovim >= 8 + end, + }) + end + end + + + -- plugin config + bufferline_config = { + animation = true, + auto_hide = true, + icons = true, + maximum_padding = 2, + semantic_letters = true, + } + + catppuccin_config = { + compile_path = compile_path, + flavour = "mocha", -- mocha, macchiato, frappe, latte + integrations = { + barbar = true, + gitsigns = true, + lightspeed = true, + cmp = true, + nvimtree = true, + treesitter_context = true, + treesitter = true, + telescope = true, + lsp_trouble = true, + }, + no_italic = true, + } + + cmp_config = { + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + luasnip.lsp_expand(args.body) + end, + }, + + mapping = mapping.preset.insert({ + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif vim.fn["vsnip#available"](1) == 1 then + feedkey("<Plug>(vsnip-expand-or-jump)", "") + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + elseif vim.fn["vsnip#available"](-1) == 1 then + feedkey("<Plug>(vsnip-jump-prev)", "") + else + fallback() + end + end, { "i", "s" }), + }), + + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "vsnip" }, + { name = "buffer" }, + { name = "path" }, + }), + + capabilities = capabilities, + + on_attach = function(_, bufnr) + vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") + end, + } + + sources = { + lsp_servers = { "rust_analyzer", "pyright", "bashls" }, + null_ls = { + diagnostics.alex, + diagnostics.codespell, + diagnostics.deadnix, + diagnostics.pylint, + diagnostics.statix, + formatting.alejandra, + formatting.codespell, + formatting.prettier, + formatting.rustfmt, + formatting.stylua, + formatting.yapf, + } + } + + local lsp_on_attach = function(client, bufnr) + cmp_config.on_attach(client, bufnr) + end + + local all_config = { + capabilities = cmp.capabilities, + on_attach = lsp_on_attach, + } + + servers = {} + for _, server in ipairs(sources.lsp_servers) do + servers[server] = all_config + end + + servers["lua_ls"] = { + capabilities = cmp_config.capabilities, + on_attach = lsp_on_attach, + settings = { + Lua = { + runtime = { + version = "LuaJIT", + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + }, + }, + } + + lsp_config = { + servers = servers + } + + lualine_config = { + options = { + theme = "catppuccin", + }, + extensions = { "nvim-tree" }, + } + + null_ls_config = { + on_attach = formatting_on_attach, + sources = sources.null_ls, + } + + tree_config = {} + + treesitter_config = { + auto_install = false, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, + } + + trouble = {} + + + -- init plugins + local lspconfig = require("lspconfig") + + require("bufferline").setup(bufferline_config) + require("catppuccin").setup(catppuccin_config) + vim.api.nvim_command("colorscheme catppuccin") + require("cmp").setup(cmp_config) + require("gitsigns").setup() + require("lualine").setup(lualine_config) + require("null-ls").setup(null_ls_config) + require("nvim-tree").setup(tree_config) + require("nvim-treesitter.configs").setup(treesitter_config) + require("trouble").setup(trouble_config) + + for server, settings in pairs(lsp_config.servers) do + lspconfig[server].setup(settings) + end + + + -- filetypes + local opts = { noremap = true, silent = true } + local set = function(mode, key, cmd) + vim.keymap.set(mode, key, cmd, opts) + end + + + -- keybinds + set("n", "<leader>t", function() + vim.cmd("NvimTreeToggle") + end) + + for i = 1, 9 do + set("n", "<leader>" .. i, function() + local cmd = "BufferGoto " .. i + vim.cmd(cmd) + end) + end + + set("n", "<leader>p", function() + vim.cmd("BufferPick") + end) + + set("n", "<leader>q", function() + vim.cmd("BufferClose") + end) + + set("n", "<space>e", vim.diagnostic.open_float) + set("n", "[d", vim.diagnostic.goto_prev) + set("n", "]d", vim.diagnostic.goto_next) + set("n", "<space>q", vim.diagnostic.setloclist) + + set("n", "<space>f", function() + vim.cmd("Telescope") + end) + + set("n", "<space>t", function() + vim.cmd("TroubleToggle") + end) ''; }; diff --git a/users/seth/shell/bash.nix b/users/seth/shell/bash.nix index 03f4985..f086ec4 100644 --- a/users/seth/shell/bash.nix +++ b/users/seth/shell/bash.nix @@ -1,4 +1,4 @@ -{ config, ... }: { +{config, ...}: { programs.bash = { enable = true; historyFile = "${config.xdg.stateHome}/bash/history"; diff --git a/users/seth/shell/default.nix b/users/seth/shell/default.nix index 263bd22..3872731 100644 --- a/users/seth/shell/default.nix +++ b/users/seth/shell/default.nix @@ -1,4 +1,4 @@ -{ config, ... }: { +{config, ...}: { imports = [ ./bash.nix ./fish.nix diff --git a/users/seth/shell/fish.nix b/users/seth/shell/fish.nix index a0a3046..b017f03 100644 --- a/users/seth/shell/fish.nix +++ b/users/seth/shell/fish.nix @@ -1,22 +1,23 @@ -{ pkgs, ... }: { - +{pkgs, ...}: { xdg.configFile."fish/themes" = { recursive = true; source = pkgs.fetchFromGitHub - { - owner = "catppuccin"; - repo = "fish"; - rev = "b90966686068b5ebc9f80e5b90fdf8c02ee7a0ba"; - sha256 = "sha256-wQlYQyqklU/79K2OXRZXg5LvuIugK7vhHgpahpLFaOw="; - } + "/themes"; + { + owner = "catppuccin"; + repo = "fish"; + rev = "b90966686068b5ebc9f80e5b90fdf8c02ee7a0ba"; + sha256 = "sha256-wQlYQyqklU/79K2OXRZXg5LvuIugK7vhHgpahpLFaOw="; + } + + "/themes"; }; programs.fish = { enable = true; interactiveShellInit = '' fish_config theme choose "Catppuccin Mocha" - ''; + direnv hook fish | source + ''; plugins = [ { name = "autopair-fish"; diff --git a/users/seth/shell/zsh.nix b/users/seth/shell/zsh.nix index dd2b58c..c6b7ee1 100644 --- a/users/seth/shell/zsh.nix +++ b/users/seth/shell/zsh.nix @@ -1,6 +1,7 @@ -{ config -, pkgs -, ... +{ + config, + pkgs, + ... }: { programs.zsh = { enable = false; diff --git a/util/default.nix b/util/default.nix index 7846328..2d42909 100644 --- a/util/default.nix +++ b/util/default.nix @@ -1,4 +1,4 @@ -{ home-manager, ... }: { - host = import ./host.nix { inherit home-manager; }; - user = import ./user.nix { inherit home-manager; }; +{home-manager, ...}: { + host = import ./host.nix {inherit home-manager;}; + user = import ./user.nix {inherit home-manager;}; } diff --git a/util/host.nix b/util/host.nix index baedf73..786e460 100644 --- a/util/host.nix +++ b/util/host.nix @@ -1,44 +1,43 @@ -{ home-manager, ... }: { - mkHost = - { name - , modules - , system ? "x86_64-linux" - , specialArgs ? { } - , version ? "22.11" - , pkgs - , - }: { - ${name} = with pkgs.lib; - nixosSystem { - inherit system specialArgs; - modules = - [ - ../hosts/common - ../hosts/${name} +{home-manager, ...}: { + mkHost = { + name, + modules, + system ? "x86_64-linux", + specialArgs ? {}, + version ? "22.11", + pkgs, + }: { + ${name} = with pkgs.lib; + nixosSystem { + inherit system specialArgs; + modules = + [ + ../hosts/common + ../hosts/${name} - ({ pkgs, ... }: { - system.stateVersion = version; - networking.hostName = mkDefault name; - # enable non-free packages - nixpkgs.config.allowUnfree = true; + ({pkgs, ...}: { + system.stateVersion = version; + networking.hostName = mkDefault name; + # enable non-free packages + nixpkgs.config.allowUnfree = true; - # Enable nix flakes - nix = { - package = pkgs.nixFlakes; - settings.experimental-features = [ "nix-command" "flakes" ]; - }; - }) + # Enable nix flakes + nix = { + package = pkgs.nixFlakes; + settings.experimental-features = ["nix-command" "flakes"]; + }; + }) - home-manager.nixosModules.home-manager - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = specialArgs; - }; - } - ] - ++ modules; - }; - }; + home-manager.nixosModules.home-manager + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = specialArgs; + }; + } + ] + ++ modules; + }; + }; } diff --git a/util/user.nix b/util/user.nix index f392eb1..21cbd4e 100644 --- a/util/user.nix +++ b/util/user.nix @@ -1,12 +1,11 @@ -{ home-manager, ... }: { - mkHMUser = - { username - , stateVersion ? "22.11" - , system ? "x86_64-linux" - , channel - , modules ? [ ] - , - }: +{home-manager, ...}: { + mkHMUser = { + username, + stateVersion ? "22.11", + system ? "x86_64-linux", + channel, + modules ? [], + }: home-manager.lib.homeManagerConfiguration { pkgs = channel.legacyPackages.${system}; modules = @@ -17,7 +16,7 @@ nix = { package = channel.legacyPackages.${system}.nixFlakes; - settings.experimental-features = [ "nix-command" "flakes" ]; + settings.experimental-features = ["nix-command" "flakes"]; }; systemd.user.startServices = true; |
