285 lines
5.3 KiB
Nix
285 lines
5.3 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
|
||
|
];
|
||
|
|
||
|
fonts = [
|
||
|
comic-neue
|
||
|
source-sans-pro
|
||
|
source-code-pro
|
||
|
source-serif-pro
|
||
|
ubuntu_font_family
|
||
|
twemoji-color-font
|
||
|
open-sans
|
||
|
(iosevka-bin.override { variant = "curly-slab"; })
|
||
|
config.nur.repos.schmittlauch.vollkorn
|
||
|
# TODO: humor-sans
|
||
|
|
||
|
# fcio corporate design, TODO module
|
||
|
fira-code
|
||
|
fira-mono
|
||
|
# TODO fira-sans + condensed
|
||
|
# TODO museo 500
|
||
|
];
|
||
|
|
||
|
games = [
|
||
|
superTuxKart
|
||
|
hedgewars
|
||
|
];
|
||
|
|
||
|
desktopApps = [
|
||
|
firefox
|
||
|
chromium
|
||
|
falkon
|
||
|
thunderbird
|
||
|
calibre
|
||
|
dino
|
||
|
zotero
|
||
|
keepassxc
|
||
|
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";
|
||
|
desktop = lib.mkEnableOption "Enable a common set of desktop applications";
|
||
|
kde = lib.mkEnableOption "Enable a common set of KDE applications";
|
||
|
};
|
||
|
# TODO fonts in separate module
|
||
|
# TODO latex in separate module
|
||
|
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.desktop desktopApps)
|
||
|
++ (lib.optional cfg.kde kdeTools)
|
||
|
);
|
||
|
|
||
|
nixpkgs.overlays = import ../overlays.nix;
|
||
|
nixpkgs.config = {
|
||
|
clementine.spotify = false;
|
||
|
vim = {
|
||
|
gui = "gtk3";
|
||
|
python = true;
|
||
|
multibyteSupport = true;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|