diff --git a/flake.lock b/flake.lock index 0d21e0d..8c4cb70 100644 --- a/flake.lock +++ b/flake.lock @@ -145,7 +145,7 @@ "inputs": { "deploy-rs": "deploy-rs", "nixpkgs": [ - "nixpkgs-unstable" + "nixpkgs" ], "nixpkgs-unstable": [ "nixpkgs-unstable" @@ -156,14 +156,17 @@ ] }, "locked": { - "lastModified": 1771048427, - "narHash": "sha256-pGqtZ6LH3hcmtSiCy8bMnRxkBBT0CU18pIHlEm9yCs4=", - "path": "/home/me/cry/mk/Cerulean", - "type": "path" + "lastModified": 1771048834, + "narHash": "sha256-rkhrNJIjCQeABf0zgWZvz4Rb99TJvK+ioOmgy3tIOMs=", + "owner": "emilelcb", + "repo": "Cerulean", + "rev": "f329d48223d8addd340f14c9c653960544b3ce2c", + "type": "github" }, "original": { - "path": "/home/me/cry/mk/Cerulean", - "type": "path" + "owner": "emilelcb", + "repo": "Cerulean", + "type": "github" } }, "crane": { @@ -1254,6 +1257,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1771043024, + "narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1470,6 +1489,7 @@ "nix-alien": "nix-alien", "nixcats": "nixcats", "nixcord": "nixcord", + "nixpkgs": "nixpkgs_10", "nixpkgs-staging": "nixpkgs-staging", "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", @@ -1736,7 +1756,7 @@ "zen": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1770910552, diff --git a/flake.nix b/flake.nix index 3c4eacf..820daca 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,7 @@ inputs = { systems.url = "github:nix-systems/default"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; @@ -17,10 +18,14 @@ inputs = { systems.follows = "systems"; nixpkgs.follows = "nixpkgs-unstable"; - nixpkgs-unstable.follows = "nixpkgs-unstable"; }; }; + microvm = { + url = "github:microvm-nix/microvm.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + cachyos.url = "github:xddxdd/nix-cachyos-kernel"; nix-alien = { diff --git a/groups/all/default.nix b/groups/all/default.nix new file mode 100644 index 0000000..a7c21fd --- /dev/null +++ b/groups/all/default.nix @@ -0,0 +1,6 @@ +{ ... }: { + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + download-buffer-size = 524288000; + }; +} diff --git a/groups/servers/default.nix b/groups/servers/default.nix new file mode 100644 index 0000000..b142ca8 --- /dev/null +++ b/groups/servers/default.nix @@ -0,0 +1,17 @@ +{ ... }: { + nix.settings = { + trusted-users = ["root" "@wheel"]; + }; + + security = { + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; +} diff --git a/groups/unstable-base/default.nix b/groups/unstable-base/default.nix new file mode 100644 index 0000000..9ee1305 --- /dev/null +++ b/groups/unstable-base/default.nix @@ -0,0 +1,9 @@ +{ + lib, + config, + ... +}: { + nixpkgs.channels.default = { + default = lib.mkForce config.nixpkgs.channels.default.upkgs; + }; +} diff --git a/homes/aurora/default.nix b/homes/aurora/default.nix index 0b0eb33..2e46252 100644 --- a/homes/aurora/default.nix +++ b/homes/aurora/default.nix @@ -71,6 +71,7 @@ # fonts nerd-fonts.departure-mono # pretty pixel art font i love!! x3 + nerd-fonts.jetbrains-mono # cli / tui tools and commands! eza # replaces: ls (rust) diff --git a/homes/modules/de/rofi/ichigo.rasi b/homes/modules/de/rofi/ichigo.rasi new file mode 100644 index 0000000..c2706fd --- /dev/null +++ b/homes/modules/de/rofi/ichigo.rasi @@ -0,0 +1,142 @@ +configuration { + modes: [ combi ]; + combi-modes: [ window, drun, run ]; +} + +@theme "colors" + +window { + background-color: @background; + border-color: @color10; + border-radius: 12px; + border: 2; + padding: 16; + transparency: "real"; + opacity: 90; +} + +mainbox { + background-color: transparent; + opacity: 90; + border: 0; +} + +message { + border: 2px 0px 0px; + border-color: @color14; + padding: 1px; +} + +inputbar { + background-color: transparent; + text-color: @foreground; + spacing: 8; +} +textbox { + background-color: @background; + text-color: @foreground; +} + +prompt { + background-color: transparent; + text-color: @color12; +} + +entry { + placeholder: "~ rawr :3 ~ *pounces on u* <3 ~ >w< ~"; + cursor: pointer; + background-color: transparent; + text-color: @color13; +} + +case-indicator { + background-color: transparent; + text-color: @color12; +} + +listview { + fixed-height: 0; + border: 2px 0px 0px; + border-color: transparent; + background-color: transparent; + spacing: 2px; + scrollbar: true; + padding: 2px 0px 0px; +} + +element { + orientation: horizontal; + spacing: 8; + border: 0; + border-radius: 4; +} + +element-icon { + size: 24; +} + +element-text { + vertical-align: 0.5; +} + +element.normal.normal { + background-color: transparent; + text-color: @foreground; +} +element.alternate.normal { + background-color: transparent; + text-color: @color06; +} +element.selected.normal { + background-color: @color13; + text-color: @background; +} + +element.normal.urgent { + background-color: @color14; + text-color: @background; +} +element.alternate.urgent { + background-color: transparent; + text-color: @color14; +} +element.selected.urgent { + background-color: @color13; + text-color: @background; +} + +element.normal.active { + background-color: @color12; + text-color: @background; +} +element.alternate.active { + background-color: @background; + text-color: @color14; +} +element.selected.active { + background-color: @color13; + text-color: @background; +} + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +button.selected { + background-color: transparent; + text-color: @foreground; +} + +scrollbar { + background-color: transparent; + handle-color: @color12; + width: 4px; + border: 0; + handle-width: 8px; + padding: 0; +} +mode-switcher { + border: 2px 0px 0px ; + border-color: @color14; +} diff --git a/homes/modules/de/rofi/rofi.nix b/homes/modules/de/rofi/rofi.nix index ae16470..b45aef8 100644 --- a/homes/modules/de/rofi/rofi.nix +++ b/homes/modules/de/rofi/rofi.nix @@ -3,7 +3,7 @@ enable = true; font = "DepartureMono Nerd Font Mono 10"; - theme = ./theme.rasi; + theme = ./ichigo.rasi; extraConfig = { #kb-row-up = "Up,Control+k"; diff --git a/homes/modules/de/rofi/theme.rasi b/homes/modules/de/rofi/theme.rasi deleted file mode 100644 index e69de29..0000000 diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua.old b/homes/modules/programs/neovim/lua/lsp/completion.lua.old deleted file mode 100644 index f40853f..0000000 --- a/homes/modules/programs/neovim/lua/lsp/completion.lua.old +++ /dev/null @@ -1,203 +0,0 @@ ----packadd + after/plugin ----@type fun(names: string[]|string) -local load_w_after_plugin = require('nixCatsUtils.lzUtils').make_load_with_after({ "plugin" }) - --- NOTE: packadd doesnt load after directories. --- hence, the above function that you can get from luaUtils that exists to make that easy. - -return { - { - "cmp-buffer", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-cmdline", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-cmdline-history", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lsp", - on_plugin = { "nvim-cmp" }, - dep_of = { "nvim-lspconfig" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lsp-signature-help", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-nvim-lua", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp-path", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "cmp_luasnip", - on_plugin = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "friendly-snippets", - dep_of = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "lspkind.nvim", - dep_of = { "nvim-cmp" }, - load = load_w_after_plugin, - }, - { - "luasnip", - dep_of = { "nvim-cmp" }, - after = function (plugin) - local luasnip = require 'luasnip' - require('luasnip.loaders.from_vscode').lazy_load() - luasnip.config.setup {} - - local ls = require('luasnip') - - vim.keymap.set({ "i", "s" }, "", function() - if ls.choice_active() then - ls.change_choice(1) - end - end) - end, - }, - { - "nvim-cmp", - -- cmd = { "" }, - event = { "DeferredUIEnter" }, - on_require = { "cmp" }, - -- ft = "", - -- keys = "", - -- colorscheme = "", - after = function (plugin) - -- [[ Configure nvim-cmp ]] - -- See `:help cmp` - local cmp = require 'cmp' - local luasnip = require 'luasnip' - local lspkind = require 'lspkind' - - cmp.setup { - formatting = { - format = lspkind.cmp_format { - mode = 'text', - with_text = true, - maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) - ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) - - menu = { - buffer = '[BUF]', - nvim_lsp = '[LSP]', - nvim_lsp_signature_help = '[LSP]', - nvim_lsp_document_symbol = '[LSP]', - nvim_lua = '[API]', - path = '[PATH]', - luasnip = '[SNIP]', - }, - }, - }, - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert { - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete {}, - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }, - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { 'i', 's' }), - }, - - sources = cmp.config.sources { - -- The insertion order influences the priority of the sources - { name = 'nvim_lsp'--[[ , keyword_length = 3 ]] }, - { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, - { name = 'path' }, - { name = 'luasnip' }, - { name = 'buffer' }, - }, - enabled = function() - return vim.bo[0].buftype ~= 'prompt' - end, - experimental = { - native_menu = false, - ghost_text = false, - }, - } - - cmp.setup.filetype('lua', { - sources = cmp.config.sources { - { name = 'nvim_lua' }, - { name = 'nvim_lsp'--[[ , keyword_length = 3 ]]}, - { name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]}, - { name = 'path' }, - { name = 'luasnip' }, - { name = 'buffer' }, - },{ - { - name = 'cmdline', - option = { - ignore_cmds = { 'Man', '!' }, - }, - }, - }, - }) - - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'nvim_lsp_document_symbol'--[[ , keyword_length = 3 ]]}, - { name = 'buffer' }, - { name = 'cmdline_history' }, - }, - view = { - entries = { name = 'wildmenu', separator = '|' }, - }, - }) - - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources { - { name = 'cmdline' }, - -- { name = 'cmdline_history' }, - { name = 'path' }, - }, - }) - end, - }, -} diff --git a/homes/modules/programs/neovim/lua/lsp/indentation.lua b/homes/modules/programs/neovim/lua/lsp/indentation.lua new file mode 100644 index 0000000..df7c2a8 --- /dev/null +++ b/homes/modules/programs/neovim/lua/lsp/indentation.lua @@ -0,0 +1,17 @@ +vim.api.nvim_create_autocmd("FileType", { + pattern = "lua", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = "nix", + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + vim.opt_local.expandtab = true + end, +}) diff --git a/homes/modules/programs/neovim/lua/lsp/init.lua b/homes/modules/programs/neovim/lua/lsp/init.lua index 1fae8a8..647d24f 100644 --- a/homes/modules/programs/neovim/lua/lsp/init.lua +++ b/homes/modules/programs/neovim/lua/lsp/init.lua @@ -2,4 +2,5 @@ require("lze").load { { import = "lsp.completion", }, } +require("lsp.indentation") require("lsp.lsp") diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua index 6548bf3..18e3c80 100644 --- a/homes/modules/programs/neovim/lua/lsp/lsp.lua +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -21,6 +21,10 @@ servers.lua_ls = { }, } +servers.nil_ls = { + settings = {}, +} + local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD") servers.rust_analyzer = { cmd = { rust_analyzer_cmd }, @@ -55,6 +59,10 @@ servers.gleam = { settings = {}, } +servers.hls = { + settings = {}, +} + local java_home = os.getenv("JAVA_HOME") servers.jdtls = { settings = { @@ -120,4 +128,3 @@ require("lze").load { end, }, } - diff --git a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua b/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua deleted file mode 100644 index 0667276..0000000 --- a/homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua +++ /dev/null @@ -1,135 +0,0 @@ ---[[ - This directory is the luaUtils template. - You can choose what things from it that you would like to use. - And then delete the rest. - Everything in this directory is optional. ---]] - -local M = {} --- NOTE: This file contains 2 utilities for making good use of lze and lz.n with nixCats --- The function for loading after directories is useful for both plugins, and also for lazy loading without a plugin, --- but the custom handler will only work with lze. --- If you dont use these plugins, you probably don't need this file. - ----This function is useful for sourcing the after directories of lazily loaded plugins ----because vim.cmd.packadd does not do this for you. ---- ----This might be useful when doing lazy loading the vanilla way ----as well as when using plugins like lz.n for lazy loading ----It is primarily useful for lazily loading nvim-cmp sources, ----as they often rely on the after directory to work ---- ----Recieves the names of directories from a plugin's after directory ----that you wish to source files from. ----Will return a load function that can take a name, or list of names, ----and will load a plugin and its after directories. ----The function returned is a suitable substitute for the load field of a plugin spec. ---- ----Only makes sense for plugins added via optionalPlugins ----or some other opt directory on your packpath ---- ----e.g. in the following example: ----load_with_after_plugin will load the plugin names it is given, and their after/plugin dir ---- ----local load_with_after_plugin = require('nixCatsUtils').make_load_with_after({ 'plugin' }) ----load_with_after_plugin('some_plugin') ----@overload fun(dirs: string[]|string): fun(names: string|string[]) ----It also optionally recieves a function that should load a plugin and return its path ----for if the plugin is not on the packpath, or return nil ----to load from the packpath or nixCats list as normal ----@overload fun(dirs: string[]|string, load: fun(name: string):string|nil): fun(names: string|string[]) -function M.make_load_with_after(dirs, load) - dirs = (type(dirs) == "table" and dirs) or { dirs } - local fromPackpath = function(name) - for _, packpath in ipairs(vim.opt.packpath:get()) do - local plugin_path = vim.fn.globpath(packpath, "pack/*/opt/" .. name, nil, true, true) - if plugin_path[1] then - return plugin_path[1] - end - end - return nil - end - ---@param plugin_names string[]|string - return function(plugin_names) - local names = type(plugin_names) == "table" and plugin_names or { plugin_names } - local to_source = {} - for _, name in ipairs(names) do - if type(name) == "string" then - local path = (type(load) == "function" and load(name)) or nil - if type(path) == "string" then - table.insert(to_source, { name = name, path = path }) - else - local ok, err = pcall(vim.cmd.packadd, name) - if ok then - table.insert(to_source, { name = name, path = nil }) - else - vim.notify( - '"packadd ' - .. name - .. '" failed, and path provided by custom load function (if provided) was not a string\n' - .. err, - vim.log.levels.WARN, - { title = "nixCatsUtils.load_with_after" } - ) - end - end - else - vim.notify( - "plugin name was not a string and was instead of value:\n" .. vim.inspect(name), - vim.log.levels.WARN, - { title = "nixCatsUtils.load_with_after" } - ) - end - end - for _, info in pairs(to_source) do - local plugpath = info.path or vim.tbl_get(package.loaded, "nixCats", "pawsible", "allPlugins", "opt", info.name) or fromPackpath(info.name) - if type(plugpath) == "string" then - local afterpath = plugpath .. "/after" - for _, dir in ipairs(dirs) do - if vim.fn.isdirectory(afterpath) == 1 then - local plugin_dir = afterpath .. "/" .. dir - if vim.fn.isdirectory(plugin_dir) == 1 then - local files = vim.fn.glob(plugin_dir .. "/*", false, true) - for _, file in ipairs(files) do - if vim.fn.filereadable(file) == 1 then - vim.cmd("source " .. file) - end - end - end - end - end - end - end - end -end - --- A nixCats specific lze handler that you can use to conditionally enable by category easier. --- at the start of your config, register with --- require('lze').register_handlers(require('nixCatsUtils.lzUtils').for_cat) --- before any calls to require('lze').load using the handler have been made. --- accepts: --- for_cat = { "your" "cat" }; for_cat = { cat = { "your" "cat" }, default = bool } --- for_cat = "your.cat"; for_cat = { cat = "your.cat", default = bool } --- where default is an alternate value for when nixCats was NOT used to install the config -M.for_cat = { - spec_field = "for_cat", - set_lazy = false, - modify = function(plugin) - if type(plugin.for_cat) == "table" then - if plugin.for_cat.cat ~= nil then - if vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil then - plugin.enabled = (nixCats(plugin.for_cat.cat) and true) or false - else - plugin.enabled = nixCats(plugin.for_cat.default) - end - else - plugin.enabled = (nixCats(plugin.for_cat) and true) or false - end - else - plugin.enabled = (nixCats(plugin.for_cat) and true) or false - end - return plugin - end, -} - -return M diff --git a/homes/modules/programs/neovim/lua/plugins/init.lua b/homes/modules/programs/neovim/lua/plugins/init.lua index 20c38db..c45bebd 100644 --- a/homes/modules/programs/neovim/lua/plugins/init.lua +++ b/homes/modules/programs/neovim/lua/plugins/init.lua @@ -4,5 +4,4 @@ require("lze").load { { import = "plugins.treesitter", }, { import = "plugins.fyler", }, { import = "plugins.mini-hipatterns", }, - --{ import = "plugins.neocord", }, } diff --git a/homes/modules/programs/neovim/lua/plugins/neocord.lua b/homes/modules/programs/neovim/lua/plugins/neocord.lua deleted file mode 100644 index 5efb242..0000000 --- a/homes/modules/programs/neovim/lua/plugins/neocord.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - { - "neocord", - }, -} diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index 6d26b5d..e81a8a0 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -75,6 +75,10 @@ in { gleam = with pkgs; [ gleam ]; + haskell = with pkgs; [ + haskell-language-server + ormolu + ]; java = with pkgs; [ jdt-language-server javaPackages.compiler.openjdk17 @@ -138,9 +142,6 @@ in { nvim-jdtls ]; }; - discord = with pkgs.vimPlugins; [ - neocord # discord presence plugin :3 - ]; }; # shared libraries to be added to LD_LIBRARY_PATH @@ -213,7 +214,6 @@ in { lsp = true; completion = true; treesitter = true; - discord = false; lang = { lua = true; @@ -222,6 +222,7 @@ in { zig = true; elixir = true; gleam = true; + haskell = true; java = true; }; }; diff --git a/homes/modules/themeing/wallust/templates/rofi-template.rasi b/homes/modules/themeing/wallust/templates/rofi-template.rasi new file mode 100644 index 0000000..d126a4d --- /dev/null +++ b/homes/modules/themeing/wallust/templates/rofi-template.rasi @@ -0,0 +1,20 @@ +* { + background: rgba({{ background | rgb }},0.9); + foreground: rgba({{ foreground | rgb }},0.9); + color00: rgba({{ color0 | rgb }},0.9); + color01: rgba({{ color1 | rgb }},0.9); + color02: rgba({{ color2 | rgb }},0.9); + color03: rgba({{ color3 | rgb }},0.9); + color04: rgba({{ color4 | rgb }},0.9); + color05: rgba({{ color5 | rgb }},0.9); + color06: rgba({{ color6 | rgb }},0.9); + color07: rgba({{ color7 | rgb }},0.9); + color08: rgba({{ color8 | rgb }},0.9); + color09: rgba({{ color9 | rgb }},0.9); + color10: rgba({{ color10 | rgb }},0.9); + color11: rgba({{ color11 | rgb }},0.9); + color12: rgba({{ color12 | rgb }},0.9); + color13: rgba({{ color13 | rgb }},0.9); + color14: rgba({{ color14 | rgb }},0.9); + color15: rgba({{ color15 | rgb }},0.9); +} diff --git a/homes/modules/themeing/wallust/wallust.toml b/homes/modules/themeing/wallust/wallust.toml index efff412..ff82190 100644 --- a/homes/modules/themeing/wallust/wallust.toml +++ b/homes/modules/themeing/wallust/wallust.toml @@ -22,6 +22,9 @@ hyprland.target = "~/.config/hypr/colors.conf" waybar.template = "waybar-template.css" waybar.target = "~/.config/waybar/colors.css" +rofi.template = "rofi-template.rasi" +rofi.target = "~/.config/rofi/colors.rasi" + neovim.template = "neovim-template" neovim.target = "~/.cache/nvim/neovim-colors" diff --git a/homes/modules/wm/hyprland/hyprland.nix b/homes/modules/wm/hyprland/hyprland.nix index c11fe63..aff785f 100644 --- a/homes/modules/wm/hyprland/hyprland.nix +++ b/homes/modules/wm/hyprland/hyprland.nix @@ -278,12 +278,15 @@ ]; layerrule = [ - #"blur, rofi" - #"ignorezero, rofi" - #"blur, aurorashell" - #"ignorealpha 0.7, aurorashell" - "blur on, match:namespace waybar" - "ignore_alpha 0, match:namespace waybar" + #"blur, aurorashell" + #"ignorealpha 0.7, aurorashell" + + "blur on, match:namespace waybar" + "ignore_alpha 0, match:namespace waybar" + + "blur on, match:namespace rofi" + "xray on, match:namespace rofi" + "ignore_alpha 0, match:namespace rofi" ]; env = [ diff --git a/hosts/arcturus/default.nix b/hosts/arcturus/default.nix new file mode 100644 index 0000000..aa0e179 --- /dev/null +++ b/hosts/arcturus/default.nix @@ -0,0 +1,117 @@ +{ config, lib, pkgs, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + networking.hostName = "arcturus"; + + time.timeZone = "Europe/London"; + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + networking = { + useNetworkd = false; + useDHCP = false; + + nftables.enable = true; + + firewall = { + allowedTCPPorts = [ + 2222 + ]; + }; + }; + + systemd.network = { + enable = true; + + netdevs = { + "10-bond0" = { + netdevConfig = { + Kind = "bond"; + Name = "bond0"; + }; + bondConfig = { + Mode = "802.3ad"; + TransmitHashPolicy = "layer3+4"; + LACPTransmitRate = "fast"; + MIIMonitorSec = "100ms"; + }; + }; + }; + + networks = { + "30-eno1" = { + matchConfig.Name = "eno1"; + networkConfig.Bond = "bond0"; + }; + "30-eno2" = { + matchConfig.Name = "eno2"; + networkConfig.Bond = "bond0"; + }; + "40-bond0" = { + matchConfig.Name = "bond0"; + linkConfig = { + RequiredForOnline = "carrier"; + }; + networkConfig.LinkLocalAddressing = "no"; + networkConfig.DHCP = "yes"; + vlan = [ "vlan1" ]; + }; + }; + }; + + services = { + openssh = { + enable = true; + + ports = [2222]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + AllowUsers = ["foxora"]; + UseDns = false; # enables rDNS lookup + X11Forwarding = false; + }; + }; + }; + + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7NLaT/J1S/lwFp0YRHN5oTGhFoDYd2yaRKKsBVpqIv aurora@nixarawrui" + ]; + }; + + environment = { + systemPackages = with pkgs; [ + neovim + git + wget + ]; + + variables = { + EDITOR = "nvim"; + }; + }; + + system.stateVersion = "25.11"; +} diff --git a/hosts/arcturus/hardware-configuration.nix b/hosts/arcturus/hardware-configuration.nix new file mode 100644 index 0000000..2cb46e2 --- /dev/null +++ b/hosts/arcturus/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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 = [ "ahci" "ehci_pci" "megaraid_sas" "usb_storage" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/7f22e35f-7536-49c4-9c04-88874e87f266"; + fsType = "btrfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/0213-F9A0"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/0d04172b-aed8-42ea-9cb8-e5dcbf960200"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/lyra/default.nix b/hosts/lyra/default.nix new file mode 100644 index 0000000..499d59e --- /dev/null +++ b/hosts/lyra/default.nix @@ -0,0 +1,94 @@ +{ config, lib, pkgs, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + networking.hostName = "lyra"; + + time.timeZone = "Europe/London"; + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + networking = { + networkmanager.enable = true; + + firewall = { + allowedTCPPorts = [ + 2222 + ]; + }; + }; + + services = { + openssh = { + enable = true; + + ports = [2222]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + AllowUsers = ["foxora"]; + UseDns = false; # enables rDNS lookup + X11Forwarding = false; + }; + }; + }; + + virtualisation.containers.enable = true; + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; + + users.users.foxora = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + + packages = with pkgs; [ + tree + ]; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4d6Pt4fFTP0/ZfesNL+MX+j/OqoMRBOh61gqHNWpnH aurora@nixarawrui" + ]; + }; + + programs = { + nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 14d --keep 8"; + flake = "/etc/nixos"; + }; + }; + + environment = { + systemPackages = with pkgs; [ + neovim + git + wget + ]; + + variables = { + EDITOR = "nvim"; + }; + }; + + system.stateVersion = "25.11"; +} + diff --git a/hosts/lyra/hardware-configuration.nix b/hosts/lyra/hardware-configuration.nix new file mode 100644 index 0000000..6dbf2fa --- /dev/null +++ b/hosts/lyra/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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 = [ "ahci" "xhci_pci" "megaraid_sas" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1bc53888-6db8-46df-aa28-975b710c5de8"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/12CE-A600"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/60643004-6916-46b3-8655-66fdc28cf5ad"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index 88c362c..010b67a 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -10,12 +10,6 @@ ./modules/amdgpu-ignore-ctx-privileges.nix ]; - # Enable the Flakes feature and the accompaying new nix command-line tool - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - download-buffer-size = 524288000; - }; - # Use the systemd-boot EFI boot loader. boot = rec { initrd.kernelModules = ["amdgpu"]; @@ -155,7 +149,6 @@ alsa.enable = true; alsa.support32Bit = true; - pulse.enable = true; }; udev = { @@ -336,27 +329,5 @@ inputs.nix-alien.packages.${stdenv.hostPlatform.system}.nix-alien ]; - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixupkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . - system.stateVersion = "24.11"; # Did you read the comment? + system.stateVersion = "24.11"; } diff --git a/nixpkgs.nix b/nixpkgs.nix index 2428743..50fcf68 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -4,7 +4,16 @@ ... } @ args: { nixpkgs.channels.default = rec { - default = upkgs; + default = pkgs; + + # nixpkgs + pkgs = { + inherit system; + source = inputs.nixpkgs; + overlays = []; + config.allowUnfree = true; + }; + # nixpkgs-unstable upkgs = { inherit system; @@ -19,6 +28,7 @@ config.allowUnfree = true; }; + # nixpkgs-staging spkgs = { inherit system; diff --git a/snow.nix b/snow.nix index f434d30..1fea348 100644 --- a/snow.nix +++ b/snow.nix @@ -7,13 +7,57 @@ cerulean.mkNexus ./. (self: { home-manager.nixosModules.home-manager ]; - nodes = { + groups = { + unstable-base = {}; + servers = {}; + }; + + nodes = let + inherit + (self.nexus) + groups + ; + in + { nixarawrui = { system = "x86_64-linux"; + + groups = [ + groups.unstable-base + ]; + extraModules = with inputs; [ sddm-silent.nixosModules.default ]; }; + + arcturus = { + system = "x86_64-linux"; + + groups = [ + groups.servers + ]; + + deploy.ssh = { + host = "10.16.1.163"; + port = 2222; + user = "foxora"; + }; + }; + + lyra = { + system = "x86_64-linux"; + + groups = [ + groups.servers + ]; + + deploy.ssh = { + host = "10.16.1.58"; + port = 2222; + user = "foxora"; + }; + }; }; }; })