Trolli Schmittlauch
4976cea39d
Create new package category "desktopCommon" that is enabled by default on all home hosts, useful for getting GUI packages across platforms.
271 lines
5.1 KiB
Nix
271 lines
5.1 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 =
|
|
[
|
|
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; [
|
|
notebook
|
|
ipython
|
|
pip
|
|
numpy
|
|
matplotlib
|
|
jedi
|
|
jedi-language-server
|
|
black
|
|
flake8
|
|
mypy
|
|
];
|
|
|
|
games = [
|
|
superTuxKart
|
|
#hedgewars
|
|
];
|
|
|
|
desktopCommon = [ keepassxc ];
|
|
|
|
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;
|
|
};
|
|
};
|
|
};
|
|
}
|