It makes sense to put each individual script into its own derivation, as some of the scripts require certain other dependencies that others don't.
284 lines
5.6 KiB
Nix
284 lines
5.6 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
|
|
|
|
]
|
|
++ (with fc-scripts; [
|
|
|
|
git-tree-sync
|
|
ssh-multi-proxy
|
|
mosh-tunnel
|
|
mosh-dualstack-proxy # 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;
|
|
};
|
|
};
|
|
};
|
|
}
|