2017-03-30 21:03:40 +01:00
|
|
|
/* Library of low-level helper functions for nix expressions.
|
|
|
|
*
|
|
|
|
* Please implement (mostly) exhaustive unit tests
|
|
|
|
* for new functions in `./tests.nix'.
|
|
|
|
*/
|
2016-09-15 00:21:42 +01:00
|
|
|
let
|
2006-09-25 11:07:59 +01:00
|
|
|
|
2020-11-11 02:36:19 +00:00
|
|
|
inherit (import ./fixed-points.nix { inherit lib; }) makeExtensible;
|
2017-07-29 01:05:35 +01:00
|
|
|
|
2018-04-06 17:51:10 +01:00
|
|
|
lib = makeExtensible (self: let
|
|
|
|
callLibs = file: import file { lib = self; };
|
2020-10-20 12:47:24 +01:00
|
|
|
in {
|
2017-07-29 01:05:35 +01:00
|
|
|
|
2022-04-12 18:55:41 +01:00
|
|
|
# interacting with flakes
|
|
|
|
flakes = callLibs ./flakes.nix;
|
|
|
|
|
2017-07-29 01:05:35 +01:00
|
|
|
# often used, or depending on very little
|
|
|
|
trivial = callLibs ./trivial.nix;
|
|
|
|
fixedPoints = callLibs ./fixed-points.nix;
|
|
|
|
|
|
|
|
# datatypes
|
|
|
|
attrsets = callLibs ./attrsets.nix;
|
|
|
|
lists = callLibs ./lists.nix;
|
|
|
|
strings = callLibs ./strings.nix;
|
|
|
|
stringsWithDeps = callLibs ./strings-with-deps.nix;
|
|
|
|
|
|
|
|
# packaging
|
|
|
|
customisation = callLibs ./customisation.nix;
|
2018-03-04 03:09:35 +00:00
|
|
|
maintainers = import ../maintainers/maintainer-list.nix;
|
2019-10-27 21:44:24 +00:00
|
|
|
teams = callLibs ../maintainers/team-list.nix;
|
2017-07-29 01:05:35 +01:00
|
|
|
meta = callLibs ./meta.nix;
|
|
|
|
sources = callLibs ./sources.nix;
|
2018-03-03 04:26:32 +00:00
|
|
|
versions = callLibs ./versions.nix;
|
2017-07-29 01:05:35 +01:00
|
|
|
|
|
|
|
# module system
|
|
|
|
modules = callLibs ./modules.nix;
|
|
|
|
options = callLibs ./options.nix;
|
|
|
|
types = callLibs ./types.nix;
|
|
|
|
|
|
|
|
# constants
|
|
|
|
licenses = callLibs ./licenses.nix;
|
|
|
|
systems = callLibs ./systems;
|
|
|
|
|
2020-01-22 22:22:23 +00:00
|
|
|
# serialization
|
|
|
|
cli = callLibs ./cli.nix;
|
|
|
|
generators = callLibs ./generators.nix;
|
|
|
|
|
2017-07-29 01:05:35 +01:00
|
|
|
# misc
|
2018-08-08 18:26:52 +01:00
|
|
|
asserts = callLibs ./asserts.nix;
|
2017-07-29 01:05:35 +01:00
|
|
|
debug = callLibs ./debug.nix;
|
|
|
|
misc = callLibs ./deprecated.nix;
|
2018-08-08 18:26:52 +01:00
|
|
|
|
2017-07-29 01:05:35 +01:00
|
|
|
# domain-specific
|
|
|
|
fetchers = callLibs ./fetchers.nix;
|
|
|
|
|
|
|
|
# Eval-time filesystem handling
|
|
|
|
filesystem = callLibs ./filesystem.nix;
|
2017-02-09 02:27:22 +00:00
|
|
|
|
|
|
|
# back-compat aliases
|
2020-10-20 12:47:24 +01:00
|
|
|
platforms = self.systems.doubles;
|
2017-07-29 01:05:35 +01:00
|
|
|
|
2019-09-18 09:34:02 +01:00
|
|
|
# linux kernel configuration
|
|
|
|
kernel = callLibs ./kernel.nix;
|
|
|
|
|
2022-04-12 18:55:41 +01:00
|
|
|
inherit (self.flakes) callLocklessFlake;
|
2018-05-11 16:12:15 +01:00
|
|
|
inherit (builtins) add addErrorContext attrNames concatLists
|
|
|
|
deepSeq elem elemAt filter genericClosure genList getAttr
|
|
|
|
hasAttr head isAttrs isBool isInt isList isString length
|
|
|
|
lessThan listToAttrs pathExists readFile replaceStrings seq
|
2020-10-20 15:34:15 +01:00
|
|
|
stringLength sub substring tail trace;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.trivial) id const pipe concat or and bitAnd bitOr bitXor
|
2020-10-20 14:24:59 +01:00
|
|
|
bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max
|
2022-03-27 15:48:33 +01:00
|
|
|
importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum
|
2022-03-09 13:41:43 +00:00
|
|
|
info showWarnings nixpkgsVersion version isInOldestRelease
|
2022-03-21 22:06:01 +00:00
|
|
|
mod compare splitByAndCompare
|
|
|
|
functionArgs setFunctionArgs isFunction toFunction
|
2021-04-27 11:56:51 +01:00
|
|
|
toHexString toBaseDigits;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.fixedPoints) fix fix' converge extends composeExtensions
|
2020-11-11 02:36:19 +00:00
|
|
|
composeManyExtensions makeExtensible makeExtensibleWithCustomName;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath
|
2018-12-11 21:18:22 +00:00
|
|
|
getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs
|
2017-07-29 01:05:35 +01:00
|
|
|
filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs
|
|
|
|
mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond
|
|
|
|
genAttrs isDerivation toDerivation optionalAttrs
|
|
|
|
zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil
|
2021-12-02 17:12:51 +00:00
|
|
|
recursiveUpdate matchAttrs overrideExisting showAttrPath getOutput getBin
|
2020-05-11 10:08:29 +01:00
|
|
|
getLib getDev getMan chooseDevOutputs zipWithNames zip
|
2021-11-22 19:34:01 +00:00
|
|
|
recurseIntoAttrs dontRecurseIntoAttrs cartesianProductOfSets
|
|
|
|
updateManyAttrsByPath;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.lists) singleton forEach foldr fold foldl foldl' imap0 imap1
|
2017-07-29 01:05:35 +01:00
|
|
|
concatMap flatten remove findSingle findFirst any all count
|
|
|
|
optional optionals toList range partition zipListsWith zipLists
|
2018-05-11 16:12:15 +01:00
|
|
|
reverseList listDfs toposort sort naturalSort compareLists take
|
|
|
|
drop sublist last init crossLists unique intersectLists
|
2018-06-10 18:31:09 +01:00
|
|
|
subtractLists mutuallyExclusive groupBy groupBy';
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.strings) concatStrings concatMapStrings concatImapStrings
|
2017-07-29 01:05:35 +01:00
|
|
|
intersperse concatStringsSep concatMapStringsSep
|
|
|
|
concatImapStringsSep makeSearchPath makeSearchPathOutput
|
2018-12-15 03:50:31 +00:00
|
|
|
makeLibraryPath makeBinPath optionalString
|
2019-02-04 08:09:38 +00:00
|
|
|
hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
|
2022-04-27 09:02:49 +01:00
|
|
|
escapeShellArg escapeShellArgs isValidPosixName toShellVar toShellVars
|
|
|
|
escapeRegex escapeXML replaceChars lowerChars
|
2018-05-11 16:12:15 +01:00
|
|
|
upperChars toLower toUpper addContextFrom splitString
|
2019-11-24 16:19:32 +00:00
|
|
|
removePrefix removeSuffix versionOlder versionAtLeast
|
|
|
|
getName getVersion
|
2018-05-11 16:12:15 +01:00
|
|
|
nameFromURL enableFeature enableFeatureAs withFeature
|
|
|
|
withFeatureAs fixedWidthString fixedWidthNumber isStorePath
|
2017-07-29 01:05:35 +01:00
|
|
|
toInt readPathsFromFile fileContents;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.stringsWithDeps) textClosureList textClosureMap
|
2017-07-29 01:05:35 +01:00
|
|
|
noDepEntry fullDepEntry packEntry stringAfter;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.customisation) overrideDerivation makeOverridable
|
2018-05-11 16:12:15 +01:00
|
|
|
callPackageWith callPackagesWith extendDerivation hydraJob
|
2020-11-18 17:12:34 +00:00
|
|
|
makeScope makeScopeWithSplicing;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.meta) addMetaAttrs dontDistribute setName updateName
|
2018-11-18 08:26:13 +00:00
|
|
|
appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
|
2022-04-04 23:10:44 +01:00
|
|
|
hiPrioSet getLicenseFromSpdxId getExe;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.sources) pathType pathIsDirectory cleanSourceFilter
|
2017-07-29 01:05:35 +01:00
|
|
|
cleanSource sourceByRegex sourceFilesBySuffices
|
2018-05-11 16:12:15 +01:00
|
|
|
commitIdFromGitRepo cleanSourceWith pathHasContext
|
2020-01-19 23:44:07 +00:00
|
|
|
canCleanSource pathIsRegularFile pathIsGitRepo;
|
2021-12-17 14:17:49 +00:00
|
|
|
inherit (self.modules) evalModules setDefaultModuleLocation
|
2022-03-21 21:54:07 +00:00
|
|
|
unifyModuleSyntax applyModuleArgsIfFunction mergeModules
|
2017-07-29 01:05:35 +01:00
|
|
|
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
|
|
|
|
pushDownProperties dischargeProperties filterOverrides
|
|
|
|
sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
|
2021-08-18 13:20:41 +01:00
|
|
|
mkOptionDefault mkDefault mkImageMediaOverride mkForce mkVMOverride
|
2021-07-12 06:23:45 +01:00
|
|
|
mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions
|
2017-07-29 01:05:35 +01:00
|
|
|
mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule
|
2022-03-09 13:41:43 +00:00
|
|
|
mkRenamedOptionModule mkRenamedOptionModuleWith
|
|
|
|
mkMergedOptionModule mkChangedOptionModule
|
2021-11-14 14:57:54 +00:00
|
|
|
mkAliasOptionModule mkDerivedConfig doRename;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.options) isOption mkEnableOption mkSinkUndeclaredOptions
|
2022-01-24 00:07:32 +00:00
|
|
|
mergeDefaultOption mergeOneOption mergeEqualOption mergeUniqueOption
|
|
|
|
getValues getFiles
|
|
|
|
optionAttrSetToDocList optionAttrSetToDocList'
|
2021-10-03 16:19:19 +01:00
|
|
|
scrubOptionValue literalExpression literalExample literalDocBook
|
2022-01-29 17:28:20 +00:00
|
|
|
showOption showFiles unknownModule mkOption mkPackageOption;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.types) isType setType defaultTypeMerge defaultFunctor
|
2017-07-29 01:05:35 +01:00
|
|
|
isOptionType mkOptionType;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.asserts)
|
2018-08-08 18:26:52 +01:00
|
|
|
assertMsg assertOneOf;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.debug) addErrorContextToAttrs traceIf traceVal traceValFn
|
2017-07-29 01:05:35 +01:00
|
|
|
traceXMLVal traceXMLValMarked traceSeq traceSeqN traceValSeq
|
2021-01-24 10:33:41 +00:00
|
|
|
traceValSeqFn traceValSeqN traceValSeqNFn traceFnSeqN traceShowVal
|
2018-04-02 16:21:35 +01:00
|
|
|
traceShowValMarked showVal traceCall traceCall2 traceCall3
|
2018-05-11 16:12:15 +01:00
|
|
|
traceValIfNot runTests testAllTrue traceCallXml attrNamesToStr;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.misc) maybeEnv defaultMergeArg defaultMerge foldArgs
|
2017-07-29 01:05:35 +01:00
|
|
|
maybeAttrNullable maybeAttr ifEnable checkFlag getValue
|
|
|
|
checkReqs uniqList uniqListExt condConcat lazyGenericClosure
|
|
|
|
innerModifySumArgs modifySumArgs innerClosePropagation
|
|
|
|
closePropagation mapAttrsFlatten nvs setAttr setAttrMerge
|
|
|
|
mergeAttrsWithFunc mergeAttrsConcatenateValues
|
|
|
|
mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults
|
2018-07-26 11:05:40 +01:00
|
|
|
mergeAttrsByFuncDefaultsClean mergeAttrBy
|
2020-05-11 23:04:41 +01:00
|
|
|
fakeHash fakeSha256 fakeSha512
|
2018-07-26 11:05:40 +01:00
|
|
|
nixType imap;
|
2020-10-20 12:47:24 +01:00
|
|
|
inherit (self.versions)
|
2019-09-24 09:47:34 +01:00
|
|
|
splitVersion;
|
2018-04-06 17:51:10 +01:00
|
|
|
});
|
2017-07-29 01:05:35 +01:00
|
|
|
in lib
|