{ config, lib, ... }: let allowedUnf = config.nixpkgs.allowedUnfree; allowedIns = config.nixpkgs.allowedInsecure; in { options.nixpkgs = { allowedUnfree = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; description = '' Allows for unfree packages by their name. ''; }; allowedInsecure = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; description = '' Allows for insecure packages by their name. ''; }; }; config = lib.mkMerge [ (lib.mkIf (allowedUnf != [ ]) { nixpkgs.config.allowUnfreePredicate = (pkg: __elem (lib.getName pkg) allowedUnf); }) (lib.mkIf (allowedIns != [ ]) { nixpkgs.config.allowInsecurePredicate = (pkg: __elem (lib.getName pkg) allowedIns); }) ]; }