202 lines
3.5 KiB
Nix
202 lines
3.5 KiB
Nix
{
|
|
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" ];
|
|
};
|
|
};
|
|
};
|
|
}
|