Compare commits

..

7 Commits

Author SHA1 Message Date
19e2f737bc Fix stale documentation in CLAUDE.md
- Remove deleted fonts.nix from directory layout
- Update 'Adding a New Program' section to reflect ponytail cleanup: simple packages go in common.nix, per-file only for programs needing real configuration
- Update Rules section to document common.nix and per-file program patterns
2026-08-12 15:57:10 +02:00
6440a4dc70 Remove rofi ssh mode and tmux-navigator cmd block
The ssh rofi mode serves no purpose with no SSH hosts configured.
The cmd block in tmux-navigator only affects lazy loading, which is disabled.
2026-08-12 15:50:52 +02:00
c53829cbb3 Remove dead fonts.nix stub
home/fonts.nix only set fonts.fontconfig.enable = true, which home-manager
enables automatically when font packages are declared. Delete the file and
remove its imports from both host home.nix files.
2026-08-12 15:49:50 +02:00
c9424ffd09 Fix qtile config: consolidate terminal variable and remove unused imports 2026-08-12 15:46:19 +02:00
a569683ea0 Inline one-liner system modules into host defaults
- services.openssh.enable, virtualisation.docker.enable into hivebrain
- services.displayManager.sddm.enable, services.desktopManager.plasma6.enable into nikita-nixos
- Remove four no-longer-needed system modules
2026-08-12 15:43:43 +02:00
9a3f7807e1 Remove empty LazyVim config stubs
LazyVim loads its defaults without these files present, so the empty
stubs are unnecessary overhead.
2026-08-12 15:41:56 +02:00
1d7c4cebeb Collapse 26 trivial single-package programs into home/programs/common.nix
Consolidates 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 into a single list.

rustup.nix kept separate due to its configuration (session vars, many deps).

Updates imports:
- hivebrain: all 26 + rustup now via common.nix + rustup.nix
- nikita-nixos: blender.nix → common.nix (gets all lightweight tools)
2026-08-12 15:37:35 +02:00
42 changed files with 54 additions and 191 deletions

View File

@@ -9,8 +9,7 @@ hosts/
nikita-nixos/ # nikita's machine nikita-nixos/ # nikita's machine
home/ home/
packages-base.nix # universal packages every host gets (neovim, ripgrep, etc.) packages-base.nix # universal packages every host gets (neovim, ripgrep, etc.)
programs/ # one file per installable program programs/ # installable programs (common.nix for simple packages, per-file for configured programs)
fonts.nix # font config
rofi.nix # rofi config + packages rofi.nix # rofi config + packages
symlinks.nix # home-manager symlinks symlinks.nix # home-manager symlinks
tmux.nix # tmux config tmux.nix # tmux config
@@ -21,26 +20,29 @@ system/ # NixOS system-level modules
## Adding a New Program ## Adding a New Program
1. Create `home/programs/<name>.nix`: **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 ```nix
{ pkgs, ... }: { pkgs, ... }:
{ {
home.packages = [ pkgs.<package-name> ]; # configuration + packages
} }
``` ```
The filename is the program name; the package attribute can differ (e.g. `godot.nix` uses `pkgs.godot_4`). Then add the import to `hosts/<host>/home.nix`:
2. Add the import to whichever hosts should have it in `hosts/<host>/home.nix`:
```nix ```nix
../../home/programs/<name>.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 ## Rules
- `home/packages-base.nix` — shared baseline, imported by every host. Only add truly universal tools here (shell utilities, editors). - `home/packages-base.nix` — shared baseline, imported by every host. Only add truly universal tools here (shell utilities, editors).
- `home/programs/` — one file per program. Hosts opt in by importing. - `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. - `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`. - `system/` modules are NixOS system-level config (not home-manager). Add them to `hosts/<host>/default.nix`.

View File

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

View File

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

View File

@@ -2,12 +2,5 @@ return {
{ {
"christoomey/vim-tmux-navigator", "christoomey/vim-tmux-navigator",
lazy = false, lazy = false,
cmd = {
"TmuxNavigateLeft",
"TmuxNavigateDown",
"TmuxNavigateUp",
"TmuxNavigateRight",
"TmuxNavigatePrevious",
},
}, },
} }

View File

@@ -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"),
@@ -221,14 +218,14 @@ 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(),

View File

@@ -1,5 +0,0 @@
{ ... }:
{
fonts.fontconfig.enable = true;
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.claude-code ];
}

31
home/programs/common.nix Normal file
View 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
];
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.jetbrains-toolbox ];
}

View File

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

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.lua-language-server ];
}

View File

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

View File

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

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.nixpkgs-fmt ];
}

View File

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

View File

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

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.pkg-config ];
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +0,0 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.yt-dlp ];
}

View File

@@ -10,7 +10,6 @@
"drun" "drun"
"run" "run"
"window" "window"
"ssh"
]; ];
extraConfig = { extraConfig = {
show-icons = true; show-icons = true;

View File

@@ -10,10 +10,8 @@
../../system/locale.nix ../../system/locale.nix
../../system/fonts.nix ../../system/fonts.nix
../../system/nix.nix ../../system/nix.nix
../../system/ssh.nix
../../system/programs.nix ../../system/programs.nix
../../system/packages.nix ../../system/packages.nix
../../system/docker.nix
# marvin-only # marvin-only
../../system/xserver.nix ../../system/xserver.nix
@@ -26,5 +24,8 @@
networking.hostName = "hivebrain"; networking.hostName = "hivebrain";
system.stateVersion = "26.05"; system.stateVersion = "26.05";
services.openssh.enable = true;
virtualisation.docker.enable = true;
programs.steam.enable = true; programs.steam.enable = true;
} }

View File

@@ -3,39 +3,13 @@
{ {
imports = [ imports = [
../../home/zsh.nix ../../home/zsh.nix
../../home/fonts.nix
../../home/rofi.nix ../../home/rofi.nix
../../home/yazi.nix ../../home/yazi.nix
../../home/symlinks.nix ../../home/symlinks.nix
../../home/tmux.nix ../../home/tmux.nix
../../home/packages-base.nix ../../home/packages-base.nix
../../home/programs/alacritty.nix ../../home/programs/common.nix
../../home/programs/audacity.nix
../../home/programs/blender.nix
../../home/programs/blockbench.nix
../../home/programs/claude-code.nix
../../home/programs/fd.nix
../../home/programs/filezilla.nix
../../home/programs/fzf.nix
../../home/programs/gcc.nix
../../home/programs/godot.nix
../../home/programs/imv.nix
../../home/programs/jetbrains-toolbox.nix
../../home/programs/jdk.nix
../../home/programs/lazygit.nix
../../home/programs/lua-language-server.nix
../../home/programs/mpv.nix
../../home/programs/nil.nix
../../home/programs/nixpkgs-fmt.nix
../../home/programs/nodejs.nix
../../home/programs/obsidian.nix
../../home/programs/pkg-config.nix
../../home/programs/prismlauncher.nix
../../home/programs/rustup.nix ../../home/programs/rustup.nix
../../home/programs/vesktop.nix
../../home/programs/xclip.nix
../../home/programs/xwallpaper.nix
../../home/programs/yt-dlp.nix
]; ];
home.username = "marvin"; home.username = "marvin";

View File

@@ -14,11 +14,12 @@
../../system/packages.nix ../../system/packages.nix
# nikita-only # nikita-only
../../system/plasma.nix
../../system/display-managers/sddm.nix
../../system/users/nikita.nix ../../system/users/nikita.nix
]; ];
networking.hostName = "nikita-nixos"; networking.hostName = "nikita-nixos";
system.stateVersion = "26.05"; system.stateVersion = "26.05";
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
} }

View File

@@ -3,11 +3,10 @@
{ {
imports = [ imports = [
../../home/zsh.nix ../../home/zsh.nix
../../home/fonts.nix
../../home/yazi.nix ../../home/yazi.nix
../../home/symlinks.nix ../../home/symlinks.nix
../../home/packages-base.nix ../../home/packages-base.nix
../../home/programs/blender.nix ../../home/programs/common.nix
]; ];
home.username = "nikita"; home.username = "nikita";

View File

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

View File

@@ -1,6 +0,0 @@
{ ... }:
{
virtualisation.docker.enable = true;
}

View File

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

View File

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