Files
nix-config/devshells.nix
2026-04-10 18:38:21 +02:00

73 lines
1.7 KiB
Nix

{pkgs}: let
latexDevExtension = with pkgs.vscode-extensions; [
james-yu.latex-workshop
eamodio.gitlens
jebbs.plantuml
];
extensionJsonFile = pkgs.writeTextFile {
name = "vscode-exentsions-json";
destination = "/share/vscode/extension/extension.json";
text = pkgs.vscode-utils.toExtensionJson latexDevExtension;
};
seededExtension = pkgs.buildEnv {
name = "vscode-tex-seeded-extensions";
paths = latexDevExtension ++ [extensionJsonFile];
};
vscodeIsolated = pkgs.writeShellScriptBin "code" ''
set -euo pipefail
VSCODE_TEX_HOME="''${XDG_CACHE_HOME:-$HOME/.cache}/vscode-tex-shell"
USER_DATA_DIR="$VSCODE_TEX_HOME/user-data"
EXT_DIR="$VSCODE_TEX_HOME/extensions"
mkdir -p "$USER_DATA_DIR" "$EXT_DIR"
for ext in ${seededExtension}/share/vscode/extensions/*; do
name="$(basename "$ext")"
if [ ! -e "$EXT_DIR/$name" ]; then
ln -s "$ext" "$EXT_DIR/$name"
fi
done
exec ${pkgs.vscode}/bin/code \
--user-data-dir "$USER_DATA_DIR" \
--extensions-dir "$EXT_DIR" \
"$@"
'';
in {
default = pkgs.mkShell {
packages = [
vscodeIsolated
# pkgs.latexmk
(pkgs.texliveBasic.withPackages
(
ps: [
ps.beamer
ps.preprint
ps.tikz-ext
ps.latexmk
ps.microtype
ps.mathtools
ps.thmtools
ps.enumitem
ps.csquotes
ps.cleveref
ps.algorithm2e
ps.ifoddpage
ps.relsize
ps.amsfonts
ps.amsmath
ps.geometry
ps.hyperref
ps.lm
ps.xcolor
ps.datetime2
]
))
];
};
}