Shell Setup
3 minute read
DAIC configuration (recommended)
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.
| Variable | Target | Protects against |
|---|---|---|
XDG_CACHE_HOME, XDG_DATA_HOME, XDG_STATE_HOME | ~/linuxhome/.cache, .local/share, .local/state | Any 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/.pixi | Pixi global environments |
CONDA_PKGS_DIRS, CONDA_ENVS_PATH, MAMBA_ROOT_PREFIX, MICROMAMBA_ROOT_PREFIX | ~/linuxhome/.conda, .mamba | conda and mamba package caches and environments |
APPTAINER_CACHEDIR | ~/linuxhome/.cache/apptainer | Pulled container layers |
PIP_CACHE_DIR | ~/linuxhome/.cache/pip | pip download cache |
PYTHONUSERBASE | ~/linuxhome/.local | pip install --user packages and scripts |
NPM_CONFIG_CACHE | ~/linuxhome/.cache/npm | npm package cache |
HF_HOME | ~/linuxhome/.cache/huggingface | Hugging Face models, datasets, tokens |
TORCH_HOME | ~/linuxhome/.cache/torch | PyTorch Hub models and pretrained weights |
TRITON_CACHE_DIR | ~/linuxhome/.cache/triton | Compiled kernels from torch.compile (default ~/.triton) |
KERAS_HOME | ~/linuxhome/.keras | Keras datasets and models |
CUDA_CACHE_PATH | ~/linuxhome/.cache/nv/ComputeCache | CUDA JIT compute cache (default ~/.nv); fills the quota on its own after a few GPU jobs |
JUPYTER_DATA_DIR | ~/linuxhome/.local/share/jupyter | Jupyter kernelspecs and extensions |
LMOD_SHORT_TIME | not a path; set to 86400 | The 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.