## The fields here are tab-delimited: there is a row name
## menu_name 	is the name to be used in setRepositories()
## URL 		is the base URL (see R-admin.texi)
## default 	is whether this should be a default choice
## source, win.binary, mac.binary   indicate if the corresponding type is present
##
## BioC entries are version-specific, with %v getting expanded to the
## BioC version associated with the current R version.
## Also, %bm is substituted from the setting of getOption("BioC_mirror")
##
menu_name	URL	default	source	win.binary	mac.binary
CRAN	CRAN	@CRAN@	TRUE	TRUE	TRUE	TRUE
BioCsoft	"BioC software"	%bm/packages/%v/bioc	FALSE	TRUE	TRUE	TRUE
BioCann	"BioC annotation"	%bm/packages/%v/data/annotation	FALSE	TRUE	TRUE	TRUE
BioCexp	"BioC experiment"	%bm/packages/%v/data/experiment	FALSE	TRUE	TRUE	TRUE
CRANextra	CRAN (extras)	https://www.stats.ox.ac.uk/pub/RWin	FALSE	TRUE	FALSE	FALSE
#Omegahat	Omegahat	http://www.omegahat.net/R	FALSE	TRUE	FALSE	FALSE
R-Forge	R-Forge	https://R-Forge.R-project.org	FALSE	TRUE	TRUE	TRUE
rforge.net	rforge.net	https://www.rforge.net	FALSE	TRUE	TRUE	TRUE
