swapspace: 1.18 -> 1.18.1
[NixPkgs.git] / pkgs / top-level / emacs-packages.nix
blob968bf2a2800ac0c932b0f6578eb9811919d7c47e
1 # package.el-based emacs packages
3 ## FOR USERS
5 # Recommended: simply use `emacsWithPackages` with the packages you want.
7 # Alternative: use `emacs`, install everything to a system or user profile
8 # and then add this at the start your `early-init.el`:
9 /*
10   ;; optional. use this if you install emacs packages to the system profile
11   (add-to-list 'package-directory-list "/run/current-system/sw/share/emacs/site-lisp/elpa")
13   ;; optional. use this if you install emacs packages to user profiles (with nix-env)
14   (add-to-list 'package-directory-list "~/.nix-profile/share/emacs/site-lisp/elpa")
17 { pkgs'
18 , emacs'
19 , makeScope
20 , makeOverridable
21 , dontRecurseIntoAttrs
24 let
26   mkElpaDevelPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/elpa-devel-packages.nix {
27     inherit (pkgs) pkgs buildPackages;
28     inherit lib;
29   };
31   mkElpaPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/elpa-packages.nix {
32     inherit (pkgs) pkgs buildPackages;
33     inherit lib;
34   };
36   mkNongnuDevelPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/nongnu-devel-packages.nix {
37     inherit (pkgs) pkgs buildPackages;
38     inherit lib;
39   };
41   mkNongnuPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/nongnu-packages.nix {
42     inherit (pkgs) pkgs buildPackages;
43     inherit lib;
44   };
46   # Contains both melpa stable & unstable
47   melpaGeneric = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/melpa-packages.nix {
48     inherit lib pkgs;
49   };
51   mkManualPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/manual-packages.nix {
52     inherit lib pkgs;
53   };
55   emacsWithPackages = { pkgs, lib }: pkgs.callPackage ../applications/editors/emacs/build-support/wrapper.nix {
56     inherit (pkgs.xorg) lndir;
57     inherit lib;
58   };
60 in makeScope pkgs'.newScope (self: makeOverridable ({
61   pkgs ? pkgs'
62   , lib ? pkgs.lib
63   , elpaDevelPackages ? mkElpaDevelPackages { inherit pkgs lib; } self
64   , elpaPackages ? mkElpaPackages { inherit pkgs lib; } self
65   , nongnuDevelPackages ? mkNongnuDevelPackages { inherit pkgs lib; } self
66   , nongnuPackages ? mkNongnuPackages { inherit pkgs lib; } self
67   , melpaStablePackages ? melpaGeneric { inherit pkgs lib; } "stable" self
68   , melpaPackages ? melpaGeneric { inherit pkgs lib; } "unstable" self
69   , manualPackages ? mkManualPackages { inherit pkgs lib; } self
70 }: ({}
71   // elpaDevelPackages // { inherit elpaDevelPackages; }
72   // elpaPackages // { inherit elpaPackages; }
73   // nongnuDevelPackages // { inherit nongnuDevelPackages; }
74   // nongnuPackages // { inherit nongnuPackages; }
75   // melpaStablePackages // { inherit melpaStablePackages; }
76   // melpaPackages // { inherit melpaPackages; }
77   // manualPackages // { inherit manualPackages; }
78   // {
80     # Propagate overridden scope
81     emacs = emacs'.overrideAttrs(old: {
82       passthru = (old.passthru or {}) // {
83         pkgs = dontRecurseIntoAttrs self;
84       };
85     });
87     trivialBuild = pkgs.callPackage ../applications/editors/emacs/build-support/trivial.nix {
88       inherit (self) emacs;
89     };
91     elpaBuild = pkgs.callPackage ../applications/editors/emacs/build-support/elpa.nix {
92       inherit (self) emacs;
93     };
95     melpaBuild = pkgs.callPackage ../applications/editors/emacs/build-support/melpa.nix {
96       inherit (self) emacs;
97     };
99     emacsWithPackages = emacsWithPackages { inherit pkgs lib; } self;
100     withPackages = emacsWithPackages { inherit pkgs lib; } self;
102   } // {
104     # Package specific priority overrides goes here
106     # EXWM is not tagged very often, prefer it from elpa devel.
107     inherit (elpaDevelPackages) exwm;
109     # Telega uploads packages incompatible with stable tdlib to melpa
110     # Prefer the one from melpa stable
111     inherit (melpaStablePackages) telega;
113   })
114 ) {})