about summary refs log blame commit diff
path: root/tools/emacs-pkgs/buildEmacsPackage.nix
blob: 990b53b763b03725ff605da7b934178a7cb76e4d (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                                                      

                     
 


                                                                          
 


                                                                 
 








                                                       
# 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)
{ }