Skip to content

Conversation

@lucperkins
Copy link
Member

@lucperkins lucperkins commented Nov 12, 2025

  • 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.

@netlify
Copy link

netlify bot commented Nov 12, 2025

Deploy Preview for zero-to-nix ready!

Name Link
🔨 Latest commit 269e887
🔍 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.

@coderabbitai
Copy link

coderabbitai bot commented Nov 12, 2025

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
Loading

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

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 469734b and 269e887.

📒 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.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/content/plain/about.mdx (1)

13-14: Minor style suggestion: Consider "except" or "except for" instead of "with the exception of".

The static analysis tool flagged a style opportunity on line 13. While this is minor, you may consider rephrasing for a more concise tone.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 155aa01 and 469734b.

⛔ Files ignored due to path filters (1)
  • flake.lock is excluded by !**/*.lock
📒 Files selected for processing (17)
  • .github/workflows/ci.yml (2 hunks)
  • .gitignore (1 hunks)
  • .rumdl.toml (1 hunks)
  • README.md (2 hunks)
  • flake.nix (5 hunks)
  • package.json (1 hunks)
  • src/content/concepts/caching.mdx (0 hunks)
  • src/content/concepts/derivations.mdx (0 hunks)
  • src/content/concepts/flakehub.mdx (0 hunks)
  • src/content/concepts/flakes.mdx (0 hunks)
  • src/content/concepts/incremental-builds.mdx (0 hunks)
  • src/content/plain/about.mdx (1 hunks)
  • src/content/start/1.install.mdx (0 hunks)
  • src/content/start/2.nix-run.mdx (0 hunks)
  • src/content/start/3.nix-develop.mdx (10 hunks)
  • src/content/start/4.nix-build.mdx (9 hunks)
  • src/content/start/5.nix-search.mdx (0 hunks)
💤 Files with no reviewable changes (8)
  • src/content/concepts/incremental-builds.mdx
  • src/content/start/5.nix-search.mdx
  • src/content/concepts/flakehub.mdx
  • src/content/start/2.nix-run.mdx
  • src/content/concepts/caching.mdx
  • src/content/concepts/flakes.mdx
  • src/content/start/1.install.mdx
  • src/content/concepts/derivations.mdx
🧰 Additional context used
🪛 LanguageTool
src/content/plain/about.mdx

[style] ~14-~14: Consider using “except” or “except for”
Context: ...official Nix documentation sources (with the exception of the [Wiki entry][wiki] for flakes). ##...

(WITH_THE_EXCEPTION_OF)

⏰ 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
🔇 Additional comments (10)
src/content/plain/about.mdx (1)

9-11: Indentation alignment looks good.

The formatting changes properly align continuation lines within list items, which aligns with Markdown linting standards.

Also applies to: 13-14

src/content/start/3.nix-develop.mdx (1)

72-78: Appreciate the nested list formatting cleanup.
The adjusted indentation keeps the ordered list and nested bullets rendering cleanly while meeting rumdl’s expectations.

.gitignore (1)

20-21: Good call ignoring the rumdl cache.
Keeping .rumdl-cache/ out of source control will prevent noisy diff churn from local lint runs.

README.md (1)

76-76: Glad to see the stack description updated.
Calling out Astro reflects the current site generator and keeps the tech list accurate for contributors.

src/content/start/4.nix-build.mdx (1)

152-207: The new template init snippets are helpful.
Spelling out the per-language nix flake init commands lowers the barrier for readers jumping into the examples.

.rumdl.toml (1)

1-33: Configuration looks balanced.
The rule allow-list mirrors our MDX conventions (shell hooks, tables, component markup) without muting broader lint coverage.

flake.nix (1)

50-122: Nice addition wiring rumdl into the dev shell and CI.
Bundling the package plus a dedicated lint-markdown script makes the new check turnkey for both local and CI workflows.

package.json (1)

12-12: Missing rumdl dependency in package.json.

The new "mdlint" script references rumdl, but it's not listed in devDependencies. If rumdl is intended to be available only through the Nix development environment (via flake.nix), this is fine, but ensure the script is documented or used only within nix develop. Otherwise, add rumdl to devDependencies so npm can resolve it.

.github/workflows/ci.yml (2)

36-46: Lychee external link check configuration looks sound.

The step is well-configured with caching, verbose output, and proper target directory. One minor note: the GITHUB_TOKEN env on line 39 is redundant since it's already available from the job-level env on line 13, but this doesn't cause issues.


33-34: No issues found—markdown linting is properly integrated.

The ci command in flake.nix correctly includes the lint-markdown step, which invokes rumdl check. This fulfills the PR objective to add markdown linting to CI checks. When the workflow runs nix develop --command ci, it will execute the full pipeline including markdown linting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants