Files
omnixy/modules/packages.nix
theArctesian c205ce19a0 changed naming
2025-09-24 15:39:19 -07:00

360 lines
6.1 KiB
Nix

{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.omnixy;
in
{
options.omnixy.packages = {
enable = mkEnableOption "OmniXY packages";
categories = {
base = mkEnableOption "Base system packages" // { default = true; };
development = mkEnableOption "Development packages" // { default = true; };
multimedia = mkEnableOption "Multimedia packages" // { default = true; };
productivity = mkEnableOption "Productivity packages" // { default = true; };
gaming = mkEnableOption "Gaming packages" // { default = false; };
};
};
config = mkIf (cfg.enable or true) {
environment.systemPackages = with pkgs;
# 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
nano
sed
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
nixpkgs-fmt
nil
statix
deadnix
cachix
lorri
direnv
]
# Development packages
++ optionals cfg.packages.categories.development [
# Editors and IDEs
neovim
emacs
vscode
jetbrains.idea-community
# Language servers
nodePackages.typescript-language-server
nodePackages.vscode-langservers-extracted
rust-analyzer
gopls
pyright
lua-language-server
clang-tools
# Debuggers
gdb
lldb
delve
# Build tools
gnumake
cmake
meson
ninja
autoconf
automake
libtool
pkg-config
# Compilers and interpreters
gcc
clang
rustc
cargo
go
python3
nodejs_20
deno
bun
# Container tools
docker
docker-compose
podman
buildah
skopeo
kind
kubectl
kubernetes-helm
k9s
# Database clients
postgresql
mysql80
sqlite
redis
mongodb-tools
dbeaver
# API testing
httpie
curl
postman
insomnia
# Cloud tools
awscli2
google-cloud-sdk
azure-cli
terraform
ansible
# Documentation
mdbook
hugo
zola
]
# Multimedia packages
++ optionals cfg.packages.categories.multimedia [
# Audio
pipewire
pulseaudio
pavucontrol
easyeffects
spotify
spotifyd
spotify-tui
cmus
mpd
ncmpcpp
# Video
mpv
vlc
obs-studio
kdenlive
handbrake
ffmpeg-full
# Images
imv
feh
gimp
inkscape
krita
imagemagick
graphicsmagick
# Screen capture
grim
slurp
wf-recorder
flameshot
peek
# PDF
zathura
evince
okular
mupdf
]
# Productivity packages
++ optionals cfg.packages.categories.productivity [
# Browsers
firefox
chromium
brave
qutebrowser
# Communication
discord
slack
telegram-desktop
signal-desktop
element-desktop
zoom-us
teams
# Office
libreoffice
onlyoffice-bin
wpsoffice
# Note taking
obsidian
logseq
joplin-desktop
zettlr
# Email
thunderbird
aerc
neomutt
# Calendar
calcurse
khal
# Password managers
bitwarden
keepassxc
pass
# Sync and backup
syncthing
nextcloud-client
rclone
restic
borgbackup
]
# Gaming packages
++ optionals cfg.packages.categories.gaming [
steam
lutris
wine
winetricks
proton-ge-bin
mangohud
gamemode
discord
obs-studio
];
# Font packages
fonts.packages = with pkgs; [
# Nerd fonts (for icons in terminal)
(nerdfonts.override {
fonts = [
"JetBrainsMono"
"FiraCode"
"Hack"
"Iosevka"
"Meslo"
"SourceCodePro"
"UbuntuMono"
"DroidSansMono"
"RobotoMono"
"Inconsolata"
];
})
# System fonts
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
liberation_ttf
ubuntu_font_family
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" ];
};
};
};
}