Shell Setup

Configure your shell environment on DAIC.

Your cluster home has a 5 MB quota (see Storage). Tools that cache to hidden directories in your home will fill it and break logins and jobs. The .daicrc file, maintained in this documentation’s repository, redirects those caches to ~/linuxhome:

$ wget https://gitlab.ewi.tudelft.nl/daic/docs-experimental/-/raw/main/scripts/.daicrc -O ~/.daicrc
$ echo 'source ~/.daicrc' >> ~/.bashrc
$ source ~/.bashrc

Re-run the wget line occasionally to pick up newly covered tools.

Shell aliases (optional)

For useful SLURM aliases and shell styling:

$ wget https://gitlab.ewi.tudelft.nl/reit/shell-config/-/raw/main/.bashrc-reit -O ~/.bashrc-reit
$ echo 'source ~/.bashrc-reit' >> ~/.bashrc
$ source ~/.bashrc

Test the installation:

$ reit
Hi, from the Research Engineering and Infrastructure Team!!!

See shell-config for details.

What .daicrc contains

.daicrc only exports environment variables and creates the target directories. It defines no aliases or functions and changes no tool behaviour beyond where files are written (for Lmod: whether a cache is written), so it is safe to source in non-interactive shells and in job scripts.

An entry belongs in .daicrc when a tool writes files into the home directory that grow beyond a few kilobytes and the tool offers an environment variable to relocate them. Configuration files (.bashrc, .ssh/, .gitconfig, tool settings) stay in the cluster home; XDG_CONFIG_HOME is deliberately not redirected. Tools without a relocation variable are handled per user with a symlink, as described under Storage.

VariableTargetProtects against
XDG_CACHE_HOME, XDG_DATA_HOME, XDG_STATE_HOME~/linuxhome/.cache, .local/share, .local/stateAny XDG-aware tool writing to ~/.cache, ~/.local
UV_CACHE_DIR, UV_TOOL_DIR, UV_PYTHON_INSTALL_DIR~/linuxhome/.cache/uv, .local/share/uv/...uv package cache, installed tools, downloaded Python builds
PIXI_HOME~/linuxhome/.pixiPixi global environments
CONDA_PKGS_DIRS, CONDA_ENVS_PATH, MAMBA_ROOT_PREFIX, MICROMAMBA_ROOT_PREFIX~/linuxhome/.conda, .mambaconda and mamba package caches and environments
APPTAINER_CACHEDIR~/linuxhome/.cache/apptainerPulled container layers
PIP_CACHE_DIR~/linuxhome/.cache/pippip download cache
PYTHONUSERBASE~/linuxhome/.localpip install --user packages and scripts
NPM_CONFIG_CACHE~/linuxhome/.cache/npmnpm package cache
HF_HOME~/linuxhome/.cache/huggingfaceHugging Face models, datasets, tokens
TORCH_HOME~/linuxhome/.cache/torchPyTorch Hub models and pretrained weights
TRITON_CACHE_DIR~/linuxhome/.cache/tritonCompiled kernels from torch.compile (default ~/.triton)
KERAS_HOME~/linuxhome/.kerasKeras datasets and models
CUDA_CACHE_PATH~/linuxhome/.cache/nv/ComputeCacheCUDA JIT compute cache (default ~/.nv); fills the quota on its own after a few GPU jobs
JUPYTER_DATA_DIR~/linuxhome/.local/share/jupyterJupyter kernelspecs and extensions
LMOD_SHORT_TIMEnot a path; set to 86400The module system (Lmod) writing a module list cache of about 5 MB to ~/.cache/lmod when you run module spider. Lmod offers no variable to relocate this cache and ignores XDG_CACHE_HOME; it only writes the cache when building the list took longer than LMOD_SHORT_TIME seconds. The cost is that every module spider rebuilds the list, which takes a few seconds.

It also prepends ~/linuxhome/.local/bin and ~/linuxhome/.pixi/bin to PATH so tools installed by uv, pip, and pixi are found.

If a tool fills your home that is not covered here, open an issue or merge request in the docs repository with the variable that relocates it.

Next steps