home/breakerbox: init

This commit is contained in:
2025-06-04 12:01:57 +02:00
parent 465d33fadf
commit 0026cfb484
41 changed files with 310 additions and 237 deletions

136
home/breakerbox.nix Normal file
View File

@@ -0,0 +1,136 @@
{ config, lib, machineVars, ... }:
let
inherit (lib) mkForce mkIf optionals;
graphics = !machineVars.headless;
in
{
imports = [
./programs/nix.nix
./programs/aria2.nix
./programs/atuin.nix
./programs/bash.nix
./programs/bat.nix
./programs/beets.nix
./programs/bottom.nix
./programs/cargo.nix
# ./programs/comma.nix
./programs/direnv
./programs/eza.nix
./programs/fzf.nix
./programs/gdb.nix
./programs/gh-dash.nix
./programs/gh.nix
./programs/git
./programs/gpg.nix
./programs/home-manager.nix
./programs/jq.nix
./programs/less.nix
./programs/man.nix
./programs/neovim
./programs/nix-index
./programs/nushell.nix
./programs/pandoc.nix
./programs/python.nix
./programs/ripgrep.nix
./programs/skim.nix
./programs/sqlite.nix
./programs/ssh
./programs/tealdeer
./programs/texlive.nix
./programs/thunderbird.nix
./programs/tmux
./programs/uv.nix
./programs/yazi.nix
./programs/yt-dlp.nix
./programs/zoxide.nix
./programs/zsh
./services/nix-channel-update.nix
./services/pueue.nix
] ++ (optionals graphics [
./config/gtk.nix
./programs/alacritty.nix
./programs/emacs
./programs/feh.nix
./programs/firefox.nix
./programs/mpv.nix
./programs/ncmpcpp.nix
./programs/newsboat
./programs/obs-studio.nix
./programs/prism-launcher.nix
./programs/qutebrowser.nix
./programs/rofi
./programs/taskwarrior.nix
./programs/vscode
./programs/zathura.nix
./programs/zed
./services/copyq.nix
./services/dunst.nix
./services/fcitx5.nix
./services/gnome-keyring.nix
./services/keybase.nix
./services/mpd.nix
./services/mpris-proxy.nix
./services/network-manager.nix
./services/psd.nix
./services/tumblerd.nix
]) ++ (optionals machineVars.wayland [
./programs/hyprland
./programs/waybar.nix
./programs/anyrun
]) ++ (optionals (!machineVars.wayland) [
./programs/xmonad
# ./programs/xmobar
./services/picom.nix
./services/polybar.nix
./services/screen-locker.nix
# ./services/stalonetray.nix
./services/sxhkd.nix
]);
programs.aria2.enable = true;
programs.atuin.enable = true;
programs.bash.enable = true;
programs.bat.enable = true;
programs.beets.enable = true;
programs.bottom.enable = true;
programs.cargo.enable = true;
# programs.comma.enable = true;
programs.direnv.enable = true;
programs.eza.enable = true;
programs.fzf.enable = true;
programs.gdb.enable = true;
programs.gh-dash.enable = true;
programs.gh.enable = true;
programs.git.enable = true;
programs.gpg.enable = true;
programs.home-manager.enable = true;
programs.jq.enable = true;
programs.less.enable = true;
programs.man.enable = true;
programs.neovim.enable = true;
programs.nix-index.enable = true;
programs.nushell.enable = true;
programs.pandoc.enable = true;
programs.python.enable = true;
programs.ripgrep.enable = true;
programs.skim.enable = true;
programs.sqlite.enable = true;
programs.ssh.enable = true;
programs.tealdeer.enable = true;
programs.texlive.enable = true;
programs.tmux.enable = true;
programs.uv.enable = true;
programs.yazi.enable = true;
programs.yt-dlp.enable = true;
programs.zoxide.enable = true;
programs.zsh.enable = true;
services.pueue.enable = true;
programs.thunderbird.enable = graphics;
}

View File

@@ -5,96 +5,12 @@ in {
imports = [ imports = [
./shell.nix ./shell.nix
./packages.nix ./packages.nix
./breakerbox.nix
./config/xdg ./config/xdg
./config/ensure-homedir-structure.nix ./config/ensure-homedir-structure.nix
./config/downloads-sorter.nix ./config/downloads-sorter.nix
];
./programs/aria2.nix
./programs/atuin.nix
./programs/bash.nix
./programs/bat.nix
./programs/beets.nix
./programs/bottom.nix
./programs/cargo.nix
./programs/comma.nix
./programs/direnv
./programs/eza.nix
./programs/fzf.nix
./programs/gdb.nix
./programs/gh-dash.nix
./programs/gh.nix
./programs/git
./programs/gpg.nix
./programs/home-manager.nix
./programs/jq.nix
./programs/less.nix
./programs/man.nix
./programs/neovim
./programs/nix-index
./programs/nix.nix
./programs/nushell.nix
./programs/pandoc.nix
./programs/python.nix
./programs/ripgrep.nix
./programs/skim.nix
./programs/sqlite.nix
./programs/ssh
./programs/tealdeer
./programs/texlive.nix
./programs/thunderbird.nix
./programs/tmux
./programs/uv.nix
./programs/yazi.nix
./programs/yt-dlp.nix
./programs/zoxide.nix
./programs/zsh
./services/nix-channel-update.nix
./services/pueue.nix
] ++ (optionals graphics [
./config/gtk.nix
./programs/alacritty.nix
./programs/emacs
./programs/feh.nix
./programs/firefox.nix
./programs/mpv.nix
./programs/ncmpcpp.nix
./programs/newsboat
./programs/obs-studio.nix
./programs/prism-launcher.nix
./programs/qutebrowser.nix
./programs/rofi
./programs/taskwarrior.nix
./programs/vscode
./programs/zathura.nix
./programs/zed
./services/copyq.nix
./services/dunst.nix
./services/fcitx5.nix
./services/gnome-keyring.nix
./services/keybase.nix
./services/mpd.nix
./services/mpris-proxy.nix
./services/network-manager.nix
./services/psd.nix
./services/tumblerd.nix
]) ++ (optionals machineVars.wayland [
./programs/hyprland
./programs/waybar.nix
./programs/anyrun
]) ++ (optionals (!machineVars.wayland) [
./programs/xmonad
# ./programs/xmobar
./services/picom.nix
./services/polybar.nix
./services/screen-locker.nix
# ./services/stalonetray.nix
./services/sxhkd.nix
]);
sops.defaultSopsFile = ../secrets/home.yaml; sops.defaultSopsFile = ../secrets/home.yaml;
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/id_ed25519_home_sops" ]; sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/id_ed25519_home_sops" ];

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.aria2.enable = true; programs.aria2 = { };
} }

View File

@@ -1,11 +1,10 @@
{ config, ... }: { config, lib, ... }:
let let
cfg = config.programs.atuin; cfg = config.programs.atuin;
xdg_runtime_dir = "/run/user/${toString config.home.uid}"; xdg_runtime_dir = "/run/user/${toString config.home.uid}";
in in
{ lib.mkIf cfg.enable {
programs.atuin = { programs.atuin = {
enable = true;
enableBashIntegration = true; enableBashIntegration = true;
enableZshIntegration = true; enableZshIntegration = true;
enableNushellIntegration = config.programs.nushell.enable; enableNushellIntegration = config.programs.nushell.enable;

View File

@@ -1,7 +1,9 @@
{ config, ... }: { config, lib, ... }:
let
cfg = config.programs.bash;
in
{ {
programs.bash = { programs.bash = {
enable = true;
historyFile = "${config.xdg.dataHome}/bash_history"; historyFile = "${config.xdg.dataHome}/bash_history";
historySize = 100000; historySize = 100000;
bashrcExtra = '' bashrcExtra = ''

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.bat.enable = true; programs.bat = { };
} }

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.beets.enable = true; programs.beets = { };
} }

View File

@@ -1,7 +1,9 @@
{ ... }: { config, lib, ... }:
let
cfg = config.programs.bottom;
in
{ {
programs.bottom = { programs.bottom = {
enable = true;
settings = { settings = {
flags.enable_gpu = true; flags.enable_gpu = true;

View File

@@ -1,7 +1,9 @@
{ ... }: { config, lib, ... }:
{ let
cfg = config.programs.cargo;
in
lib.mkIf cfg.enable {
programs.cargo = { programs.cargo = {
enable = true;
settings = { settings = {
cargo-new.vcs = "git"; cargo-new.vcs = "git";
}; };

View File

@@ -1,7 +1,9 @@
{ config, ... }: { config, lib, ... }:
let
cfg = config.programs.direnv;
in
{ {
programs.direnv = { programs.direnv = {
enable = true;
silent = true; silent = true;
nix-direnv.enable = true; nix-direnv.enable = true;

View File

@@ -1,7 +1,9 @@
{ config, ... }: { config, lib, ... }:
let
cfg = config.programs.eza;
in
{ {
programs.eza = { programs.eza = {
enable = true;
icons = "auto"; icons = "auto";
enableNushellIntegration = config.programs.nushell.enable; enableNushellIntegration = config.programs.nushell.enable;
}; };

View File

@@ -1,7 +1,9 @@
{ ... }: { config, lib, ... }:
let
cfg = config.programs.fzf;
in
{ {
programs.fzf = { programs.fzf = {
enable = true;
defaultCommand = "fd --type f"; defaultCommand = "fd --type f";
}; };
} }

View File

@@ -1,5 +1,11 @@
{ pkgs, ... }: { config, lib, pkgs, ... }:
let
cfg = config.programs.gdb;
in
{ {
options.programs.gdb.enable = lib.mkEnableOption "gdb";
config = lib.mkIf cfg.enable {
xdg.configFile."gdb/gdbinit".text = '' xdg.configFile."gdb/gdbinit".text = ''
# C++ related beautifiers # C++ related beautifiers
set print pretty on set print pretty on
@@ -22,4 +28,5 @@
''; '';
# local.shell.aliases."System Tool Replacements".gdb = "${pkgs.pwndbg}/bin/pwndbg"; # local.shell.aliases."System Tool Replacements".gdb = "${pkgs.pwndbg}/bin/pwndbg";
};
} }

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.gh-dash.enable = true; programs.gh-dash = { };
} }

View File

@@ -1,7 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
programs.gh = { programs.gh = {
enable = true;
settings = { settings = {
gitProtocol = "ssh"; gitProtocol = "ssh";
pager = "${pkgs.bat}/bin/bat"; pager = "${pkgs.bat}/bin/bat";

View File

@@ -13,13 +13,12 @@ let
"github.com:" "github.com:"
]; ];
in in
{ lib.mkIf cfg.enable {
# TODO: convert to template once nix-sops supports it in hm module # TODO: convert to template once nix-sops supports it in hm module
sops.secrets."git/nordicsemi-config" = { }; sops.secrets."git/nordicsemi-config" = { };
programs.git = lib.mkMerge [ programs.git = lib.mkMerge [
{ {
enable = true;
package = pkgs.gitFull; package = pkgs.gitFull;
userName = "h7x4"; userName = "h7x4";

View File

@@ -1,7 +1,9 @@
{ config, pkgs, ... }: { config, lib, pkgs, ... }:
{ let
cfg = config.programs.gpg;
in
lib.mkIf cfg.enable {
programs.gpg = { programs.gpg = {
enable = true;
homedir = "${config.xdg.configHome}/gnupg"; homedir = "${config.xdg.configHome}/gnupg";
auto-refresh-keys.enable = true; auto-refresh-keys.enable = true;

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.home-manager.enable = true; programs.home-manager = { };
} }

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.jq.enable = true; programs.jq = { };
} }

View File

@@ -1,7 +1,6 @@
{ config, ... }: { config, ... }:
{ {
programs.less = { programs.less = {
enable = true;
keys = '' keys = ''
#env #env
LESS = -i -R LESS = -i -R

View File

@@ -1,7 +1,6 @@
{ ... }: { ... }:
{ {
programs.man = { programs.man = {
enable = true;
generateCaches = true; generateCaches = true;
}; };
} }

View File

@@ -1,8 +1,9 @@
{ pkgs, lib, machineVars, ... }: { config, pkgs, lib, machineVars, ... }:
{ let
cfg = config.programs.neovim;
in
lib.mkIf cfg.enable {
programs.neovim = { programs.neovim = {
enable = true;
auto-clean-swapfiles.enable = true; auto-clean-swapfiles.enable = true;
viAlias = true; viAlias = true;

View File

@@ -1,7 +1,6 @@
{ ... }: { ... }:
{ {
programs.nix-index = { programs.nix-index = {
enable = true;
autoUpdateDatabase.enable = true; autoUpdateDatabase.enable = true;
}; };
} }

View File

@@ -1,6 +1,4 @@
{ ... }: { ... }:
{ {
programs.nushell = { programs.nushell = { };
enable = true;
};
} }

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.pandoc.enable = true; programs.pandoc = { };
} }

View File

@@ -1,5 +1,11 @@
{ config, pkgs, extendedLib, ... }: { config, lib, pkgs, extendedLib, ... }:
let
cfg = config.programs.python;
in
{ {
options.programs.python.enable = lib.mkEnableOption "python";
config = lib.mkIf cfg.enable {
# Python for interactive use # Python for interactive use
home.packages = [ home.packages = [
(pkgs.python3.withPackages (pypkgs: with pypkgs; [ (pkgs.python3.withPackages (pypkgs: with pypkgs; [
@@ -21,4 +27,5 @@
PYTHONSTARTUP = "${config.xdg.configHome}/python/pyrc"; PYTHONSTARTUP = "${config.xdg.configHome}/python/pyrc";
PYTHON_HISTORY = "${config.xdg.dataHome}/python_history"; PYTHON_HISTORY = "${config.xdg.dataHome}/python_history";
}; };
};
} }

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.ripgrep.enable = true; programs.ripgrep = { };
} }

View File

@@ -1,7 +1,6 @@
{ ... }: { ... }:
{ {
programs.skim = { programs.skim = {
enable = true;
defaultCommand = "fd --type f"; defaultCommand = "fd --type f";
}; };
} }

View File

@@ -1,5 +1,11 @@
{ config, pkgs, ... }: { config, lib, pkgs, ... }:
let
cfg = config.programs.sqlite;
in
{ {
options.programs.sqlite.enable = lib.mkEnableOption "sqlite";
config = lib.mkIf cfg.enable {
xdg.configFile."sqlite3/sqliterc".text = '' xdg.configFile."sqlite3/sqliterc".text = ''
.bail on .bail on
.changes on .changes on
@@ -14,4 +20,5 @@
]; ];
home.sessionVariables.SQLITE_HISTORY= "${config.xdg.dataHome}/sqlite_history"; home.sessionVariables.SQLITE_HISTORY= "${config.xdg.dataHome}/sqlite_history";
};
} }

View File

@@ -1,5 +1,6 @@
{ config, pkgs, ... }: { config, lib, pkgs, ... }:
let let
cfg = config.programs.ssh;
runtimeDir = "/run/user/${toString config.home.uid}"; runtimeDir = "/run/user/${toString config.home.uid}";
controlMastersDir = "${runtimeDir}/ssh"; controlMastersDir = "${runtimeDir}/ssh";
in in
@@ -9,13 +10,13 @@ in
./other.nix ./other.nix
./pvv.nix ./pvv.nix
]; ];
config = lib.mkIf cfg.enable {
sops.secrets."ssh/secret-config" = { sops.secrets."ssh/secret-config" = {
mode = "0444"; mode = "0444";
}; };
programs.ssh = { programs.ssh = {
enable = true;
includes = [ includes = [
config.sops.secrets."ssh/secret-config".path config.sops.secrets."ssh/secret-config".path
"${config.home.homeDirectory}/.ssh/mutable_config" "${config.home.homeDirectory}/.ssh/mutable_config"
@@ -36,4 +37,5 @@ in
mode = "0600"; mode = "0600";
}; };
}; };
};
} }

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: { config, pkgs, lib, ... }:
{ let
cfg = config.programs.tealdeer;
in
lib.mkIf cfg.enable {
systemd.user.services.update-tldr-db = { systemd.user.services.update-tldr-db = {
Unit = { Unit = {
Description = "Update tealdeer database"; Description = "Update tealdeer database";

View File

@@ -4,5 +4,5 @@
./auto-update-tldr-db.nix ./auto-update-tldr-db.nix
]; ];
programs.tealdeer.enable = true; programs.tealdeer = { };
} }

View File

@@ -1,7 +1,6 @@
{ ... }: { ... }:
{ {
programs.texlive = { programs.texlive = {
enable = true;
# packageSet = pkgs.texlive.combined.scheme-medium; # packageSet = pkgs.texlive.combined.scheme-medium;
}; };
} }

View File

@@ -2,17 +2,15 @@
let let
cfg = config.programs.thunderbird; cfg = config.programs.thunderbird;
in in
{ lib.mkIf cfg.enable {
programs.thunderbird = { programs.thunderbird = {
enable = !machineVars.headless;
profiles.h7x4 = { profiles.h7x4 = {
isDefault = true; isDefault = true;
withExternalGnupg = true; withExternalGnupg = true;
}; };
}; };
home.packages = with pkgs; [
home.packages = lib.mkIf cfg.enable (with pkgs; [
birdtray birdtray
]); ];
} }

View File

@@ -1,7 +1,6 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ {
programs.tmux = { programs.tmux = {
enable = true;
baseIndex = 1; baseIndex = 1;
clock24 = true; clock24 = true;
escapeTime = 0; escapeTime = 0;

View File

@@ -1,14 +1,12 @@
{ pkgs, ... }: { ... }:
{ {
home.packages = [ programs.uv = {
pkgs.uv
];
# https://docs.astral.sh/uv/configuration/files/ # https://docs.astral.sh/uv/configuration/files/
# https://docs.astral.sh/uv/reference/settings/ # https://docs.astral.sh/uv/reference/settings/
xdg.configFile."uv/uv.toml".source = (pkgs.formats.toml { }).generate "uv-config" { settings = {
python-downloads = "never"; python-downloads = "never";
python-preference = "only-system"; python-preference = "only-system";
pip.index-url = "https://test.pypi.org/simple"; pip.index-url = "https://test.pypi.org/simple";
}; };
};
} }

View File

@@ -1,7 +1,6 @@
{ ... }: { ... }:
{ {
programs.yazi = { programs.yazi = {
enable = true;
keymap = { keymap = {
manager.prepend_keymap = [ manager.prepend_keymap = [
{ {

View File

@@ -1,4 +1,4 @@
{ ... }: { ... }:
{ {
programs.yt-dlp.enable = true; programs.yt-dlp = { };
} }

View File

@@ -1,7 +1,6 @@
{ config, ... }: { config, ... }:
{ {
programs.zoxide = { programs.zoxide = {
enable = true;
enableNushellIntegration = config.programs.nushell.enable; enableNushellIntegration = config.programs.nushell.enable;
}; };
} }

View File

@@ -1,8 +1,8 @@
{ config, pkgs, lib, ... }: { config, lib, pkgs, ... }:
let let
cfg = config.programs.zsh; cfg = config.programs.zsh;
in in
{ lib.mkIf cfg.enable {
home.file."${cfg.dotDir}/.zshrc".onChange = '' home.file."${cfg.dotDir}/.zshrc".onChange = ''
${lib.getExe (pkgs.writeTextFile { ${lib.getExe (pkgs.writeTextFile {
name = "zsh-compinit-oneshot.zsh"; name = "zsh-compinit-oneshot.zsh";
@@ -22,7 +22,6 @@ in
}; };
programs.zsh = { programs.zsh = {
enable = true;
dotDir = ".config/zsh"; dotDir = ".config/zsh";
# enableSyntaxHighlighting = true; # enableSyntaxHighlighting = true;
defaultKeymap = "viins"; defaultKeymap = "viins";

View File

@@ -1,6 +1,4 @@
{ ... }: { ... }:
{ {
services.pueue = { services.pueue = { };
enable = true;
};
} }