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:
@@ -60,6 +60,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.
|
||||||
@@ -229,7 +232,7 @@ def make_top_bar(primary=False):
|
|||||||
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 +252,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,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
|
|
||||||
];
|
|
||||||
}
|
|
||||||
4
home/programs/alacritty.nix
Normal file
4
home/programs/alacritty.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.alacritty ];
|
||||||
|
}
|
||||||
4
home/programs/audacity.nix
Normal file
4
home/programs/audacity.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.audacity ];
|
||||||
|
}
|
||||||
4
home/programs/blender.nix
Normal file
4
home/programs/blender.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.blender ];
|
||||||
|
}
|
||||||
4
home/programs/blockbench.nix
Normal file
4
home/programs/blockbench.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.blockbench ];
|
||||||
|
}
|
||||||
4
home/programs/claude-code.nix
Normal file
4
home/programs/claude-code.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.claude-code ];
|
||||||
|
}
|
||||||
4
home/programs/fd.nix
Normal file
4
home/programs/fd.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.fd ];
|
||||||
|
}
|
||||||
4
home/programs/filezilla.nix
Normal file
4
home/programs/filezilla.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.filezilla ];
|
||||||
|
}
|
||||||
4
home/programs/fzf.nix
Normal file
4
home/programs/fzf.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.fzf ];
|
||||||
|
}
|
||||||
4
home/programs/gcc.nix
Normal file
4
home/programs/gcc.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.gcc ];
|
||||||
|
}
|
||||||
4
home/programs/godot.nix
Normal file
4
home/programs/godot.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.godot_4 ];
|
||||||
|
}
|
||||||
4
home/programs/imv.nix
Normal file
4
home/programs/imv.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.imv ];
|
||||||
|
}
|
||||||
4
home/programs/jdk.nix
Normal file
4
home/programs/jdk.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.jdk21 ];
|
||||||
|
}
|
||||||
4
home/programs/jetbrains-toolbox.nix
Normal file
4
home/programs/jetbrains-toolbox.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.jetbrains-toolbox ];
|
||||||
|
}
|
||||||
4
home/programs/lazygit.nix
Normal file
4
home/programs/lazygit.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.lazygit ];
|
||||||
|
}
|
||||||
4
home/programs/lua-language-server.nix
Normal file
4
home/programs/lua-language-server.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.lua-language-server ];
|
||||||
|
}
|
||||||
4
home/programs/mpv.nix
Normal file
4
home/programs/mpv.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.mpv ];
|
||||||
|
}
|
||||||
4
home/programs/nil.nix
Normal file
4
home/programs/nil.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.nil ];
|
||||||
|
}
|
||||||
4
home/programs/nixpkgs-fmt.nix
Normal file
4
home/programs/nixpkgs-fmt.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.nixpkgs-fmt ];
|
||||||
|
}
|
||||||
4
home/programs/nodejs.nix
Normal file
4
home/programs/nodejs.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.nodejs ];
|
||||||
|
}
|
||||||
4
home/programs/obsidian.nix
Normal file
4
home/programs/obsidian.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.obsidian ];
|
||||||
|
}
|
||||||
4
home/programs/pkg-config.nix
Normal file
4
home/programs/pkg-config.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.pkg-config ];
|
||||||
|
}
|
||||||
4
home/programs/prismlauncher.nix
Normal file
4
home/programs/prismlauncher.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.prismlauncher ];
|
||||||
|
}
|
||||||
4
home/programs/rustup.nix
Normal file
4
home/programs/rustup.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.rustup ];
|
||||||
|
}
|
||||||
4
home/programs/vesktop.nix
Normal file
4
home/programs/vesktop.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.vesktop ];
|
||||||
|
}
|
||||||
4
home/programs/xclip.nix
Normal file
4
home/programs/xclip.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.xclip ];
|
||||||
|
}
|
||||||
4
home/programs/xwallpaper.nix
Normal file
4
home/programs/xwallpaper.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.xwallpaper ];
|
||||||
|
}
|
||||||
4
home/programs/yt-dlp.nix
Normal file
4
home/programs/yt-dlp.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.yt-dlp ];
|
||||||
|
}
|
||||||
@@ -43,6 +43,9 @@
|
|||||||
# Vi copy-mode: v select, y yank to X11 clipboard
|
# 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 v send -X begin-selection
|
||||||
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel 'xclip -selection clipboard -i'
|
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'
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,14 +13,18 @@
|
|||||||
../../system/ssh.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
|
||||||
../../system/picom.nix
|
../../system/picom.nix
|
||||||
../../system/display-managers/ly.nix
|
../../system/display-managers/ly.nix
|
||||||
../../system/users/marvin.nix
|
../../system/users/marvin.nix
|
||||||
|
../../system/clam.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "hivebrain";
|
networking.hostName = "hivebrain";
|
||||||
system.stateVersion = "26.05";
|
system.stateVersion = "26.05";
|
||||||
|
|
||||||
|
programs.steam.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,35 @@
|
|||||||
../../home/rofi.nix
|
../../home/rofi.nix
|
||||||
../../home/yazi.nix
|
../../home/yazi.nix
|
||||||
../../home/symlinks.nix
|
../../home/symlinks.nix
|
||||||
|
../../home/tmux.nix
|
||||||
../../home/packages-base.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";
|
home.username = "marvin";
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
../../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.username = "nikita";
|
home.username = "nikita";
|
||||||
|
|||||||
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;
|
||||||
|
};
|
||||||
|
}
|
||||||
6
system/docker.nix
Normal file
6
system/docker.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -2,4 +2,8 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
# Steam LAN game transfer + Remote Play
|
||||||
|
networking.firewall.allowedTCPPorts = [ 27036 27037 27040 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 27031 27036 ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
{ ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
programs.nix-ld.enable = true;
|
programs.nix-ld.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.ungoogled-chromium ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{
|
{
|
||||||
users.users.marvin = {
|
users.users.marvin = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "wheel" ];
|
extraGroups = [ "wheel" "docker" ];
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
tree
|
tree
|
||||||
|
|||||||
@@ -11,16 +11,16 @@
|
|||||||
'';
|
'';
|
||||||
xrandrHeads = [
|
xrandrHeads = [
|
||||||
{
|
{
|
||||||
output = "HDMI-1";
|
output = "DP-3";
|
||||||
|
primary = true;
|
||||||
monitorConfig = ''
|
monitorConfig = ''
|
||||||
Option "Position" "0 0"
|
Option "Position" "0 0"
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
output = "DP-1";
|
output = "HDMI-1";
|
||||||
primary = true;
|
|
||||||
monitorConfig = ''
|
monitorConfig = ''
|
||||||
Option "Position" "1920 0"
|
Option "Position" "3440 0"
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user