{ 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.concatStringsSep ":" ( builtins.map ( elemName: let elem = builtins.getAttr elemName channelVersions; elemPath = mkChannelSource elemName; suffix = if builtins.hasAttr "suffix" elem then elem.suffix else ""; in builtins.concatStringsSep "=" [ elemName elemPath ] + suffix ) (builtins.attrNames channelVersions) ); pkgs = import (mkChannelSource "nixpkgs") { }; in { inherit nixPath; channelSources = pkgs.writeText "channels.rc" '' export NIX_PATH=${nixPath} ''; }