mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-23 06:03:40 +00:00
20b364f4de
After the change from revision 30103, nixos-rebuild suddenly consumed freaky amounts of memory. I had to abort the process after it had allocated well in excess of 30GB(!) of RAM. I'm not sure what is causing this behavior, but undoing that assignment fixes the problem. The other two commits needed to be revoked, too, because they depend on 30103. svn path=/nixos/trunk/; revision=30127
74 lines
1.9 KiB
Nix
74 lines
1.9 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
with pkgs.lib;
|
|
|
|
let
|
|
isConfig = x:
|
|
builtins.isAttrs x || builtins.isFunction x;
|
|
|
|
optCall = f: x:
|
|
if builtins.isFunction f
|
|
then f x
|
|
else f;
|
|
|
|
mergeConfig = lhs_: rhs_:
|
|
let
|
|
lhs = optCall lhs_ { inherit pkgs; };
|
|
rhs = optCall rhs_ { inherit pkgs; };
|
|
in
|
|
lhs // rhs //
|
|
optionalAttrs (lhs ? packageOverrides) {
|
|
packageOverrides = pkgs:
|
|
optCall lhs.packageOverrides pkgs //
|
|
optCall (attrByPath ["packageOverrides"] ({}) rhs) pkgs;
|
|
};
|
|
|
|
configType = mkOptionType {
|
|
name = "nixpkgs config";
|
|
check = traceValIfNot isConfig;
|
|
merge = fold mergeConfig {};
|
|
};
|
|
|
|
in
|
|
|
|
{
|
|
options = {
|
|
|
|
nixpkgs.config = mkOption {
|
|
default = {};
|
|
example = literalExample
|
|
''
|
|
{ firefox.enableGeckoMediaPlayer = true;
|
|
packageOverrides = pkgs: {
|
|
firefox60Pkgs = pkgs.firefox60Pkgs.override {
|
|
enableOfficialBranding = true;
|
|
};
|
|
};
|
|
}
|
|
'';
|
|
type = configType;
|
|
description = ''
|
|
The configuration of the Nix Packages collection. (For
|
|
details, see the Nixpkgs documentation.) It allows you to set
|
|
package configuration options, and to override packages
|
|
globally through the <varname>packageOverrides</varname>
|
|
option. The latter is a function that takes as an argument
|
|
the <emphasis>original</emphasis> Nixpkgs, and must evaluate
|
|
to a set of new or overriden packages.
|
|
'';
|
|
};
|
|
|
|
nixpkgs.system = mkOption {
|
|
default = pkgs.stdenv.system;
|
|
description = ''
|
|
Specifies the Nix platform type for which NixOS should be built.
|
|
If unset, it defaults to the platform type of your host system
|
|
(<literal>${builtins.currentSystem}</literal>).
|
|
Specifying this option is useful when doing distributed
|
|
multi-platform deployment, or when building virtual machines.
|
|
'';
|
|
};
|
|
|
|
};
|
|
}
|