diff --git a/pkgs/build-support/emacs/wrapper.nix b/pkgs/build-support/emacs/wrapper.nix index 7a85cfa1ed4f..7be4d21bfa8d 100644 --- a/pkgs/build-support/emacs/wrapper.nix +++ b/pkgs/build-support/emacs/wrapper.nix @@ -51,9 +51,11 @@ stdenv.mkDerivation { inherit emacs explicitRequires; phases = [ "installPhase" ]; installPhase = '' - mkdir -p $out/bin - mkdir -p $out/share/emacs-with-packages/bin - mkdir -p $out/share/emacs-with-packages/site-lisp + readonly SHARE="share/emacs-with-packages" + + mkdir -p "$out/bin" + mkdir -p "$out/$SHARE/bin" + mkdir -p "$out/$SHARE/site-lisp" local requires for pkg in $explicitRequires; do @@ -61,15 +63,15 @@ stdenv.mkDerivation { done # requires now holds all requested packages and their transitive dependencies - siteStart="$out/share/emacs-with-packages/site-lisp/site-start.el" + siteStart="$out/$SHARE/site-lisp/site-start.el" # Begin the new site-start.el by loading the original, which sets some # NixOS-specific paths. Paths are searched in the reverse of the order # they are specified in, so user and system profile paths are searched last. cat >"$siteStart" <<EOF (load-file "$emacs/share/emacs/site-lisp/site-start.el") -(add-to-list 'load-path "$out/share/emacs-with-packages/site-lisp") -(add-to-list 'exec-path "$out/share/emacs-with-packages/bin") +(add-to-list 'load-path "$out/$SHARE/site-lisp") +(add-to-list 'exec-path "$out/$SHARE/bin") EOF linkPath() { @@ -85,8 +87,8 @@ EOF # Add a package's paths to site-start.el linkEmacsPackage() { - linkPath "$1" "bin" "share/emacs-with-packages/bin" - linkPath "$1" "share/emacs/site-lisp" "share/emacs-with-packages/site-lisp" + linkPath "$1" "bin" "$SHARE/bin" + linkPath "$1" "share/emacs/site-lisp" "$SHARE/site-lisp" } # First, link all the explicitly-required packages. @@ -107,7 +109,7 @@ EOF local progname=$(basename "$prog") rm -f "$out/bin/$progname" makeWrapper "$prog" "$out/bin/$progname" \ - --suffix EMACSLOADPATH ":" "$out/share/emacs-with-packages/site-lisp:" + --suffix EMACSLOADPATH ":" "$out/$SHARE/site-lisp:" done mkdir -p $out/share