{"id":13942261,"url":"https://github.com/mcanouil/quarto-codespaces","last_synced_at":"2026-02-26T21:34:48.367Z","repository":{"id":200213050,"uuid":"701520951","full_name":"mcanouil/quarto-codespaces","owner":"mcanouil","description":"Quarto Codespaces / Dev Containers setup for quick online testing.","archived":false,"fork":false,"pushed_at":"2025-06-29T11:26:52.000Z","size":171,"stargazers_count":28,"open_issues_count":1,"forks_count":11,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-29T12:29:11.393Z","etag":null,"topics":["codespaces","devcontainer","quarto","quartopub"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcanouil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"mcanouil","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":null}},"created_at":"2023-10-06T20:23:06.000Z","updated_at":"2025-06-29T11:26:25.000Z","dependencies_parsed_at":"2023-10-16T05:03:04.506Z","dependency_job_id":"ca92084f-1b88-4d2c-be5f-18ab271f6ac9","html_url":"https://github.com/mcanouil/quarto-codespaces","commit_stats":null,"previous_names":["mcanouil/quarto-codespaces"],"tags_count":18,"template":true,"template_full_name":null,"purl":"pkg:github/mcanouil/quarto-codespaces","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcanouil%2Fquarto-codespaces","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcanouil%2Fquarto-codespaces/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcanouil%2Fquarto-codespaces/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcanouil%2Fquarto-codespaces/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcanouil","download_url":"https://codeload.github.com/mcanouil/quarto-codespaces/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcanouil%2Fquarto-codespaces/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272277251,"owners_count":24905445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codespaces","devcontainer","quarto","quartopub"],"created_at":"2024-08-08T02:01:46.960Z","updated_at":"2026-02-26T21:34:48.358Z","avatar_url":"https://github.com/mcanouil.png","language":"Shell","readme":"# Quarto Codespaces\n\n[![Dev Container Docker Image Build](https://github.com/mcanouil/quarto-codespaces/actions/workflows/devcontainer.yml/badge.svg?event=release)](https://github.com/mcanouil/quarto-codespaces/actions/workflows/devcontainer.yml)[![Codespaces Prebuilds](https://github.com/mcanouil/quarto-codespaces/actions/workflows/codespaces/create_codespaces_prebuilds/badge.svg)](https://github.com/mcanouil/quarto-codespaces/actions/workflows/codespaces/create_codespaces_prebuilds)\n\nSetup to deploy [GitHub Codespaces](https://github.com/features/codespaces) (Codespaces) or [Development Containers](https://containers.dev/) (Dev Containers) with [Quarto](https://quarto.org/).\n\n## Overview\n\nThis repository provides a setup to deploy Codespaces or Dev Containers with Quarto, supporting R, Python, and Julia environments.\nIt includes configuration files and scripts to initialise and manage these environments.\n\nUsing [`ghcr.io/mcanouil/quarto-codespaces:latest`](https://github.com/mcanouil/quarto-codespaces/pkgs/container/quarto-codespaces) as a base image for a quick deployment (Ubuntu 22.04 - Jammy Jellyfish):  \n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/mcanouil/quarto-codespaces?quickstart=1\u0026devcontainer_path=.devcontainer%2Fdevcontainer.json)\n\nUsing Codespaces default base image ([`ghcr.io/mcanouil/quarto-codespaces:release-universal`](https://github.com/mcanouil/quarto-codespaces/pkgs/container/quarto-codespaces)) to mitigate GitHub storage usage (Ubuntu 20.04 - Focal Fossa):  \n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/mcanouil/quarto-codespaces?quickstart=1\u0026devcontainer_path=.devcontainer%2Funiversal%2Fdevcontainer.json)\n\n## Using as a Template\n\nYou can use this repository as a template for your own projects.\nTo do so, click the \"Use this template\" button on the GitHub repository page.\nThis will create a new repository with the same files and structure.\n\n## Using with Codespaces\n\nThis repository is configured to work with GitHub Codespaces.\nTo use it, follow these steps:\n\n1. Open the repository on GitHub.\n2. Click the \"Code\" button and select \"Open with Codespaces\".\n3. If you don't have a Codespace already, create a new one.\n4. The Codespace will be set up automatically using the configuration provided in this repository.\n\n### Using Custom Configurations\n\nBy default, Codespaces uses the main configuration located at `.devcontainer/devcontainer.json` (Quarto stable release).\nHowever, this repository provides several pre-configured alternatives for different Quarto versions and setups:\n\n#### Available Configurations\n\n- **Default**: `.devcontainer/devcontainer.json` - Latest stable Quarto release\n- **Universal**: `.devcontainer/universal/devcontainer.json` - Based on Microsoft's universal base image (Ubuntu 20.04)\n- **Specific Quarto versions**:\n  - `.devcontainer/quarto-1.8/devcontainer.json` - Quarto 1.8\n  - `.devcontainer/quarto-1.7/devcontainer.json` - Quarto 1.7\n  - `.devcontainer/quarto-1.6/devcontainer.json` - Quarto 1.6\n  - `.devcontainer/quarto-1.5/devcontainer.json` - Quarto 1.5\n  - And more versions available in the `.devcontainer/` directory\n- **Prerelease**: `.devcontainer/quarto-prerelease/devcontainer.json` - Latest Quarto prerelease\n\n#### Selecting a Custom Configuration\n\nTo use a specific configuration when creating a Codespace:\n\n1. **Via URL**: You can directly specify the configuration using URL parameters:\n\n   ```url\n   https://codespaces.new/mcanouil/quarto-codespaces?devcontainer_path=.devcontainer%2Funiversal%2Fdevcontainer.json\n   ```\n\n2. **Via Codespaces Interface**:\n   - When creating a new Codespace, click on the \"Configure dev container\" option.\n   - Select the desired configuration from the dropdown menu.\n   - Click \"Create codespace\".\n\n3. **For Template Users**: If you're using this as a template for your own repository:\n   - Copy the desired configuration to `.devcontainer/devcontainer.json` in your repository.\n   - Modify the configuration as needed for your specific requirements.\n   - Commit the changes to apply the custom configuration.\n\n#### Creating Your Own Configuration\n\nYou can also create a completely custom configuration by:\n\n1. Copying an existing configuration file as a starting point\n2. Modifying the following sections as needed:\n   - **Base image**: Change the `image` property or use `build` for custom Dockerfile.\n   - **Features**: Add or remove Dev Container features.\n   - **Extensions**: Customise VS Code extensions.\n   - **Settings**: Adjust VS Code settings.\n   - **Environment variables**: Add custom environment variables.\n\nExample custom configuration structure:\n\n```json\n{\n  \"name\": \"Custom Quarto Setup\",\n  \"image\": \"ghcr.io/mcanouil/quarto-codespaces:latest\",\n  \"features\": {\n    \"ghcr.io/rocker-org/devcontainer-features/quarto-cli:1\": {\n      \"version\": \"1.8\"\n    }\n  },\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\"quarto.quarto\"],\n      \"settings\": {}\n    }\n  }\n}\n```\n\n## Dev Container Configuration\n\nThe Dev Container configuration is located in [`.github/.devcontainer/devcontainer.json`](.github/.devcontainer/devcontainer.json).\nThis file defines the development container settings, including the base image, user settings, and features to be installed.\n\n### Key Features\n\n- **Base Image**: The container uses the `buildpack-deps:jammy-curl` image as the base.\n- **Remote User**: The default user is set to `vscode`.\n- **Installed Features**:\n  - Common utilities with Zsh shell.\n  - [Git](https://git-scm.com/) for version control.\n  - [R](https://www.r-project.org/) with `renv` support and `rmarkdown`.\n  - [Python](https://www.python.org/) with shared libraries, `jupyter` and [`uv`](https://docs.astral.sh/uv/).\n  - [Julia](https://julialang.org/) with the latest release channel and `IJulia`.\n  - [TinyTeX](https://github.com/rstudio/tinytex) for LaTeX support.\n  - [Decktape](https://github.com/astefanutti/decktape) for PDF generation from HTML presentations.\n  - [Quarto CLI](https://quarto.org/) for scientific and technical publishing.\n\n### Docker Image\n\nThe Dev Container configuration is used to build a Docker image that is available for use.\nYou can pull the latest image (using Quarto stable release) using the following command:\n\n```sh\ndocker pull ghcr.io/mcanouil/quarto-codespaces:latest\n```\n\nAvailable tags: [`ghcr.io/mcanouil/quarto-codespaces`](https://github.com/mcanouil/quarto-codespaces/pkgs/container/quarto-codespaces)\n\n#### Quarto Check Output\n\nThe following outputs show the `quarto check` results from the latest builds of the Docker images:\n\n\u003cdetails\u003e\n\u003csummary\u003eRelease Image\u003c/summary\u003e\n\n\u003c!-- QUARTO_CHECK_RELEASE_START --\u003e\n```txt\nQuarto 1.8.27\n\r[✓] Checking environment information...\n      Quarto cache location: /home/vscode/.cache/quarto\n\r[✓] Checking versions of quarto binary dependencies...\n      Pandoc version 3.6.3: OK\n      Dart Sass version 1.87.0: OK\n      Deno version 2.3.1: OK\n      Typst version 0.13.0: OK\n\r[✓] Checking versions of quarto dependencies......OK\n\r[✓] Checking Quarto installation......OK\n      Version: 1.8.27\n      Path: /opt/quarto/bin\n\n\r(|) Checking tools....................\r[✓] Checking tools....................OK\n      TinyTeX: (external install)\n      Chromium: (not installed)\n\n\r(|) Checking LaTeX....................\r[✓] Checking LaTeX....................OK\n      Using: Installation From Path\n      Path: /usr/local/bin\n      Version: 2025\n\n\r[✓] Checking Chrome Headless....................OK\n      Using: Chrome found on system\n      Path: /usr/bin/google-chrome\n      Source: PATH\n\n\r(|) Checking basic markdown render....\r[✓] Checking basic markdown render....OK\n\n\r(|) Checking Python 3 installation....\r[✓] Checking Python 3 installation....OK\n      Version: 3.13.9\n      Path: /usr/local/python/current/bin/python3\n      Jupyter: 5.9.1\n      Kernels: julia-1.12, python3\n\n\r(|) Checking Jupyter engine render....\r[✓] Checking Jupyter engine render....OK\n\n\r(|) Checking R installation...........\r[✓] Checking R installation...........OK\n      Version: 4.5.2\n      Path: /opt/R/4.5.2/lib/R\n      LibPaths:\n        - /home/vscode/R/x86_64-pc-linux-gnu-library/4.5\n        - /opt/R/4.5.2/lib/R/library\n      knitr: 1.51\n      rmarkdown: 2.30\n\n\r(|) Checking Knitr engine render......\r[✓] Checking Knitr engine render......OK\n```\n\u003c!-- QUARTO_CHECK_RELEASE_END --\u003e\n\n\u003c!-- QUARTO_CHECK_RELEASE_BUILD_URL_START --\u003e\n[View build log](https://github.com/mcanouil/quarto-codespaces/actions/runs/22271868461)\n\u003c!-- QUARTO_CHECK_RELEASE_BUILD_URL_END --\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ePrerelease Image\u003c/summary\u003e\n\n\u003c!-- QUARTO_CHECK_PRERELEASE_START --\u003e\n```txt\nQuarto 1.9.23\n\r[✓] Checking environment information...\n      Quarto cache location: /home/vscode/.cache/quarto\n\r[✓] Checking versions of quarto binary dependencies...\n      Pandoc version 3.8.3: OK\n      Dart Sass version 1.87.0: OK\n      Deno version 2.4.5: OK\n      Typst version 0.14.2: OK\n\r[✓] Checking versions of quarto dependencies......OK\n\r[✓] Checking Quarto installation......OK\n      Version: 1.9.23\n      Path: /opt/quarto/bin\n\n\r(|) Checking tools....................\r[✓] Checking tools....................OK\n      TinyTeX: (external install)\n      Chromium: (not installed)\n      Chrome Headless Shell: (not installed)\n      VeraPDF: (not installed)\n\n\r(|) Checking LaTeX....................\r[✓] Checking LaTeX....................OK\n      Using: Installation From Path\n      Path: /usr/local/bin\n      Version: 2025\n\n\r[✓] Checking Chrome Headless....................OK\n      Using: Chrome found on system\n      Path: /usr/bin/google-chrome\n      Source: PATH\n\n\r(|) Checking basic markdown render....\r[✓] Checking basic markdown render....OK\n\n\r(|) Checking R installation...........\r[✓] Checking R installation...........OK\n      Version: 4.5.2\n      Path: /opt/R/4.5.2/lib/R\n      LibPaths:\n        - /home/vscode/R/x86_64-pc-linux-gnu-library/4.5\n        - /opt/R/4.5.2/lib/R/library\n      knitr: 1.51\n      rmarkdown: 2.30\n\n\r(|) Checking Knitr engine render......\r[✓] Checking Knitr engine render......OK\n\n\r(|) Checking Python 3 installation....\r[✓] Checking Python 3 installation....OK\n      Version: 3.13.9\n      Path: /usr/local/python/current/bin/python3\n      Jupyter: 5.9.1\n      Kernels: julia-1.12, python3\n\n\r(|) Checking Jupyter engine render....\r[✓] Checking Jupyter engine render....OK\n\n\r(|) Checking Julia installation...\r[✓] Checking Julia installation...\n```\n\u003c!-- QUARTO_CHECK_PRERELEASE_END --\u003e\n\n\u003c!-- QUARTO_CHECK_PRERELEASE_BUILD_URL_START --\u003e\n[View build log](https://github.com/mcanouil/quarto-codespaces/actions/runs/22271868461)\n\u003c!-- QUARTO_CHECK_PRERELEASE_BUILD_URL_END --\u003e\n\n\u003c/details\u003e\n\n## Initialisation Script\n\nThe initialisation script [init.sh](init.sh) is used to set up the R, Python, and Julia environments.\nIt supports initialising all environments or specific ones based on the provided options.\n\n### Usage\n\n```sh\n./init-env.sh [--what/-w all|r|python|julia] [--force/-f] [--help/-h]\n```\n\n### Script Details\n\n- **Options**:\n  - `--what/-w`: Specify which environment(s) to initialise (`all`, `r`, `python` (uv), `julia`).\n  - `--force/-f`: Force reinstallation of the specified environment(s).\n  - `--help/-h`: Display help message and exit.\n- **Functionality**: The script installs necessary dependencies for R, Python, and Julia, inside environments.\n  - For R, it sets up `renv` and installs required packages.\n  - For Python, it sets up uv and installs required libraries.\n  - For Julia, it sets up an environment and installs required packages.\n\n## Contributing\n\nContributions are welcome!\nPlease open an issue or submit a pull request for any improvements or bug fixes.\n\n## License\n\nThis project is licensed under the MIT License.\nSee the [LICENSE](LICENSE) file for details.\n","funding_links":["https://github.com/sponsors/mcanouil"],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcanouil%2Fquarto-codespaces","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcanouil%2Fquarto-codespaces","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcanouil%2Fquarto-codespaces/lists"}