python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / top-level / emacs-packages.nix
blob0ac3ae8b43392cd788d3e7ffb41255c59b371927
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 `init.el`:
9 /*
10   (require 'package)
12   ;; optional. makes unpure packages archives unavailable
13   (setq package-archives nil)
15   ;; optional. use this if you install emacs packages to the system profile
16   (add-to-list 'package-directory-list "/run/current-system/sw/share/emacs/site-lisp/elpa")
18   ;; optional. use this if you install emacs packages to user profiles (with nix-env)
19   (add-to-list 'package-directory-list "~/.nix-profile/share/emacs/site-lisp/elpa")
21   (package-initialize)
24 { pkgs'
25 , emacs'
26 , makeScope
27 , makeOverridable
28 , dontRecurseIntoAttrs
31 let
33   mkElpaPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/elpa-packages.nix {
34     inherit (pkgs) stdenv texinfo writeText gcc pkgs buildPackages;
35     inherit lib;
36   };
38   mkNongnuPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/nongnu-packages.nix {
39     inherit (pkgs) buildPackages;
40     inherit lib;
41   };
43   # Contains both melpa stable & unstable
44   melpaGeneric = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/melpa-packages.nix {
45     inherit lib pkgs;
46   };
48   mkManualPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/manual-packages.nix {
49     inherit lib pkgs;
50   };
52   emacsWithPackages = { pkgs, lib }: import ../build-support/emacs/wrapper.nix {
53     inherit (pkgs) makeWrapper runCommand gcc;
54     inherit (pkgs.xorg) lndir;
55     inherit lib;
56   };
58 in makeScope pkgs'.newScope (self: makeOverridable ({
59   pkgs ? pkgs'
60   , lib ? pkgs.lib
61   , elpaPackages ? mkElpaPackages { inherit pkgs lib; } self
62   , nongnuPackages ? mkNongnuPackages { inherit pkgs lib; } self
63   , melpaStablePackages ? melpaGeneric { inherit pkgs lib; } "stable" self
64   , melpaPackages ? melpaGeneric { inherit pkgs lib; } "unstable" self
65   , manualPackages ? mkManualPackages { inherit pkgs lib; } self
66 }: ({}
67   // elpaPackages // { inherit elpaPackages; }
68   // nongnuPackages // { inherit nongnuPackages; }
69   // melpaStablePackages // { inherit melpaStablePackages; }
70   // melpaPackages // { inherit melpaPackages; }
71   // manualPackages // { inherit manualPackages; }
72   // {
74     # Propagate overriden scope
75     emacs = emacs'.overrideAttrs(old: {
76       passthru = (old.passthru or {}) // {
77         pkgs = dontRecurseIntoAttrs self;
78       };
79     });
81     trivialBuild = pkgs.callPackage ../build-support/emacs/trivial.nix {
82       inherit (self) emacs;
83     };
85     melpaBuild = pkgs.callPackage ../build-support/emacs/melpa.nix {
86       inherit (self) emacs;
87     };
89     emacsWithPackages = emacsWithPackages { inherit pkgs lib; } self;
90     withPackages = emacsWithPackages { inherit pkgs lib; } self;
92   } // {
94     # Package specific priority overrides goes here
96     # Telega uploads packages incompatible with stable tdlib to melpa
97     # Prefer the one from melpa stable
98     inherit (melpaStablePackages) telega;
100   })
101 ) {})