{ nix-doom-emacs, ... }: { config , pkgs , lib , ... }: with lib; let cfg = config.dadada.home.emacs; in { imports = [ nix-doom-emacs.hmModule ]; options.dadada.home.emacs = { enable = mkEnableOption "Enable dadada emacs config"; }; config = mkIf cfg.enable { programs.doom-emacs = { enable = true; doomPrivateDir = ./doom.d; emacsPackagesOverlay = self: super: with pkgs; { tsc = super.tsc.overrideAttrs (old: let libtsc_dyn = rustPlatform.buildRustPackage rec { pname = "emacs-tree-sitter"; version = "0.15.1"; src = fetchFromGitHub { owner = "ubolonton"; repo = "emacs-tree-sitter"; rev = version; sha256 = "sha256-WgkGtmw63+kRLTRiSEO4bFF2IguH5g4odCujyazkwJc="; }; preBuild = '' export BINDGEN_EXTRA_CLANG_ARGS="$(< ${stdenv.cc}/nix-support/libc-crt1-cflags) \ $(< ${stdenv.cc}/nix-support/libc-cflags) \ $(< ${stdenv.cc}/nix-support/cc-cflags) \ $(< ${stdenv.cc}/nix-support/libcxx-cxxflags) \ ${lib.optionalString stdenv.cc.isClang "-idirafter ${stdenv.cc.cc}/lib/clang/${lib.getVersion stdenv.cc.cc}/include"} \ ${lib.optionalString stdenv.cc.isGNU "-isystem ${stdenv.cc.cc}/lib/gcc/${stdenv.hostPlatform.config}/${lib.getVersion stdenv.cc.cc}/include/"} \ ${lib.optionalString stdenv.cc.isGNU "-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc} -isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/${stdenv.hostPlatform.config}"} \ $NIX_CFLAGS_COMPILE" ''; LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib"; cargoHash = "sha256-HB5tFR1slY2D6jb2mt4KrGrGBUUVrxiBjmVycO+qfYY="; }; in { inherit (libtsc_dyn) src; preBuild = '' ext=${stdenv.hostPlatform.extensions.sharedLibrary} dest=$out/share/emacs/site-lisp/elpa/tsc-${old.version} install -D ${libtsc_dyn}/lib/libtsc_dyn$ext $dest/tsc-dyn$ext echo -n "0.15.1" > $dest/DYN-VERSION ''; }); tree-sitter-langs = super.tree-sitter-langs.overrideAttrs (old: { postInstall = '' dest=$out/share/emacs/site-lisp/elpa/tree-sitter-langs-${old.version} echo -n "0.10.2" > $dest/BUNDLE-VERSION ${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: src: "name=${name}; ln -s ${src}/parser $dest/bin/\${name#tree-sitter-}.so") pkgs.tree-sitter.builtGrammars)}; ''; }); }; }; home.file.".tree-sitter".source = pkgs.runCommand "grammars" { } '' mkdir -p $out/bin echo -n "0.10.2" > $out/BUNDLE-VERSION ${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: src: "name=${name}; ln -s ${src}/parser $out/bin/\${name#tree-sitter-}.so") pkgs.tree-sitter.builtGrammars)}; ''; }; }