{ config, lib, ... }: # See also: ./nur-and-unstable.nix to allow unfree packages from "unstable". # See also: ./base.nix for unfree firmware. # This file adds the ability to whitelist unfree packages in different .nix config files. # See https://github.com/NixOS/nixpkgs/issues/55674#issuecomment-1220216445 for why this is necessary. # Example: Instead of # nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ # "obsidian" # ]; # add the following # allowUnfree = [ "obsidian" ]; # Source: # https://discourse.nixos.org/t/use-nixpkgs-config-allowunfreepredicate-in-multiple-nix-file/36590/2 # -> Implementation: https://codeberg.org/AndrewKvalheim/configuration/src/commit/11794e595144500a6c2be706e42ed698b1788bb8/packages/nixpkgs-issue-55674.nix # -> Example: https://codeberg.org/AndrewKvalheim/configuration/src/commit/11794e595144500a6c2be706e42ed698b1788bb8/common/components/printer.system.nix#L7 # TODO: Once https://github.com/NixOS/nixpkgs/issues/55674 is merged, this is obsolete. let inherit (builtins) elem; inherit (lib) getName mkOption; inherit (lib.types) listOf str; in { options.allowUnfree = mkOption { type = listOf str; default = [ ]; }; config.nixpkgs.config.allowUnfreePredicate = p: elem (getName p) config.allowUnfree; }