{inputs, ...}: { imports = [ inputs.flake-parts.flakeModules.easyOverlay ]; perSystem = { config, self', inputs', pkgs, final, lib, system, ... }: let inherit (inputs.emacs-overlay.overlays.default pkgs pkgs) emacsPackagesFor; in { # Some tree-sitter grammars in nixpksg are built with a too new ABI # https://github.com/NixOS/nixpkgs/issues/209114 _module.args.pkgs = inputs.nixpkgs.legacyPackages.${system}.extend (self: super: { indent-bars-source = inputs.indent-bars; nix-ts-mode-source = inputs.nix-ts-mode; combobulate-source = inputs.combobulate; # tree-sitter-grammars = # super.tree-sitter-grammars # // { # tree-sitter-rust = super.tree-sitter-grammars.tree-sitter-rust.overrideAttrs (_: { # nativeBuildInputs = [self.nodejs self.tree-sitter]; # configurePhase = '' # tree-sitter generate --abi 13 src/grammar.json # ''; # }); # }; }); packages = { treesitGrammars = let all-grammars = pkgs.tree-sitter.withPlugins builtins.attrValues; in pkgs.runCommand "treesit-grammars" {} '' mkdir $out for f in ${all-grammars}/* do cp $f $out/"libtree-sitter-$(basename $f)" done ''; ccrEmacsWithoutPackages = (inputs'.emacs-overlay.packages.emacs-unstable.override { withPgtk = true; # withNS = false; # withX = false; # withGTK2 = false; # withGTK3 = false; # withWebP = false; }) .overrideAttrs (old: { name = "ccr-emacs"; version = "29"; }); ccrEmacs = let emacs = (emacsPackagesFor self'.packages.ccrEmacsWithoutPackages).emacsWithPackages (import ./packages.nix pkgs); in pkgs.runCommand "emacs" {} '' cp -r ${emacs} emacs chmod 700 -R emacs mkdir emacs/share/emacs cp -r emacs $out ''; default = self'.packages.ccrEmacs; }; apps = { ccrEmacs.program = "${self'.packages.ccrEmacs}/bin/emacs"; default = config.apps.ccrEmacs; }; }; }