zero-to-nix icon indicating copy to clipboard operation
zero-to-nix copied to clipboard

Add rumdl Markdown linting

Open lucperkins opened this issue 1 month ago • 2 comments

  • Add rumdl Markdown linting
  • Add Markdown lint to CI checks

Summary by CodeRabbit

  • New Features

    • External link validation added to CI.
    • Markdown linting tooling integrated and an md lint script exposed.
  • Documentation

    • Technology stack updated to Astro.
    • Added flake template initialization examples for multiple languages.
    • Various docs reformatted and outdated link references removed.
  • Chores

    • Updated build/CI configuration and developer tooling exposure.

lucperkins avatar Nov 12 '25 20:11 lucperkins

Deploy Preview for zero-to-nix ready!

Name Link
Latest commit 269e8873a2814665a91b25283041b54658178de5
Latest deploy log https://app.netlify.com/projects/zero-to-nix/deploys/691678b0664c3c0008a77a90
Deploy Preview https://deploy-preview-484--zero-to-nix.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

netlify[bot] avatar Nov 12 '25 20:11 netlify[bot]

Walkthrough

Added Nix CI execution and an external link check to the GitHub workflow; introduced rumdl-based Markdown linting (config and ignore); updated flake inputs/outputs to an inputs-based pattern and added rumdl to devShell; replaced îles with Astro in README; removed or reformatted multiple MDX link references and added flake template examples in one start document.

Changes

Cohort / File(s) Summary
CI and Workflow
/.github/workflows/ci.yml
Added "Run Nix CI suite" step (nix develop --command ci) and "Check external links" step using lycheeverse/lychee-action@v2 (with token, cache, args, non-blocking failure).
Markdown linting config
/.rumdl.toml, /.gitignore
Added .rumdl.toml configuring rumdl (includes, disabled rules, respect .gitignore) and added .rumdl-cache/ to .gitignore.
Nix flake and dev environment
flake.nix
Changed outputs signature to inputs-pattern ({ self, ... }@inputs:), updated inputs.nixpkgs URL, switched internal references to inputs.nixpkgs, added rumdl to devShells and a lint-markdown script wired into CI.
npm scripts
package.json
Added mdlint script (rumdl check).
Docs — README
README.md
Replaced "îles" with "Astro", added [astro] link, removed legacy link references.
Docs — content cleanup
src/content/concepts/*.mdx, src/content/start/*.mdx
Removed multiple reference link definitions and adjusted formatting/indentation across many MDX files (e.g., caching, derivations, flakehub, flakes, incremental-builds, about, install, nix-run, nix-develop, nix-search).
Start guide examples
src/content/start/4.nix-build.mdx
Added flake template initialization snippets/examples for C++, Haskell, JavaScript, Python, Go, Rust, and Scala and added a vite reference link.

Sequence Diagram(s)

sequenceDiagram
    participant GH as GitHub Actions
    participant Nix as Nix devShell
    participant CI as Project CI script
    participant Rumdl as rumdl linter
    participant Lychee as Lychee link checker

    GH->>Nix: nix develop --command ci
    activate Nix
    Nix->>CI: run ci tasks (incl. lint-markdown)
    activate CI
    CI->>Rumdl: run `rumdl check` (uses .rumdl.toml)
    activate Rumdl
    Rumdl-->>CI: lint results
    deactivate Rumdl
    CI-->>Nix: complete
    deactivate CI
    deactivate Nix

    GH->>Lychee: run lycheeverse/lychee-action@v2 (cache, args, fail:false)
    activate Lychee
    Lychee-->>GH: link report (non-blocking)
    deactivate Lychee

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Pay attention to flake.nix inputs/outputs changes and all references to nixpkgs -> inputs.nixpkgs.
  • Validate CI wiring: lint-markdown script presence, nix develop --command ci behavior, and lychee action args/token.
  • Quick pass over many MDX files to ensure removed references do not break rendered pages.

Possibly related PRs

  • DeterminateSystems/zero-to-nix#469 — Similar flake.nix inputs/outputs rewiring and switching references to use inputs.nixpkgs.

Suggested reviewers

  • jeffmartens
  • cole-h

Poem

🐰 A linter hops through markdown lairs,
Nix flakes shuffle inputs with careful stares,
Astro takes the place of îles tonight,
Links get checked while CI hums polite,
The warren grows tidier, one hop, one light. ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately summarizes the main change: adding rumdl for Markdown linting across the codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • [ ] Create PR with unit tests
  • [ ] Post copyable unit tests in a comment
  • [ ] Commit unit tests in branch rumdl-markdown-linter

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 469734ba848937438a16fadcecf0800e2ad61383 and 269e8873a2814665a91b25283041b54658178de5.

📒 Files selected for processing (3)
  • .rumdl.toml (1 hunks)
  • src/content/concepts/derivations.mdx (1 hunks)
  • src/content/start/5.nix-search.mdx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/content/concepts/derivations.mdx
  • src/content/start/5.nix-search.mdx
  • .rumdl.toml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: test

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot] avatar Nov 12 '25 20:11 coderabbitai[bot]