diff options
author | Vincent Ambo <mail@tazj.in> | 2021-04-13T21·55+0200 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2021-04-13T22·56+0000 |
commit | 9d95751302377ac74b0bb05e09ef4b5f7831dc15 (patch) | |
tree | 6abefaa226513ee1e61331ed01b65884bb7836ed | |
parent | cf5b88173b75052d63d81ed9a3200abc73179e86 (diff) |
feat(tools/emacs-pkgs): Add new builder for internal packages r/2503
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>
Diffstat (limited to '')
-rw-r--r-- | third_party/emacs/rcirc/default.nix | 4 | ||||
-rw-r--r-- | tools/emacs-pkgs/buildEmacsPackage.nix | 34 | ||||
-rw-r--r-- | tools/emacs-pkgs/dottime/default.nix | 4 | ||||
-rw-r--r-- | tools/emacs-pkgs/nix-util/default.nix | 4 | ||||
-rw-r--r-- | tools/emacs-pkgs/notable/default.nix | 10 | ||||
-rw-r--r-- | tools/emacs-pkgs/term-switcher/default.nix | 12 | ||||
-rw-r--r-- | tools/emacs-pkgs/tvl/default.nix | 8 |
7 files changed, 53 insertions, 23 deletions
diff --git a/third_party/emacs/rcirc/default.nix b/third_party/emacs/rcirc/default.nix index 9d22c7cd8663..f34cbed7896a 100644 --- a/third_party/emacs/rcirc/default.nix +++ b/third_party/emacs/rcirc/default.nix @@ -1,6 +1,6 @@ -{ pkgs, ... }: +{ depot, ... }: -pkgs.emacsPackages.trivialBuild rec { +depot.tools.emacs-pkgs.buildEmacsPackage rec { pname = "rcirc"; version = "1"; src = ./rcirc.el; diff --git a/tools/emacs-pkgs/buildEmacsPackage.nix b/tools/emacs-pkgs/buildEmacsPackage.nix new file mode 100644 index 000000000000..160c0626136d --- /dev/null +++ b/tools/emacs-pkgs/buildEmacsPackage.nix @@ -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) {} diff --git a/tools/emacs-pkgs/dottime/default.nix b/tools/emacs-pkgs/dottime/default.nix index 633aad187e68..b819e9c14d2c 100644 --- a/tools/emacs-pkgs/dottime/default.nix +++ b/tools/emacs-pkgs/dottime/default.nix @@ -1,6 +1,6 @@ -{ pkgs, ... }: +{ depot, ... }: -pkgs.emacsPackages.trivialBuild rec { +depot.tools.emacs-pkgs.buildEmacsPackage { pname = "dottime"; version = "1.0"; src = ./dottime.el; diff --git a/tools/emacs-pkgs/nix-util/default.nix b/tools/emacs-pkgs/nix-util/default.nix index 2356ad75f2fe..ffeb1cefade7 100644 --- a/tools/emacs-pkgs/nix-util/default.nix +++ b/tools/emacs-pkgs/nix-util/default.nix @@ -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; diff --git a/tools/emacs-pkgs/notable/default.nix b/tools/emacs-pkgs/notable/default.nix index 22c906609bd9..8c6935fe886b 100644 --- a/tools/emacs-pkgs/notable/default.nix +++ b/tools/emacs-pkgs/notable/default.nix @@ -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 ]; } diff --git a/tools/emacs-pkgs/term-switcher/default.nix b/tools/emacs-pkgs/term-switcher/default.nix index 0c5e4c17cd18..e775de5cdbe8 100644 --- a/tools/emacs-pkgs/term-switcher/default.nix +++ b/tools/emacs-pkgs/term-switcher/default.nix @@ -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 ]; } diff --git a/tools/emacs-pkgs/tvl/default.nix b/tools/emacs-pkgs/tvl/default.nix index d191c6b6f79e..5dcc184bb521 100644 --- a/tools/emacs-pkgs/tvl/default.nix +++ b/tools/emacs-pkgs/tvl/default.nix @@ -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 ]); } |