| name | replication-package |
| description | Create reproducible replication packages using rix/nix for R projects. Use when setting up project environments, preparing code for journal submission, or ensuring computational reproducibility. Covers rix, nix-shell, Makefile pipelines, and DCAS-compliant documentation. |
Replication Package with rix/nix
Initial Setup
Install nix
sh <(curl -L https://nixos.org/nix/install) --daemon
sudo systemctl restart nix-daemon
Install cachix for faster builds
nix-env -iA cachix -f https://cachix.org/api/v1/install
cachix use rstats-on-nix
Project Environment Setup
generate_env.R
library(rix)
rix(
r_ver = "4.3.2",
r_pkgs = c(
"data.table",
"tidyverse",
"here",
"fixest",
"did",
"grf",
"rdrobust",
"sf",
"spdep",
"spatialreg",
"modelsummary",
"kableExtra",
"ggplot2",
"patchwork",
"furrr",
"tictoc"
),
git_pkgs = list(
list(
package_name = "concordance",
repo_url = "https://github.com/insongkim/concordance",
commit = "HEAD"
)
),
system_pkgs = c("quarto"),
ide = "none",
project_path = ".",
overwrite = TRUE
)
Build and enter environment
nix-build
nix-shell
nix-shell --run "R"
Makefile for Pipeline
.PHONY: all clean data analysis tables figures paper
all: paper
data/proc/analysis_data.rds: code/build/01-clean-data.R data/raw/*.csv
nix-shell --run "Rscript code/build/01-clean-data.R"
data/proc/merged_data.rds: code/build/02-merge-data.R data/proc/analysis_data.rds
nix-shell --run "Rscript code/build/02-merge-data.R"
output/tables/main_results.tex: code/analysis/01-main-regressions.R data/proc/merged_data.rds
nix-shell --run "Rscript code/analysis/01-main-regressions.R"
output/figures/event_study.pdf: code/analysis/02-event-study.R data/proc/merged_data.rds
nix-shell --run "Rscript code/analysis/02-event-study.R"
data: data/proc/merged_data.rds
analysis: output/tables/main_results.tex output/figures/event_study.pdf
tables: output/tables/main_results.tex
figures: output/figures/event_study.pdf
paper: output/paper/paper.pdf
output/paper/paper.pdf: output/paper/paper.qmd output/tables/*.tex output/figures/*.pdf
nix-shell --run "quarto render output/paper/paper.qmd"
clean:
rm -f data/proc/*.rds
rm -f output/tables/*.tex
rm -f output/figures/*.pdf
README Template (DCAS-compliant)
See references/readme-template.md for the full template. Key sections:
- Data Availability Statement: Source, access, licenses
- Computational Requirements: Hardware, software, runtime
- Description of Programs: What each script does
- Instructions: Step-by-step replication guide
- Output List: Map outputs to paper tables/figures
Folder Structure
project/
├── .here # Project root marker
├── .gitignore
├── Makefile
├── README.md
├── generate_env.R
├── default.nix # Generated by rix
│
├── code/
│ ├── build/
│ │ ├── 01-clean-data.R
│ │ └── 02-merge-data.R
│ └── analysis/
│ ├── 01-main-regressions.R
│ └── 02-event-study.R
│
├── data/
│ ├── raw/ # Original data (may be symlinked)
│ ├── build/ # Intermediate files
│ └── proc/ # Final analysis data
│
└── output/
├── tables/
├── figures/
└── paper/
Symlinks for Large Data
ln -s ~/Dropbox/Projects/MyProject/data data
ln -s ~/Dropbox/Apps/Overleaf/MyPaper output/paper
.gitignore
# Data (too large, stored elsewhere)
data/raw/*
data/build/*
data/proc/*
!data/raw/.gitkeep
!data/build/.gitkeep
!data/proc/.gitkeep
# Nix
result
.direnv/
# R
.Rhistory
.RData
.Rproj.user/
# Output (regenerated)
output/tables/*.tex
output/figures/*.pdf
output/figures/*.png
# OS
.DS_Store
Thumbs.db
Verification Checklist
Before submission: