krebs.nixpkgs.allowUnfreePredicate: init

This commit is contained in:
tv 2016-02-10 19:06:32 +01:00
parent e6ea4875d4
commit 8b130a6628
4 changed files with 46 additions and 2 deletions

View File

@ -21,6 +21,7 @@ let
./go.nix
./iptables.nix
./nginx.nix
./nixpkgs.nix
./per-user.nix
./Reaktor.nix
./retiolum-bootstrap.nix

View File

@ -0,0 +1,43 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.krebs.nixpkgs;
out = {
options.krebs.nixpkgs = api;
config = mkIf cfg.enable imp;
};
api = {
enable = mkEnableOption "krebs.nixpkgs" // { default = true; };
allowUnfreePredicate = mkOption {
description = ''
This option is similar to `nixpkgs.config.allowUnfreePredicate'
but can be defined in several modules. An unfree package will be
allowed if any of the defined predicates returns true.
'';
type = types.nullOr (mkOptionType {
name = "Predicate";
check = isFunction;
merge = _locs: defs: pkg: let
evalPredicateDef = def: let
allow = def.value pkg;
in if cfg.verbose && allow
then trace "unfree ${pkg.name} allowed in ${def.file}" allow
else allow;
in any evalPredicateDef defs;
});
default = null;
};
verbose = mkOption {
type = types.bool;
default = false;
};
};
imp = mkIf (cfg.allowUnfreePredicate != null) {
nixpkgs.config.allowUnfreePredicate = cfg.allowUnfreePredicate;
};
in out

View File

@ -157,7 +157,7 @@ with lib;
nixpkgs.config.chromium.enablePepperFlash = true;
nixpkgs.config.allowUnfreePredicate = pkg: hasPrefix "nvidia-x11-" pkg.name;
krebs.nixpkgs.allowUnfreePredicate = pkg: hasPrefix "nvidia-x11-" pkg.name;
hardware.bumblebee.enable = true;
hardware.bumblebee.group = "video";
hardware.enableAllFirmware = true;

View File

@ -41,5 +41,5 @@ with lib;
HandleSuspendKey=ignore
'';
nixpkgs.config.allowUnfreePredicate = pkg: hasPrefix "broadcom-sta-" pkg.name;
krebs.nixpkgs.allowUnfreePredicate = pkg: hasPrefix "broadcom-sta-" pkg.name;
}