\begin{tikzpicture}[
  line width=1.5pt,
  black!50,
  text=black,
]

  %% Use small fonts
  \footnotesize

  %% project/
  \node [dirbox, at={(0,4cm)}, minimum width=15cm, minimum height=9cm,
    label={[shift={(0,-5mm)}]\texttt{project/}}] {};
  \node [node-nonterminal-thin, at={(-6.0cm,3.3cm)}] {COPYING};
  \node [node-nonterminal-thin, at={(-3.5cm,3.3cm)}] {paper.tex};
  \node [node-nonterminal-thin, at={(-1.0cm,3.3cm)}] {project};
  \node [node-nonterminal-thin, at={(+1.5cm,3.3cm)}] {README.md};
  \node [node-nonterminal-thin, at={(+4.25cm,3.3cm)},
         text width=2.5cm, text depth=-3pt] {README-hacking.md};

  %% reproduce/
  \node [dirbox, at={(-1.4cm,2.6cm)}, minimum width=11.9cm, minimum height=6cm,
    label={[shift={(0,-5mm)}]\texttt{reproduce/}}] {};

  %% reproduce/software/
  \node [dirbox, at={(-4.35cm,2.1cm)}, minimum width=5.7cm, minimum height=5.3cm,
    label={[shift={(0,-5mm)}]\texttt{software/}}] {};

  %% reproduce/software/config
  \node [dirbox, at={(-5.75cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{config/}}] {};
  \node [node-nonterminal-thin, at={(-5.75cm,0.8cm)}] {LOCAL.conf.in};
  \node [node-nonterminal-thin, at={(-5.75cm,0.3cm)}] {versions.conf};
  \node [node-nonterminal-thin, at={(-5.75cm,-0.2cm)}] {checksums.conf};

  %% reproduce/software/make
  \node [dirbox, at={(-2.95cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{make/}}] {};
  \node [node-nonterminal-thin, at={(-2.95cm,0.8cm)}] {basic.mk};
  \node [node-nonterminal-thin, at={(-2.95cm,0.3cm)}] {high-level.mk};
  \node [node-nonterminal-thin, at={(-2.95cm,-0.2cm)}] {python.mk};

  %% reproduce/software/bash
  \node [dirbox, at={(-5.75cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{bash/}}] {};
  \node [node-nonterminal-thin, at={(-5.75cm,-1.5cm)}] {bashrc.sh};
  \node [node-nonterminal-thin, at={(-5.75cm,-2.0cm)}] {configure.sh};
  \node [node-nonterminal-thin, at={(-5.75cm,-2.5cm)}] {git-pre-comit};

  %% reproduce/software/bibtex
  \node [dirbox, at={(-2.95cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{bibtex/}}] {};
  \node [node-nonterminal-thin, at={(-2.95cm,-1.5cm)}] {fftw.tex};
  \node [node-nonterminal-thin, at={(-2.95cm,-2.0cm)}] {numpy.tex};
  \node [node-nonterminal-thin, at={(-2.95cm,-2.5cm)}] {gnuastro.tex};

  %% reproduce/analysis/
  \node [dirbox, at={(1.55cm,2.1cm)}, minimum width=5.7cm, minimum height=5.3cm,
    label={[shift={(0,-5mm)}]\texttt{analysis/}}] {};

  %% reproduce/analysis/config
  \node [dirbox, at={(0.15cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{config/}}] {};
  \node [node-nonterminal-thin, at={(0.15cm,0.8cm)}] {INPUTS.conf};
  \node [node-nonterminal-thin, at={(0.15cm,0.3cm)}] {param-1.conf};
  \node [node-nonterminal-thin, at={(0.15cm,-0.2cm)}] {param-2.conf};

  %% reproduce/analysis/make
  \node [dirbox, at={(2.95cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{make/}}] {};
  \node [node-nonterminal-thin, at={(2.95cm,0.8cm)}] {initialize.mk};
  \node [node-nonterminal-thin, at={(2.95cm,0.3cm)}] {download.mk};
  \node [node-nonterminal-thin, at={(2.95cm,-0.2cm)}] {analysis-1.mk};

  %% reproduce/analysis/bash
  \node [dirbox, at={(0.15cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{bash/}}] {};
  \node [node-nonterminal-thin, at={(0.15cm,-1.5cm)}] {process-1.sh};
  \node [node-nonterminal-thin, at={(0.15cm,-2.0cm)}] {process-2.sh};
  \node [node-nonterminal-thin, at={(0.15cm,-2.5cm)}] {process-3.sh};

  %% reproduce/analysis/python
  \node [dirbox, at={(2.95cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{python/}}] {};
  \node [node-nonterminal-thin, at={(2.95cm,-1.5cm)}] {operation-1.py};
  \node [node-nonterminal-thin, at={(2.95cm,-2.0cm)}] {operation-2.py};
  \node [node-nonterminal-thin, at={(2.95cm,-2.5cm)}] {fitting-plot.py};

  %% tex/
  \node [dirbox, at={(6cm,2.6cm)}, minimum width=2.7cm, minimum height=6cm,
    label={[shift={(0,-5mm)}]\texttt{tex/}}] {};

  %% tex/src
  \node [dirbox, at={(6cm,2.1cm)}, minimum width=2.5cm, minimum height=2.1cm,
    label={[shift={(0,-5mm)}]\texttt{src/}}] {};
  \node [node-nonterminal-thin, at={(6cm,1.4cm)}] {preamble-1.tex};
  \node [node-nonterminal-thin, at={(6cm,0.9cm)}] {preamble-2.tex};
  \node [node-nonterminal-thin, at={(6cm,0.4cm)}] {figure-1.tex};

  %% tex/build
  \node [dirbox, at={(6cm,-0.2cm)}, minimum width=2.5cm, minimum height=1.3cm,
    label={[shift={(0,-5mm)}]\texttt{build/}}, dashed] {};
  \node [anchor=west, at={(4.7cm,-1.0cm)}] {\scriptsize\sf Symbolic link to};
  \node [anchor=west, at={(4.7cm,-1.3cm)}] {\scriptsize\sf \LaTeX{} build directory.};

  %% tex/build
  \node [dirbox, at={(6cm,-1.7cm)}, minimum width=2.5cm, minimum height=1.6cm,
    label={[shift={(0,-5mm)}]\texttt{tikz/}}, dashed] {};
  \node [anchor=west, at={(4.67cm,-2.5cm)}] {\scriptsize\sf Symbolic link to TikZ};
  \node [anchor=west, at={(4.67cm,-2.8cm)}] {\scriptsize\sf directory (figures built};
  \node [anchor=west, at={(4.67cm,-3.1cm)}] {\scriptsize\sf by \LaTeX).};

  %% .local
  \node [dirbox, at={(-3.6cm,-3.7cm)}, minimum width=7cm, minimum height=1.2cm,
    label={[shift={(0,-5mm)}]\texttt{.local/}}, dashed] {};
  \node [anchor=west, at={(-7.1cm,-4.4cm)}]
        {\scriptsize\sf Symbolic link to project's software environment, e.g., };
  \node [anchor=west, at={(-7.1cm,-4.7cm)}]
        {\scriptsize\sf Python or R, run `\texttt{.local/bin/python}' or `\texttt{.local/bin/R}'};

  %% .build
  \node [dirbox, at={(3.6cm,-3.7cm)}, minimum width=7cm, minimum height=1.2cm,
    label={[shift={(0,-5mm)}]\texttt{.build/}}, dashed] {};
  \node [anchor=west, at={(0.1cm,-4.4cm)}]
        {\scriptsize\sf Symbolic link to project's top-level build directory.};
  \node [anchor=west, at={(0.1cm,-4.7cm)}]
        {\scriptsize\sf Enabling easy access to built project components.};
\end{tikzpicture}
