mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-23 23:43:30 +00:00
c7e0f6b905
stdenv.targetPlatform really shouldn't be used by software that doesn't generate or manipulate binaries. I reviewed all uses of targetPlatform outside of pkgs/development/compilers and pkgs/stdenv and replaced those which weren't involved in something which fits these criteria.
89 lines
2.6 KiB
Nix
89 lines
2.6 KiB
Nix
/*
|
|
|
|
# Updating
|
|
|
|
To update the list of packages from ELPA,
|
|
|
|
1. Run `./update-elpa-devel`.
|
|
2. Check for evaluation errors:
|
|
# "../../../../../" points to the default.nix from root of Nixpkgs tree
|
|
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate ../../../../../ -A emacs.pkgs.elpaDevelPackages
|
|
3. Run `git commit -m "elpa-devel-packages $(date -Idate)" -- elpa-devel-generated.nix`
|
|
|
|
## Update from overlay
|
|
|
|
Alternatively, run the following command:
|
|
|
|
./update-from-overlay
|
|
|
|
It will update both melpa and elpa packages using
|
|
https://github.com/nix-community/emacs-overlay. It's almost instantenous and
|
|
formats commits for you.
|
|
|
|
*/
|
|
|
|
{ lib, stdenv, texinfo, writeText, gcc, pkgs, buildPackages }:
|
|
|
|
self: let
|
|
|
|
markBroken = pkg: pkg.override {
|
|
elpaBuild = args: self.elpaBuild (args // {
|
|
meta = (args.meta or {}) // { broken = true; };
|
|
});
|
|
};
|
|
|
|
elpaBuild = import ../../../../build-support/emacs/elpa.nix {
|
|
inherit lib stdenv texinfo writeText gcc;
|
|
inherit (self) emacs;
|
|
};
|
|
|
|
# Use custom elpa url fetcher with fallback/uncompress
|
|
fetchurl = buildPackages.callPackage ./fetchelpa.nix { };
|
|
|
|
generateElpa = lib.makeOverridable ({
|
|
generated ? ./elpa-devel-generated.nix
|
|
}: let
|
|
|
|
imported = import generated {
|
|
callPackage = pkgs: args: self.callPackage pkgs (args // {
|
|
inherit fetchurl;
|
|
});
|
|
};
|
|
|
|
super = removeAttrs imported [ "dash" ];
|
|
|
|
overrides = {
|
|
eglot = super.eglot.overrideAttrs (old: {
|
|
postInstall = (old.postInstall or "") + ''
|
|
local info_file=eglot.info
|
|
pushd $out/share/emacs/site-lisp/elpa/eglot-*
|
|
# specify output info file to override the one defined in eglot.texi
|
|
makeinfo --output=$info_file eglot.texi
|
|
install-info $info_file dir
|
|
popd
|
|
'';
|
|
});
|
|
|
|
xeft = super.xeft.overrideAttrs (old: let
|
|
libExt = pkgs.stdenv.hostPlatform.extensions.sharedLibrary;
|
|
in {
|
|
dontUnpack = false;
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.xapian ];
|
|
buildPhase = (old.buildPhase or "") + ''
|
|
$CXX -shared -o xapian-lite${libExt} xapian-lite.cc $NIX_CFLAGS_COMPILE -lxapian
|
|
'';
|
|
postInstall = (old.postInstall or "") + "\n" + ''
|
|
outd=$out/share/emacs/site-lisp/elpa/xeft-*
|
|
install -m444 -t $outd xapian-lite${libExt}
|
|
rm $outd/xapian-lite.cc $outd/emacs-module.h $outd/emacs-module-prelude.h $outd/demo.gif $outd/Makefile
|
|
'';
|
|
});
|
|
};
|
|
|
|
elpaDevelPackages = super // overrides;
|
|
|
|
in elpaDevelPackages // { inherit elpaBuild; });
|
|
|
|
in generateElpa { }
|