{ pkgs, config, lib, vacuModuleType, ... }: let enableFfmpeg = !config.vacu.isMinimal; enableFfmpegFull = enableFfmpeg && config.vacu.isGui; enableFfmpegHeadless = enableFfmpeg && !config.vacu.isGui; in { vacu.packages = lib.mkMerge [ { borgbackup.enable = config.vacu.isDev && (pkgs.system != "aarch64-linux"); # borgbackup build is borken on aarch64 ffmpeg-vacu-full = { enable = enableFfmpegFull; package = pkgs.ffmpeg-full; overrides.libbluray = config.vacu.packages.libbluray-all.finalPackage; }; ffmpeg-vacu-headless = { enable = enableFfmpegHeadless; package = pkgs.ffmpeg-headless; overrides.libbluray = config.vacu.packages.libbluray-all.finalPackage; }; libbluray-all = { package = pkgs.libbluray; overrides = { withJava = true; withAACS = true; withBDplus = true; }; }; inkscape-all = { package = pkgs.inkscape-with-extensions; # null actually means everything https://github.com/NixOS/nixpkgs/commit/5efd65b2d94b0ac0cf155e013b6747fa22bc04c3 overrides.inkscapeExtensions = null; }; p7zip-unfree = { package = pkgs.p7zip; overrides.enableUnfree = true; }; vacu-units.package = config.vacu.units.finalPackage; } (lib.mkIf config.vacu.isGui # pkgs for systems with a desktop GUI '' acpi anki audacity arduino-ide bitwarden-desktop brave dino filezilla ghidra gimp haruna iio-sensor-proxy inkscape-all jellyfin-media-player josm kdePackages.elisa kdePackages.kdenlive libreoffice-qt6-fresh # librewolf linphone merkaartor nextcloud-client nheko obsidian openscad openshot-qt orca-slicer OSCAR prismlauncher shotcut signal-desktop svp thunderbird tremotesf ungoogled-chromium vlc wayland-utils wev wireshark wl-clipboard '' ) (lib.mkIf config.vacu.isDev '' cargo gnumake patchelf python3 ruby rustc rust-script shellcheck stdenv.cc '') (lib.mkIf (!config.vacu.isMinimal) # big pkgs for non-minimal systems '' aircrack-ng android-tools bitwarden-cli dmidecode fido2-manage flac hdparm home-manager imagemagickBig kanidm_1_5 libsmi man megatools mercurial minicom mkvtoolnix-cli # neovim => see common/nixvim.nix net-snmp nix-index nix-inspect nix-search-cli nix-tree nmap nvme-cli proxmark3 rclone ripgrep-all smartmontools tcpdump termscp tshark yt-dlp '' ) # pkgs included everywhere '' ddrescue dig dnsutils ethtool file gnutls hostname htop inetutils iperf3 iputils jq killall libossp_uuid # provides `uuid` binary lsof mosh nano ncdu netcat-openbsd nixos-rebuild p7zip-unfree pciutils progress psutils pv ripgrep rsync screen # sed => gnused shellvaculib # sops => should use `nr vacu#sops` instead sshfs ssh-to-age # tar => gnutar tmux tree tzdata # units => vacu-units unzip usbutils vacu-units vim wget zip '' # packages that are in [`requiredPackages`][1] in nixos, but maybe not included in nix-on-droid # [1]: https://github.com/NixOS/nixpkgs/blob/26d499fc9f1d567283d5d56fcf367edd815dba1d/nixos/modules/config/system-path.nix#L11 (lib.optionalAttrs (vacuModuleType == "nix-on-droid") '' acl attr bashInteractive bzip2 cpio curl diffutils findutils gawk #stdenv.cc.libc shouldn't be needed right? getent getconf gnugrep gnupatch gnused gnutar gzip less libcap mkpasswd ncurses #netcat is replaced by netcat-openbsd openssh procps su time util-linux which xz zstd '') ]; }