about summary refs log tree commit diff
path: root/overlays/emacs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'overlays/emacs.nix')
-rw-r--r--overlays/emacs.nix58
1 files changed, 37 insertions, 21 deletions
diff --git a/overlays/emacs.nix b/overlays/emacs.nix
index 2d94bd97def5..f8316d3f8427 100644
--- a/overlays/emacs.nix
+++ b/overlays/emacs.nix
@@ -88,27 +88,43 @@ let
         )
       ]);
 
-  emacsGit = (super.lib.makeOverridable (mkGitEmacs "emacs-git" ../repos/emacs/emacs-master.json) { withSQLite3 = true; withWebP = true; withTreeSitter = true; }).overrideAttrs (
-    oa: {
-      patches = oa.patches ++ [
-        # XXX: #318
-        ./bytecomp-revert.patch
-      ]; }
-  );
-
-  emacsPgtk = (super.lib.makeOverridable (mkGitEmacs "emacs-pgtk" ../repos/emacs/emacs-master.json) { withSQLite3 = true; withWebP = true; withTreeSitter = true; withPgtk = true; }).overrideAttrs (
-    oa: {
-      patches = oa.patches ++ [
-        # XXX: #318
-        ./bytecomp-revert.patch
-      ]; }
-  );
-
-  emacsUnstable = super.lib.makeOverridable (mkGitEmacs "emacs-unstable" ../repos/emacs/emacs-unstable.json) { withSQLite3 = true; withWebP = true; withTreeSitter = true; };
-
-  emacsUnstablePgtk = super.lib.makeOverridable (mkGitEmacs "emacs-unstable" ../repos/emacs/emacs-unstable.json) { withSQLite3 = true; withWebP = true; withTreeSitter = true; withPgtk = true; };
-
-  emacsLsp = super.lib.makeOverridable (mkGitEmacs "emacs-lsp" ../repos/emacs/emacs-lsp.json) { withTreeSitter = false; };
+  emacsGit = let base = (super.lib.makeOverridable (mkGitEmacs "emacs-git" ../repos/emacs/emacs-master.json) { withSQLite3 = true; withWebP = true; });
+                 # TODO: remove when we drop support for < 23.05
+                 maybeOverridden = if super.lib.hasAttr "treeSitter" base then base.override { withTreeSitter = true; } else base;
+             in
+               maybeOverridden.overrideAttrs (
+                 oa: {
+                   patches = oa.patches ++ [
+                     # XXX: #318
+                     ./bytecomp-revert.patch
+                   ]; }
+               );
+
+  emacsPgtk = let base = super.lib.makeOverridable (mkGitEmacs "emacs-pgtk" ../repos/emacs/emacs-master.json) { withSQLite3 = true; withWebP = true; withPgtk = true; };
+                 # TODO: remove when we drop support for < 23.05
+                  maybeOverridden = if super.lib.hasAttr "treeSitter" base then base.override { withTreeSitter = true; } else base;
+              in maybeOverridden.overrideAttrs (
+                oa: {
+                  patches = oa.patches ++ [
+                    # XXX: #318
+                    ./bytecomp-revert.patch
+                  ]; }
+              );
+
+  emacsUnstable = let base = super.lib.makeOverridable (mkGitEmacs "emacs-unstable" ../repos/emacs/emacs-unstable.json) { withSQLite3 = true; withWebP = true; };
+                      # TODO: remove when we drop support for < 23.05
+                      maybeOverridden = if super.lib.hasAttr "treeSitter" base then base.override { withTreeSitter = true; } else base;
+                      in maybeOverridden;
+
+  emacsUnstablePgtk = let base = super.lib.makeOverridable (mkGitEmacs "emacs-unstable" ../repos/emacs/emacs-unstable.json) { withSQLite3 = true; withWebP = true; withPgtk = true; };
+                          # TODO: remove when we drop support for < 23.05
+                          maybeOverridden = if super.lib.hasAttr "treeSitter" base then base.override { withTreeSitter = true; } else base;
+                      in maybeOverridden;
+
+  emacsLsp = let base = super.lib.makeOverridable (mkGitEmacs "emacs-lsp" ../repos/emacs/emacs-lsp.json) { };
+                 # TODO: remove when we drop support for < 23.05
+                 maybeOverridden = if super.lib.hasAttr "treeSitter" base then base.override { withTreeSitter = false; } else base;
+                 in maybeOverridden;
 
 in
 {