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";
|
||||
version = "1";
|
||||
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";
|
||||
version = "1.0";
|
||||
src = ./dottime.el;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ pkgs, ... }:
|
||||
{ depot, ... }:
|
||||
|
||||
pkgs.emacsPackages.trivialBuild rec {
|
||||
depot.tools.emacs-pkgs.buildEmacsPackage {
|
||||
pname = "nix-util";
|
||||
version = "1.0";
|
||||
src = ./nix-util.el;
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
{ depot, pkgs, ... }:
|
||||
{ depot, ... }:
|
||||
|
||||
pkgs.emacsPackages.trivialBuild rec {
|
||||
depot.tools.emacs-pkgs.buildEmacsPackage rec {
|
||||
pname = "notable";
|
||||
version = "1.0";
|
||||
src = ./notable.el;
|
||||
packageRequires = with pkgs.emacsPackages; [
|
||||
|
||||
externalRequires = epkgs: with epkgs; [
|
||||
f ht s
|
||||
];
|
||||
|
||||
internalRequires = [
|
||||
depot.tools.emacs-pkgs.dottime
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,14 +1,8 @@
|
|||
{ pkgs, ... }:
|
||||
{ depot, ... }:
|
||||
|
||||
with pkgs.emacsPackages;
|
||||
|
||||
melpaBuild rec {
|
||||
depot.tools.emacs-pkgs.buildEmacsPackage {
|
||||
pname = "term-switcher";
|
||||
version = "1.0";
|
||||
src = ./term-switcher.el;
|
||||
packageRequires = [ dash ivy s vterm ];
|
||||
|
||||
recipe = builtins.toFile "recipe" ''
|
||||
(term-switcher :fetcher github :repo "tazjin/depot")
|
||||
'';
|
||||
externalRequires = epkgs: with epkgs; [ dash ivy s vterm ];
|
||||
}
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
{ pkgs, ... }:
|
||||
{ depot, ... }:
|
||||
|
||||
with pkgs.emacsPackages;
|
||||
|
||||
trivialBuild rec {
|
||||
depot.tools.emacs-pkgs.buildEmacsPackage {
|
||||
pname = "tvl";
|
||||
version = "1.0";
|
||||
src = ./tvl.el;
|
||||
packageRequires = [ magit s ];
|
||||
externalRequires = (epkgs: with epkgs; [ magit s ]);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue