forked from mirrors/nixpkgs
nixos manual: allow options from nix packages
This commit is contained in:
parent
194168b722
commit
e6cd147ae7
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, options, version, revision }:
|
{ pkgs, options, version, revision, extraSources ? [] }:
|
||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
with pkgs.lib;
|
with pkgs.lib;
|
||||||
|
@ -17,19 +17,27 @@ let
|
||||||
|
|
||||||
# Clean up declaration sites to not refer to the NixOS source tree.
|
# Clean up declaration sites to not refer to the NixOS source tree.
|
||||||
optionsList' = flip map optionsList (opt: opt // {
|
optionsList' = flip map optionsList (opt: opt // {
|
||||||
declarations = map (fn: stripPrefix fn) opt.declarations;
|
declarations = map (fn: stripAnyPrefixes fn) opt.declarations;
|
||||||
}
|
}
|
||||||
// optionalAttrs (opt ? example) { example = substFunction opt.example; }
|
// optionalAttrs (opt ? example) { example = substFunction opt.example; }
|
||||||
// optionalAttrs (opt ? default) { default = substFunction opt.default; }
|
// optionalAttrs (opt ? default) { default = substFunction opt.default; }
|
||||||
// optionalAttrs (opt ? type) { type = substFunction opt.type; });
|
// optionalAttrs (opt ? type) { type = substFunction opt.type; });
|
||||||
|
|
||||||
prefix = toString ../../..;
|
# We need to strip references to /nix/store/* from options,
|
||||||
|
# including any `extraSources` if some modules came from elsewhere,
|
||||||
|
# or else the build will fail.
|
||||||
|
#
|
||||||
|
# E.g. if some `options` came from modules in ${pkgs.customModules}/nix,
|
||||||
|
# you'd need to include `extraSources = [ "#{pkgs.customModules}" ]`
|
||||||
|
herePrefix = toString ../../..;
|
||||||
|
prefixesToStrip = [ herePrefix ] ++ extraSources;
|
||||||
|
|
||||||
stripPrefix = fn:
|
stripAnyPrefixes = fn:
|
||||||
if substring 0 (stringLength prefix) fn == prefix then
|
flip (flip fold fn) prefixesToStrip (fn: prefix:
|
||||||
substring (stringLength prefix + 1) 1000 fn
|
if substring 0 (stringLength prefix) fn == prefix then
|
||||||
else
|
substring (stringLength prefix + 1) 1000 fn
|
||||||
fn;
|
else
|
||||||
|
fn);
|
||||||
|
|
||||||
# Convert the list of options into an XML file.
|
# Convert the list of options into an XML file.
|
||||||
optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList');
|
optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList');
|
||||||
|
|
Loading…
Reference in a new issue