feat(modules): system package catalog and development tooling

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-06-28 06:48:07 +02:00
commit 2289f91048
2 changed files with 677 additions and 0 deletions

202
modules/packages.nix Normal file
View file

@ -0,0 +1,202 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (lib)
mkEnableOption
mkOption
mkIf
types
optionals
;
cfg = config.omni;
omni = config.omni.lib;
in
{
options.omni.packages = {
enable = mkEnableOption "Omnixient packages";
exclude = mkOption {
type = types.listOf types.str;
default = [ ];
example = [
"discord"
"spotify"
"steam"
];
description = "List of package names to exclude from installation";
};
categories = {
base = mkEnableOption "Base system packages" // {
default = true;
};
};
};
config = mkIf (cfg.enable or true) {
# Wire package categories to feature flags via mkDefault (overridable)
omni.packages.categories = {
};
environment.systemPackages =
with pkgs;
omni.filterPackages (
# Base system packages (always installed)
[
# Core utilities
coreutils
util-linux
binutils
pciutils
usbutils
lshw
# File management
file
tree
ncdu
duf
dust
# Networking
iproute2
iputils
dnsutils
nettools
nmap
wget
curl
aria2
# Archives
zip
unzip
p7zip
rar
unrar
xz
# System monitoring
btop
htop
iotop
iftop
nethogs
lsof
sysstat
# Text processing
vim
gnused
gawk
jq
yq-go
ripgrep
fd
bat
eza
fzf
zoxide
# Version control
git
git-lfs
lazygit
gh
# Terminal multiplexers
tmux
screen
# System tools
rsync
rclone
age
sops
gnupg
pass
pwgen
# Shell and prompts
bash
zsh
fish
starship
oh-my-posh
# Package management helpers
nix-index
nix-tree
nix-diff
nixfmt
nil
statix
deadnix
cachix
lorri
direnv
]
); # End of filterPackages
# Font packages
fonts.packages = with pkgs; [
# Nerd fonts (for icons in terminal)
nerd-fonts.jetbrains-mono
nerd-fonts.fira-code
nerd-fonts.hack
nerd-fonts.iosevka
nerd-fonts.meslo-lg
nerd-fonts.sauce-code-pro
nerd-fonts.ubuntu-mono
nerd-fonts.droid-sans-mono
nerd-fonts.roboto-mono
nerd-fonts.inconsolata
# System fonts
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
liberation_ttf
ubuntu-classic
roboto
open-sans
lato
# Programming fonts
jetbrains-mono
fira-code
hasklig
victor-mono
# Icon fonts
font-awesome
material-icons
material-design-icons
];
# Enable font configuration
fonts.fontconfig = {
enable = true;
defaultFonts = {
serif = [
"Noto Serif"
"Liberation Serif"
];
sansSerif = [
"Noto Sans"
"Liberation Sans"
];
monospace = [
"JetBrainsMono Nerd Font"
"Noto Sans Mono"
];
emoji = [ "Noto Color Emoji" ];
};
};
};
}