{ lib, pkgs, stylixEnabled, emacsExtraConfig, emacsExtraPackages, }: let clipboardPackages = if pkgs.stdenv.isDarwin then builtins.attrValues { inherit (pkgs) pngpaste; } else builtins.attrValues { inherit (pkgs) xclip wl-clipboard-rs ; }; linuxWindowPackages = lib.optionals pkgs.stdenv.isLinux ( builtins.attrValues { inherit (pkgs.xorg) xwininfo; inherit (pkgs) xdotool; } ); doomDir = ../../../dotfiles/doom; templateFiles = { "events.org" = ../../../dotfiles/doom/templates/events.org; "default.org" = ../../../dotfiles/doom/templates/default.org; "programming.org" = ../../../dotfiles/doom/templates/programming.org; }; templateDataFiles = { "doom/templates/events.org".source = templateFiles."events.org"; "doom/templates/default.org".source = templateFiles."default.org"; "doom/templates/programming.org".source = templateFiles."programming.org"; }; in { inherit doomDir templateDataFiles templateFiles; packages = linuxWindowPackages ++ clipboardPackages ++ builtins.attrValues { inherit (pkgs) fd fzf ripgrep tree-sitter graphviz tetex languagetool yaml-language-server markdownlint-cli ; inherit (pkgs.nodePackages) vscode-json-languageserver prettier ; }; extraPackages = epkgs: let extra = emacsExtraPackages epkgs; themes = lib.optional stylixEnabled [ (epkgs.trivialBuild { pname = "stylix-theme"; src = pkgs.writeText "stylix-theme.el" emacsExtraConfig; version = "0.1.0"; packageRequires = extra; }) ]; in extra ++ themes; }