From 63c79d1b48d8f2e73e50ac8bc55a3ac721c38eab Mon Sep 17 00:00:00 2001 From: Jeff Hykin Date: Sun, 26 May 2024 10:05:03 -0400 Subject: [PATCH] simplify top of lib --- nodes/1_lib/default.nix | 269 ++++++++++++++++++---------------------- 1 file changed, 124 insertions(+), 145 deletions(-) diff --git a/nodes/1_lib/default.nix b/nodes/1_lib/default.nix index 62c6f79..04bfaea 100644 --- a/nodes/1_lib/default.nix +++ b/nodes/1_lib/default.nix @@ -28,149 +28,128 @@ in # # legacy lib # - lib = fixedPoints.makeExtensible (self: let - callLibs = file: import file { lib = self; }; - in untangledBase // { - fixedPoints = fixedPoints; - # often used, or depending on very little - trivial = callLibs ./source/trivial.nix; - - # datatypes - attrsets = callLibs ./source/attrsets.nix; - lists = callLibs ./source/lists.nix; - strings = callLibs ./source/strings.nix; - stringsWithDeps = callLibs ./source/strings-with-deps.nix; - - # packaging - customisation = callLibs ./source/customisation.nix; - derivations = callLibs ./source/derivations.nix; - meta = callLibs ./source/meta.nix; - versions = callLibs ./source/versions.nix; - - # module system - modules = callLibs ./source/modules.nix; - options = callLibs ./source/options.nix; - types = callLibs ./source/types.nix; - - # constants - systems = callLibs ./source/systems; - - # serialization - cli = callLibs ./source/cli.nix; - gvariant = callLibs ./source/gvariant.nix; - generators = callLibs ./source/generators.nix; - - # misc - asserts = callLibs ./source/asserts.nix; - debug = callLibs ./source/debug.nix; - - # domain-specific - fetchers = callLibs ./source/fetchers.nix; - - # Eval-time filesystem handling - path = callLibs ./source/path; - filesystem = callLibs ./source/filesystem.nix; - fileset = callLibs ./source/fileset; - sources = callLibs ./source/sources.nix; - - # TODO: these are not the same as system.platform, we should probably try and unify them - # back-compat aliases - platforms = self.systems.doubles; - - # linux kernel configuration - kernel = callLibs ./source/kernel.nix; - - inherit (builtins) add addErrorContext attrNames concatLists - deepSeq elem elemAt filter genericClosure genList getAttr - hasAttr head isAttrs isBool isInt isList isPath isString length - lessThan listToAttrs pathExists readFile replaceStrings seq - stringLength sub substring tail trace; - inherit (self.trivial) id const pipe concat or and xor bitAnd bitOr bitXor - bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max - importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum - info showWarnings nixpkgsVersion version isInOldestRelease - mod compare splitByAndCompare - functionArgs setFunctionArgs isFunction toFunction mirrorFunctionArgs - toHexString toBaseDigits inPureEvalMode; - inherit (self.fixedPoints) fix fix' converge extends composeExtensions - composeManyExtensions makeExtensible makeExtensibleWithCustomName; - inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath - getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs - filterAttrsRecursive foldlAttrs foldAttrs collect nameValuePair mapAttrs - mapAttrs' mapAttrsToList attrsToList concatMapAttrs mapAttrsRecursive - mapAttrsRecursiveCond genAttrs isDerivation toDerivation optionalAttrs - zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil - recursiveUpdate matchAttrs mergeAttrsList overrideExisting showAttrPath getOutput - getBin getLib getDev getMan chooseDevOutputs zipWithNames zip - recurseIntoAttrs dontRecurseIntoAttrs cartesianProduct cartesianProductOfSets - mapCartesianProduct updateManyAttrsByPath; - inherit (self.lists) singleton forEach foldr fold foldl foldl' imap0 imap1 - ifilter0 concatMap flatten remove findSingle findFirst any all count - optional optionals toList range replicate partition zipListsWith zipLists - reverseList listDfs toposort sort sortOn naturalSort compareLists take - drop sublist last init crossLists unique allUnique intersectLists - subtractLists mutuallyExclusive groupBy groupBy'; - inherit (self.strings) concatStrings concatMapStrings concatImapStrings - intersperse concatStringsSep concatMapStringsSep - concatImapStringsSep concatLines makeSearchPath makeSearchPathOutput - makeLibraryPath makeIncludePath makeBinPath optionalString - hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape - escapeShellArg escapeShellArgs - isStorePath isStringLike - isValidPosixName toShellVar toShellVars - escapeRegex escapeURL escapeXML replaceChars lowerChars - upperChars toLower toUpper addContextFrom splitString - removePrefix removeSuffix versionOlder versionAtLeast - getName getVersion - cmakeOptionType cmakeBool cmakeFeature - mesonOption mesonBool mesonEnable - nameFromURL enableFeature enableFeatureAs withFeature - withFeatureAs fixedWidthString fixedWidthNumber - toInt toIntBase10 readPathsFromFile fileContents; - inherit (self.stringsWithDeps) textClosureList textClosureMap - noDepEntry fullDepEntry packEntry stringAfter; - inherit (self.customisation) overrideDerivation makeOverridable - callPackageWith callPackagesWith extendDerivation hydraJob - makeScope makeScopeWithSplicing makeScopeWithSplicing'; - inherit (self.derivations) lazyDerivation optionalDrvAttr; - inherit (self.meta) addMetaAttrs dontDistribute setName updateName - appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio - hiPrioSet getLicenseFromSpdxId getExe getExe'; - inherit (self.filesystem) pathType pathIsDirectory pathIsRegularFile - packagesFromDirectoryRecursive; - inherit (self.sources) cleanSourceFilter - cleanSource sourceByRegex sourceFilesBySuffices - commitIdFromGitRepo cleanSourceWith pathHasContext - canCleanSource pathIsGitRepo; - inherit (self.modules) evalModules setDefaultModuleLocation - unifyModuleSyntax applyModuleArgsIfFunction mergeModules - mergeModules' mergeOptionDecls mergeDefinitions - pushDownProperties dischargeProperties filterOverrides - sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride - mkOptionDefault mkDefault mkImageMediaOverride mkForce mkVMOverride - mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions - mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule - mkRenamedOptionModule mkRenamedOptionModuleWith - mkMergedOptionModule mkChangedOptionModule - mkAliasOptionModule mkDerivedConfig doRename - mkAliasOptionModuleMD; - inherit (self.options) isOption mkEnableOption mkSinkUndeclaredOptions - mergeDefaultOption mergeOneOption mergeEqualOption mergeUniqueOption - getValues getFiles - optionAttrSetToDocList optionAttrSetToDocList' - scrubOptionValue literalExpression literalExample - showOption showOptionWithDefLocs showFiles - unknownModule mkOption mkPackageOption mkPackageOptionMD - mdDoc literalMD; - inherit (self.types) isType setType defaultTypeMerge defaultFunctor - isOptionType mkOptionType; - inherit (self.asserts) - assertMsg assertOneOf; - inherit (self.debug) traceIf traceVal traceValFn - traceSeq traceSeqN traceValSeq - traceValSeqFn traceValSeqN traceValSeqNFn traceFnSeqN - runTests testAllTrue; - inherit (self.versions) - splitVersion; - }); + lib = fixedPoints.makeExtensible ( + self: + untangledBase // { + trivial = import ./source/trivial.nix { lib = self; }; + attrsets = import ./source/attrsets.nix { lib = self; }; + lists = import ./source/lists.nix { lib = self; }; + strings = import ./source/strings.nix { lib = self; }; + stringsWithDeps = import ./source/strings-with-deps.nix { lib = self; }; + customisation = import ./source/customisation.nix { lib = self; }; + derivations = import ./source/derivations.nix { lib = self; }; + meta = import ./source/meta.nix { lib = self; }; + versions = import ./source/versions.nix { lib = self; }; + modules = import ./source/modules.nix { lib = self; }; + options = import ./source/options.nix { lib = self; }; + types = import ./source/types.nix { lib = self; }; + systems = import ./source/systems { lib = self; }; + cli = import ./source/cli.nix { lib = self; }; + gvariant = import ./source/gvariant.nix { lib = self; }; + generators = import ./source/generators.nix { lib = self; }; + asserts = import ./source/asserts.nix { lib = self; }; + debug = import ./source/debug.nix { lib = self; }; + fetchers = import ./source/fetchers.nix { lib = self; }; + path = import ./source/path { lib = self; }; + filesystem = import ./source/filesystem.nix { lib = self; }; + fileset = import ./source/fileset { lib = self; }; + sources = import ./source/sources.nix { lib = self; }; + kernel = import ./source/kernel.nix { lib = self; }; + + platforms = self.systems.doubles; # back-compat aliases # TODO: these are not the same as system.platform, we should probably try and unify them + + inherit (builtins) add addErrorContext attrNames concatLists + deepSeq elem elemAt filter genericClosure genList getAttr + hasAttr head isAttrs isBool isInt isList isPath isString length + lessThan listToAttrs pathExists readFile replaceStrings seq + stringLength sub substring tail trace; + inherit (self.trivial) id const pipe concat or and xor bitAnd bitOr bitXor + bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max + importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum + info showWarnings nixpkgsVersion version isInOldestRelease + mod compare splitByAndCompare + functionArgs setFunctionArgs isFunction toFunction mirrorFunctionArgs + toHexString toBaseDigits inPureEvalMode; + inherit (self.fixedPoints) fix fix' converge extends composeExtensions + composeManyExtensions makeExtensible makeExtensibleWithCustomName; + inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath + getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs + filterAttrsRecursive foldlAttrs foldAttrs collect nameValuePair mapAttrs + mapAttrs' mapAttrsToList attrsToList concatMapAttrs mapAttrsRecursive + mapAttrsRecursiveCond genAttrs isDerivation toDerivation optionalAttrs + zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil + recursiveUpdate matchAttrs mergeAttrsList overrideExisting showAttrPath getOutput + getBin getLib getDev getMan chooseDevOutputs zipWithNames zip + recurseIntoAttrs dontRecurseIntoAttrs cartesianProduct cartesianProductOfSets + mapCartesianProduct updateManyAttrsByPath; + inherit (self.lists) singleton forEach foldr fold foldl foldl' imap0 imap1 + ifilter0 concatMap flatten remove findSingle findFirst any all count + optional optionals toList range replicate partition zipListsWith zipLists + reverseList listDfs toposort sort sortOn naturalSort compareLists take + drop sublist last init crossLists unique allUnique intersectLists + subtractLists mutuallyExclusive groupBy groupBy'; + inherit (self.strings) concatStrings concatMapStrings concatImapStrings + intersperse concatStringsSep concatMapStringsSep + concatImapStringsSep concatLines makeSearchPath makeSearchPathOutput + makeLibraryPath makeIncludePath makeBinPath optionalString + hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape + escapeShellArg escapeShellArgs + isStorePath isStringLike + isValidPosixName toShellVar toShellVars + escapeRegex escapeURL escapeXML replaceChars lowerChars + upperChars toLower toUpper addContextFrom splitString + removePrefix removeSuffix versionOlder versionAtLeast + getName getVersion + cmakeOptionType cmakeBool cmakeFeature + mesonOption mesonBool mesonEnable + nameFromURL enableFeature enableFeatureAs withFeature + withFeatureAs fixedWidthString fixedWidthNumber + toInt toIntBase10 readPathsFromFile fileContents; + inherit (self.stringsWithDeps) textClosureList textClosureMap + noDepEntry fullDepEntry packEntry stringAfter; + inherit (self.customisation) overrideDerivation makeOverridable + callPackageWith callPackagesWith extendDerivation hydraJob + makeScope makeScopeWithSplicing makeScopeWithSplicing'; + inherit (self.derivations) lazyDerivation optionalDrvAttr; + inherit (self.meta) addMetaAttrs dontDistribute setName updateName + appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio + hiPrioSet getLicenseFromSpdxId getExe getExe'; + inherit (self.filesystem) pathType pathIsDirectory pathIsRegularFile + packagesFromDirectoryRecursive; + inherit (self.sources) cleanSourceFilter + cleanSource sourceByRegex sourceFilesBySuffices + commitIdFromGitRepo cleanSourceWith pathHasContext + canCleanSource pathIsGitRepo; + inherit (self.modules) evalModules setDefaultModuleLocation + unifyModuleSyntax applyModuleArgsIfFunction mergeModules + mergeModules' mergeOptionDecls mergeDefinitions + pushDownProperties dischargeProperties filterOverrides + sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride + mkOptionDefault mkDefault mkImageMediaOverride mkForce mkVMOverride + mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions + mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule + mkRenamedOptionModule mkRenamedOptionModuleWith + mkMergedOptionModule mkChangedOptionModule + mkAliasOptionModule mkDerivedConfig doRename + mkAliasOptionModuleMD; + inherit (self.options) isOption mkEnableOption mkSinkUndeclaredOptions + mergeDefaultOption mergeOneOption mergeEqualOption mergeUniqueOption + getValues getFiles + optionAttrSetToDocList optionAttrSetToDocList' + scrubOptionValue literalExpression literalExample + showOption showOptionWithDefLocs showFiles + unknownModule mkOption mkPackageOption mkPackageOptionMD + mdDoc literalMD; + inherit (self.types) isType setType defaultTypeMerge defaultFunctor + isOptionType mkOptionType; + inherit (self.asserts) + assertMsg assertOneOf; + inherit (self.debug) traceIf traceVal traceValFn + traceSeq traceSeqN traceValSeq + traceValSeqFn traceValSeqN traceValSeqNFn traceFnSeqN + runTests testAllTrue; + inherit (self.versions) + splitVersion; + } + ); in lib