Restructure packages into per-program home/programs/ modules

Replaces the monolithic packages-marvin.nix with one file per program
so hosts can opt in selectively. Adds docker, clamav, steam, and
audio keybindings for hivebrain. Fixes monitor order and switches
volume widget to PulseVolume.
This commit is contained in:
2026-08-12 15:28:06 +02:00
parent 7d5b6f7d3e
commit bc828f7adf
39 changed files with 180 additions and 27 deletions

View File

@@ -60,6 +60,9 @@ keys = [
lazy.spawn('sh -c "maim -s | xclip -selection clipboard -t image/png -i"'),
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.
@@ -229,7 +232,7 @@ def make_top_bar(primary=False):
format = 'Mem: {MemUsed:.0f}{mm}',
),
make_sep(),
widget.Volume(
widget.PulseVolume(
foreground = colors[7],
padding = 8,
fmt = 'Vol: {}',
@@ -249,8 +252,8 @@ def make_top_bar(primary=False):
screens = [
Screen(top = make_top_bar()),
Screen(top = make_top_bar(primary=True)),
Screen(top = make_top_bar()),
]
# Drag floating layouts.

View File

@@ -1,18 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
alacritty
claude-code
gcc
lua-language-server
nil
nixpkgs-fmt
nodejs
obsidian
pkg-config
rustup
steam
xwallpaper
];
}

View File

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

View File

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

View File

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

View File

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

View File

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

4
home/programs/fd.nix Normal file
View File

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

View File

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

4
home/programs/fzf.nix Normal file
View File

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

4
home/programs/gcc.nix Normal file
View File

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

4
home/programs/godot.nix Normal file
View File

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

4
home/programs/imv.nix Normal file
View File

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

4
home/programs/jdk.nix Normal file
View File

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

View File

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

View File

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

View File

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

4
home/programs/mpv.nix Normal file
View File

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

4
home/programs/nil.nix Normal file
View File

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

View File

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

4
home/programs/nodejs.nix Normal file
View File

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

View File

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

View File

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

View File

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

4
home/programs/rustup.nix Normal file
View File

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

View File

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

4
home/programs/xclip.nix Normal file
View File

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

View File

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

4
home/programs/yt-dlp.nix Normal file
View File

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

View File

@@ -43,6 +43,9 @@
# 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'
'';
};
}

View File

@@ -13,14 +13,18 @@
../../system/ssh.nix
../../system/programs.nix
../../system/packages.nix
../../system/docker.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";
programs.steam.enable = true;
}

View File

@@ -7,8 +7,35 @@
../../home/rofi.nix
../../home/yazi.nix
../../home/symlinks.nix
../../home/tmux.nix
../../home/packages-base.nix
../../home/packages-marvin.nix
../../home/programs/alacritty.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/vesktop.nix
../../home/programs/xclip.nix
../../home/programs/xwallpaper.nix
../../home/programs/yt-dlp.nix
];
home.username = "marvin";

View File

@@ -7,6 +7,7 @@
../../home/yazi.nix
../../home/symlinks.nix
../../home/packages-base.nix
../../home/programs/blender.nix
];
home.username = "nikita";

13
system/clam.nix Normal file
View File

@@ -0,0 +1,13 @@
{ pkgs, ... }:
{
environment.systemPackages = [
pkgs.clamav
pkgs.clamtk
];
services = {
clamav.daemon.enable = true;
clamav.updater.enable = true;
};
}

6
system/docker.nix Normal file
View File

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

View File

@@ -2,4 +2,8 @@
{
networking.networkmanager.enable = true;
# Steam LAN game transfer + Remote Play
networking.firewall.allowedTCPPorts = [ 27036 27037 27040 ];
networking.firewall.allowedUDPPorts = [ 27031 27036 ];
}

View File

@@ -1,7 +1,9 @@
{ ... }:
{ pkgs, ... }:
{
programs.firefox.enable = true;
programs.zsh.enable = true;
programs.nix-ld.enable = true;
environment.systemPackages = [ pkgs.ungoogled-chromium ];
}

View File

@@ -3,7 +3,7 @@
{
users.users.marvin = {
isNormalUser = true;
extraGroups = [ "wheel" ];
extraGroups = [ "wheel" "docker" ];
shell = pkgs.zsh;
packages = with pkgs; [
tree

View File

@@ -11,16 +11,16 @@
'';
xrandrHeads = [
{
output = "HDMI-1";
output = "DP-3";
primary = true;
monitorConfig = ''
Option "Position" "0 0"
'';
}
{
output = "DP-1";
primary = true;
output = "HDMI-1";
monitorConfig = ''
Option "Position" "1920 0"
Option "Position" "3440 0"
'';
}
];