{ versionsPath }: let channelVersions = (import versionsPath); mkChannelSource = name: let channelVersion = builtins.getAttr name channelVersions; in builtins.fetchGit { # Descriptive name to make the store path easier to identify inherit name; inherit (channelVersion) url ref rev; }; nixPath = builtins.foldl' (path: elemName: let elem = builtins.getAttr elemName channelVersions; elemPath = (mkChannelSource elemName); suffix = if builtins.hasAttr "suffix" elem then elem.suffix else ""; in path + ":" + builtins.concatStringsSep "=" [ elemName elemPath ] + suffix ) "" (builtins.attrNames channelVersions); pkgs = import (mkChannelSource "nixpkgs") {}; in { inherit nixPath; channelSources = pkgs.writeText "channels.rc" '' export NIX_PATH=${nixPath} ''; }