nixos-config/modules/unfree.nix

48 lines
1.6 KiB
Nix

# SPDX-FileCopyrightText: 2021-2024 Simon Bruder <simon@sbruder.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
{ 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
] ++ lib.optionals cfg.allowSoftware [
"cups-kyocera-ecosys-m552x-p502x" # exception: the file header says MIT license, but explicitly forbids modifications WTF?
"makemkv" # exception: runs in sandbox, only way to get DRM garbage to work properly
"p7zip" # exception: rar source code is not free, but available; p7zip with `enableUnfree` includes it
# exception: used for programming the NitroKey,
# available under essentially a 3-BSD license with two additional restrictions:
# one usage restriction and one (pointless as the source is available) reverse engineering restriction
"nrfutil"
# games (okay if they run sandboxed)
"osu-lazer" # also is free except for one dependency
]
));
};
}