Compare commits

7 Commits

Author SHA1 Message Date
9cc2ba3dae Added tmux with custom initial setup (marvin only) & blender (both) 2026-07-01 20:06:16 +02:00
7d5b6f7d3e Nvim switch from NvChad to LazyVim 2026-07-01 20:04:41 +02:00
c239d8dbda Drop ssh module from nikita-nixos host 2026-06-29 19:31:56 +02:00
0cd3f5ce32 Install Instructions 2026-06-29 19:31:10 +02:00
e442f610c3 Scaffold nikita-nixos host
Add a second nixosConfigurations entry for a friend's machine running
Plasma 6 + SDDM. The hardware-configuration.nix is a placeholder; it
must be replaced with the output of nixos-generate-config on the
actual hardware before installing. Git identity in hosts/nikita-nixos/
home.nix is also a placeholder.
2026-06-29 18:53:20 +02:00
3ae5cba9a6 Restructure flake into per-host modules
Move host-specific files under hosts/<name>/ so a second machine can be
added without forking the repo. Split system/users.nix and
system/display-manager.nix into per-option subfolders, separate the
home-manager packages list into a shared base and a personal bundle,
extract networking.hostName out of the shared networking module, and
inline the git identity into the per-host home.nix. Add .gitignore
guardrails to keep secrets out.
2026-06-29 18:52:53 +02:00
c2d233b3fa Ignore docs/ directory 2026-06-29 18:15:38 +02:00
44 changed files with 407 additions and 352 deletions

9
.gitignore vendored
View File

@@ -1 +1,10 @@
.claude .claude
docs/
# secret guardrails — keep credentials out of the repo
secrets/
*.age
*.key
*.pem
.env
.env.*

12
README.md Normal file
View File

@@ -0,0 +1,12 @@
What's verified:
- nix flake check passes for both hivebrain and nikita-nixos
- nixos-rebuild dry-build --flake .#hivebrain succeeds (your config is unchanged in behavior)
- nixos-rebuild dry-build --flake .#nikita-nixos succeeds (Plasma 6 + SDDM derivation resolves)
- main is untouched
What's still TODO before you can install nikita-nixos:
- Replace hosts/nikita-nixos/hardware-configuration.nix (placeholder with PLACEHOLDER-ROOT label) with
the real output of nixos-generate-config --root /mnt on his machine.
- Replace the placeholder git identity in hosts/nikita-nixos/home.nix (currently Nikita /
nikita@example.com).
- Set Nikita's password with passwd after first boot — nothing is baked in.

8
config/nvim/.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
tt.*
.tests
doc/tags
debug
.repro
foo.*
*.log
data

15
config/nvim/.neoconf.json Normal file
View File

@@ -0,0 +1,15 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
}
}

View File

@@ -1,24 +0,0 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

View File

@@ -1,9 +0,0 @@
**This repo is supposed to be used as config by NvChad users!**
- The main nvchad repo (NvChad/NvChad) is used as a plugin by this repo.
- So you just import its modules , like `require "nvchad.options" , require "nvchad.mappings"`
- So you can delete the .git from this repo ( when you clone it locally ) or fork it :)
# Credits
1) Lazyvim starter https://github.com/LazyVim/starter as nvchad's starter was inspired by Lazyvim's . It made a lot of things easier!

View File

@@ -1,37 +1,2 @@
vim.g.base46_cache = vim.fn.stdpath "data" .. "/base46/" -- bootstrap lazy.nvim, LazyVim and your plugins
vim.g.mapleader = " " require("config.lazy")
-- bootstrap lazy and all plugins
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
if not vim.uv.fs_stat(lazypath) then
local repo = "https://github.com/folke/lazy.nvim.git"
vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath }
end
vim.opt.rtp:prepend(lazypath)
local lazy_config = require "configs.lazy"
-- load plugins
require("lazy").setup({
{
"NvChad/NvChad",
lazy = false,
branch = "v2.5",
import = "nvchad.plugins",
},
{ import = "plugins" },
}, lazy_config)
-- load theme
dofile(vim.g.base46_cache .. "defaults")
dofile(vim.g.base46_cache .. "statusline")
require "options"
require "autocmds"
vim.schedule(function()
require "mappings"
end)

View File

@@ -1,29 +1,43 @@
{ {
"LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" }, "LazyVim": { "branch": "main", "commit": "459a4c3b1059671e766a46c7cc223827dc67e3d0" },
"NvChad": { "branch": "v2.5", "commit": "d042cc975247c2aa55fcb228e5d146dc1dc6c648" },
"base46": { "branch": "v3.0", "commit": "884b990dcdbe07520a0892da6ba3e8d202b46337" },
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "e068ab5f8261f23f6f71ffd8791ae40315b77b9c" },
"conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" }, "conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
"crates.nvim": { "branch": "main", "commit": "694357861ec9ebf12475ddcdd04ea45a0923c32d" },
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"gitsigns.nvim": { "branch": "main", "commit": "2038c666bd9d8a0b7349a0b6ee00dc83104b9ecf" }, "gitsigns.nvim": { "branch": "main", "commit": "2038c666bd9d8a0b7349a0b6ee00dc83104b9ecf" },
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, "grug-far.nvim": { "branch": "main", "commit": "c69859c1d5427ab5fc7ed12380ab521b4e336691" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "47059d71b42d74b0a1e9f61c1d99d301039c3b5b" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "9a10e096703966335bd5c46c8c875d5b0690dade" },
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
"menu": { "branch": "main", "commit": "7a0a4a2896b715c066cfbe320bdc048091874cc6" }, "mini.ai": { "branch": "main", "commit": "cb20f298ebf5ae91924cd0c6c310712de2ef4086" },
"minty": { "branch": "main", "commit": "aafc9e8e0afe6bf57580858a2849578d8d8db9e0" }, "mini.icons": { "branch": "main", "commit": "e56797f90192d81f1fda02e662fc3e8e3d775027" },
"nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" }, "mini.pairs": { "branch": "main", "commit": "db0fac0a25884183650352ccf92b362a41ed2e9c" },
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-dap": { "branch": "master", "commit": "9e848e09a697ee95302a3ef2dd43fd6eb709e570" }, "nvim-dap": { "branch": "master", "commit": "9e848e09a697ee95302a3ef2dd43fd6eb709e570" },
"nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" }, "nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
"nvim-lint": { "branch": "master", "commit": "a219b2c9e5b4765e5c845aba119dad55806fcaf1" },
"nvim-lspconfig": { "branch": "master", "commit": "3371bf298c1f56efc26771ee961f461176958fb5" }, "nvim-lspconfig": { "branch": "master", "commit": "3371bf298c1f56efc26771ee961f461176958fb5" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-tree.lua": { "branch": "master", "commit": "8e8be709c9a93e1ebefde7964884a8b564bfd3e0" },
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
"nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" }, "nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"rose-pine": { "branch": "main", "commit": "ff483051a47e27d84bdef47703538df1ed9f4a47" },
"rustaceanvim": { "branch": "main", "commit": "5a3a4158857ee1f7ec839b6ddd87cc0083a19c5f" }, "rustaceanvim": { "branch": "main", "commit": "5a3a4158857ee1f7ec839b6ddd87cc0083a19c5f" },
"telescope.nvim": { "branch": "master", "commit": "427b576c16792edad01a92b89721d923c19ad60f" }, "snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" },
"ui": { "branch": "v3.0", "commit": "3e67e9d5325fd47fdbc90ca00a147db2f3525754" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"volt": { "branch": "main", "commit": "620de1321f275ec9d80028c68d1b88b409c0c8b1" }, "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"ts-comments.nvim": { "branch": "main", "commit": "a59d6092213447450191122c9346f309161504cb" },
"vim-tmux-navigator": { "branch": "master", "commit": "e41c431a0c7b7388ae7ba341f01a0d217eb3a432" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
} }

10
config/nvim/lazyvim.json Normal file
View File

@@ -0,0 +1,10 @@
{
"extras": [
],
"install_version": 8,
"news": {
"NEWS.md": "11866"
},
"version": 8
}

View File

@@ -1 +0,0 @@
require "nvchad.autocmds"

View File

@@ -1,24 +0,0 @@
-- This file needs to have same structure as nvconfig.lua
-- https://github.com/NvChad/ui/blob/v3.0/lua/nvconfig.lua
-- Please read that file to know all available options :(
---@type ChadrcConfig
local M = {}
M.base46 = {
theme = "rosepine",
-- hl_override = {
-- Comment = { italic = true },
-- ["@comment"] = { italic = true },
-- },
}
-- M.nvdash = { load_on_startup = true }
-- M.ui = {
-- tabufline = {
-- lazyload = false
-- }
-- }
return M

View File

@@ -0,0 +1,2 @@
-- Autocmds are automatically loaded on the VeryLazy event
-- Default autocmds: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua

View File

@@ -0,0 +1,22 @@
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
local map = vim.keymap.set
map("n", ";", ":", { desc = "CMD enter command mode" })
map("i", "jk", "<ESC>")
-- DAP (override LazyVim defaults with previous muscle-memory bindings)
map("n", "<Leader>dl", function() require("dap").step_into() end, { desc = "Debugger step into" })
map("n", "<Leader>dj", function() require("dap").step_over() end, { desc = "Debugger step over" })
map("n", "<Leader>dk", function() require("dap").step_out() end, { desc = "Debugger step out" })
map("n", "<Leader>dc", function() require("dap").continue() end, { desc = "Debugger continue" })
map("n", "<Leader>db", function() require("dap").toggle_breakpoint() end, { desc = "Debugger toggle breakpoint" })
map("n", "<Leader>dd", function()
require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: "))
end, { desc = "Debugger conditional breakpoint" })
map("n", "<Leader>de", function() require("dap").terminate() end, { desc = "Debugger terminate" })
map("n", "<Leader>dr", function() require("dap").run_last() end, { desc = "Debugger run last" })
-- rustaceanvim
map("n", "<Leader>dt", "<cmd>RustLsp testables<CR>", { desc = "Rust testables" })

View File

@@ -0,0 +1,41 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
spec = {
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
{ import = "lazyvim.plugins.extras.dap.core" },
{ import = "lazyvim.plugins.extras.lang.rust" },
{ import = "plugins" },
},
defaults = {
lazy = false,
version = false,
},
install = { colorscheme = { "rose-pine", "tokyonight", "habamax" } },
checker = { enabled = true, notify = false },
performance = {
rtp = {
disabled_plugins = {
"gzip",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
})

View File

@@ -0,0 +1,2 @@
-- Options are automatically loaded before lazy.nvim startup
-- Default options: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua

View File

@@ -1,15 +0,0 @@
local options = {
formatters_by_ft = {
lua = { "stylua" },
-- css = { "prettier" },
-- html = { "prettier" },
},
-- format_on_save = {
-- -- These options will be passed to conform.format()
-- timeout_ms = 500,
-- lsp_fallback = true,
-- },
}
return options

View File

@@ -1,47 +0,0 @@
return {
defaults = { lazy = true },
install = { colorscheme = { "nvchad" } },
ui = {
icons = {
ft = "",
lazy = "󰂠 ",
loaded = "",
not_loaded = "",
},
},
performance = {
rtp = {
disabled_plugins = {
"2html_plugin",
"tohtml",
"getscript",
"getscriptPlugin",
"gzip",
"logipat",
"netrw",
"netrwPlugin",
"netrwSettings",
"netrwFileHandlers",
"matchit",
"tar",
"tarPlugin",
"rrhelper",
"spellfile_plugin",
"vimball",
"vimballPlugin",
"zip",
"zipPlugin",
"tutor",
"rplugin",
"syntax",
"synmenu",
"optwin",
"compiler",
"bugreport",
"ftplugin",
},
},
},
}

View File

@@ -1,6 +0,0 @@
require("nvchad.configs.lspconfig").defaults()
local servers = { "html", "cssls" }
vim.lsp.enable(servers)
-- read :h vim.lsp.config for changing options of lsp servers

View File

@@ -1,28 +0,0 @@
require "nvchad.mappings"
-- add yours here
local map = vim.keymap.set
map("n", ";", ":", { desc = "CMD enter command mode" })
map("i", "jk", "<ESC>")
-- map({ "n", "i", "v" }, "<C-s>", "<cmd> w <cr>")
-- Nvim DAP
map("n", "<Leader>dl", "<cmd>lua require'dap'.step_into()<CR>", { desc = "Debugger step into" })
map("n", "<Leader>dj", "<cmd>lua require'dap'.step_over()<CR>", { desc = "Debugger step over" })
map("n", "<Leader>dk", "<cmd>lua require'dap'.step_out()<CR>", { desc = "Debugger step out" })
map("n", "<Leader>dc", "<cmd>lua require'dap'.continue()<CR>", { desc = "Debugger continue" })
map("n", "<Leader>db", "<cmd>lua require'dap'.toggle_breakpoint()<CR>", { desc = "Debugger toggle breakpoint" })
map(
"n",
"<Leader>dd",
"<cmd>lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>",
{ desc = "Debugger set conditional breakpoint" }
)
map("n", "<Leader>de", "<cmd>lua require'dap'.terminate()<CR>", { desc = "Debugger reset" })
map("n", "<Leader>dr", "<cmd>lua require'dap'.run_last()<CR>", { desc = "Debugger run last" })
-- rustaceanvim
map("n", "<Leader>dt", "<cmd>lua vim.cmd('RustLsp testables')<CR>", { desc = "Debugger testables" })

View File

@@ -1,6 +0,0 @@
require "nvchad.options"
-- add yours here!
-- local o = vim.o
-- o.cursorlineopt ='both' -- to enable cursorline!

View File

@@ -0,0 +1,8 @@
return {
{ "rose-pine/neovim", name = "rose-pine", lazy = false, priority = 1000 },
{
"LazyVim/LazyVim",
opts = { colorscheme = "rose-pine" },
},
}

View File

@@ -1,83 +0,0 @@
return {
{
"stevearc/conform.nvim",
-- event = 'BufWritePre', -- uncomment for format on save
opts = require "configs.conform",
},
-- These are some examples, uncomment them if you want to see them work!
{
"neovim/nvim-lspconfig",
config = function()
require "configs.lspconfig"
end,
},
{
'mrcjkb/rustaceanvim',
-- To avoid being surprised by breaking changes,
-- I recommend you set a version range
version = '^9',
-- This plugin implements proper lazy-loading (see :h lua-plugin-lazy).
-- No need for lazy.nvim to lazy-load it.
lazy = false,
config = function()
local mason_registry = require('mason-registry')
local codelldb = mason_registry.get_package('codelldb')
local extension_path = codelldb:get_install_path() .. "/extension/"
local codelldb_path = extension_path .. "adapter/codelldb"
local liblldb_ext = vim.uv.os_uname().sysname == "Darwin" and "dylib" or "so"
local liblldb_path = extension_path .. "lldb/lib/liblldb." .. liblldb_ext
local cfg = require('rustaceanvim.config')
vim.g.rustaceanvim = {
dap = {
adapter = cfg.get_codelldb_adapter(codelldb_path, liblldb_path),
},
}
end
},
{
'mfussenegger/nvim-dap',
config = function()
local dap, dapui = require('dap'), require('dapui')
dap.listeners.before.attach.dapui_config = function()
dapui.open()
end
dap.listeners.before.launch.dapui_config = function()
dapui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
dapui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
dapui.close()
end
end
},
{
'rcarriga/nvim-dap-ui',
dependencies = { 'mfussenegger/nvim-dap', 'nvim-neotest/nvim-nio' },
config = function()
require('dapui').setup()
end,
},
{ import = "nvchad.blink.lazyspec" },
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"vim", "lua", "vimdoc",
"html", "css"
},
},
},
}

View File

@@ -0,0 +1,13 @@
return {
{
"christoomey/vim-tmux-navigator",
lazy = false,
cmd = {
"TmuxNavigateLeft",
"TmuxNavigateDown",
"TmuxNavigateUp",
"TmuxNavigateRight",
"TmuxNavigatePrevious",
},
},
}

View File

@@ -1,21 +0,0 @@
{ ... }:
{
imports = [
./hardware-configuration.nix
./system/boot.nix
./system/networking.nix
./system/locale.nix
./system/xserver.nix
./system/picom.nix
./system/display-manager.nix
./system/fonts.nix
./system/users.nix
./system/programs.nix
./system/packages.nix
./system/ssh.nix
./system/nix.nix
];
system.stateVersion = "26.05";
}

View File

@@ -9,20 +9,32 @@
}; };
}; };
outputs = { self, nixpkgs, home-manager, ... }: { outputs = { self, nixpkgs, home-manager, ... }:
nixosConfigurations.hivebrain = nixpkgs.lib.nixosSystem { let
mkHost = { hostPath, username, homePath }: nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
./configuration.nix hostPath
home-manager.nixosModules.home-manager { home-manager.nixosModules.home-manager {
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
users.marvin = import ./home.nix; users.${username} = import homePath;
backupFileExtension = "backup"; backupFileExtension = "backup";
}; };
} }
]; ];
}; };
in {
nixosConfigurations.hivebrain = mkHost {
hostPath = ./hosts/hivebrain;
username = "marvin";
homePath = ./hosts/hivebrain/home.nix;
};
nixosConfigurations.nikita-nixos = mkHost {
hostPath = ./hosts/nikita-nixos;
username = "nikita";
homePath = ./hosts/nikita-nixos/home.nix;
};
}; };
} }

View File

@@ -1,17 +0,0 @@
{ ... }:
{
imports = [
./home/zsh.nix
./home/git.nix
./home/rofi.nix
./home/yazi.nix
./home/packages.nix
./home/symlinks.nix
./home/fonts.nix
];
home.username = "marvin";
home.homeDirectory = "/home/marvin";
home.stateVersion = "26.05";
}

5
home/blender.nix Normal file
View File

@@ -0,0 +1,5 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.blender ];
}

View File

@@ -1,11 +0,0 @@
{ ... }:
{
programs.git = {
enable = true;
settings.user = {
name = "MDietermann";
email = "marvin.dietermann@hive-brain.de";
};
};
}

10
home/packages-base.nix Normal file
View File

@@ -0,0 +1,10 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
neovim
nerd-fonts.jetbrains-mono
ripgrep
unzip
];
}

View File

@@ -4,19 +4,20 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
alacritty alacritty
claude-code claude-code
fd
fzf
gcc gcc
lazygit
lua-language-server lua-language-server
neovim
nerd-fonts.jetbrains-mono
nil nil
nixpkgs-fmt nixpkgs-fmt
nodejs nodejs
obsidian obsidian
pkg-config pkg-config
ripgrep
rustup rustup
steam steam
unzip vesktop
xclip
xwallpaper xwallpaper
]; ];
} }

51
home/tmux.nix Normal file
View File

@@ -0,0 +1,51 @@
{ pkgs, ... }:
{
programs.tmux = {
enable = true;
prefix = "C-Space";
keyMode = "vi";
mouse = true;
escapeTime = 10;
terminal = "tmux-256color";
historyLimit = 50000;
baseIndex = 1;
plugins = with pkgs.tmuxPlugins; [
vim-tmux-navigator
resurrect
{
plugin = continuum;
extraConfig = ''
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
'';
}
];
extraConfig = ''
# True-color + undercurl passthrough for nvim LSP underlines
set -ga terminal-overrides ',*256col*:Tc'
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
set -g renumber-windows on
setw -g pane-base-index 1
# Splits open in pane's CWD
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
bind c new-window -c "#{pane_current_path}"
# Reload config
bind r source-file ~/.config/tmux/tmux.conf \; display "reloaded"
# Vi copy-mode: v select, y yank to X11 clipboard
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel 'xclip -selection clipboard -i'
# Default layout on new session: main + right pane (~20%) + bottom pane (~15%)
set-hook -g session-created 'split-window -h -l 20% -c "#{pane_current_path}" ; select-pane -t 0 ; split-window -v -l 15% -c "#{pane_current_path}" ; select-pane -t 0'
'';
};
}

View File

@@ -19,7 +19,7 @@
shellAliases = { shellAliases = {
btw = "echo I use NixOS"; btw = "echo I use NixOS";
reload-nixos = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles#hivebrain"; reload-nixos = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles";
}; };
}; };
} }

View File

@@ -0,0 +1,26 @@
{ ... }:
{
imports = [
./hardware-configuration.nix
# shared
../../system/boot.nix
../../system/networking.nix
../../system/locale.nix
../../system/fonts.nix
../../system/nix.nix
../../system/ssh.nix
../../system/programs.nix
../../system/packages.nix
# marvin-only
../../system/xserver.nix
../../system/picom.nix
../../system/display-managers/ly.nix
../../system/users/marvin.nix
];
networking.hostName = "hivebrain";
system.stateVersion = "26.05";
}

27
hosts/hivebrain/home.nix Normal file
View File

@@ -0,0 +1,27 @@
{ ... }:
{
imports = [
../../home/zsh.nix
../../home/fonts.nix
../../home/rofi.nix
../../home/yazi.nix
../../home/symlinks.nix
../../home/packages-base.nix
../../home/packages-marvin.nix
../../home/tmux.nix
../../home/blender.nix
];
home.username = "marvin";
home.homeDirectory = "/home/marvin";
home.stateVersion = "26.05";
programs.git = {
enable = true;
settings.user = {
name = "MDietermann";
email = "marvin.dietermann@hive-brain.de";
};
};
}

View File

@@ -0,0 +1,24 @@
{ ... }:
{
imports = [
./hardware-configuration.nix
# shared
../../system/boot.nix
../../system/networking.nix
../../system/locale.nix
../../system/fonts.nix
../../system/nix.nix
../../system/programs.nix
../../system/packages.nix
# nikita-only
../../system/plasma.nix
../../system/display-managers/sddm.nix
../../system/users/nikita.nix
];
networking.hostName = "nikita-nixos";
system.stateVersion = "26.05";
}

View File

@@ -0,0 +1,24 @@
{ lib, modulesPath, ... }:
# Placeholder hardware-configuration. Replace with the file generated on
# Nikita's actual machine via `nixos-generate-config --root /mnt` before
# building or installing.
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-label/PLACEHOLDER-ROOT";
fsType = "ext4";
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@@ -0,0 +1,25 @@
{ ... }:
{
imports = [
../../home/zsh.nix
../../home/fonts.nix
../../home/yazi.nix
../../home/symlinks.nix
../../home/packages-base.nix
../../home/blender.nix
];
home.username = "nikita";
home.homeDirectory = "/home/nikita";
home.stateVersion = "26.05";
# TODO: replace with Nikita's actual git identity before first use
programs.git = {
enable = true;
settings.user = {
name = "Nikita";
email = "nikita@example.com";
};
};
}

View File

@@ -0,0 +1,5 @@
{ ... }:
{
services.displayManager.sddm.enable = true;
}

View File

@@ -1,6 +1,5 @@
{ ... }: { ... }:
{ {
networking.hostName = "hivebrain";
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
} }

5
system/plasma.nix Normal file
View File

@@ -0,0 +1,5 @@
{ ... }:
{
services.desktopManager.plasma6.enable = true;
}

12
system/users/nikita.nix Normal file
View File

@@ -0,0 +1,12 @@
{ pkgs, ... }:
{
users.users.nikita = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
shell = pkgs.zsh;
packages = with pkgs; [
tree
];
};
}