jiebi/CodeConvo huggingface dataset:
Code change:
environment.etc = { "NetworkManager/NetworkManager.conf".source = configFile; <ins> # The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets; # see https://github.com/NixOS/nixpkgs/issues/64965 "ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; </ins> } // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {

Related discussion:
text: Phew, a big title! Trying to write down as much as I can before I forget. First, the last part: If doesn't exist, will show failing like: fixes this problem. NixOS should probably create this file. I'm not sure if this file should be writable or not, when it exists, I have only ever seen it contain: I don't know what writes that there. Now for can't edit L2TP VPNs, but (GUI) can, even though nm-applet doesn't work under sway. If you see this in the system logs: try enabling "legacy proposals" in nm-connection-editor's IPSec Settings and try again. system: host os: multi-user?: sandbox: version: channels(root): channels(grahamc): nixpkgs:
Side note, how do I know for sure fixes it? I erased my dozens of times nailing it down, reproducing it to exactly this.
I think the strongswan module creates that file and the actual L2TP plugin appends that line to this file.
Nice find that the strongswan module does create that file! I don't have the strongswan module enabled, it seems something else in the stack would periodically create this file?
I'm not sure what does create it eventually, but it appears the plugin expects the file to exist so we should just do exactly that. It doesn't help that it expects it to be mutable, so maybe we can handle this within the NM module to add more secrets. Though it would probably duplicate what the strongswan module does.
^ does this make sense to you?
So I just remembered about this module I have: maybe instead we should have the networkmanager do when it detects the l2tp plugin but I am not sure how to do that. Maybe we would need to introduce a new option in networkmanager to add the nm-l2tp plugin and create the file. I tend to connect physically to the private network and only as a last resort rely to nm-l2tp since it tends to not work regularly and I am not sure if it's blocked by the network or some l2tp breakage.
Code change:
environment.etc = { "NetworkManager/NetworkManager.conf".source = configFile; <ins> # The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets; # see https://github.com/NixOS/nixpkgs/issues/64965 "ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; </ins> } // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {

Related discussion:
text: We could add an option to networkmanager in the same way there's one for strongswan there
Was there ever any follow up on :
Hello, I'm a bot and I thank you in the name of the community for opening this issue. To help our human contributors focus on the most-relevant reports, I check up on old issues to see if they're still relevant. This issue has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human. The community would appreciate your effort in checking if the issue is still valid. If it isn't, please close it. If the issue persists, and you'd like to remove the stale label, you simply need to leave a comment. Your comment can be as simple as "still important to me". If you'd like it to get more attention, you can ask for help by searching for maintainers and people that previously touched related code and @ mention them in a comment. You can use or on the relevant files to find them. Lastly, you can always ask for help at or at .
i guess, it's still relevant, maybe not so urgent. this helped me big time:
I marked this as stale due to inactivity. &rarr;
I just ran into this on 21.05. Seeing a log like this: <details<summaryjournalctl log when starting vpn</summary<pre<codecharon[2059]: 00[CFG] loading ca certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/cacerts' charon[2059]: 00[CFG] loading aa certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/aacerts' charon[2059]: 00[CFG] loading ocsp signer certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.
Code change:
environment.etc = { "NetworkManager/NetworkManager.conf".source = configFile; <ins> # The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets; # see https://github.com/NixOS/nixpkgs/issues/64965 "ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; </ins> } // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {

Related discussion:
text: d/ocspcerts' charon[2059]: 00[CFG] loading attribute certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/acerts' charon[2059]: 00[CFG] loading crls from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/crls' charon[2059]: 00[CFG] loading secrets from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.secrets' charon[2059]: 00[CFG] expanding file expression '/etc/ipsec.secrets' failed charon[2059]: 00[CFG] opening triplet file /nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan- failed: No such file or directory charon[2059]: 00[CFG] loaded 0 RADIUS server configurations charon[2059]: 00[CFG] no script for ext-auth script defined,
Code change:
environment.etc = { "NetworkManager/NetworkManager.conf".source = configFile; <ins> # The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets; # see https://github.com/NixOS/nixpkgs/issues/64965 "ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; </ins> } // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {

Related discussion:
text: disabled charon[2059]: 00[LIB] loaded plugins: charon unbound pkcs11 aesni aes des rc2 sha2 sha1 md5 mgf1 rdrand random nonce x509 revocation constraints acert pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey dnscert pem openssl af-alg fips-prf gmp curve25519 chapoly xcbc cmac hmac curl attr kernel-netlink resolve socket-default connmark forecast farp stroke vici updown eap-identity eap-sim eap-sim-pcsc eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap-mschapv2 eap-radius xauth-generic xauth-eap xauth-pam dhcp counters charon[2059]: 00[JOB] spawning 16 worker threads ipsecstarter[2058]: charon (2059) started after 660 ms charon[2059]: 11[CFG] received stroke: add connection '-ebef-4658-8991-' charon[2059]: 11[CFG] configuration '-ebef-4658-8991-' charon[2059]: 13[CFG] rereading secrets charon[2059]: 13[CFG] loading secrets from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.secrets' charon[2059]: 13[CFG] expanding file expression '/etc/ipsec.secrets' failed charon[2059]: 14[CFG] received stroke: initiate '-ebef-4658-8991-' charon[2059]: 15[IKE] initiating Main Mode IKESA -ebef-4658-8991-[1] to 123.111.111.111 charon[2059]: 15[IKE] initiating Main Mode IKESA -ebef-4658-8991-[1] to 123.111.111.
Code change:
environment.etc = { "NetworkManager/NetworkManager.conf".source = configFile; <ins> # The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets; # see https://github.com/NixOS/nixpkgs/issues/64965 "ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; </ins> } // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {

Related discussion:
text: 111 charon[2059]: 15[ENC] generating IDPROT request 0 [ SA V V V V V ] charon[2059]: 15[NET] sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (304 bytes) charon[2059]: 03[NET] received packet: from 123.111.111.111[500] to 192.168.1.11[500] (204 bytes) charon[2059]: 03[ENC] parsed IDPROT response 0 [ SA V V V V V V ] charon[2059]: 03[IKE] received NAT-T (RFC 3947) vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-03 vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-02n vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-02 vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-00 vendor ID charon[2059]: 03[IKE] received DPD vendor ID charon[2059]: 03[CFG] selected proposal: IKE:AESCBC128/HMACSHA196/PRFHMACSHA1/MODP2048 charon[2059]: 03[ENC] generating IDPROT request 0 [ KE No NAT-D NAT-D ] charon[2059]: 03[NET] sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (372 bytes) charon[2059]: 04[NET] received packet: from 123.111.111.111[500] to 192.168.1.11[500] (356 bytes) charon[2059]: 04[ENC] parsed IDPROT response 0 [ KE No NAT-D NAT-D ] charon[2059]: 04[IKE] no shared key found for 192.168.1.11 - 123.111.111.
Code change:
environment.etc = { "NetworkManager/NetworkManager.conf".source = configFile; <ins> # The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets; # see https://github.com/NixOS/nixpkgs/issues/64965 "ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; </ins> } // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {

Related discussion:
text: 111 charon[2059]: 04[ENC] generating INFORMATIONALV1 request [ N(INVALKE) ] charon[2059]: 04[NET] sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (56 bytes) NetworkManager[2277]: initiating Main Mode IKESA -ebef-4658-8991-[1] to 123.111.111.111 NetworkManager[2277]: generating IDPROT request 0 [ SA V V V V V ] NetworkManager[2277]: sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (304 bytes) NetworkManager[2277]: received packet: from 123.111.111.111[500] to 192.168.1.11[500] (204 bytes) NetworkManager[2277]: parsed IDPROT response 0 [ SA V V V V V V ] NetworkManager[2277]: received NAT-T (RFC 3947) vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-03 vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-02n vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-02 vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-00 vendor ID NetworkManager[2277]: received DPD vendor ID NetworkManager[2277]: selected proposal: IKE:AESCBC128/HMACSHA196/PRFHMACSHA1/MODP2048 NetworkManager[2277]: generating IDPROT request 0 [ KE No NAT-D NAT-D ] NetworkManager[2277]: sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (372 bytes) NetworkManager[2277]: received packet: from 123.111.111.111[500] to 192.168.1.11[500] (356 bytes) NetworkManager[2277]: parsed IDPROT response 0 [ KE No NAT-D NAT-D ] NetworkManager[2277]: no shared key found for 192.168.1.11 - 123.111.111.
Code change:
environment.etc = { "NetworkManager/NetworkManager.conf".source = configFile; <ins> # The networkmanager-l2tp plugin expects /etc/ipsec.secrets to include /etc/ipsec.d/ipsec.nm-l2tp.secrets; # see https://github.com/NixOS/nixpkgs/issues/64965 "ipsec.secrets".text = '' include ipsec.d/ipsec.nm-l2tp.secrets ''; </ins> } // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {

Related discussion:
text: 111 NetworkManager[2277]: generating INFORMATIONALV1 request [ N(INVALKE) ] NetworkManager[2277]: sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (56 bytes) NetworkManager[2277]: establishing connection '-ebef-4658-8991-' failed NetworkManager[2283]: Stopping strongSwan IPsec. charon[2059]: 00[DMN] signal of type SIGINT received. Shutting down ipsecstarter[2058]: child 2059 (charon) has quit (exit code 0) ipsecstarter[2058]: ipsecstarter[2058]: charon stopped after 200 ms ipsecstarter[2058]: ipsec starter stopped nm-l2tp-service[2039]: gdbusmethodinvocationtake_error: assertion 'error != NULL' failed NetworkManager[954]: <warn[.6803] vpn-connection[0x24c60a0,-ebef-4658-8991-,"my-l2tp-vpn",0]: VPN connection: failed to connect: 'Message recipient disconnected from message bus without replying' .nm-applet-wrap[1470]: Failed to show notification: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files </pre</code</detailsRunning the following command fixed my error and allowed me to connect: The networking part of my only has .
This still appears relevant in 21.11. Adding this (as mentioned above) to my config appears to get an L2TP and IPSec VPN working with NetworkManager:
Still relevant in 22.05. I am confirming that with a clean install, trying to set up L2TP/IPsec VPNs fail with the following indicator: fixed the issue for me straight away as well.
Fix in
Code change:
btrfs = callPackage ../development/python-modules/btrfs { }; <del> btrfsutil = toPythonModule (pkgs.btrfs-progs.override { python3 = self.python; }); </del> <ins> btrfsutil = callPackage ../development/python-modules/btrfsutil { }; </ins> btsocket = callPackage ../development/python-modules/btsocket { };

Related discussion:
text: Python module, corresponding to the package and exposing its functionality in Python programs, fails to import, despite being included in . module is imported successfully. n/a <!-- Please @ people who are in the list of the offending package or module. If in doubt, check for whoever last touched something. --- (as maintainer) (as the one who exposed the Python bindings) Please run and paste the result.
Note: it seems like the module doesn't work even on commits that introduced it properly... To verify, run in a Nixpkgs checkout:
Yeah, I screwed up testing this. btrfs-progs doesn't propagate python, so I was using my system (non-NixOS) Python installation without noticing. should fix it.
Code change:
<ins> { buildPythonPackage, fetchPypi, lib, pyudev, }: buildPythonPackage rec { pname = "usb-monitor"; version = "1.21"; src = fetchPypi { inherit version; pname = "usb_monitor"; hash = "sha256-M+BUmbNxQWcULFECexTnp55EZiJ6y3bYCEtSwqKldAk="; }; dependencies = [ pyudev ]; # has no tests doCheck = false; pythonImportsCheck = [ "usbmonitor" ]; meta = { description = "Cross-platform library for USB device monitoring"; homepage = "https://github.com/Eric-Canas/USBMonitor"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ sifmelcara ]; platforms = lib.platforms.linux; }; } </ins>

Related discussion:
text: Project description As discussed in is now EOL and the dev's have moved their effort to . As per the in order for it to work specific need to be set up. We can probably do something similar to what we do for the expression: Metadata homepage URL: source URL: license: GPL3 platforms: linux Add a :+1: [reaction] to [issues you find important]. [reaction]: [issues you find important]:
For people who subscribed to this issue: I opened to add streamcontroller
Code change:
for program in $out/bin/*; do wrapProgram $program  ''${qtWrapperArgs[@]}  <del> ''${gappsWrapperArgs[@]}  </del> --prefix PYTHONPATH : $PYTHONPATH  --prefix PATH : ${poppler_utils.out}/bin done

Related discussion:
text: When using file picker in calibre e.g. on first launch after install that pops up file picker to select library path or by clicking "Add books" in menu calibre will crash with error Steps to reproduce the behavior: not yet crashed - select "Add books" item in menu Calibre should work without issues From i figured adding to solves problem, so running it like this works: Please run and paste the result.
Code change:
github = "wunderbrick"; githubId = 52174714; }; <ins> wyndon = { email = "72203260+wyndon@users.noreply.github.com"; matrix = "@wyndon:envs.net"; github = "wyndon"; githubId = 72203260; name = "wyndon"; }; </ins> wyvie = { email = "elijahrum@gmail.com"; github = "wyvie";

Related discussion:
text: Project description httm prints the size, date and corresponding locations of available unique versions (deduplicated by modify time and size) of files residing on ZFS snapshots, but can also be used interactively to view and restore such files. httm might change the way you use ZFS snapshots (because ZFS isn't designed for finding for unique file versions) or the Time Machine concept (because httm is very fast!). Metadata homepage URL: source URL: license: Mozilla Public License 2.0 platforms: unix, linux, darwin
Oh great thanks! Searched first but missed this.
Code change:
sub getActiveUnits { # FIXME: use D-Bus or whatever to query this, since parsing the # output of list-units is likely to break. <del> my $lines = `LANG= systemctl list-units --full --no-legend`; </del> <ins> # Use current version of systemctl binary before daemon is reexeced. my $lines = `LANG= /run/current-system/sw/bin/systemctl list-units --full --no-legend`; </ins> my $res = {}; foreach my $line (split 'n', $lines) { chomp $line;

Related discussion:
text: When executing switch-to-configuration in a pure environment it fails: I am calling switch-to-configuration via systemd-run to active a new profile using the Hail update tool. The actual executed script is as follows: Actual output: <preactivating the configuration... perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LCALL = (unset), LANG = "enUS.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). setting up /etc... perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LCALL = (unset), LANG = "enUS.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). setting up tmpfiles Too few arguments. sh: systemctl: command not found </preThe script works if I pass on the PATH and LOCALE_ARCHIVE environment variables: System: (NixOS: 17.09pre-git (Hummingbird)) Nix version: nix-env (Nix) 1.11.13 Nixpkgs version: nixos-unstable (Commit ) Sandboxing enabled: no (Related Hail issue: )
Code change:
<ins> { lib , rustPlatform , fetchFromGitHub , stdenv , darwin }: rustPlatform.buildRustPackage rec { pname = "gdrive"; version = "3.9.0"; src = fetchFromGitHub { owner = "glotlabs"; repo = "gdrive"; rev = version; hash = "sha256-vWd1sto89U2ZJWZZebPjrbMyBjZMs9buoPEPKocDVnY="; }; cargoLock = { lockFile = ./Cargo.lock; outputHashes = { "google-apis-common-5.0.2" = "sha256-E4ON66waUzp4qqpVWTFBD0+M2V80YlYmsewEYZygTuE="; }; }; buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; meta = with lib; { description = "Google Drive CLI Client"; homepage = "https://github.com/glotlabs/gdrive"; changelog = "https://github.com/glotlabs/gdrive/releases/tag/${src.rev}"; license = licenses.mit; maintainers = with maintainers; [ figsoda ]; }; } </ins>

Related discussion:
text: Project description To interact with Google Drive via the command line, there are and , both no longer maintained and now in my experience unable to authenticate with Google. still works, but it only targets public files and folders. There is a spiritual successor / fork of gdrive (2): gdrive 3 Metadata homepage URL: source URL: license: mit platforms: unix
Code change:
# This file is read for all shells. # Only execute this file once per shell. <del> # But don't clobber the environment of interactive non-login children! </del> if [ -n "$__ETC_ZSHENV_SOURCED" ]; then return; fi <del> export __ETC_ZSHENV_SOURCED=1 </del> <ins> __ETC_ZSHENV_SOURCED=1 </ins> if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]; then . ${config.system.build.setEnvironment}

Related discussion:
text: Describe the bug When using mosh/tmux is first read by the login shell that spawns mosh-server, which sets . The actual user shell spawned by mosh will therefor ignore this file and not set its fpath. For that reason all system provided completion functions are ignored.
This bug was introduced by in who changed this variable to . What was the reasoning for not changing the environment of interactive non-login shells?
Um, this was six years ago, but I will attempt to answer the question. :sweat_smile: Consider this scenario: log in and the shell environment is initialized. make some local changes to the environment, and export them. open a sub-shell and the shell environment is re-initialized. changes made in the parent shell environment are not present in the sub-shell, as one would expect. Basically, the zsh initialization process would clobber any environment that you tried to propagate from a parent shell into a child sub-shell.
Currently zshenv by default only set fpath and HELPDIR without exporting them. A parent shell would also not set those variables usually as they are shell local. It also sources a file called set-environment but this is protected by an environment variable called . Hence any modification done by the parent shell should persist as long as NIXOSSETENVIRONMENTDONE is not unset. This behavior deviates from what we do in bashrc and breaks common setups such as tmux/mosh or screen. Hence I would revert it.
I don't think, at that time, this worked as you describe, but it was six years ago, and I haven't used zsh in years anyway, so my memory is not entirely trustworthy. If reverting my commit fixes mosh and tmux, and doesn't obviously break anything else, then go for it!
Code change:
idea-community = buildIdea rec { name = "idea-community-${version}"; <del> version = "2019.3.4"; /* updated by script */ </del> <ins> version = "2020.1"; /* updated by script */ </ins> description = "Integrated Development Environment (IDE) by Jetbrains, community edition"; license = stdenv.lib.licenses.asl20; src = fetchurl { url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz"; <del> sha256 = "1kspj5a9z6smcgrfxdylvc0y53s7y6jv7ckfhmbkvplmrj0h0wd7"; /* updated by script */ </del> <ins> sha256 = "1rgqr7fn1sy0zbkfmrw3ll8jps345br3y4aqhynyr48mxiwi4c7s"; /* updated by script */ </ins> }; wmClass = "jetbrains-idea-ce"; update-channel = "IntelliJ IDEA RELEASE";

Related discussion:
text: Please update Goland to a current version. The Current Version is now 2020.1 Thx and Greetz
Code change:
<del> { lib, stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl , xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, qtwebsockets, xkeyboard_config , alsa-lib, libpulseaudio ? null, libredirect, quazip, which, unzip, perl, llvmPackages </del> <ins> { lib, stdenv, fetchurl, fetchzip, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl, xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, qtwebsockets, xkeyboard_config, alsa-lib, libpulseaudio ? null, libredirect, quazip, which, perl, llvmPackages, </ins> }: let

Related discussion:
text: Steps to reproduce the behavior: try to install/build the package using nix-shell or nixos the Domain is no longer configured. Teamspeak Download Pages redirects to this place: Please run and paste the result. Add a :+1: [reaction] to [issues you find important]. [reaction]: [issues you find important]:
You might want to check out
Not merged yet
As a workaround, until this is fixed in nixpkgs: The file is still available at the Internet Archive. You can fetch it from there and write it into the store, with something like this: