nixconfigs/home/modules/packages.nix

276 lines
5.2 KiB
Nix

{
pkgs,
inputs,
config,
system,
...
}:
with pkgs;
let
cfg = config.schmittlauch.packages;
unstable = inputs.nixos-unstable.legacyPackages.${system};
graphicsApps =
[
inkscape
darktable
exiftool
gimp
]
++ (with gimpPlugins; [
fourier
lqrPlugin
])
++ lib.optionals pkgs.stdenv.isLinux [
hugin
luminanceHDR
xournal
];
multimediaApps =
[
mpv
yt-dlp
]
++ lib.optionals pkgs.stdenv.isLinux [
vlc
amarok
clementine
elisa
musescore
tenacity
soundkonverter
config.nur.repos.fooker.studio-link
];
cliApps =
[
coreutils
myVim
htop
tmux
httpie
ponysay
gti
tree
lsof
mosh
openssh
sshfs-fuse
cryfs
openssh
sshuttle
thefuck
gnupg
unar
lzop
p7zip
pwgen
pandoc
pdfgrep
# zig dependency breaks occasionally, stay on C version for now
ncdu_1
dos2unix
unzip
fswatch
jq
age
lnav
nix-output-monitor # putting this here as a plain `nix` alternative
]
++ lib.optionals pkgs.stdenv.isLinux [
xclip
smbnetfs # for FUSE smb mounting
psmisc # for killall
torsocks
agrep
reptyr # re-bind running program to other tty
config.nur.repos.schmittlauch.lolcommits
];
nixHelpers = [
nixpkgs-review
unstable.nixfmt-rfc-style
nix-top
statix
];
devTools =
[
curl
httpie
gcc
shellcheck
mtr
ripgrep
gitui
lazygit
pre-commit
scriv
# Haskell
ghc
cabal2nix
]
++ lib.optionals pkgs.stdenv.isLinux [
gdb
strace
ltrace
valgrind
zeal
];
pythonTools = with python3Packages; [
python3 # to shadow old macOS python
notebook
ipython
pip
numpy
matplotlib
jedi
jedi-language-server
black
flake8
mypy
];
games = [
superTuxKart
#hedgewars
];
desktopCommon = [
keepassxc
tigervnc
];
desktopLinux = [
firefox
chromium
falkon
thunderbird
calibre
dino
zotero
ding
aspell
aspellDicts.de
aspellDicts.en
# for kate/KDE applications
hunspellDicts.de-de
hunspellDicts.en-us
hunspellDicts.en-gb-ise
seafile-client
alacritty
libreoffice-qt # fresh with KDE integration
backintime-common
anki
signal-desktop
(tor-browser-bundle-bin.override {
mediaSupport = true;
pulseaudioSupport = pkgs.stdenv.isLinux;
})
pdfpc
quaternion
nheko
gpxsee
subsurface
yate
# split and merge PDFs in a GUI
pdfarranger
qbittorrent
#(pkgs.pidgin-with-plugins.override {
# plugins = [ pkgs.pidginotr ];})
logseq
# for Hibiscus banking software
jameica
#ToDo: which of these drivers is actually used?
geckodriver
chromedriver
];
kdeTools =
with plasma5Packages;
with kdeGear;
[
okular
gwenview
yakuake
kmail
kontact
korganizer
akonadi-mime # for KOrganizer
kaddressbook
kdeconnect
dolphin
spectacle
kate
kleopatra
qdirstat
ark
kwalletmanager
ktouch
kcharselect
konversation
okteta
krdc
skanlite
akonadiconsole
tokodon # mastodon client
]
++ (with kdeFrameworks; [
networkmanager-qt
kcrash
breeze-gtk
]);
in
{
options.schmittlauch.packages = {
graphics = lib.mkEnableOption "Enable a common set of graphics apps";
multimedia = lib.mkEnableOption "Enable a common set of multimedia apps";
cli = lib.mkOption {
description = "Enable a common set of CLI tools";
type = lib.types.bool;
default = true;
};
nixHelpers = lib.mkEnableOption "Enable a common set of Nix helper tools";
devTools = lib.mkEnableOption "Enable a common set of dev tools";
pythonTools = lib.mkEnableOption "Enable a common set of python tools";
games = lib.mkEnableOption "Enable some games";
desktopCommon = lib.mkOption {
description = "GUI desktop applications that work cross-platform and cross-desktop";
type = lib.types.bool;
default = true;
};
desktopLinux = lib.mkEnableOption "Enable a common set of desktop applications";
kde = lib.mkEnableOption "Enable a common set of KDE applications";
};
config = {
home.packages = lib.flatten (
(lib.optional cfg.graphics graphicsApps)
++ (lib.optional cfg.multimedia multimediaApps)
++ (lib.optional cfg.cli cliApps)
++ (lib.optional cfg.nixHelpers nixHelpers)
++ (lib.optional cfg.devTools devTools)
++ (lib.optional cfg.pythonTools pythonTools)
++ (lib.optional cfg.games games)
++ (lib.optional cfg.desktopCommon desktopCommon)
++ (lib.optional cfg.desktopLinux desktopLinux)
++ (lib.optional cfg.kde kdeTools)
);
nixpkgs.overlays = import ../overlays.nix;
nixpkgs.config = {
clementine.spotify = false;
vim = {
gui = "gtk3";
python = true;
multibyteSupport = true;
};
};
};
}