{ lib, inputs, pkgs, ... }: let pkgs' = pkgs.extend ( lib.composeManyExtensions [ inputs.emacs-overlay.overlays.package inputs.emacs-overlay.overlays.emacs ] ); pkgs-with-tree-sitter-kdl = (builtins.getFlake "github:aciceri/nixpkgs/23a675ee8313427610cf129dd2b52a69bf6a2a26") .legacyPackages.${pkgs.stdenv.system}; # TODO remove when merged: https://github.com/NixOS/nixpkgs/pull/371287/files # all-grammars = pkgs'.tree-sitter.withPlugins builtins.attrValues; all-grammars = pkgs-with-tree-sitter-kdl.tree-sitter.withPlugins builtins.attrValues; treesitGrammars = pkgs'.runCommand "treesit-grammars" { } '' mkdir $out for f in ${all-grammars}/* do cp $f $out/"libtree-sitter-$(basename $f)" done ''; emacsWithoutPackages = pkgs'.emacs-unstable.override { withSQLite3 = true; withWebP = true; withPgtk = true; }; emacs = (pkgs'.emacsPackagesFor emacsWithoutPackages).emacsWithPackages ( import ./packages.nix pkgs' ); in emacs.overrideAttrs { passthru = { inherit treesitGrammars; }; }