feat(modules): system package catalog and development tooling
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
1d90e18860
commit
2289f91048
2 changed files with 677 additions and 0 deletions
202
modules/packages.nix
Normal file
202
modules/packages.nix
Normal 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" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue