summaryrefslogtreecommitdiff
path: root/users/seth/programs
diff options
context:
space:
mode:
authorseth <[email protected]>2022-12-02 02:12:40 -0500
committerseth <[email protected]>2022-12-02 02:12:40 -0500
commitb673b76f41a1f48c38acb9b67657e097e5b8a61f (patch)
treefe0090a667d419d6a27544c492d1e911eb6541ff /users/seth/programs
parentaca5eff381f76bc29f25191efc281ccf50cf0e3e (diff)
now *most* things work :p
Diffstat (limited to 'users/seth/programs')
-rw-r--r--users/seth/programs/default.nix23
-rw-r--r--users/seth/programs/git.nix16
-rw-r--r--users/seth/programs/mangohud/MangoHud/MangoHud.conf9
-rw-r--r--users/seth/programs/mangohud/default.nix12
-rw-r--r--users/seth/programs/neovim/default.nix50
-rw-r--r--users/seth/programs/neovim/lua/init.lua39
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/config.lua25
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/ftdetect.lua10
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/init.lua4
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/keymap.lua27
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/config/cmp.lua67
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/config/init.lua28
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/config/lsp_config.lua40
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/config/mason.lua14
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/config/null_ls.lua38
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/config/sources.lua27
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/init.lua10
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/keymap.lua21
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/lsp/server.lua22
-rw-r--r--users/seth/programs/neovim/lua/lua/getchoo/plugins.lua111
-rw-r--r--users/seth/programs/npm.nix12
-rw-r--r--users/seth/programs/starship.nix31
-rw-r--r--users/seth/programs/vim.nix12
-rw-r--r--users/seth/programs/xdg.nix7
24 files changed, 655 insertions, 0 deletions
diff --git a/users/seth/programs/default.nix b/users/seth/programs/default.nix
new file mode 100644
index 0000000..b97a73a
--- /dev/null
+++ b/users/seth/programs/default.nix
@@ -0,0 +1,23 @@
+{ pkgs, ... }:
+
+{
+ imports = [
+ ./git.nix
+ # ./mangohud
+ ./neovim
+ # ./npm.nix
+ ./starship.nix
+ ./vim.nix
+ ./xdg.nix
+ ];
+
+ home.packages = with pkgs; [
+ bat
+ clang
+ exa
+ fd
+ lld
+ ripgrep
+ python311
+ ];
+}
diff --git a/users/seth/programs/git.nix b/users/seth/programs/git.nix
new file mode 100644
index 0000000..6164432
--- /dev/null
+++ b/users/seth/programs/git.nix
@@ -0,0 +1,16 @@
+{ config, ...}:
+
+{
+ programs.git = {
+ enable = true;
+ extraConfig = {
+ init = { defaultBranch = "main"; };
+ };
+ signing = {
+ key = "D31BD0D494BBEE86";
+ signByDefault = true;
+ };
+ userEmail = "[email protected]";
+ userName = "seth";
+ };
+}
diff --git a/users/seth/programs/mangohud/MangoHud/MangoHud.conf b/users/seth/programs/mangohud/MangoHud/MangoHud.conf
new file mode 100644
index 0000000..8e02a99
--- /dev/null
+++ b/users/seth/programs/mangohud/MangoHud/MangoHud.conf
@@ -0,0 +1,9 @@
+legacy_layout=false
+cpu_stats
+cpu_temp
+gpu_stats
+gpu_temp
+fps
+frametime
+media_player
+media_player_name = spotify
diff --git a/users/seth/programs/mangohud/default.nix b/users/seth/programs/mangohud/default.nix
new file mode 100644
index 0000000..700647e
--- /dev/null
+++ b/users/seth/programs/mangohud/default.nix
@@ -0,0 +1,12 @@
+{ config, pkgs, ...}:
+
+{
+ home.packages = [
+ pkgs.mangohud
+ ];
+
+ xdg.configFile."MangoHud" = {
+ source = ./MangoHud;
+ recursive = true;
+ };
+}
diff --git a/users/seth/programs/neovim/default.nix b/users/seth/programs/neovim/default.nix
new file mode 100644
index 0000000..94e30cb
--- /dev/null
+++ b/users/seth/programs/neovim/default.nix
@@ -0,0 +1,50 @@
+{ config, lib, pkgs, ...}:
+
+{
+ programs.neovim = {
+ enable = true;
+ extraPackages = with pkgs; [
+ black
+ clang
+ codespell
+ nodePackages.alex
+ nodePackages.bash-language-server
+ nodePackages.prettier
+ nodePackages.pyright
+ python310Packages.flake8
+ rust-analyzer
+ rustfmt
+ stylua
+ sumneko-lua-language-server
+ ];
+ plugins = with pkgs.vimPlugins; [
+ lualine-nvim
+ catppuccin-nvim
+ barbar-nvim
+ lightspeed-nvim
+ nvim-tree-lua
+ nvim-lspconfig
+ null-ls-nvim
+ plenary-nvim
+ (nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars))
+ nvim-cmp
+ cmp-nvim-lsp
+ cmp-buffer
+ cmp-path
+ cmp-vsnip
+ vim-vsnip
+ luasnip
+ cmp_luasnip
+ trouble-nvim
+ nvim-web-devicons
+ telescope-nvim
+ gitsigns-nvim
+ editorconfig-nvim
+ ];
+ };
+
+ xdg.configFile."nvim" = {
+ source = ./lua;
+ recursive = true;
+ };
+}
diff --git a/users/seth/programs/neovim/lua/init.lua b/users/seth/programs/neovim/lua/init.lua
new file mode 100644
index 0000000..262f556
--- /dev/null
+++ b/users/seth/programs/neovim/lua/init.lua
@@ -0,0 +1,39 @@
+--
+-- getchoo's neovim config (but in lua :p)
+--
+
+local cmd = vim.cmd
+local opt = vim.opt
+
+require("getchoo")
+require("getchoo.ftdetect")
+require("getchoo.lsp")
+
+-- 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
+
+require("catppuccin").setup({
+ flavour = "mocha", -- mocha, macchiato, frappe, latte
+ integrations = {
+ barbar = true,
+ gitsigns = true,
+ lightspeed = true,
+ mason = true,
+ cmp = true,
+ nvimtree = true,
+ treesitter_context = true,
+ treesitter = true,
+ telescope = true,
+ lsp_trouble = true,
+ },
+})
+vim.api.nvim_command("colorscheme catppuccin")
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/config.lua b/users/seth/programs/neovim/lua/lua/getchoo/config.lua
new file mode 100644
index 0000000..a67f734
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/config.lua
@@ -0,0 +1,25 @@
+--
+-- config for regular plugins
+--
+
+local M = {}
+
+M.bufferline = {
+ animation = true,
+ auto_hide = true,
+ icons = true,
+ maximum_padding = 2,
+ semantic_letters = true,
+}
+
+M.lualine = {
+ options = {
+ theme = "catppuccin",
+ },
+ extensions = { "nvim-tree" },
+}
+
+M.tree = {}
+
+require("getchoo.keymap")
+return M
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/ftdetect.lua b/users/seth/programs/neovim/lua/lua/getchoo/ftdetect.lua
new file mode 100644
index 0000000..5dd569d
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/ftdetect.lua
@@ -0,0 +1,10 @@
+-- load custom file types
+
+local filetypes = {
+ filename = {
+ PKGBUILD = "text",
+ [".makepkg.conf"] = "text",
+ },
+}
+
+vim.filetype.add(filetypes)
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/init.lua b/users/seth/programs/neovim/lua/lua/getchoo/init.lua
new file mode 100644
index 0000000..f44f622
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/init.lua
@@ -0,0 +1,4 @@
+local config = require("getchoo.config")
+require("bufferline").setup(config.bufferline)
+require("lualine").setup(config.lualine)
+require("nvim-tree").setup(config.tree)
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/keymap.lua b/users/seth/programs/neovim/lua/lua/getchoo/keymap.lua
new file mode 100644
index 0000000..9a4484c
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/keymap.lua
@@ -0,0 +1,27 @@
+--
+-- keymaps for general plugins
+--
+
+local opts = { noremap = true, silent = true }
+local set = function(mode, key, cmd)
+ vim.keymap.set(mode, key, cmd, opts)
+end
+
+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)
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/cmp.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/cmp.lua
new file mode 100644
index 0000000..0f0f51f
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/cmp.lua
@@ -0,0 +1,67 @@
+local cmp = require("cmp")
+local mapping = cmp.mapping
+local luasnip = require("luasnip")
+
+local M = {}
+
+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
+
+M.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" },
+ }),
+}
+
+local capabilities = require("cmp_nvim_lsp").default_capabilities()
+capabilities.textDocument.completion.completionItem.snippetSupport = true
+
+M.capabilities = capabilities
+
+M.on_attach = function(_, bufnr)
+ vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
+end
+
+return M
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/init.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/init.lua
new file mode 100644
index 0000000..1c928d3
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/init.lua
@@ -0,0 +1,28 @@
+-- wrapper for all configs
+local cmp = require("getchoo.lsp.config.cmp")
+local lsp_config = require("getchoo.lsp.config.lsp_config")
+local mason = require("getchoo.lsp.config.mason")
+local null_ls = require("getchoo.lsp.config.null_ls")
+
+local M = {}
+
+M.cmp = cmp.config
+
+M.lsp_servers = lsp_config.servers
+
+M.mason_tool_installer = mason.mason_tool_installer
+M.mason_lspconfig = mason.mason_lspconfig
+
+M.null_ls = null_ls.config
+
+M.treesitter = {
+ auto_install = true,
+ highlight = {
+ enable = true,
+ additional_vim_regex_highlighting = false,
+ },
+}
+
+M.trouble = {}
+
+return M
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/lsp_config.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/lsp_config.lua
new file mode 100644
index 0000000..4df3fe0
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/lsp_config.lua
@@ -0,0 +1,40 @@
+local cmp = require("getchoo.lsp.config.cmp")
+local sources = require("getchoo.lsp.config.sources")
+
+local M = {}
+
+local on_attach = function(client, bufnr)
+ cmp.on_attach(client, bufnr)
+end
+
+local all_config = {
+ capabilities = cmp.capabilities,
+ on_attach = on_attach,
+}
+
+local servers = {}
+for _, server in ipairs(sources.lsp_servers) do
+ servers[server] = all_config
+end
+
+servers["sumneko_lua"] = {
+ capabilities = cmp.capabilities,
+ on_attach = on_attach,
+ settings = {
+ Lua = {
+ runtime = {
+ version = "LuaJIT",
+ },
+ diagnostics = {
+ globals = { "vim" },
+ },
+ workspace = {
+ library = vim.api.nvim_get_runtime_file("", true),
+ },
+ },
+ },
+}
+
+M.servers = servers
+
+return M
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/mason.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/mason.lua
new file mode 100644
index 0000000..6814697
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/mason.lua
@@ -0,0 +1,14 @@
+-- config for mason tools
+local sources = require("getchoo.lsp.config.sources")
+
+local M = {}
+
+M.mason_tool_installer = {
+ ensure_installed = sources.mason,
+}
+
+M.mason_lspconfig = {
+ automatic_installation = true,
+}
+
+return M
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/null_ls.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/null_ls.lua
new file mode 100644
index 0000000..42cd30e
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/null_ls.lua
@@ -0,0 +1,38 @@
+local sources = require("getchoo.lsp.config.sources")
+
+local M = {}
+
+-- only use null-ls for formatting
+
+-- 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()
+ -- local params = require("vim.lsp.util").make_formatting_params({})
+ -- client.request("textDocument/formatting", params, nil, bufnr)
+ lsp_formatting(bufnr) -- neovim >= 8
+ end,
+ })
+ end
+end
+
+M.config = {
+ on_attach = formatting_on_attach,
+ sources = sources.null_ls,
+}
+
+return M
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/sources.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/sources.lua
new file mode 100644
index 0000000..1898870
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/config/sources.lua
@@ -0,0 +1,27 @@
+local null_ls = require("null-ls")
+local diagnostics = null_ls.builtins.diagnostics
+local formatting = null_ls.builtins.formatting
+
+local M = {
+ lsp_servers = { "rust_analyzer", "pyright", "bashls" },
+ null_ls = {
+ diagnostics.alex,
+ diagnostics.codespell,
+ diagnostics.flake8,
+ formatting.black,
+ formatting.codespell,
+ formatting.prettier,
+ formatting.rustfmt,
+ formatting.stylua,
+ },
+ mason = {
+ "alex",
+ "black",
+ "codespell",
+ "flake8",
+ "prettier",
+ "stylua",
+ },
+}
+
+return M
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/init.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/init.lua
new file mode 100644
index 0000000..aa3dde5
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/init.lua
@@ -0,0 +1,10 @@
+--
+-- setup lsp environment
+--
+require("getchoo.lsp.server")
+require("getchoo.lsp.keymap")
+local config = require("getchoo.lsp.config")
+
+require("gitsigns").setup()
+require("nvim-treesitter.configs").setup(config.treesitter)
+require("trouble").setup(config.trouble)
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/lsp/keymap.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/keymap.lua
new file mode 100644
index 0000000..9f34ffa
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/keymap.lua
@@ -0,0 +1,21 @@
+--
+-- keymaps for lsp
+--
+
+local opts = { noremap = true, silent = true }
+local set = function(mode, key, cmd)
+ vim.keymap.set(mode, key, cmd, opts)
+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/programs/neovim/lua/lua/getchoo/lsp/server.lua b/users/seth/programs/neovim/lua/lua/getchoo/lsp/server.lua
new file mode 100644
index 0000000..325e1c7
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/lsp/server.lua
@@ -0,0 +1,22 @@
+--
+-- initialize lsp servers
+--
+
+local cmp = require("cmp")
+local lspconfig = require("lspconfig")
+local null_ls = require("null-ls")
+local config = require("getchoo.lsp.config")
+
+if vim.g.use_mason then
+ require("mason").setup()
+ require("mason-lspconfig").setup(config.mason_lspconfig)
+ require("mason-tool-installer").setup(config.mason_tool_installer)
+ vim.opt.runtimepath:append("~/.local/share/nvim/mason/bin/")
+end
+
+null_ls.setup(config.null_ls)
+cmp.setup(config.cmp)
+
+for server, settings in pairs(config.lsp_servers) do
+ lspconfig[server].setup(settings)
+end
diff --git a/users/seth/programs/neovim/lua/lua/getchoo/plugins.lua b/users/seth/programs/neovim/lua/lua/getchoo/plugins.lua
new file mode 100644
index 0000000..fe510d0
--- /dev/null
+++ b/users/seth/programs/neovim/lua/lua/getchoo/plugins.lua
@@ -0,0 +1,111 @@
+--
+-- plugins for neovim
+--
+
+local fn = vim.fn
+local cmd = vim.cmd
+
+local packer_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
+
+if fn.empty(fn.glob(packer_path)) > 0 then
+ Packer_bootstrap = fn.system({
+ "git",
+ "clone",
+ "--depth",
+ "1",
+ "https://github.com/wbthomason/packer.nvim",
+ packer_path,
+ })
+ cmd("packadd packer.nvim")
+end
+
+require("packer").startup(function(use)
+ use("wbthomason/packer.nvim")
+
+ -- comsetic plugins
+ use({ "nvim-lualine/lualine.nvim", requires = { "kyazdani42/nvim-web-devicons" } })
+
+ use({
+ "catppuccin/nvim",
+ as = "catppuccin",
+ config = function()
+ require("catppuccin").setup({
+ flavour = "mocha", -- mocha, macchiato, frappe, latte
+ integrations = {
+ barbar = true,
+ gitsigns = true,
+ lightspeed = true,
+ mason = true,
+ cmp = true,
+ nvimtree = true,
+ treesitter_context = true,
+ treesitter = true,
+ telescope = true,
+ lsp_trouble = true,
+ },
+ })
+ vim.api.nvim_command("colorscheme catppuccin")
+ end,
+ })
+
+ ---- use("shaunsingh/nord.nvim")
+ ---- use({ "rose-pine/neovim", as = "rose-pine" })
+
+ -- general use plugins
+ use({
+ "romgrk/barbar.nvim",
+ requires = { "kyazdani42/nvim-web-devicons" },
+ })
+
+ use("ggandor/lightspeed.nvim")
+ use("kyazdani42/nvim-tree.lua")
+
+ -- lsp plugins
+ if vim.g.use_lsp_plugins then
+ use("neovim/nvim-lspconfig")
+
+ use({
+ "jose-elias-alvarez/null-ls.nvim",
+ requires = { "nvim-lua/plenary.nvim" },
+ })
+
+ if vim.g.use_mason then
+ use("williamboman/mason.nvim")
+ use("williamboman/mason-lspconfig")
+ use("whoissethdaniel/mason-tool-installer.nvim")
+ end
+
+ use({
+ "nvim-treesitter/nvim-treesitter",
+ run = function()
+ require("nvim-treesitter.install").update({ with_sync = true })
+ end,
+ })
+
+ use("hrsh7th/nvim-cmp")
+ use("hrsh7th/cmp-nvim-lsp")
+ use("hrsh7th/cmp-buffer")
+ use("hrsh7th/cmp-path")
+ use("hrsh7th/cmp-vsnip")
+ use("hrsh7th/vim-vsnip")
+ use("L3MON4D3/LuaSnip")
+ use("saadparwaiz1/cmp_luasnip")
+
+ use({
+ "folke/trouble.nvim",
+ requires = { "kyazdani42/nvim-web-devicons" },
+ })
+ use({
+ "nvim-telescope/telescope.nvim",
+ requires = { "nvim-lua/plenary.nvim" },
+ })
+
+ use("lewis6991/gitsigns.nvim")
+ use("editorconfig/editorconfig-vim")
+ end
+
+ if Packer_bootstrap then
+ require("packer").sync()
+ end
+end)
+
diff --git a/users/seth/programs/npm.nix b/users/seth/programs/npm.nix
new file mode 100644
index 0000000..8f311f8
--- /dev/null
+++ b/users/seth/programs/npm.nix
@@ -0,0 +1,12 @@
+{ config, ...}:
+
+{
+ config.programs.npm = {
+ enable = true;
+ npmrc = ''
+ prefix=${config.xdg.dataHome}/npm
+ cache=${config.xdg.cacheHome}/npm
+ init-module=${config.xdg.configHome}/npm/config/npm-init.js
+ '';
+ };
+}
diff --git a/users/seth/programs/starship.nix b/users/seth/programs/starship.nix
new file mode 100644
index 0000000..03af3a7
--- /dev/null
+++ b/users/seth/programs/starship.nix
@@ -0,0 +1,31 @@
+{ config, ...}:
+
+{
+ programs.starship = {
+ enable = false;
+ settings = {
+ format = """
+ $username\
+ $hostname\
+ $directory\
+ $vcsh\
+ $git_branch\
+ $git_commit\
+ $git_state\
+ $git_metrics\
+ $git_status\
+ $docker_context\
+ $nix_shell\
+ $env_var\
+ $sudo\
+ $cmd_duration\
+ $line_break\
+ $jobs\
+ $status\
+ $container\
+ $shell\
+ $character
+ """;
+ };
+ };
+}
diff --git a/users/seth/programs/vim.nix b/users/seth/programs/vim.nix
new file mode 100644
index 0000000..fc303a9
--- /dev/null
+++ b/users/seth/programs/vim.nix
@@ -0,0 +1,12 @@
+{ config, nix, ...}:
+
+{
+ programs.vim = {
+ enable = true;
+ settings = {
+ expandtab = false;
+ shiftwidth = 2;
+ tabstop = 2;
+ };
+ };
+}
diff --git a/users/seth/programs/xdg.nix b/users/seth/programs/xdg.nix
new file mode 100644
index 0000000..e791be4
--- /dev/null
+++ b/users/seth/programs/xdg.nix
@@ -0,0 +1,7 @@
+{ config, ... }:
+
+{
+ xdg = {
+ enable = true;
+ };
+}