feat(packs): opt-in package packs — media/office/dev/gaming/containers/compat

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-06-28 06:48:37 +02:00
commit 095f2ccf29
8 changed files with 449 additions and 0 deletions

84
modules/packs/media.nix Normal file
View file

@ -0,0 +1,84 @@
# Media pack — players, image/video editing, screen capture.
#
# Migrated from packages.nix `multimedia` category. Runs the list through
# omni.lib.filterPackages so the omni.packages.exclude mechanism still
# applies — this is a desktop-bundle pack (omni-coupled by design), not
# one of the standalone-importable packs.
{ config, lib, pkgs, ... }:
let
cfg = config.omni.packs.media;
in
{
options.omni.packs.media.enable =
lib.mkEnableOption "Media pack (players, image/video editing, screen capture)";
config = lib.mkIf cfg.enable {
environment.systemPackages = config.omni.lib.filterPackages (
with pkgs;
[
# Audio
pipewire
pulseaudio
pavucontrol
easyeffects
spotify
spotifyd
cmus
mpd
ncmpcpp
# Video
mpv
vlc
obs-studio
kdePackages.kdenlive
handbrake
ffmpeg-full
# Images
imv
feh
gimp
inkscape
krita
imagemagick
graphicsmagick
drawio
# Image morphing (python + opencv + dlib for landmark-based morphing).
# Exposed as `morph-py` so it doesn't collide with the bare `python3`
# pulled in by the development category.
(writeShellScriptBin "morph-py" ''
exec ${
python3.withPackages (
ps: with ps; [
opencv4
dlib
face-recognition-models
numpy
scipy
]
)
}/bin/python3 "$@"
'')
# 3D / CAD — bare `openscad` is pinned to 2021.01 which no
# longer builds against current toolchains in nixpkgs-unstable.
openscad-unstable
# Screen capture
grim
slurp
wf-recorder
flameshot
peek
# PDF
zathura
evince
kdePackages.okular
mupdf
]
);
};
}