{ config, pkgs, lib, ... }: let cfg = config.local.programs.share-files; mkShareFileOpts = name: { enable = lib.mkEnableOption name; package = lib.mkPackageOption pkgs name { }; }; in { options.local.programs.share-files = { onionshare = mkShareFileOpts "onionshare-gui"; croc = mkShareFileOpts "croc"; }; config.home.packages = # OnionShare is an open-source tool that lets you securely and anonymously share files, # host websites, and chat with friends using the Tor network. lib.optional cfg.onionshare.enable cfg.onionshare.package # Easily and securely send things from one computer to another ++ lib.optional cfg.croc.enable cfg.croc.package; }