let pkgs = import (builtins.fetchGit { name = "pinned-nixpkgs-21.11"; url = "https://github.com/NixOS/nixpkgs/"; ref = "refs/heads/nixos-21.11"; rev = "860b56be91fb874d48e23a950815969a7b832fbc"; }) {}; # TODO: This is where I'd put our IPFS plugin (if we had one!!) ipfs = import (pkgs.fetchFromGitHub { owner = "obsidiansystems"; repo = "go-ipfs-swh-plugin"; rev = "873e629ca345463a9b7aa80d53420593dbe9bdb2"; sha256 = "1knhqiyxjx7pnc41pl2qngfjhdgcgp7d1k58gbjwaab2bljh6dd7"; }) { inherit pkgs; }; # CID representing the SWHID # https://archive.softwareheritage.org/browse/snapshot/c7c108084bc0bf3d81436bf980b46e98bd338453/directory/ # (no particular attachment to darkroom, it was just the example # snapshot from the SWHID docs) swhid_cid = "znDfqECWqk8VqwNL2ayyYnvJdwDN9qYqa2"; # CID pointing to GNU Hello on Git (taken from the Nix-IPFS # integration docs) known_good_cid = "baf4bcfgi2up65zpzhg2fmyi52kecqfhsaevbaha"; in pkgs.nixosTest { system = "x86_64-linux"; machine = { config, pkgs, ... }: { networking.firewall.enable = false; networking.extraHosts = '' 0.0.0.0 archive.softwareheritage.org ''; services.ipfs = { enable = true; apiAddress = "/ip4/127.0.0.1/tcp/2324"; package = ipfs; }; }; skipLint = true; # TODO: Add bridge node (when we have a bridge) testScript = '' import json import sys machine.wait_for_unit('ipfs') print(machine.wait_until_succeeds('ipfs swarm peers | grep ip4')) machine.succeed( 'ipfs --api /ip4/127.0.0.1/tcp/2324 dag get "${known_good_cid}"' ) # The SWHID plugin is loaded machine.succeed( 'journalctl -u ipfs | grep SWHID' ) # Hangs forever because IPFS doesn't understand our CID machine.fail( 'timeout 5 ipfs dag get ${swhid_cid}' ) # SWH Archive servers are inaccessible from this machine machine.fail( 'curl https://archive.softwareheritage.org' ) ''; }