9 Commits

36 changed files with 680 additions and 1055 deletions

View File

@@ -1,20 +0,0 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
},
"lspconfig": {
"lua_ls": {
"Lua.format.enable": false
}
}
}

View File

@@ -1,7 +0,0 @@
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "None"
collapse_simple_statement = "Always"

View File

@@ -1,27 +0,0 @@
-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution
-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk.
local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
vim.api.nvim_set_keymap("v", "<sc-c>", '"+y', { noremap = true })
vim.api.nvim_set_keymap("n", "<sc-v>", 'l"+P', { noremap = true })
vim.api.nvim_set_keymap("v", "<sc-v>", '"+P', { noremap = true })
vim.api.nvim_set_keymap("c", "<sc-v>", '<C-o>l<C-o>"+<C-o>P<C-o>l', { noremap = true })
vim.api.nvim_set_keymap("i", "<sc-v>", '<ESC>l"+Pli', { noremap = true })
vim.api.nvim_set_keymap("t", "<sc-v>", '<C-\\><C-n>"+Pi', { noremap = true })
if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then
-- stylua: ignore
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
end
vim.opt.rtp:prepend(lazypath)
-- validate that lazy is available
if not pcall(require, "lazy") then
-- stylua: ignore
vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
vim.fn.getchar()
vim.cmd.quit()
end
require "lazy_setup"
require "polish"

View File

@@ -1,67 +0,0 @@
{
"AstroNvim": { "branch": "main", "commit": "bfa02306c91c53f9b5782103f530ff729d6fd5b3" },
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"aerial.nvim": { "branch": "master", "commit": "7e2615991cf110f6688112abcb45cf338248d1f6" },
"alpha-nvim": { "branch": "main", "commit": "41283fb402713fc8b327e60907f74e46166f4cfd" },
"astrocommunity": { "branch": "main", "commit": "18978b14446256e68eae39b3c7770d15dfc025bd" },
"astrocore": { "branch": "main", "commit": "e659ec1f23dd070fa9a68a78eab0675b7bf3e97d" },
"astrolsp": { "branch": "main", "commit": "10ca6399694baca87982eafb0871b386fa33cf80" },
"astrotheme": { "branch": "main", "commit": "41b7d8430a55fd771e41bd763af4c3fd1c2fc0b5" },
"astroui": { "branch": "main", "commit": "a96ee08273f8050025c9e5b40776b0f2808313fa" },
"better-escape.nvim": { "branch": "master", "commit": "f45b52f8f87792e8659526f23261ffe278a54be5" },
"catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-dap": { "branch": "master", "commit": "ea92773e84c0ad3288c3bc5e452ac91559669087" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"crates.nvim": { "branch": "main", "commit": "891063a2dc8471501b9742406a514be62a20c138" },
"csharpls-extended-lsp.nvim": { "branch": "master", "commit": "5a474b06743bb20a90191994457f5e62f444976b" },
"dressing.nvim": { "branch": "master", "commit": "71349f24c6e07b39f33600985843c289ca735308" },
"friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" },
"gitsigns.nvim": { "branch": "main", "commit": "0b04035bb7b3c83e999b9676e2fb46fd0aa9f910" },
"guess-indent.nvim": { "branch": "main", "commit": "6cd61f7a600bb756e558627cd2e740302c58e32d" },
"heirline.nvim": { "branch": "master", "commit": "0d797435e54645a5f98bad7ad6046aac1ef95c1e" },
"indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" },
"lazy.nvim": { "branch": "main", "commit": "077102c5bfc578693f12377846d427f49bc50076" },
"lazydev.nvim": { "branch": "main", "commit": "491452cf1ca6f029e90ad0d0368848fac717c6d2" },
"lspkind.nvim": { "branch": "master", "commit": "cff4ae321a91ee3473a92ea1a8c637e3a9510aec" },
"luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "9ae570e206360e47d30b4c35a4550c165f4ea7b7" },
"mason-null-ls.nvim": { "branch": "main", "commit": "2b8433f76598397fcc97318d410e0c4f7a4bea6a" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "4ba55f9755ebe8297d92c419b90a946123292ae6" },
"mason.nvim": { "branch": "main", "commit": "c43eeb5614a09dc17c03a7fb49de2e05de203924" },
"mini.bufremove": { "branch": "main", "commit": "e6044aa28e61d4dd9ec86194d6f81743eced0c1c" },
"neo-tree.nvim": { "branch": "main", "commit": "8c75e8a2949cd6cd35525799200a8d34471ee9eb" },
"neoconf.nvim": { "branch": "main", "commit": "7ce69e831556861f3bd32a5678f0176618df8621" },
"neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
"none-ls.nvim": { "branch": "main", "commit": "a0fe586525eac4247d40076cdb2f1c2f55912171" },
"nui.nvim": { "branch": "main", "commit": "a0fd35fcbb4cb479366f1dc5f20145fd718a3733" },
"nvim-autopairs": { "branch": "master", "commit": "e38c5d837e755ce186ae51d2c48e1b387c4425c6" },
"nvim-cmp": { "branch": "main", "commit": "d818fd0624205b34e14888358037fb6f5dc51234" },
"nvim-colorizer.lua": { "branch": "master", "commit": "194ec600488f7c7229668d0e80bd197f3a2b84ff" },
"nvim-dap": { "branch": "master", "commit": "bc03b83c94d0375145ff5ac6a6dcf28c1241e06f" },
"nvim-dap-ui": { "branch": "master", "commit": "a5606bc5958db86f8d92803bea7400ee26a8d7e4" },
"nvim-lspconfig": { "branch": "master", "commit": "9c762dcd457d2ab99edb3f3433cea9865ded47ad" },
"nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" },
"nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
"nvim-treesitter": { "branch": "master", "commit": "63be47f203d3e9174fdac3872fb9766e5bcc5a11" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" },
"nvim-ts-autotag": { "branch": "main", "commit": "dc5e1687ab76ee02e0f11c5ce137f530b36e98b3" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "6b5f95aa4d24f2c629a74f2c935c702b08dbde62" },
"nvim-ufo": { "branch": "main", "commit": "a5390706f510d39951dd581f6d2a972741b3fa26" },
"nvim-web-devicons": { "branch": "master", "commit": "e612de3d3a41a6b7be47f51e956dddabcbf419d9" },
"nvim-window-picker": { "branch": "main", "commit": "41cfaa428577c53552200a404ae9b3a0b5719706" },
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
"promise-async": { "branch": "main", "commit": "38a4575da9497326badd3995e768b4ccf0bb153e" },
"resession.nvim": { "branch": "master", "commit": "cc819b0489938d03e4f3532a583354f0287c015b" },
"rustaceanvim": { "branch": "master", "commit": "047f9c9d8cd2861745eb9de6c1570ee0875aa795" },
"smart-splits.nvim": { "branch": "master", "commit": "66fda3a601a5b4c679656f15eb6ddd613c8d3216" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"todo-comments.nvim": { "branch": "main", "commit": "313b04e5b02d29ab9275c9295ff5e2b73921b0eb" },
"toggleterm.nvim": { "branch": "main", "commit": "48be57eaba817f038d61bbf64d2c597f578c0827" },
"vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" },
"which-key.nvim": { "branch": "main", "commit": "6c1584eb76b55629702716995cca4ae2798a9cca" }
}

View File

@@ -1,17 +0,0 @@
-- AstroCommunity: import any community modules here
-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
-- This guarantees that the specs are processed before any user plugins.
---@type LazySpec
return {
"AstroNvim/astrocommunity",
{ import = "astrocommunity.pack.lua" }, -- lua support
{ import = "astrocommunity.pack.rust" }, -- rust support
{ import = "astrocommunity.pack.markdown" }, -- markdown support
{ import = "astrocommunity.pack.nix" }, -- nix support
-- { import = "astrocommunity.pack.go "}, -- golang support
{ import = "astrocommunity.pack.fish" }, -- fish support
-- { import = "astrocommunity.pack.cs" }, -- csharp/dotnet support
-- import/override with your plugins folder
}

View File

@@ -1,32 +0,0 @@
require("lazy").setup({
{
"AstroNvim/AstroNvim",
version = "^4", -- Remove version tracking to elect for nighly AstroNvim
import = "astronvim.plugins",
opts = { -- AstroNvim options must be set here with the `import` key
mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
update_notifications = true, -- Enable/disable notification about running `:Lazy update` twice to update pinned plugins
},
},
{ import = "community" },
{ import = "plugins" },
} --[[@as LazySpec]], {
-- Configure any other `lazy.nvim` configuration options here
install = { colorscheme = { "astrotheme", "habamax" } },
ui = { backdrop = 100 },
performance = {
rtp = {
-- disable some rtp plugins, add more to your liking
disabled_plugins = {
"gzip",
"netrwPlugin",
"tarPlugin",
"tohtml",
"zipPlugin",
},
},
},
} --[[@as LazyConfig]])

View File

@@ -1,72 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
-- Configuration documentation can be found with `:h astrocore`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astrocore",
---@type AstroCoreOpts
opts = {
-- Configure core features of AstroNvim
features = {
large_buf = { size = 1024 * 256, lines = 10000 }, -- set global limits for large files for disabling features like treesitter
autopairs = true, -- enable autopairs at start
cmp = true, -- enable completion at start
diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on)
highlighturl = true, -- highlight URLs at start
notifications = true, -- enable notifications at start
},
-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
diagnostics = {
virtual_text = true,
underline = true,
},
-- vim options can be configured here
options = {
opt = { -- vim.opt.<key>
relativenumber = true, -- sets vim.opt.relativenumber
number = true, -- sets vim.opt.number
spell = false, -- sets vim.opt.spell
signcolumn = "yes", -- sets vim.opt.signcolumn to yes
wrap = false, -- sets vim.opt.wrap
},
g = { -- vim.g.<key>
-- configure global vim variables (vim.g)
-- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
-- This can be found in the `lua/lazy_setup.lua` file
},
},
-- Mappings can be configured through AstroCore as well.
-- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalized
mappings = {
-- first key is the mode
n = {
-- second key is the lefthand side of the map
-- navigate buffer tabs
["]b"] = { function() require("astrocore.buffer").nav(vim.v.count1) end, desc = "Next buffer" },
["[b"] = { function() require("astrocore.buffer").nav(-vim.v.count1) end, desc = "Previous buffer" },
-- mappings seen under group name "Buffer"
["<Leader>bd"] = {
function()
require("astroui.status.heirline").buffer_picker(
function(bufnr) require("astrocore.buffer").close(bufnr) end
)
end,
desc = "Close buffer from tabline",
},
-- tables with just a `desc` key will be registered with which-key if it's installed
-- this is useful for naming menus
-- ["<Leader>b"] = { desc = "Buffers" },
-- setting a mapping to false will disable it
-- ["<C-S>"] = false,
},
},
},
}

View File

@@ -1,114 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
-- Configuration documentation can be found with `:h astrolsp`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astrolsp",
---@type AstroLSPOpts
opts = {
-- Configuration table of features provided by AstroLSP
features = {
codelens = true, -- enable/disable codelens refresh on start
inlay_hints = false, -- enable/disable inlay hints on start
semantic_tokens = true, -- enable/disable semantic token highlighting
},
-- customize lsp formatting options
formatting = {
-- control auto formatting on save
format_on_save = {
enabled = true, -- enable or disable format on save globally
allow_filetypes = { -- enable format on save for specified filetypes only
-- "go",
},
ignore_filetypes = { -- disable format on save for specified filetypes
-- "python",
},
},
disabled = { -- disable formatting capabilities for the listed language servers
-- disable lua_ls formatting capability if you want to use StyLua to format your lua code
-- "lua_ls",
},
timeout_ms = 1000, -- default format timeout
-- filter = function(client) -- fully override the default formatting function
-- return true
-- end
},
-- enable servers that you already have installed without mason
servers = {
-- "pyright"
},
-- customize language server configuration options passed to `lspconfig`
---@diagnostic disable: missing-fields
config = {
-- clangd = { capabilities = { offsetEncoding = "utf-8" } },
rust_analyzer = {
settings = {
['rust_analyzer'] = {
files = {
excludeDirs = ".direnv/",
},
},
},
},
},
-- customize how language servers are attached
handlers = {
-- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server
-- function(server, opts) require("lspconfig")[server].setup(opts) end
-- the key is the server that is being setup with `lspconfig`
-- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
-- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed
},
-- Configure buffer local auto commands to add when attaching a language server
autocmds = {
-- first key is the `augroup` to add the auto commands to (:h augroup)
lsp_codelens_refresh = {
-- Optional condition to create/delete auto command group
-- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
-- condition will be resolved for each client on each execution and if it ever fails for all clients,
-- the auto commands will be deleted for that buffer
cond = "textDocument/codeLens",
-- cond = function(client, bufnr) return client.name == "lua_ls" end,
-- list of auto commands to set
{
-- events to trigger
event = { "InsertLeave", "BufEnter" },
-- the rest of the autocmd options (:h nvim_create_autocmd)
desc = "Refresh codelens (buffer)",
callback = function(args)
if require("astrolsp").config.features.codelens then vim.lsp.codelens.refresh { bufnr = args.buf } end
end,
},
},
},
-- mappings to be set up on attaching of a language server
mappings = {
n = {
-- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean
gD = {
function() vim.lsp.buf.declaration() end,
desc = "Declaration of current symbol",
cond = "textDocument/declaration",
},
["<Leader>uY"] = {
function() require("astrolsp.toggles").buffer_semantic_tokens() end,
desc = "Toggle LSP semantic highlight (buffer)",
cond = function(client)
return client.supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens ~= nil
end,
},
},
},
-- A custom `on_attach` function to be run after the default `on_attach` function
-- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`)
on_attach = function(client, bufnr)
-- this would disable semanticTokensProvider for all clients
-- client.server_capabilities.semanticTokensProvider = nil
end,
},
}

View File

@@ -1,37 +0,0 @@
-- AstroUI provides the basis for configuring the AstroNvim User Interface
-- Configuration documentation can be found with `:h astroui`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astroui",
---@type AstroUIOpts
opts = {
-- change colorscheme
colorscheme = "catppuccin",
-- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
highlights = {
init = { -- this table overrides highlights in all themes
-- Normal = { bg = "#000000" },
},
astrodark = { -- a table of overrides/changes when applying the astrotheme theme
-- Normal = { bg = "#000000" },
},
},
-- Icons can be configured throughout the interface
icons = {
-- configure the loading of the lsp in the status line
LSPLoading1 = "",
LSPLoading2 = "",
LSPLoading3 = "",
LSPLoading4 = "",
LSPLoading5 = "",
LSPLoading6 = "",
LSPLoading7 = "",
LSPLoading8 = "",
LSPLoading9 = "",
LSPLoading10 = "",
},
},
}

View File

@@ -1,18 +0,0 @@
return {
{
"catppuccin/nvim",
name = "catppuccin",
opts = {
dim_inactive = { enabled = true, percentage = 0.25 },
highlight_overrides = {
mocha = function(c)
return {
Normal = { bg = c.mantle },
Comment = { fg = "#7687a0" },
["@tag.attribute"] = { style = {} },
}
end,
},
},
},
}

View File

@@ -1,5 +0,0 @@
return {
{
'andweeb/presence.nvim',
}
}

View File

@@ -1,39 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize Mason plugins
---@type LazySpec
return {
-- use mason-lspconfig to configure LSP installations
{
"williamboman/mason-lspconfig.nvim",
-- overrides `require("mason-lspconfig").setup(...)`
opts = {
ensure_installed = {
"lua_ls",
-- add more arguments for adding more language servers
},
},
},
-- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
{
"jay-babu/mason-null-ls.nvim",
-- overrides `require("mason-null-ls").setup(...)`
opts = {
ensure_installed = {
"stylua",
-- add more arguments for adding more null-ls sources
},
},
},
{
"jay-babu/mason-nvim-dap.nvim",
-- overrides `require("mason-nvim-dap").setup(...)`
opts = {
ensure_installed = {
"python",
-- add more arguments for adding more debuggers
},
},
},
}

View File

@@ -1,24 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize None-ls sources
---@type LazySpec
return {
"nvimtools/none-ls.nvim",
opts = function(_, opts)
-- opts variable is the default configuration table for the setup function call
-- local null_ls = require "null-ls"
-- Check supported formatters and linters
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
-- Only insert new sources, do not replace the existing ones
-- (If you wish to replace, use `opts.sources = {}` instead of the `list_insert_unique` function)
opts.sources = require("astrocore").list_insert_unique(opts.sources, {
-- Set a formatter
-- null_ls.builtins.formatting.stylua,
-- null_ls.builtins.formatting.prettier,
})
end,
}

View File

@@ -1,15 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize Treesitter
---@type LazySpec
return {
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"lua",
"vim",
-- add more arguments for adding more treesitter parsers
},
},
}

View File

@@ -1,85 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- You can also add or configure plugins by creating files in this `plugins/` folder
-- Here are some examples:
---@type LazySpec
return {
-- == Examples of Adding Plugins ==
"andweeb/presence.nvim",
{
"ray-x/lsp_signature.nvim",
event = "BufRead",
config = function() require("lsp_signature").setup() end,
},
-- == Examples of Overriding Plugins ==
-- customize alpha options
{
"goolord/alpha-nvim",
opts = function(_, opts)
-- customize the dashboard header
opts.section.header.val = {
" █████ ███████ ████████ ██████ ██████",
"██ ██ ██ ██ ██ ██ ██ ██",
"███████ ███████ ██ ██████ ██ ██",
"██ ██ ██ ██ ██ ██ ██ ██",
"██ ██ ███████ ██ ██ ██ ██████",
" ",
" ███  ██ ██  ██ ██ ███  ███",
" ████  ██ ██  ██ ██ ████  ████",
" ██ ██  ██ ██  ██ ██ ██ ████ ██",
" ██  ██ ██  ██  ██  ██ ██  ██  ██",
" ██   ████   ████   ██ ██  ██",
}
return opts
end,
},
-- You can disable default plugins as follows:
{ "max397574/better-escape.nvim", enabled = false },
-- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
{
"L3MON4D3/LuaSnip",
config = function(plugin, opts)
require "astronvim.plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call
-- add more custom luasnip configuration such as filetype extend or custom snippets
local luasnip = require "luasnip"
luasnip.filetype_extend("javascript", { "javascriptreact" })
end,
},
{
"windwp/nvim-autopairs",
config = function(plugin, opts)
require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call
-- add more custom autopairs configuration such as custom rules
local npairs = require "nvim-autopairs"
local Rule = require "nvim-autopairs.rule"
local cond = require "nvim-autopairs.conds"
npairs.add_rules(
{
Rule("$", "$", { "tex", "latex" })
-- don't add a pair if the next character is %
:with_pair(cond.not_after_regex "%%")
-- don't add a pair if the previous character is xxx
:with_pair(
cond.not_before_regex("xxx", 3)
)
-- don't move right when repeat character
:with_move(cond.none())
-- don't delete if the next character is xx
:with_del(cond.not_after_regex "xx")
-- disable adding a newline when you press <cr>
:with_cr(cond.none()),
},
-- disable for .vim files, but it work for another filetypes
Rule("a", "a", "-vim")
)
end,
},
}

View File

@@ -1,18 +0,0 @@
if true then return end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- This will run last in the setup process and is a good place to configure
-- things like custom filetypes. This just pure lua so anything that doesn't
-- fit in the normal config locations above can go here
-- Set up custom filetypes
vim.filetype.add {
extension = {
foo = "fooscript",
},
filename = {
["Foofile"] = "fooscript",
},
pattern = {
["~/%.config/foo/.*"] = "fooscript",
},
}

View File

@@ -1,6 +0,0 @@
---
base: lua51
globals:
vim:
any: true

View File

@@ -1,8 +0,0 @@
std = "neovim"
[rules]
global_usage = "allow"
if_same_then_else = "allow"
incorrect_standard_library_use = "allow"
mixed_table = "allow"
multiple_statements = "allow"

View File

@@ -215,7 +215,8 @@ font pango:FiraCode: 14px
### Window formatting
default_border none
default_border pixel 2
gaps inner 10px
gaps inner 0
gaps outer 0
# Applications
exec_always /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

144
flake.lock generated
View File

@@ -37,6 +37,43 @@
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1751685974,
"narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
"ref": "refs/heads/main",
"rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
"revCount": 92,
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nvf",
"nixpkgs"
]
},
"locked": {
"lastModified": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
@@ -64,11 +101,11 @@
"zon2nix": "zon2nix"
},
"locked": {
"lastModified": 1759330332,
"narHash": "sha256-ZKyOgOOm9Itjbc5xi89xMtw+cnnOFfl79zndPMTzKpU=",
"lastModified": 1757737252,
"narHash": "sha256-i0GfdFWNlIgFuVjCnf6/nSTqnNU4PSXb+6NBxGJkspE=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "a5aff0e347b0016e2735d4ec4b4cdca96b5438d1",
"rev": "0c63946bdb68080cd5cac0f97622b8509b6776a5",
"type": "github"
},
"original": {
@@ -84,11 +121,11 @@
]
},
"locked": {
"lastModified": 1758463745,
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"lastModified": 1756679287,
"narHash": "sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB+gTQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"rev": "07fc025fe10487dd80f2ec694f1cd790e752d0e8",
"type": "github"
},
"original": {
@@ -98,6 +135,21 @@
"type": "github"
}
},
"mnw": {
"locked": {
"lastModified": 1756659871,
"narHash": "sha256-v6Rh4aQ6RKjM2N02kK9Usn0Ix7+OY66vNpeklc1MnGE=",
"owner": "Gerg-L",
"repo": "mnw",
"rev": "ed6cc3e48557ba18266e598a5ebb6602499ada16",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "mnw",
"type": "github"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1739444422,
@@ -129,24 +181,24 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1758360447,
"narHash": "sha256-XDY3A83bclygHDtesRoaRTafUd80Q30D/Daf9KSG6bs=",
"rev": "8eaee110344796db060382e15d3af0a9fc396e0e",
"lastModified": 1755972213,
"narHash": "sha256-VYK7aDAv8H1enXn1ECRHmGbeY6RqLnNwUJkOwloIsko=",
"rev": "73e96df7cff5783f45e21342a75a1540c4eddce4",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre864002.8eaee1103447/nixexprs.tar.xz"
"url": "https://releases.nixos.org/nixos/unstable-small/nixos-25.11pre850642.73e96df7cff5/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
"url": "https://channels.nixos.org/nixos-unstable-small/nixexprs.tar.xz"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1759281824,
"narHash": "sha256-FIBE1qXv9TKvSNwst6FumyHwCRH3BlWDpfsnqRDCll0=",
"lastModified": 1757545623,
"narHash": "sha256-mCxPABZ6jRjUQx3bPP4vjA68ETbPLNz9V2pk9tO7pRQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5b5be50345d4113d04ba58c444348849f5585b4a",
"rev": "8cd5ce828d5d1d16feff37340171a98fc3bf6526",
"type": "github"
},
"original": {
@@ -156,18 +208,41 @@
"type": "github"
}
},
"quadlet-nix": {
"nixpkgs_4": {
"locked": {
"lastModified": 1758631655,
"narHash": "sha256-EGeZ963L7xsNAY7snvP1JHQe7LWLVCM6f49+PzWjhEE=",
"owner": "SEIAROTg",
"repo": "quadlet-nix",
"rev": "2ebe01b175e2e1e6de3f172d23f0c3b88713eec9",
"lastModified": 1756696532,
"narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
"type": "github"
},
"original": {
"owner": "SEIAROTg",
"repo": "quadlet-nix",
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nvf": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts",
"mnw": "mnw",
"nixpkgs": "nixpkgs_4",
"systems": "systems_2"
},
"locked": {
"lastModified": 1757773905,
"narHash": "sha256-lM1K3cJsPQyiSGI3rE/F7u02fA/JYBsinMN49IQCY1s=",
"owner": "notashelf",
"repo": "nvf",
"rev": "7e74ee604a7c18dda21e6a809720ad37ab5bae43",
"type": "github"
},
"original": {
"owner": "notashelf",
"repo": "nvf",
"type": "github"
}
},
@@ -178,7 +253,7 @@
"home-manager": "home-manager",
"nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_3",
"quadlet-nix": "quadlet-nix"
"nvf": "nvf"
}
},
"systems": {
@@ -196,6 +271,21 @@
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"zig": {
"inputs": {
"flake-compat": [
@@ -230,17 +320,17 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1758405547,
"narHash": "sha256-WgaDgvIZMPvlZcZrpPMjkaalTBnGF2lTG+62znXctWM=",
"lastModified": 1757167408,
"narHash": "sha256-4XyJ6fmKd9wgJ7vHUQuULYy5ps2gUgkkDk/PrJb2OPY=",
"owner": "jcollie",
"repo": "zon2nix",
"rev": "bf983aa90ff169372b9fa8c02e57ea75e0b42245",
"rev": "dc78177e2ad28d5a407c9e783ee781bd559d7dd5",
"type": "github"
},
"original": {
"owner": "jcollie",
"repo": "zon2nix",
"rev": "bf983aa90ff169372b9fa8c02e57ea75e0b42245",
"rev": "dc78177e2ad28d5a407c9e783ee781bd559d7dd5",
"type": "github"
}
}

View File

@@ -12,7 +12,7 @@
inputs.nixpkgs.follows = "nixpkgs";
};
ghostty.url = "github:ghostty-org/ghostty";
quadlet-nix.url = "github:SEIAROTg/quadlet-nix";
nvf.url = "github:notashelf/nvf";
};
outputs = inputs @ {
@@ -22,15 +22,13 @@
darwin,
home-manager,
ghostty,
quadlet-nix,
nvf,
...
}: let
userName = "wyatt";
userEmail = "wyatt@wyattjmiller.com";
# use this variable to take inputs and use them as arguments in your modules, this will be the common one
customArgs = {
inherit userName userEmail ghostty quadlet-nix;
extraSpecialArgs = {
inherit userName userEmail ghostty nvf;
};
in {
meta = import ./meta;
@@ -38,7 +36,8 @@
# Primary laptop - MacBook Pro (2023, M3)
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
system = "aarch64-darwin";
specialArgs = customArgs // {
specialArgs = {
inherit userName userEmail ghostty;
hostname = "sephiroth";
role = "devel";
};
@@ -50,9 +49,7 @@
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = customArgs // {
inherit home-manager;
};
home-manager.extraSpecialArgs = extraSpecialArgs;
home-manager.users.${userName} = import ./home;
}
];
@@ -61,7 +58,8 @@
# Primary desktop computer
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = customArgs // {
specialArgs = {
inherit userName userEmail;
hostname = "cloud";
role = "devel";
};
@@ -74,9 +72,7 @@
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = customArgs // {
inherit home-manager;
};
home-manager.extraSpecialArgs = extraSpecialArgs;
home-manager.users.${userName}.imports = [
./home
];
@@ -87,7 +83,8 @@
# Apartment appliance server
nixosConfigurations."valefor" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = customArgs // {
specialArgs = {
inherit userName userEmail;
hostname = "valefor";
role = "server";
};
@@ -99,9 +96,7 @@
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = customArgs // {
inherit home-manager;
};
home-manager.extraSpecialArgs = extraSpecialArgs;
home-manager.users.${userName}.imports = [
./home
];
@@ -112,25 +107,29 @@
# Storage, status, game, and media server
nixosConfigurations."ixion" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = customArgs // {
specialArgs = {
inherit userName userEmail;
hostname = "ixion";
role = "server";
};
modules = [
quadlet-nix.nixosModules.quadlet
./modules/common
./modules/machine/ixion
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = customArgs;
home-manager.users.${userName}.imports = [
./home
];
}
];
# modules = [
# nix-flatpak.nixosModules.nix-flatpak
# nix-ld.nixosModules.nix-ld
# ./modules/nixos/hardware-configuration.nix
# ./modules/nix-core.nix
# ./modules/nixos/configuration.nix
# ./modules/host-users.nix
#
# home-manager.nixosModules.home-manager
# {
# home-manager.useGlobalPkgs = true;
# home-manager.useUserPackages = true;
# home-manager.extraSpecialArgs = extraSpecialArgs;
# home-manager.users.${userName}.imports = [
# ./home
# ];
# }
# ];
};
};
}

View File

@@ -4,6 +4,7 @@
userName,
userEmail,
ghostty,
nvf,
...
}: let
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
@@ -13,7 +14,7 @@
};
in {
# Import sub modules
imports = map (module: import module {inherit lib pkgs dirs userName userEmail ghostty;}) [
imports = map (module: import module {inherit lib pkgs dirs userName userEmail ghostty nvf;}) [
./atuin.nix
./shell.nix
./packages

View File

@@ -15,7 +15,7 @@
extraConfig = {
init.defaultBranch = "master";
push.autoSetupRemote = true;
pull.rebase = false;
pull.merge = true;
merge.tool = "nvimdiff";
mergetool.keepBackup = false;
};

View File

@@ -1,14 +1,372 @@
{dirs, ...}: {
programs.neovim = {
{
nvf,
pkgs,
...
}: {
imports = [
nvf.homeManagerModules.default
];
programs.nvf = {
# enable nvf neovim distribution
enable = true;
defaultEditor = true;
# set stuff!
settings = {
vim = {
# setting alias to _always_ use neovim
viAlias = true;
vimAlias = true;
options = {
tabstop = 4;
shiftwidth = 4;
expandtab = true;
autoindent = true;
smartindent = true;
smarttab = true;
scrolloff = 12;
sidescrolloff = 8;
wrap = false;
linebreak = false;
number = true;
relativenumber = true;
cursorline = true;
signcolumn = "yes";
tabline = "2";
};
xdg.configFile = {
nvim = {
onChange = "nvim --headless -c 'if exists(\":LuaCacheClear\") | :LuaCacheClear' +quitall";
source = dirs.defaults + /nvim;
# clipboard configuration
clipboard = {
enable = true;
providers = {
wl-copy.enable = true;
};
registers = "unnamed,unnamedplus";
};
# LSP configuration
lsp = {
enable = true;
formatOnSave = true;
lspkind.enable = true;
lspconfig.enable = true;
lightbulb.enable = false;
lspsaga.enable = false;
trouble.enable = false;
lspSignature.enable = true;
otter-nvim.enable = false;
nvim-docs-view.enable = false;
};
# debugger configuration
debugger = {
nvim-dap = {
enable = true;
ui.enable = true;
};
};
# disable spellcheck
spellcheck.enable = false;
# enable diagnostics (inline)
diagnostics = {
enable = true;
config = {
underline = true;
signs = true;
update_in_insert = false;
virtual_lines = true;
};
};
# language specific configuartion
languages = {
enableFormat = true;
enableTreesitter = true;
enableExtraDiagnostics = true;
nix = {
enable = true;
lsp.enable = true;
treesitter.enable = true;
format = {
enable = true;
package = pkgs.alejandra;
};
extraDiagnostics = {
enable = true;
types = ["statix"];
};
};
markdown.enable = true;
bash.enable = true;
clang.enable = true;
css = {
enable = true;
format = {
enable = true;
package = pkgs.prettierd;
};
};
html.enable = true;
sql.enable = true;
java.enable = true;
kotlin = {
enable = true;
lsp.enable = true;
treesitter.enable = true;
extraDiagnostics.enable = true;
};
ts = {
enable = true;
format = {
enable = true;
package = pkgs.prettierd;
};
lsp = {
enable = true;
server = "ts_ls";
};
};
lua.enable = false;
python.enable = true;
rust = {
enable = true;
lsp.enable = true;
dap.enable = true;
format.enable = true;
crates.enable = true;
};
csharp = {
enable = true;
lsp = {
enable = true;
server = "omnisharp";
};
treesitter.enable = true;
};
};
# statusline configuration
statusline = {
lualine = {
enable = true;
theme = "catppuccin";
};
};
# theme configuration
theme = {
enable = true;
name = "catppuccin";
style = "mocha";
transparent = true;
};
# visual/ui configuration
visuals = {
nvim-scrollbar.enable = false;
nvim-web-devicons.enable = true;
nvim-cursorline.enable = true;
cinnamon-nvim.enable = true;
fidget-nvim.enable = false;
highlight-undo.enable = true;
indent-blankline.enable = true;
};
ui = {
borders.enable = true;
noice.enable = false;
colorizer.enable = true;
modes-nvim.enable = false; # the theme looks terrible with catppuccin
illuminate.enable = true;
breadcrumbs = {
enable = true;
navbuddy.enable = false;
};
fastaction.enable = true;
};
# autocomplete/intellisense configuration
autopairs.nvim-autopairs.enable = true;
autocomplete.nvim-cmp = {
enable = true;
sources = {
nvim-lsp = "nvim_lsp";
async-path = "async_path";
};
};
# tabline configuration
tabline = {
nvimBufferline = {
enable = true;
setupOpts.options = {
numbers = "none";
};
mappings = {
closeCurrent = "<leader>x";
cycleNext = "<tab>";
cyclePrevious = "<S-tab>";
moveNext = null;
movePrevious = null;
sortByDirectory = null;
sortByExtension = null;
sortById = null;
};
};
};
treesitter = {
context = {
enable = true;
setupOpts.max_lines = 3;
};
};
binds = {
whichKey.enable = true;
cheatsheet.enable = true;
};
telescope.enable = true;
git = {
enable = true;
gitsigns.enable = true;
gitsigns.codeActions.enable = false; # throws an annoying debug message
git-conflict.enable = true;
};
comments = {
comment-nvim.enable = true;
};
# discord integration
presence = {
neocord.enable = true;
};
notify = {
nvim-notify.enable = true;
};
dashboard = {
dashboard-nvim.enable = false;
alpha.enable = true;
};
filetree = {
neo-tree = {
enable = true;
setupOpts.enable_refresh_on_write = true;
};
};
# terminal integration configuration
terminal = {
toggleterm = {
enable = true;
lazygit.enable = true;
};
};
# notes!
notes = {
obsidian = {
enable = true; # more to be added here
setupOpts = {
workspaces = [
{
name = "notes";
path = "~/Source/notes";
}
];
};
};
todo-comments.enable = true;
};
# ai assistant configuration
assistant = {
copilot = {
enable = true;
cmp.enable = true;
};
};
# custom key mappings
keymaps = [
# Ctrl-S save
{
mode = ["n" "v" "i"];
key = "<C-s>";
action = "<cmd>w<CR>";
}
# toggle file explorer
{
mode = ["n"];
key = "<leader><o>";
action = "<cmd>Neotree toggle left<CR>";
}
# copy/cut/paste to system clipboard
# {
# mode = ["v"];
# key = "<sc-c>";
# action = ''
# "+y
# '';
# noremap = true;
# }
# {
# mode = ["n"];
# key = "<sc-v>";
# action = ''
# l"+P
# '';
# noremap = true;
# }
# {
# mode = ["v"];
# key = "<sc-v>";
# action = ''
# "+P
# '';
# noremap = true;
# }
# {
# mode = ["c"];
# key = "<sc-v>";
# action = ''
# <C-o>l<C-o>"+<C-o>P<C-o>
# '';
# noremap = true;
# }
# {
# mode = ["i"];
# key = "<sc-v>";
# action = ''
# <ESC>l"+Pli
# '';
# noremap = true;
# }
# {
# mode = ["t"];
# key = "<sc-v>";
# action = ''
# <C-\><C-n>"+Pi
# '';
# noremap = true;
# }
];
### end of settings
};
};
};
}

View File

@@ -1,4 +1,4 @@
{pkgs, lib, ...}: {
{pkgs, ...}: {
programs.fish = {
enable = true;
# initExtra = ''
@@ -52,27 +52,6 @@
'';
onEvent = "fish_greeting";
};
} // lib.optionalAttrs pkgs.stdenv.isLinux {
block = {
body = ''
systemd-inhibit --what=sleep --who="$USER" --why="manual invocation" --mode=block sleep infinity &
set -g INHIBIT_PID $last_pid
echo "Sleep inhibited. PID: $INHIBIT_PID"
'';
};
unblock = {
body = ''
if set -q INHIBIT_PID
kill $INHIBIT_PID 2>/dev/null
and echo "Sleep inhibitor removed. PID: $INHIBIT_PID"
or echo "Failed to kill process or already terminated."
set -e INHIBIT_PID
else
echo "No active sleep inhibitor found."
end
'';
};
};
};

View File

@@ -6,14 +6,6 @@
dirs = {
defaults = ../defaults;
};
# Derived from subprojects/cava.wrap
libcava.src = pkgs.fetchFromGitHub {
owner = "LukashonakV";
repo = "cava";
rev = "0.10.3";
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
};
in {
wayland.windowManager.sway = {
enable = pkgs.stdenv.isLinux;
@@ -25,29 +17,49 @@ in {
gtk = true;
};
};
xdg = {
configFile = {
"sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
"waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
"waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
};
};
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
programs.wofi = {
services.mako = {
enable = pkgs.stdenv.isLinux;
settings = {
width=600;
height=350;
location="center";
show="drun";
prompt="Search...";
filter_rate=100;
allow_markup=true;
no_actions=true;
halign="fill";
orientation="vertical";
content_halign="fill";
insensitive=true;
allow_images=true;
image_size=40;
gtk_dark=true;
text-color = "#cad3f5";
border-color = "#c6d0f5";
background-color = "#24273a";
width = 420;
height = 110;
padding = 10;
border-size = 2;
font = "Monaspace Krypton 9";
anchor = "top-right";
default-timeout = 5000;
max-icon-size = 32;
};
};
programs = {
wofi = {
enable = pkgs.stdenv.isLinux;
settings = {
width = 600;
height = 350;
location = "center";
show = "drun";
prompt = "Search...";
filter_rate = 100;
allow_markup = true;
no_actions = true;
halign = "fill";
orientation = "vertical";
content_halign = "fill";
insensitive = true;
allow_images = true;
image_size = 40;
gtk_dark = true;
};
style = ''
@define-color selected-text #8caaee;
@@ -125,27 +137,11 @@ in {
}
'';
};
programs.swaylock.enable = pkgs.stdenv.isLinux;
swaylock.enable = pkgs.stdenv.isLinux;
services.mako = {
enable = pkgs.stdenv.isLinux;
settings = {
text-color="#cad3f5";
border-color="#c6d0f5";
background-color="#24273a";
width=420;
height=110;
padding=10;
border-size=2;
font="Monaspace Krypton 9";
anchor="top-right";
default-timeout=5000;
max-icon-size=32;
};
};
programs.waybar = {
waybar = {
enable = pkgs.stdenv.isLinux;
systemd.enable = true;
};
};
}

View File

@@ -1,23 +1,20 @@
{ lib, pkgs, ... }: {
# Common packages that every system will use
environment.systemPackages = with pkgs; [
git
vim
neovim
usbutils
coreutils
lshw
systemd
dmidecode
pciutils
nix-ld
patchelf
htop
] ++
lib.optionals pkgs.stdenv.isLinux (with pkgs; [
systemd
lshw
dmidecode
nix-ld
]) ++
lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
# nothing here, yet ;)
]);
];
# Common environment variables that every system will use
environment.variables.EDITOR = "nvim";
}

View File

@@ -1,23 +1,30 @@
{ lib, pkgs, userName, hostname, ... }:
{
lib,
pkgs,
userName,
hostname,
...
} @ args: {
networking.hostName = hostname;
users.users."${userName}" = {
home = if pkgs.stdenv.isDarwin
# Don't forget to set a password with passwd!
users.users."${userName}" = lib.mkMerge [
{
home =
if pkgs.stdenv.isDarwin
then "/Users/${userName}"
else "/home/${userName}";
description = userName;
} // lib.optionalAttrs pkgs.stdenv.isLinux {
}
(lib.mkIf (pkgs.stdenv.isLinux) {
group = "${userName}";
isNormalUser = true;
};
})
];
users.groups.wyatt = {};
nix.settings.trusted-users = [userName];
security = lib.optionalAttrs pkgs.stdenv.isLinux {
sudo.extraRules = [
security.sudo = {
extraRules = [
{
groups = [ "wheel" ];
commands = [
@@ -30,9 +37,7 @@
];
};
environment = lib.optionalAttrs pkgs.stdenv.isDarwin {
etc."sudoers.d/wheel-nopasswd".text = ''
%wheel ALL=(ALL:ALL) NOPASSWD: SETENV: ALL
'';
};
users.groups.wyatt = {};
nix.settings.trusted-users = [userName];
}

View File

@@ -1,84 +0,0 @@
{
pkgs,
userName,
...
}: {
imports = [
../../pwrMgmt
../../networking/core.nix
../../virtualization/podman.nix
../../virtualization/quadlet.nix
../../virtualization/hardware.nix
];
# Enable flakes for NixOS
nix.settings.experimental-features = ["nix-command" "flakes"];
# Custom kernel/boot stuff
boot = {
kernelPackages = pkgs.linuxPackages_latest;
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
# Enable Polkit
security.polkit.enable = true;
# Make sure Bluetooth is off!
hardware.bluetooth.enable = false;
# Set your timezone
time.timeZone = "America/Detroit";
# Power management module
pwrMgmt = {
enable = true;
cpuFreqGovernor = "performance";
powertop.enable = false;
};
# Podman module (see ../../virtualization/podman.nix)
podman = {
enable = true;
extraPackages = with pkgs; [
docker-credential-helpers
toolbox
cosign
crane
podman-tui
];
};
# Core networking module (see ../../networking/core.nix)
network = {
firewall.enable = true;
networkManager.enable = true;
};
programs = {
# Enable GnuPG
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
mtr.enable = true;
};
users.users.${userName}.extraGroups = ["wheel" "video" "podman" "network"];
services = {
# Enable OpenSSH
openssh.enable = true;
};
# Install packages to be installed system-wide
environment.systemPackages = with pkgs; [
wireguard-tools
];
system.stateVersion = "25.05";
}

View File

@@ -1,6 +0,0 @@
{...}: {
imports = [
./configuration.nix
./hardware-configuration.nix
];
}

View File

@@ -1,46 +0,0 @@
# --- DO NOT USE ---
#
# this is copied from ../valefor/hardware-configuration.nix
# generate a new hardware-configuration.nix before using this!
#
# ------------------
#
# 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, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/ff89bde1-4b33-4277-b649-b92700b2406c";
fsType = "xfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/3A4B-6866";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
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
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,12 +1,12 @@
# Power management modules
This directory houses my own custom defined power management settings as NixOS modules. These are set in the machine-specific configurations (typically).
This directory houses my own custom defined power management settings. These are set in the machine-specific configurations (typically).
## Examples
Given that this configuration is in the `machine/<hostname>` directory (where hostname is the name of the computer your configuring):
### Desktop/server configuration
### Desktop configuration
```nix
imports = [

View File

@@ -5,7 +5,7 @@
}:
with lib; {
options = {
security.sudoers = {
security.sudo = {
needsPassword = mkOption {
type = types.bool;
default = true;

View File

@@ -21,7 +21,6 @@ in {
environment.systemPackages = with pkgs;
[
scarlett2
alsa-scarlett-gui
]
++ (
if cfg.guiSupport

View File

@@ -40,13 +40,7 @@ Example:
};
```
To get a full, comprehensive list of what you can do with the podman module, please check out [podman.nix](./podman.nix)!
### Podman Quadlets
This is a wrapper around a project called [`quadlet-nix`](https://github.com/SEIAROTg/quadlet-nix), a way of defining systemd services as containers with Nix! Since I have existing services running inside of containers and don't want to risk breaking _everything_ that I have running, I figured this would be a safe, transitionary approach to handle this.
This is still a work-in-progress, check back soon on progress on this.
To get a full, comprehensive list of what you can do with the podman module, please check out (podman.nix)[./podman.nix]!
## Kubernetes

View File

@@ -1,47 +0,0 @@
# ----------------------
# Wrapper for defining Quadlets in Nix via quadlet-nix
#
# Still WIP
# ----------------------
{
config,
lib,
...
}:
let
cfg = config.quadlet;
in {
options = {
quadlet = {
enable = lib.mkEnableOption "Enable Podman's Quadlet systemd integration";
autoUpdate = {
enable = lib.mkEnableOption "Enable the auto update mechanism";
calendar = lib.mkOption {
type = lib.types.str;
default = "*-*-* 03:30:00";
description = "When the auto update mechanism is triggered, the calendar option will tell the auto update when to start";
};
};
extraPackages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = [];
description = "Additional container-related packages to install (these likely will be installed with Podman though)";
};
};
};
config = lib.mkIf cfg.enable {
virtualisation.quadlet = {
enable = true;
autoUpdate = {
enable = cfg.autoUpdate.enable;
calendar = cfg.autoUpdate.calendar;
};
};
environment.systemPackages = cfg.extraPackages;
};
}