{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 { _module.args.pkgs = inputs.nixpkgs.legacyPackages.${system}.extend (self: super: { extra-package-inputs = lib.mapAttrs' (inputName: input: { name = builtins.head (builtins.match "extra-package-(.*)" inputName); value = input; }) (lib.filterAttrs (inputName: _: ! builtins.isNull (builtins.match "extra-package-.*" inputName)) inputs); # Some tree-sitter grammars in nixpksg are built with a too new ABI # https://github.com/NixOS/nixpkgs/issues/209114 # 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; }; 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; }; }; }