{ config, lib, ... }: let cfg = config.sbruder.unfree; in { # Options that affect multiple modules options.sbruder = { unfree = { allowAssets = lib.mkOption { default = true; type = lib.types.bool; description = "Allow restricted selection of unfree assets to be installed."; }; allowSoftware = lib.mkOption { default = false; type = lib.types.bool; description = "Allow restricted selection of unfree software to be installed."; }; }; }; config = { nixpkgs.config.allowUnfreePredicate = (pkg: lib.elem (lib.getName pkg) ( lib.optionals cfg.allowAssets [ "corefonts" "vista-fonts" "wallpaper-unfree" # defined in users/simon/modules/sway.nix "yuzu-ea" "yuzu-mainline" # derivation of icons is not allowed ] ++ lib.optionals cfg.allowSoftware [ "cups-kyocera-ecosys-m552x-p502x" # exception: the file header says MIT license, but explicitly forbids modifications WTF? "drone-runner-exec" # exception: same as drone.io "drone.io" # exception: is open source (but has usage restriction) "fahclient" # exception: for science "p7zip" # exception: rar source code is not free, but available; p7zip with `enableUnfree` includes it # games (okay if they run sandboxed) "factorio" "factorio-headless" "osu-lazer" # also is free except for one dependency "steam" "steam-original" "steam-runtime" ] )); }; }