nixconfigs/home/modules/packages.nix
Trolli Schmittlauch 87f08c462a fc-scripts: init at 20260202
collection of useful scripts from the FlyingCircus crew
2026-02-18 18:36:47 +01:00

278 lines
5.5 KiB
Nix

{
pkgs,
lib,
inputs,
config,
...
}:
let
cfg = config.schmittlauch.packages;
unstable = inputs.nixos-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
nur = inputs.nur.legacyPackages.${pkgs.stdenv.hostPlatform.system};
graphicsApps =
with pkgs;
[
inkscape
exiftool
]
++ (with gimp3Plugins; [
#fourier # broken
#lqrPlugin # broken
])
++ lib.optionals pkgs.stdenv.isLinux [
darktable
gimp3
hugin
#luminanceHDR # FIXME, build failure
xournalpp
]
++ lib.optionals pkgs.stdenv.isDarwin [
gimp2
];
multimediaApps =
with pkgs;
[
mpv
]
++ lib.optionals pkgs.stdenv.isDarwin [ vlc-bin ]
++ lib.optionals pkgs.stdenv.isLinux [
vlc
amarok
clementine
kdePackages.elisa
musescore
tenacity
#nur.repos.fooker.studio-link
];
cliApps =
with pkgs;
[
coreutils
myVim
htop
tmux
httpie
rsync
ponysay
gti
tree
lsof
mosh
openssh
sshfs-fuse
sshuttle
cryfs
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
spacer
nix-output-monitor # putting this here as a plain `nix` alternative
fc-scripts # this might turn out to be useful even in non-work environments?
]
++ lib.optionals pkgs.stdenv.isLinux [
xclip
smbnetfs # for FUSE smb mounting
psmisc # for killall
torsocks
agrep
reptyr # re-bind running program to other tty
];
nixHelpers = with pkgs; [
nixpkgs-review
nixfmt
nix-top
statix
];
devTools =
with pkgs;
[
curl
httpie
gcc
shellcheck
mtr
ripgrep
fd
pre-commit
scriv
# Haskell
ghc
cabal2nix
]
++ lib.optionals pkgs.stdenv.isLinux [
gdb
strace
ltrace
valgrind
zeal
];
pythonTools = with pkgs.python3Packages; [
python # to shadow old macOS python
ipython
uv
pip
numpy
matplotlib
jedi
jedi-language-server
black
flake8
mypy
];
games = with pkgs; [
superTuxKart
#hedgewars
];
desktopCommon = with pkgs; [
keepassxc
];
desktopLinux = with pkgs; [
firefox
chromium
kdePackages.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-qt6 # still with KDE integration
anki
signal-desktop
(tor-browser.override {
mediaSupport = true;
pulseaudioSupport = pkgs.stdenv.isLinux;
})
tigervnc
rustdesk-flutter
pdfpc
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 pkgs;
[
okteta
]
++ (with kdePackages; [
okular
gwenview
yakuake
dolphin
spectacle
kate
kleopatra
qdirstat
ark
kwalletmanager
#ktouch # TODO: unbreak
kcharselect
konversation
krdc
skanlite
akonadiconsole
tokodon # mastodon client
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 = lib.attrValues inputs.self.overlays;
nixpkgs.config = {
permittedInsecurePackages = [
# (temporarily) permit the usage of libolm
"olm-3.2.16"
];
clementine.spotify = false;
vim = {
gui = "gtk3";
python = true;
multibyteSupport = true;
};
};
};
}