Compare commits
31 Commits
a839e85d6a
...
multi-host
| Author | SHA1 | Date | |
|---|---|---|---|
| 231027cd5b | |||
| 19e2f737bc | |||
| 6440a4dc70 | |||
| c53829cbb3 | |||
| c9424ffd09 | |||
| a569683ea0 | |||
| 9a3f7807e1 | |||
| 1d7c4cebeb | |||
| ee386e1ad4 | |||
| bc828f7adf | |||
| 9cc2ba3dae | |||
| 7d5b6f7d3e | |||
| c239d8dbda | |||
| 0cd3f5ce32 | |||
| e442f610c3 | |||
| 3ae5cba9a6 | |||
| c2d233b3fa | |||
| b0aadbf43b | |||
| df0df6048a | |||
| 7acb45c3a9 | |||
| b59f07bdc1 | |||
| 72a402a276 | |||
| b78ff325d5 | |||
| 8a6c4396cb | |||
| dd33887b59 | |||
| 5f47a6b068 | |||
| 11df63fc71 | |||
| 74c0c7cc71 | |||
| a73262898d | |||
| 134c9ad3fd | |||
| a21e9eafff |
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.claude
|
||||||
|
docs/
|
||||||
|
|
||||||
|
# secret guardrails — keep credentials out of the repo
|
||||||
|
secrets/
|
||||||
|
*.age
|
||||||
|
*.key
|
||||||
|
*.pem
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
48
CLAUDE.md
Normal file
48
CLAUDE.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# NixOS Dotfiles
|
||||||
|
|
||||||
|
## Directory Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
flake.nix # entry point, defines hosts
|
||||||
|
hosts/
|
||||||
|
hivebrain/ # marvin's main machine
|
||||||
|
nikita-nixos/ # nikita's machine
|
||||||
|
home/
|
||||||
|
packages-base.nix # universal packages every host gets (neovim, ripgrep, etc.)
|
||||||
|
programs/ # installable programs (common.nix for simple packages, per-file for configured programs)
|
||||||
|
rofi.nix # rofi config + packages
|
||||||
|
symlinks.nix # home-manager symlinks
|
||||||
|
tmux.nix # tmux config
|
||||||
|
yazi.nix # yazi config
|
||||||
|
zsh.nix # zsh config
|
||||||
|
system/ # NixOS system-level modules
|
||||||
|
```
|
||||||
|
|
||||||
|
## Adding a New Program
|
||||||
|
|
||||||
|
**For simple packages (no config):** Add the package to `home/programs/common.nix`'s `home.packages` list.
|
||||||
|
|
||||||
|
**For programs that need configuration** (session variables, extra options, dependencies): Create `home/programs/<name>.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
# configuration + packages
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then add the import to `hosts/<host>/home.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
../../home/programs/<name>.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
Example: `rustup.nix` needs config (session variables) so it gets its own file. Simple packages like `lazygit` go in `common.nix`.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- `home/packages-base.nix` — shared baseline, imported by every host. Only add truly universal tools here (shell utilities, editors).
|
||||||
|
- `home/programs/common.nix` — simple packages that just need to be installed (no extra config).
|
||||||
|
- `home/programs/<name>.nix` — programs that need real configuration beyond just `home.packages`. Hosts opt in by importing.
|
||||||
|
- `home/<tool>.nix` (tmux, zsh, rofi, etc.) — for programs that need configuration beyond just installing a package. Same opt-in pattern via host imports.
|
||||||
|
- `system/` modules are NixOS system-level config (not home-manager). Add them to `hosts/<host>/default.nix`.
|
||||||
12
README.md
Normal file
12
README.md
Normal 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.
|
||||||
5
config/alacritty/alacritty.toml
Normal file
5
config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[window]
|
||||||
|
opacity = 0.9
|
||||||
|
|
||||||
|
[font]
|
||||||
|
normal = { family = "JetBrainsMono Nerd Font", style = "Regular" }
|
||||||
8
config/nvim/.gitignore
vendored
Normal file
8
config/nvim/.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
tt.*
|
||||||
|
.tests
|
||||||
|
doc/tags
|
||||||
|
debug
|
||||||
|
.repro
|
||||||
|
foo.*
|
||||||
|
*.log
|
||||||
|
data
|
||||||
15
config/nvim/.neoconf.json
Normal file
15
config/nvim/.neoconf.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"neodev": {
|
||||||
|
"library": {
|
||||||
|
"enabled": true,
|
||||||
|
"plugins": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"neoconf": {
|
||||||
|
"plugins": {
|
||||||
|
"lua_ls": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
|
||||||
@@ -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!
|
|
||||||
@@ -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)
|
|
||||||
|
|||||||
43
config/nvim/lazy-lock.json
Normal file
43
config/nvim/lazy-lock.json
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"LazyVim": { "branch": "main", "commit": "459a4c3b1059671e766a46c7cc223827dc67e3d0" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
|
||||||
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
|
"catppuccin": { "branch": "main", "commit": "e068ab5f8261f23f6f71ffd8791ae40315b77b9c" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
|
||||||
|
"crates.nvim": { "branch": "main", "commit": "694357861ec9ebf12475ddcdd04ea45a0923c32d" },
|
||||||
|
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "2038c666bd9d8a0b7349a0b6ee00dc83104b9ecf" },
|
||||||
|
"grug-far.nvim": { "branch": "main", "commit": "c69859c1d5427ab5fc7ed12380ab521b4e336691" },
|
||||||
|
"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" },
|
||||||
|
"mini.ai": { "branch": "main", "commit": "cb20f298ebf5ae91924cd0c6c310712de2ef4086" },
|
||||||
|
"mini.icons": { "branch": "main", "commit": "e56797f90192d81f1fda02e662fc3e8e3d775027" },
|
||||||
|
"mini.pairs": { "branch": "main", "commit": "db0fac0a25884183650352ccf92b362a41ed2e9c" },
|
||||||
|
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
|
"nvim-dap": { "branch": "master", "commit": "9e848e09a697ee95302a3ef2dd43fd6eb709e570" },
|
||||||
|
"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-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
|
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||||
|
"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" },
|
||||||
|
"rose-pine": { "branch": "main", "commit": "ff483051a47e27d84bdef47703538df1ed9f4a47" },
|
||||||
|
"rustaceanvim": { "branch": "main", "commit": "5a3a4158857ee1f7ec839b6ddd87cc0083a19c5f" },
|
||||||
|
"snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" },
|
||||||
|
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||||
|
"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" }
|
||||||
|
}
|
||||||
10
config/nvim/lazyvim.json
Normal file
10
config/nvim/lazyvim.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extras": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"install_version": 8,
|
||||||
|
"news": {
|
||||||
|
"NEWS.md": "11866"
|
||||||
|
},
|
||||||
|
"version": 8
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
require "nvchad.autocmds"
|
|
||||||
@@ -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 = "onedark",
|
|
||||||
|
|
||||||
-- hl_override = {
|
|
||||||
-- Comment = { italic = true },
|
|
||||||
-- ["@comment"] = { italic = true },
|
|
||||||
-- },
|
|
||||||
}
|
|
||||||
|
|
||||||
-- M.nvdash = { load_on_startup = true }
|
|
||||||
-- M.ui = {
|
|
||||||
-- tabufline = {
|
|
||||||
-- lazyload = false
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
|
|
||||||
return M
|
|
||||||
22
config/nvim/lua/config/keymaps.lua
Normal file
22
config/nvim/lua/config/keymaps.lua
Normal 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" })
|
||||||
41
config/nvim/lua/config/lazy.lua
Normal file
41
config/nvim/lua/config/lazy.lua
Normal 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",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -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
|
|
||||||
@@ -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",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -1,10 +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>")
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
require "nvchad.options"
|
|
||||||
|
|
||||||
-- add yours here!
|
|
||||||
|
|
||||||
-- local o = vim.o
|
|
||||||
-- o.cursorlineopt ='both' -- to enable cursorline!
|
|
||||||
8
config/nvim/lua/plugins/colorscheme.lua
Normal file
8
config/nvim/lua/plugins/colorscheme.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
return {
|
||||||
|
{ "rose-pine/neovim", name = "rose-pine", lazy = false, priority = 1000 },
|
||||||
|
|
||||||
|
{
|
||||||
|
"LazyVim/LazyVim",
|
||||||
|
opts = { colorscheme = "rose-pine" },
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,28 +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,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- test new blink
|
|
||||||
-- { import = "nvchad.blink.lazyspec" },
|
|
||||||
|
|
||||||
-- {
|
|
||||||
-- "nvim-treesitter/nvim-treesitter",
|
|
||||||
-- opts = {
|
|
||||||
-- ensure_installed = {
|
|
||||||
-- "vim", "lua", "vimdoc",
|
|
||||||
-- "html", "css"
|
|
||||||
-- },
|
|
||||||
-- },
|
|
||||||
-- },
|
|
||||||
}
|
|
||||||
6
config/nvim/lua/plugins/tmux-navigator.lua
Normal file
6
config/nvim/lua/plugins/tmux-navigator.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"christoomey/vim-tmux-navigator",
|
||||||
|
lazy = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,15 +1,12 @@
|
|||||||
from libqtile import bar, extension, hook, layout, qtile, widget
|
from libqtile import bar, hook, layout, qtile, widget
|
||||||
from libqtile.config import Click, Drag, Group, Key, KeyChord, Match, Screen
|
from libqtile.config import Click, Drag, Group, Key, Match, Screen
|
||||||
from libqtile.lazy import lazy
|
from libqtile.lazy import lazy
|
||||||
from libqtile.utils import guess_terminal
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
mod = "mod4"
|
mod = "mod4"
|
||||||
terminal = guess_terminal()
|
terminal = "alacritty"
|
||||||
|
|
||||||
myTerm = "alacritty"
|
|
||||||
|
|
||||||
keys = [
|
keys = [
|
||||||
Key([mod], "h", lazy.layout.left(), desc="Move focus to left"),
|
Key([mod], "h", lazy.layout.left(), desc="Move focus to left"),
|
||||||
@@ -60,6 +57,9 @@ keys = [
|
|||||||
lazy.spawn('sh -c "maim -s | xclip -selection clipboard -t image/png -i"'),
|
lazy.spawn('sh -c "maim -s | xclip -selection clipboard -t image/png -i"'),
|
||||||
desc="Screenshot"
|
desc="Screenshot"
|
||||||
),
|
),
|
||||||
|
Key([mod], "F6", lazy.spawn("wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+"), desc="Volume up 5%"),
|
||||||
|
Key([mod], "F5", lazy.spawn("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), desc="Volume down 5%"),
|
||||||
|
Key([mod], "F4", lazy.spawn("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), desc="Mute toggle"),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Add key bindings to switch VTs in Wayland.
|
# Add key bindings to switch VTs in Wayland.
|
||||||
@@ -218,18 +218,18 @@ def make_top_bar(primary=False):
|
|||||||
widget.CPU(
|
widget.CPU(
|
||||||
foreground = colors[4],
|
foreground = colors[4],
|
||||||
padding = 8,
|
padding = 8,
|
||||||
mouse_callbacks = {'Button1': lambda: qtile.cmd_spawn(myTerm + ' -e btop')},
|
mouse_callbacks = {'Button1': lambda: qtile.cmd_spawn(terminal + ' -e btop')},
|
||||||
format="CPU: {load_percent}%",
|
format="CPU: {load_percent}%",
|
||||||
),
|
),
|
||||||
make_sep(),
|
make_sep(),
|
||||||
widget.Memory(
|
widget.Memory(
|
||||||
foreground = colors[8],
|
foreground = colors[8],
|
||||||
padding = 8,
|
padding = 8,
|
||||||
mouse_callbacks = {'Button1': lambda: qtile.cmd_spawn(myTerm + ' -e btop')},
|
mouse_callbacks = {'Button1': lambda: qtile.cmd_spawn(terminal + ' -e btop')},
|
||||||
format = 'Mem: {MemUsed:.0f}{mm}',
|
format = 'Mem: {MemUsed:.0f}{mm}',
|
||||||
),
|
),
|
||||||
make_sep(),
|
make_sep(),
|
||||||
widget.Volume(
|
widget.PulseVolume(
|
||||||
foreground = colors[7],
|
foreground = colors[7],
|
||||||
padding = 8,
|
padding = 8,
|
||||||
fmt = 'Vol: {}',
|
fmt = 'Vol: {}',
|
||||||
@@ -249,8 +249,8 @@ def make_top_bar(primary=False):
|
|||||||
|
|
||||||
|
|
||||||
screens = [
|
screens = [
|
||||||
Screen(top = make_top_bar()),
|
|
||||||
Screen(top = make_top_bar(primary=True)),
|
Screen(top = make_top_bar(primary=True)),
|
||||||
|
Screen(top = make_top_bar()),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Drag floating layouts.
|
# Drag floating layouts.
|
||||||
|
|||||||
@@ -1,115 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[ # Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
networking.hostName = "hivebrain"; # Define your hostname.
|
|
||||||
|
|
||||||
# Configure network connections interactively with nmcli or nmtui.
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
# i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
# console = {
|
|
||||||
# font = "Lat2-Terminus16";
|
|
||||||
# keyMap = "de";
|
|
||||||
# useXkbConfig = true; # use xkb.options in tty.
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
# services.xserver.enable = true;
|
|
||||||
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
autoRepeatDelay = 200;
|
|
||||||
autoRepeatInterval = 35;
|
|
||||||
windowManager.qtile.enable = true;
|
|
||||||
displayManager.sessionCommands = ''
|
|
||||||
xwallpaper --zoom ~/Downloads/NixOsWallpaper.png
|
|
||||||
'';
|
|
||||||
xrandrHeads = [
|
|
||||||
{
|
|
||||||
output = "HDMI-1";
|
|
||||||
monitorConfig = ''
|
|
||||||
Option "Position" "0 0"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
output = "DP-1";
|
|
||||||
primary = true;
|
|
||||||
monitorConfig = ''
|
|
||||||
Option "Position" "1920 0"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.displayManager.ly.enable = true;
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
jetbrains-mono
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable sound.
|
|
||||||
# services.pulseaudio.enable = true;
|
|
||||||
# OR
|
|
||||||
# services.pipewire = {
|
|
||||||
# enable = true;
|
|
||||||
# pulse.enable = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.marvin = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
packages = with pkgs; [
|
|
||||||
tree
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
programs.zsh.enable = true;
|
|
||||||
|
|
||||||
# List packages installed in system profile.
|
|
||||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
vim
|
|
||||||
wget
|
|
||||||
alacritty
|
|
||||||
btop
|
|
||||||
obsidian
|
|
||||||
claude-code
|
|
||||||
jq # used by the Claude vault bootstrap.sh to parse settings.json
|
|
||||||
];
|
|
||||||
|
|
||||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
# programs.gnupg.agent = {
|
|
||||||
# enable = true;
|
|
||||||
# enableSSHSupport = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
system.stateVersion = "26.05";
|
|
||||||
}
|
|
||||||
|
|
||||||
20
flake.nix
20
flake.nix
@@ -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;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
71
home.nix
71
home.nix
@@ -1,71 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.username = "marvin";
|
|
||||||
home.homeDirectory = "/home/marvin";
|
|
||||||
home.stateVersion = "26.05";
|
|
||||||
programs = {
|
|
||||||
yazi.enable = true;
|
|
||||||
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "MDietermann";
|
|
||||||
userEmail = "marvin.dietermann@hive-brain.de";
|
|
||||||
};
|
|
||||||
|
|
||||||
rofi = {
|
|
||||||
enable = true;
|
|
||||||
theme = "purple";
|
|
||||||
font = "sans-serif";
|
|
||||||
package = pkgs.rofi;
|
|
||||||
modes = [
|
|
||||||
"drun"
|
|
||||||
"run"
|
|
||||||
"window"
|
|
||||||
"ssh"
|
|
||||||
];
|
|
||||||
extraConfig = {
|
|
||||||
show-icons = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
|
|
||||||
history.size = 10000;
|
|
||||||
history.ignoreAllDups = true;
|
|
||||||
history.path = "$HOME/.zsh_history";
|
|
||||||
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [ "git" "sudo" ];
|
|
||||||
theme = "aussiegeek";
|
|
||||||
};
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
btw = "echo I use NixOS";
|
|
||||||
reload-nixos = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles#hivebrain";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/qtile".source = ./config/qtile;
|
|
||||||
".config/nvim".source = ./config/nvim;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
neovim
|
|
||||||
ripgrep
|
|
||||||
nil
|
|
||||||
nixpkgs-fmt
|
|
||||||
nodejs
|
|
||||||
gcc
|
|
||||||
rofi
|
|
||||||
xwallpaper
|
|
||||||
steam
|
|
||||||
];
|
|
||||||
}
|
|
||||||
11
home/packages-base.nix
Normal file
11
home/packages-base.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
neovim
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
ripgrep
|
||||||
|
tea
|
||||||
|
unzip
|
||||||
|
];
|
||||||
|
}
|
||||||
31
home/programs/common.nix
Normal file
31
home/programs/common.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
alacritty
|
||||||
|
audacity
|
||||||
|
blender
|
||||||
|
blockbench
|
||||||
|
claude-code
|
||||||
|
fd
|
||||||
|
filezilla
|
||||||
|
fzf
|
||||||
|
gcc
|
||||||
|
godot_4
|
||||||
|
imv
|
||||||
|
jdk21
|
||||||
|
jetbrains-toolbox
|
||||||
|
lazygit
|
||||||
|
lua-language-server
|
||||||
|
mpv
|
||||||
|
nil
|
||||||
|
nixpkgs-fmt
|
||||||
|
nodejs
|
||||||
|
obsidian
|
||||||
|
pkg-config
|
||||||
|
prismlauncher
|
||||||
|
vesktop
|
||||||
|
xclip
|
||||||
|
xwallpaper
|
||||||
|
yt-dlp
|
||||||
|
];
|
||||||
|
}
|
||||||
39
home/programs/rustup.nix
Normal file
39
home/programs/rustup.nix
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
rustup
|
||||||
|
sqlx-cli
|
||||||
|
openssl.dev
|
||||||
|
|
||||||
|
# Bevy / Wayland runtime deps
|
||||||
|
wayland
|
||||||
|
wayland-protocols
|
||||||
|
libxkbcommon
|
||||||
|
libGL
|
||||||
|
vulkan-loader
|
||||||
|
alsa-lib
|
||||||
|
udev
|
||||||
|
libx11
|
||||||
|
libxcursor
|
||||||
|
libxi
|
||||||
|
libxrandr
|
||||||
|
libxcb
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables.PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
|
||||||
|
|
||||||
|
# ponytail: global LD_LIBRARY_PATH so `cargo run` finds these without a shell.nix
|
||||||
|
home.sessionVariables.LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (with pkgs; [
|
||||||
|
wayland
|
||||||
|
libxkbcommon
|
||||||
|
libGL
|
||||||
|
vulkan-loader
|
||||||
|
alsa-lib
|
||||||
|
udev
|
||||||
|
libx11
|
||||||
|
libxcursor
|
||||||
|
libxi
|
||||||
|
libxrandr
|
||||||
|
libxcb
|
||||||
|
]);
|
||||||
|
}
|
||||||
18
home/rofi.nix
Normal file
18
home/rofi.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
theme = "arthur";
|
||||||
|
font = "sans-serif";
|
||||||
|
package = pkgs.rofi;
|
||||||
|
modes = [
|
||||||
|
"drun"
|
||||||
|
"run"
|
||||||
|
"window"
|
||||||
|
];
|
||||||
|
extraConfig = {
|
||||||
|
show-icons = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
home/symlinks.nix
Normal file
10
home/symlinks.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.file = lib.mapAttrs'
|
||||||
|
(name: _: lib.nameValuePair ".config/${name}" {
|
||||||
|
source = config.lib.file.mkOutOfStoreSymlink
|
||||||
|
"${config.home.homeDirectory}/nixos-dotfiles/config/${name}";
|
||||||
|
})
|
||||||
|
(lib.filterAttrs (_: type: type == "directory") (builtins.readDir ../config));
|
||||||
|
}
|
||||||
51
home/tmux.nix
Normal file
51
home/tmux.nix
Normal 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 -v -l 15% -c "#{pane_current_path}" ; select-pane -t 1 ; split-window -h -l 20% -c "#{pane_current_path}" ; select-pane -t 1'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
5
home/yazi.nix
Normal file
5
home/yazi.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.yazi.enable = true;
|
||||||
|
}
|
||||||
25
home/zsh.nix
Normal file
25
home/zsh.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
history.size = 10000;
|
||||||
|
history.ignoreAllDups = true;
|
||||||
|
history.path = "$HOME/.zsh_history";
|
||||||
|
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [ "git" "sudo" ];
|
||||||
|
theme = "aussiegeek";
|
||||||
|
};
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
btw = "echo I use NixOS";
|
||||||
|
reload-nixos = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
31
hosts/hivebrain/default.nix
Normal file
31
hosts/hivebrain/default.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
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
|
||||||
|
|
||||||
|
# marvin-only
|
||||||
|
../../system/xserver.nix
|
||||||
|
../../system/picom.nix
|
||||||
|
../../system/display-managers/ly.nix
|
||||||
|
../../system/users/marvin.nix
|
||||||
|
../../system/clam.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.hostName = "hivebrain";
|
||||||
|
system.stateVersion = "26.05";
|
||||||
|
|
||||||
|
services.openssh.enable = true;
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
|
programs.steam.enable = true;
|
||||||
|
}
|
||||||
26
hosts/hivebrain/home.nix
Normal file
26
hosts/hivebrain/home.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../home/zsh.nix
|
||||||
|
../../home/rofi.nix
|
||||||
|
../../home/yazi.nix
|
||||||
|
../../home/symlinks.nix
|
||||||
|
../../home/tmux.nix
|
||||||
|
../../home/packages-base.nix
|
||||||
|
../../home/programs/common.nix
|
||||||
|
../../home/programs/rustup.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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
25
hosts/nikita-nixos/default.nix
Normal file
25
hosts/nikita-nixos/default.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
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/users/nikita.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.hostName = "nikita-nixos";
|
||||||
|
system.stateVersion = "26.05";
|
||||||
|
|
||||||
|
services.displayManager.sddm.enable = true;
|
||||||
|
services.desktopManager.plasma6.enable = true;
|
||||||
|
}
|
||||||
24
hosts/nikita-nixos/hardware-configuration.nix
Normal file
24
hosts/nikita-nixos/hardware-configuration.nix
Normal 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";
|
||||||
|
}
|
||||||
24
hosts/nikita-nixos/home.nix
Normal file
24
hosts/nikita-nixos/home.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../home/zsh.nix
|
||||||
|
../../home/yazi.nix
|
||||||
|
../../home/symlinks.nix
|
||||||
|
../../home/packages-base.nix
|
||||||
|
../../home/programs/common.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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
system/boot.nix
Normal file
6
system/boot.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
}
|
||||||
13
system/clam.nix
Normal file
13
system/clam.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.clamav
|
||||||
|
pkgs.clamtk
|
||||||
|
];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
clamav.daemon.enable = true;
|
||||||
|
clamav.updater.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
5
system/display-managers/ly.nix
Normal file
5
system/display-managers/ly.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.displayManager.ly.enable = true;
|
||||||
|
}
|
||||||
7
system/fonts.nix
Normal file
7
system/fonts.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
jetbrains-mono
|
||||||
|
];
|
||||||
|
}
|
||||||
5
system/locale.nix
Normal file
5
system/locale.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
}
|
||||||
9
system/networking.nix
Normal file
9
system/networking.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
# Steam LAN game transfer + Remote Play
|
||||||
|
networking.firewall.allowedTCPPorts = [ 27036 27037 27040 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 27031 27036 ];
|
||||||
|
}
|
||||||
13
system/nix.nix
Normal file
13
system/nix.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
nix.settings.auto-optimise-store = true;
|
||||||
|
}
|
||||||
10
system/packages.nix
Normal file
10
system/packages.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
wget
|
||||||
|
btop
|
||||||
|
jq
|
||||||
|
];
|
||||||
|
}
|
||||||
9
system/picom.nix
Normal file
9
system/picom.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.picom = {
|
||||||
|
enable = true;
|
||||||
|
backend = "xrender";
|
||||||
|
fade = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
9
system/programs.nix
Normal file
9
system/programs.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.firefox.enable = true;
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.ungoogled-chromium ];
|
||||||
|
}
|
||||||
12
system/users/marvin.nix
Normal file
12
system/users/marvin.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
users.users.marvin = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" "docker" ];
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
packages = with pkgs; [
|
||||||
|
tree
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
12
system/users/nikita.nix
Normal file
12
system/users/nikita.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
users.users.nikita = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" "networkmanager" ];
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
packages = with pkgs; [
|
||||||
|
tree
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
28
system/xserver.nix
Normal file
28
system/xserver.nix
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
autoRepeatDelay = 200;
|
||||||
|
autoRepeatInterval = 35;
|
||||||
|
windowManager.qtile.enable = true;
|
||||||
|
displayManager.sessionCommands = ''
|
||||||
|
xwallpaper --zoom ~/nixos-dotfiles/Pictures/NixOsWallpaper.png
|
||||||
|
'';
|
||||||
|
xrandrHeads = [
|
||||||
|
{
|
||||||
|
output = "DP-3";
|
||||||
|
primary = true;
|
||||||
|
monitorConfig = ''
|
||||||
|
Option "Position" "0 0"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = "HDMI-1";
|
||||||
|
monitorConfig = ''
|
||||||
|
Option "Position" "3440 0"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user