diff --git a/mach_nix/nix/CONDA_CHANNELS.json b/mach_nix/nix/CONDA_CHANNELS.json index 0d72a13..9fcfd65 100644 --- a/mach_nix/nix/CONDA_CHANNELS.json +++ b/mach_nix/nix/CONDA_CHANNELS.json @@ -1,8 +1,8 @@ { "url": "https://github.com/davhau/conda-channels", - "rev": "25d1eb5b42719e51821a043a6504c792400f23b4", + "rev": "21371cb199615f3e3ff468fe8c756e30fe74ce45", "date": "2020-11-20T14:00:42+00:00", - "sha256": "10jvzmbqkcy4706zsb4gva1d1z7vin7azarjia1jrxfxappw6gng", + "sha256": "", "fetchSubmodules": false, - "indexSha256": "1rb24vvniw2ryz7fjwk1ra852k9gg9f9i65gis03w9jyxgprpwj1" + "indexSha256": "0grj7v376cwszqcb53dmbgbj53wmi5pzvxrcifmxmmh6r845bid7" } diff --git a/mach_nix/nix/conda-channels.nix b/mach_nix/nix/conda-channels.nix index 4646c89..29f760a 100644 --- a/mach_nix/nix/conda-channels.nix +++ b/mach_nix/nix/conda-channels.nix @@ -32,25 +32,39 @@ let sha256 = condaDataSha256; })); - registryChannels = mapAttrs' (filepath: hash: + registryChannels = foldl' (a: b: recursiveUpdate a b) {} (mapAttrsToList (path: sha256: let - split = splitString "/" filepath; + split = splitString "/" path; chan = elemAt split 1; - sys = removeSuffix ".json" (tail split); - in - nameValuePair - chan - (map (sys: (builtins.fetchurl { - url = "https://raw.githubusercontent.com/${repoOwner}/${repoName}/${condaDataRev}/${chan}/${sys}.json"; - sha256 = channelRegistry."./${chan}/${sys}.json"; - })) [ systemMap."${system}" "noarch" ]) - ) channelRegistry; + file = last split; + sys = head (splitString "." file); + part = elemAt (splitString "." file) 1; + in { + "${chan}" = { + "${sys}" = { + "${part}" = sha256; + }; + }; + } + ) channelRegistry); - _registryChannels = filterAttrs (chan: json: elem chan usedChannels) registryChannels; + channelFiles = chan: flatten (forEach [ systemMap."${system}" "noarch" ] (sys: + if registryChannels ? "${chan}"."${sys}" then + mapAttrsToList (part: sha256: builtins.fetchurl { + url = "https://raw.githubusercontent.com/${repoOwner}/${repoName}/${condaDataRev}/channels/${chan}/${sys}.${part}.json"; + sha256 = channelRegistry."channels/${chan}/${sys}.${part}.json"; + }) registryChannels."${chan}"."${sys}" + else + [] + )); + + _selectedRegistryChannels = + + genAttrs usedChannels (chan: channelFiles chan); _condaChannelsExtra = filterAttrs (chan: json: elem chan usedChannels) condaChannelsExtra; - allCondaChannels = (_registryChannels // _condaChannelsExtra); + allCondaChannels = (_selectedRegistryChannels // _condaChannelsExtra); condaChannelsJson = pkgs.writeText "conda-channels.json" (toJSON allCondaChannels);