anchor.diff:  , username ? "" , password ? ""
   }:
   
  -assert releaseType == "alpha" || releaseType == "headless" || releaseType == "demo";
  +assert releaseType == "alpha"
  +    || releaseType == "headless"
  +    || releaseType == "demo";
   
  -with stdenv.lib;
   let
  -  version = if releaseType != "demo" then "0.15.33" else "0.15.33";
   
  -  arch = if stdenv.system == "x86_64-linux" then {
  -    inUrl = "linux64";
  -    inTar = "x64";
  -  } else if stdenv.system == "i686-linux" then {
  -    inUrl = "linux32";
  -    inTar = "i386";
  -  } else abort "Unsupported platform";
  -
  -  authenticatedFetch = callPackage ./fetch.nix { inherit username password; };
  -
  -  fetch = rec {
  -    url = "https://www.factorio.com/get-download/${version}/${releaseType}/${arch.inUrl}";
  -    name = "factorio_${releaseType}_${arch.inTar}-${version}.tar.xz";
  -    x64 = {
  -      headless =           fetchurl { inherit name url; sha256 = "17x0dlmfd7jwmpmn5i8wag28rl01iysqz3ri6g6msxjnvj5l6byn"; };
  -      alpha    = authenticatedFetch { inherit name url; sha256 = "1m2r0n99ngqq47s9fzr09d347i15an6x9v1qlij8yf8w7lyrdy4z"; };
  -      demo     =           fetchurl { inherit name url; sha256 = "03nwn4838yhqq0r76pf2m4wxi32rsq0knsxmq3qq4ycji89q1dyc"; };
  +  # NB If you nix-prefetch-url any of these, be sure to add a --name arg,
  +  #    where the ultimate "_" (before the version) is changed to a "-".
  +  binDists = {
  +    x86_64-linux = let bdist = bdistForArch { inUrl = "linux64"; inTar = "x64"; }; in {
  +      alpha    = bdist { sha256 = "1m2r0n99ngqq47s9fzr09d347i15an6x9v1qlij8yf8w7lyrdy4z"; fetcher = authenticatedFetch; };
  +      headless = bdist { sha256 = "17x0dlmfd7jwmpmn5i8wag28rl01iysqz3ri6g6msxjnvj5l6byn"; };
  +      demo     = bdist { sha256 = "03nwn4838yhqq0r76pf2m4wxi32rsq0knsxmq3qq4ycji89q1dyc"; };
       };
  -    i386 = {
  -      headless = abort "Factorio 32-bit headless binaries are not available for download.";
  -      alpha    = abort "Factorio 32-bit client is not available for this version.";
  -      demo     = abort "Factorio 32-bit demo binaries are not available for download.";
  +    i686-linux = let bdist = bdistForArch { inUrl = "linux32"; inTar = "i386"; }; in {
  +      alpha    = bdist { sha256 = "0nnfkxxqnywx1z05xnndgh71gp4izmwdk026nnjih74m2k5j086l"; version = "0.14.23"; nameMut = asGz; };
  +      headless = bdist { };
  +      demo     = bdist { };
       };
     };
  +  actual = binDists.${stdenv.system}.${releaseType};
  +
  +  bdistForArch = arch: { sha256 ? null
  +                       , version ? "0.15.33"
  +                       , fetcher ? fetchurl
  +                       , nameMut ? x: x
  +                       }:
  +    if sha256 == null then
  +      abort "Factorio ${releaseType}-${arch.inTar} binaries are not (and were never?) available to download"
  +    else {
  +      inherit version arch;
  +      src = fetcher {
  +        inherit sha256;
  +        url = "https://www.factorio.com/get-download/${version}/${releaseType}/${arch.inUrl}";
  +        name = nameMut "factorio_${releaseType}_${arch.inTar}-${version}.tar.xz";
  +      };
  +    };
  +  authenticatedFetch = callPackage ./fetch.nix { inherit username password; };
  +  asGz = builtins.replaceStrings [".xz"] [".gz"];
  +
   
     configBaseCfg = ''
       use-system-read-write-data-directories=false
  
positive.code: 
    modDir = factorio-utils.mkModDirDrv mods;
  
    base = {
      name = "factorio-${releaseType}-${version}";
  
      src = fetch.${arch.inTar}.${releaseType};
  
      preferLocalBuild = true;
      dontBuild = true;
  
negative.code:       '';
      };
    };
  
  in stdenv.mkDerivation (releases.${releaseType})
  