feat(tools/emacs-pkgs): Add new builder for internal packages
Adds a new internal builder that makes it possible to override the `emacsPackages` passed to our Emacs packages, which in turn makes it possible to inject them into the emacsPackages fixpoint and use them with features like Emacs native compilation. Change-Id: I80dad57115c83cf5693ae6ba4e4cf3105d103d5e Reviewed-on: https://cl.tvl.fyi/c/depot/+/3003 Tested-by: BuildkiteCI Reviewed-by: adisbladis <adisbladis@gmail.com> Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
parent
cf5b88173b
commit
9d95751302
7 changed files with 53 additions and 23 deletions
4
third_party/emacs/rcirc/default.nix
vendored
4
third_party/emacs/rcirc/default.nix
vendored
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, ... }:
|
{ depot, ... }:
|
||||||
|
|
||||||
pkgs.emacsPackages.trivialBuild rec {
|
depot.tools.emacs-pkgs.buildEmacsPackage rec {
|
||||||
pname = "rcirc";
|
pname = "rcirc";
|
||||||
version = "1";
|
version = "1";
|
||||||
src = ./rcirc.el;
|
src = ./rcirc.el;
|
||||||
|
|
34
tools/emacs-pkgs/buildEmacsPackage.nix
Normal file
34
tools/emacs-pkgs/buildEmacsPackage.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# Builder for depot-internal Emacs packages. Packages built using this
|
||||||
|
# builder are added into the Emacs packages fixpoint under
|
||||||
|
# `emacsPackages.tvlPackages`, which in turn makes it possible to use
|
||||||
|
# them with special Emacs features like native compilation.
|
||||||
|
#
|
||||||
|
# Arguments passed to the builder are the same as
|
||||||
|
# emacsPackages.trivialBuild, except:
|
||||||
|
#
|
||||||
|
# * packageRequires is not used
|
||||||
|
#
|
||||||
|
# * externalRequires takes a selection function for packages from
|
||||||
|
# emacsPackages
|
||||||
|
#
|
||||||
|
# * internalRequires takes other depot packages
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
buildArgs:
|
||||||
|
|
||||||
|
pkgs.callPackage({ emacsPackages }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# Select external dependencies from the emacsPackages set
|
||||||
|
externalDeps = (buildArgs.externalRequires or (_: [])) emacsPackages;
|
||||||
|
|
||||||
|
# Override emacsPackages for depot-internal packages
|
||||||
|
internalDeps = map (p: p.override { inherit emacsPackages; })
|
||||||
|
(buildArgs.internalRequires or []);
|
||||||
|
|
||||||
|
trivialBuildArgs = builtins.removeAttrs buildArgs [
|
||||||
|
"externalRequires" "internalRequires"
|
||||||
|
] // {
|
||||||
|
packageRequires = externalDeps ++ internalDeps;
|
||||||
|
};
|
||||||
|
in emacsPackages.trivialBuild trivialBuildArgs) {}
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, ... }:
|
{ depot, ... }:
|
||||||
|
|
||||||
pkgs.emacsPackages.trivialBuild rec {
|
depot.tools.emacs-pkgs.buildEmacsPackage {
|
||||||
pname = "dottime";
|
pname = "dottime";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./dottime.el;
|
src = ./dottime.el;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, ... }:
|
{ depot, ... }:
|
||||||
|
|
||||||
pkgs.emacsPackages.trivialBuild rec {
|
depot.tools.emacs-pkgs.buildEmacsPackage {
|
||||||
pname = "nix-util";
|
pname = "nix-util";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./nix-util.el;
|
src = ./nix-util.el;
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
{ depot, pkgs, ... }:
|
{ depot, ... }:
|
||||||
|
|
||||||
pkgs.emacsPackages.trivialBuild rec {
|
depot.tools.emacs-pkgs.buildEmacsPackage rec {
|
||||||
pname = "notable";
|
pname = "notable";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./notable.el;
|
src = ./notable.el;
|
||||||
packageRequires = with pkgs.emacsPackages; [
|
|
||||||
|
externalRequires = epkgs: with epkgs; [
|
||||||
f ht s
|
f ht s
|
||||||
|
];
|
||||||
|
|
||||||
|
internalRequires = [
|
||||||
depot.tools.emacs-pkgs.dottime
|
depot.tools.emacs-pkgs.dottime
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
{ pkgs, ... }:
|
{ depot, ... }:
|
||||||
|
|
||||||
with pkgs.emacsPackages;
|
depot.tools.emacs-pkgs.buildEmacsPackage {
|
||||||
|
|
||||||
melpaBuild rec {
|
|
||||||
pname = "term-switcher";
|
pname = "term-switcher";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./term-switcher.el;
|
src = ./term-switcher.el;
|
||||||
packageRequires = [ dash ivy s vterm ];
|
externalRequires = epkgs: with epkgs; [ dash ivy s vterm ];
|
||||||
|
|
||||||
recipe = builtins.toFile "recipe" ''
|
|
||||||
(term-switcher :fetcher github :repo "tazjin/depot")
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
{ pkgs, ... }:
|
{ depot, ... }:
|
||||||
|
|
||||||
with pkgs.emacsPackages;
|
depot.tools.emacs-pkgs.buildEmacsPackage {
|
||||||
|
|
||||||
trivialBuild rec {
|
|
||||||
pname = "tvl";
|
pname = "tvl";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./tvl.el;
|
src = ./tvl.el;
|
||||||
packageRequires = [ magit s ];
|
externalRequires = (epkgs: with epkgs; [ magit s ]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue