How to override an emacs package src.url to fix 404

I’m re-installing my config after a logic-board failure and am having issues installing emacs.

It seems recently the elpa package spinner.el has been updated to 1.7.4.

A number of the packages I’m using in myEmacs = emacsWithPackages(epkgs: ...); here depend on spinner 1.7.3 which is available as an lz archive at https://elpa.gnu.org/packages/spinner-1.7.3.el.lz but NOT at https://elpa.gnu.org/packages/spinner-1.7.3.el that the derivations are attempting to resolve.

How do I override that package in my configuration?

myEmacs = emacsWithPackages (epkgs: 
  (with epkgs.elpaPackages; [...]) ++
  (with epkgs.melpaPackages; [...]) 
);  

The error is as follows:

  /nix/store/89pk8y2a9xd9cq1n8m1dbw83ikwaznbg-emacs-with-packages-27.2.drv
building '/nix/store/dspn730a93skv60bphfysyz5b7qikymf-spinner-1.7.3.el.drv'...

trying https://elpa.gnu.org/packages/spinner-1.7.3.el
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   275    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
curl: (22) The requested URL returned error: 404
error: cannot download spinner-1.7.3.el from any mirror
builder for '/nix/store/dspn730a93skv60bphfysyz5b7qikymf-spinner-1.7.3.el.drv' failed with exit code 1
cannot build derivation '/nix/store/i27dc8lmirjql751psnj4rnf10f9s8id-emacs-spinner-1.7.3.drv': 1 dependencies couldn't be built
building '/nix/store/48ppp1h6ikpcakxsr2s0py5f53r9d6wg-tablist-recipe.drv'...
cannot build derivation '/nix/store/89pk8y2a9xd9cq1n8m1dbw83ikwaznbg-emacs-with-packages-27.2.drv': 1 dependencies couldn't be built
error: build of '/nix/store/89pk8y2a9xd9cq1n8m1dbw83ikwaznbg-emacs-with-packages-27.2.drv' failed
1 Like

A bunch of people have the same problem (myself included) with doom-emacs. I’m new to the Emacs world, so my first idea was to report this to the nix-doom-emacs project: https://github.com/vlaci/nix-doom-emacs/issues/264 but for now, there hasn’t been any suggestions on how to workaround or fix this.

This is a known bug, caused by elpa not keeping history the way we’d like it to: ELPA packages are fetched from unstable url -> not reproducible · Issue #55 · nix-community/emacs2nix · GitHub

It needs some reviving.

The issue that sparked that one points to a workaround: Override a transitive emacs dependency - #4 by codygman

Personally I’ve been using unstable for these packages, since they’re usually not broken for long there and it’s less faff than managing overrides.

1 Like

Got a workaround, at least for doom-emacs,
but it should be similar for plain emacs config:

let
  spinner-lzip = builtins.fetchurl {
    url = "https://elpa.gnu.org/packages/spinner-1.7.3.el.lz";
    sha256 = "188i2r7ixva78qd99ksyh3jagnijpvzzjvvx37n57x8nkp8jc4i4";
  };
  doom-emacs = pkgs.callPackage <doom-emacs> {
    # Directory containing your config.el init.el and packages.el files
    doomPrivateDir = ./doom-emacs;

    emacsPackagesOverlay = self: super: {
      spinner = super.spinner.override {
        elpaBuild = args: super.elpaBuild (args // {
          src = pkgs.runCommandLocal "spinner-1.7.3.el" {} ''
            ${pkgs.lzip}/bin/lzip -d -c ${spinner-lzip} > $out
          '';
        });
      };
    };
  };
in {...}
1 Like

Thanks @Samae that’s gotten me closer.

I’ve tried to use something similar to what @codygman posted as a workaround Overriding a transitive emacs dependency - #4 as @TLATER suggested.

But what I’ve got isn’t quite working… yet…

# ~/.config/nixpkgs/config.nix
...
    myEmacsConfig = ./overlays/pkgs/emacs;
    myBaseDir = "${toString ./..}";

    emacsOverrides = self: super: rec {
      spinner = super.spinner.override {
        elpaBuild = args: super.elpaBuild (args // {
	  src = (builtins.fetchurl {
	    url = "https://elpa.gnu.org/packages/spinner-1.7.3.el.lz";
	    sha256 = "188i2r7ixva78qd99ksyh3jagnijpvzzjvvx37n57x8nkp8jc4i4";
	  });
	});
      };
    };

    myEmacs = (((pkgs.emacsPackagesGen pkgs.emacs).overrideScope' emacsOverrides).emacsWithPackages (epkgs: with epkgs;

      # CONFIG setup
      [
        (runCommand "default.el" {} ''
          mkdir -p $out/share/emacs/site-lisp
          cp ${myEmacsConfig}/*.el $out/share/emacs/site-lisp/

          if [ -d ${myBaseDir}/custom/emacs ]; then
            mkdir -p $out/share/emacs/site-lisp/custom
            cp ${myBaseDir}/custom/emacs/*.el $out/share/emacs/site-lisp/custom/
          fi
        '')
      ] ++

      [

      # elpa
      spinner
      ...
   ]
  ));
...
``

Error log...

% nix-env -iA nixpkgs.myEmacs
installing ‘emacs-with-packages-27.2’
these derivations will be built:
/nix/store/rp0kdv3q6x07zknvvgs4gbwzmxbbwkyj-zoom-window-recipe.drv
/nix/store/2jl6cym0ij1z7bj54cq0b33sdi7837qp-emacs-zoom-window-20201205.1038.drv
/nix/store/48ppp1h6ikpcakxsr2s0py5f53r9d6wg-tablist-recipe.drv
/nix/store/y2vcqiz31gxaw170av180b1g6rdc6diz-vterm-recipe.drv
/nix/store/4azniim7vwv6wcwfji52nqp1w6lxz9sd-emacs-vterm-20210618.1922.drv
/nix/store/72np6zris3n688g325w1p31h6200j9ss-emacs-tablist-20200427.2205.drv
/nix/store/9vxxbm25zv1yyn47cbfp37zl1z3hcqz0-yaml-mode-recipe.drv
/nix/store/pk3vnwkwdlh95fw8ymzxcbx78a9biqy8-emacs-yaml-mode-20210508.1641.drv
/nix/store/df55dxj5qbq6jcssbgnkl0yfy0a1r9kf-emacs-gitlab-ci-mode-20191022.2017.drv
/nix/store/7c34ng8f4861mn9lkq4cj8zgsz24xlw8-emacs-gitlab-ci-mode-flycheck-20190323.1829.drv
/nix/store/8bs7djam419llrqh7bbqdch18w54zd7w-emacs-docker-compose-mode-20200830.1336.drv
/nix/store/8nk25cmjdnfx634y4x8xkm088g3x6aab-emacs-git-timemachine-20210528.908.drv
/nix/store/8nkmqizqbp044rnsr2a0ypqm9llv4x3i-undo-tree-0.7.5.el.drv
/nix/store/9fx7c786jmhh3s29ri7x9k25m9849kas-yasnippet-recipe.drv
/nix/store/nzq9k2rhvlg862vjmxxzq0w4i1inpdhz-treemacs-recipe.drv
/nix/store/fb5zg7hg4fh1ghg93llxpdz78sph0zdl-emacs-treemacs-20210606.1918.drv
/nix/store/y9id333ns73qdd38bx9rgnxa06fi47nw-emacs-spinner-1.7.3.drv
/nix/store/n84904lskaj8rwm6bjrs201jrvq1hfhl-emacs-lsp-mode-20210630.2003.drv
/nix/store/kzn7zlk8cbx0qlnskbg8aiycgky81jhh-emacs-lsp-treemacs-20210618.1722.drv
/nix/store/i69w2nvbzzzabf0npgab3vx1vh6wbkdz-emacs-dap-mode-20210519.1554.drv
/nix/store/amxj8hq7q4pfqflhfcdlq122fbllgxbv-emacs-lsp-java-20210701.725.drv
/nix/store/xvkwpih20zw92k17dmlgn8q2jlsc0bww-use-package-recipe.drv
/nix/store/ariyk8kybh5i858c9lkxhijldcd4vw3c-emacs-use-package-20210207.1926.drv
/nix/store/i1wwg19267x40z70i79izcfvhp9h634g-emacs-helm-lsp-20210419.2014.drv
/nix/store/l31qirm9d3azhaq7grcmk4d8lgggwf2c-emacs-docker-20210624.1359.drv
/nix/store/l8yqkzmamg56wbw1daiwzpy6w9cazlin-treepy-recipe.drv
/nix/store/ns4fbiacfc3k9y6d0x8r0k5q33nk5sw3-emacs-treepy-20191108.2217.drv
/nix/store/cxk2fbkzlhqfp7j1fwmfzq5b08yy52yv-emacs-ghub-20210619.1405.drv
/nix/store/j12p1al0dqgcgx7cj5ff8y0d0d55f01c-yaml-recipe.drv
/nix/store/hgsmz79x6fnyi38imc9pgvamn9v33yag-emacs-yaml-20210625.528.drv
/nix/store/yr1nlzdxws7b0j0kzjj5fb3i1bhiyljp-emacs-magit-20210701.1554.drv
/nix/store/mxzx5ijv58bmisvmp8v31gvs62vhka5y-emacs-forge-20210628.736.drv
/nix/store/nrf9df26ms0qkcb76ps2c9qach4zfq4j-emacs-undo-tree-0.7.5.drv
/nix/store/q5m44r5iwmvkbs5rxwgvapsy0yww1s3w-emacs-yasnippet-20200604.246.drv
/nix/store/s2kk2nycjnmx3ykaf7s7wgnb8pcw3i6c-emacs-lsp-metals-20210615.1413.drv
/nix/store/xa09pq2w29r14mnrjcxpanpmmg1p0v93-emacs-lsp-ui-20210619.905.drv
/nix/store/mjrl96v0l5fcpcn525ww83s6l50bf69q-which-key-recipe.drv
/nix/store/xfidhaf5daplb03k69fbhnb3jam4fbd4-emacs-which-key-20210630.1217.drv
/nix/store/jh8gkgfhjlcyfnyzklk9p48zxwgpjrsm-emacs-packages-deps.drv
/nix/store/aqc1hqjlbzmshp6mc3rzihggaiink0hi-emacs-with-packages-27.2.drv
building ‘/nix/store/8nk25cmjdnfx634y4x8xkm088g3x6aab-emacs-git-timemachine-20210528.908.drv’…
unpacking sources
unpacking source archive /nix/store/dxxi87g4kc02d65pgn1mpa2k4xiqgz0c-source
source root is source
patching sources
configuring
no configure script, doing nothing
building
installing
INFO Scraping files for git-timemachine-autoloads.el…
INFO Scraping files for git-timemachine-autoloads.el…done
Checking /nix/store/jylgivgdjyq5jw8q68wgzpdb4kf3wyrs-emacs-git-timemachine-20210528.908/share/emacs/site-lisp/elpa/git-timemachine-20210528.908…
Compiling /nix/store/jylgivgdjyq5jw8q68wgzpdb4kf3wyrs-emacs-git-timemachine-20210528.908/share/emacs/site-lisp/elpa/git-timemachine-20210528.908/git-timemachine-autoloads.el…
Compiling /nix/store/jylgivgdjyq5jw8q68wgzpdb4kf3wyrs-emacs-git-timemachine-20210528.908/share/emacs/site-lisp/elpa/git-timemachine-20210528.908/git-timemachine-pkg.el…
Compiling /nix/store/jylgivgdjyq5jw8q68wgzpdb4kf3wyrs-emacs-git-timemachine-20210528.908/share/emacs/site-lisp/elpa/git-timemachine-20210528.908/git-timemachine.el…
define-transient-command' is an obsolete alias (as of Transient 0.3.0); use transient-define-prefix’ instead.
Done (Total of 1 file compiled, 2 skipped)
post-installation fixup
strip is /nix/store/bk80xfmnyv85jv4cvz81kgd77h7vljnl-cctools-binutils-darwin-949.0.1/bin/strip
patching script interpreter paths in /nix/store/jylgivgdjyq5jw8q68wgzpdb4kf3wyrs-emacs-git-timemachine-20210528.908
building ‘/nix/store/yr1nlzdxws7b0j0kzjj5fb3i1bhiyljp-emacs-magit-20210701.1554.drv’…
unpacking sources
unpacking source archive /nix/store/l6v2mgvyc36s3y39l5ngi2ajpf577vgf-source
source root is source
patching sources
configuring
no configure script, doing nothing
building
Copying files (->) and directories (=>)
from /private/tmp/nix-build-emacs-magit-20210701.1554.drv-0/working/magit/
to /private/tmp/nix-build-emacs-magit-20210701.1554.drv-0/magitwh3qBY/magit-20210701.1554
! lisp/magit-apply.el → magit-apply.el
! lisp/magit-autorevert.el → magit-autorevert.el
! lisp/magit-bisect.el → magit-bisect.el
! lisp/magit-blame.el → magit-blame.el
! lisp/magit-bookmark.el → magit-bookmark.el
! lisp/magit-branch.el → magit-branch.el
! lisp/magit-clone.el → magit-clone.el
! lisp/magit-commit.el → magit-commit.el
! lisp/magit-core.el → magit-core.el
! lisp/magit-diff.el → magit-diff.el
! lisp/magit-ediff.el → magit-ediff.el
! lisp/magit-extras.el → magit-extras.el
! lisp/magit-fetch.el → magit-fetch.el
! lisp/magit-files.el → magit-files.el
! lisp/magit-git.el → magit-git.el
! lisp/magit-gitignore.el → magit-gitignore.el
! lisp/magit-imenu.el → magit-imenu.el
! lisp/magit-log.el → magit-log.el
! lisp/magit-margin.el → magit-margin.el
! lisp/magit-merge.el → magit-merge.el
! lisp/magit-mode.el → magit-mode.el
! lisp/magit-notes.el → magit-notes.el
! lisp/magit-obsolete.el → magit-obsolete.el
! lisp/magit-patch.el → magit-patch.el
! lisp/magit-pkg.el → magit-pkg.el
! lisp/magit-process.el → magit-process.el
! lisp/magit-pull.el → magit-pull.el
! lisp/magit-push.el → magit-push.el
! lisp/magit-reflog.el → magit-reflog.el
! lisp/magit-refs.el → magit-refs.el
! lisp/magit-remote.el → magit-remote.el
! lisp/magit-repos.el → magit-repos.el
! lisp/magit-reset.el → magit-reset.el
! lisp/magit-sequence.el → magit-sequence.el
! lisp/magit-stash.el → magit-stash.el
! lisp/magit-status.el → magit-status.el
! lisp/magit-submodule.el → magit-submodule.el
! lisp/magit-subtree.el → magit-subtree.el
! lisp/magit-tag.el → magit-tag.el
! lisp/magit-transient.el → magit-transient.el
! lisp/magit-utils.el → magit-utils.el
! lisp/magit-wip.el → magit-wip.el
! lisp/magit-worktree.el → magit-worktree.el
! lisp/magit.el → magit.el
! lisp/git-rebase.el → git-rebase.el
! Documentation/magit.texi → magit.texi
! Documentation/AUTHORS.md → AUTHORS.md
LICENSE → LICENSE
Created /private/tmp/nix-build-emacs-magit-20210701.1554.drv-0/magitwh3qBY/magit-20210701.1554/magit.info
Removing /private/tmp/nix-build-emacs-magit-20210701.1554.drv-0/magitwh3qBY/magit-20210701.1554/magit.texi
installing
Parsing tar file…
Parsing tar file…done
Parsing tar file…
Parsing tar file…done
Extracting… \
Extracting…done
INFO Scraping files for magit-autoloads.el…
INFO Scraping files for magit-autoloads.el…done
Checking /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/git-rebase.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-apply.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-autoloads.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-autorevert.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-bisect.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-blame.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-bookmark.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-branch.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-clone.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-commit.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-core.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-diff.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-ediff.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-extras.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-fetch.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-files.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-git.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-gitignore.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-imenu.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-log.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-margin.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-merge.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-mode.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-notes.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-obsolete.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-patch.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-pkg.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-process.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-pull.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-push.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-reflog.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-refs.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-remote.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-repos.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-reset.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-sequence.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-stash.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-status.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-submodule.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-subtree.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-tag.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-transient.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-utils.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-wip.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit-worktree.el…
Compiling /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554/share/emacs/site-lisp/elpa/magit-20210701.1554/magit.el…
Done (Total of 44 files compiled, 2 skipped)
Parsing tar file…
Parsing tar file…done
post-installation fixup
strip is /nix/store/bk80xfmnyv85jv4cvz81kgd77h7vljnl-cctools-binutils-darwin-949.0.1/bin/strip
patching script interpreter paths in /nix/store/5hrkv8cyi6ly04rznvmm7wgvg2g87mgm-emacs-magit-20210701.1554
building ‘/nix/store/y9id333ns73qdd38bx9rgnxa06fi47nw-emacs-spinner-1.7.3.drv’…
installing
Lzip uncompressing 03z11ncdnjdsd0bw2ib6dwxl0fap10pw-spinner-1.7.3.el.lz…
Opening input file: error Lzip uncompressing 03z11ncdnjdsd0bw2ib6dwxl0fap10pw-spinner-1.7.3.el.lz, /nix/store/03z11ncdnjdsd0bw2ib6dwxl0fap10pw-spinner-1.7.3.el.lz
builder for ‘/nix/store/y9id333ns73qdd38bx9rgnxa06fi47nw-emacs-spinner-1.7.3.drv’ failed with exit code 255
cannot build derivation ‘/nix/store/aqc1hqjlbzmshp6mc3rzihggaiink0hi-emacs-with-packages-27.2.drv’: 1 dependencies couldn’t be built
error: build of ‘/nix/store/aqc1hqjlbzmshp6mc3rzihggaiink0hi-emacs-with-packages-27.2.drv’ failed

Thanks @Samae — I should’ve taken yours almost verbatim!
Now I just need to make it a higher priority than home-manager installed emacs / ctags, but that’s unrelated.

myEmacsConfig = ./overlays/pkgs/emacs;
    myBaseDir = "${toString ./..}";

    spinner-file = "spinner-1.7.3.el";

    spinner-lzip = builtins.fetchurl {
      url = "https://elpa.gnu.org/packages/${spinner-file}.lz";
      sha256 = "188i2r7ixva78qd99ksyh3jagnijpvzzjvvx37n57x8nkp8jc4i4";
    };

    emacsOverrides = self: super: rec {
      spinner = super.spinner.override {
        elpaBuild = args: super.elpaBuild (args // {
	  src = pkgs.runCommandLocal spinner-file {} ''
	    ${pkgs.lzip}/bin/lzip -d -c ${spinner-lzip} > $out
	  '';
	});
      };
    };

    myEmacs = (((pkgs.emacsPackagesGen pkgs.emacs).overrideScope' emacsOverrides).emacsWithPackages (epkgs: with epkgs; [...]));

I wonder — given that elpa has had this as an ongoing issue — if there’s a generic solution?

What if if foo.el starts producing a 404, an overlay could fall back to foo.el.lz?

Obviously need to be able to handle sha256 (either before/after unarchiving), but could that shield emacs configurations from these kinds of issues?

That was discussed in the issues :slight_smile:

The other option is building from elpa git instead of the elpa archive, though that isn’t the most convenient thing. Or waiting for elpa to offer .lz archives of everything.

In general, transparent source mirrors seem like they’d be a good idea for a nix feature. We just need to get some people together who are willing to try and upstream that.