diff options
Diffstat (limited to 'tools')
-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 |
6 files changed, 51 insertions, 21 deletions
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 ]); } |