{ 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 sshuttle cryfs 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 nixfmt-rfc-style nix-top statix ]; devTools = [ curl httpie gcc shellcheck mtr ripgrep fd 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 inputs.nixos-unstable.legacyPackages.${system}.calibre # FIXME: test failure in 24.11 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 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 = [ okteta plasma5Packages.kdeconnect-kde ] ++ (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 = import ../overlays.nix; nixpkgs.config = { permittedInsecurePackages = [ "electron-27.3.11" # logseq # (temporarily) permit the usage of libolm "olm-3.2.16" ]; clementine.spotify = false; vim = { gui = "gtk3"; python = true; multibyteSupport = true; }; }; }; }