uuid: - value: f2220fec-35de-40a7-be72-9b3b643e15df langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-05-11T09:00:02+00:00' revision_uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 revision_log: { } status: - value: true uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 title: - value: 'Reproducible or repeatable' created: - value: '2025-01-20T00:00:00+00:00' changed: - value: '2025-05-11T09:00:02+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2025/01/20/reproducible langcode: en body: - value: |

In yesterday's email, I showed how I've been using Nix and flake files to build reproducible and shareable development environments for Drupal applications.

The reason it's reproducible is the flake.lock file.

Similar to composer.lock or package-lock.json, it captures the exact versions of the packages installed from the nixpkgs repository.

This file, along with flake.nix, can be committed alongside the application code and anyone with Nix installed can run nix develop to get a shell with the same packages and dependencies.

This isn't the same as other solutions, where you add something like FROM php:8.2 but, because there's no lockfile, there's no guarantee the same package versions will be installed so there could be mismatches that cause errors.

With flake.lock, the environment isn't just repeatable - it's completely reproducible.

Locally, in a CI pipeline or in production.

format: full_html processed: |

In yesterday's email, I showed how I've been using Nix and flake files to build reproducible and shareable development environments for Drupal applications.

The reason it's reproducible is the flake.lock file.

Similar to composer.lock or package-lock.json, it captures the exact versions of the packages installed from the nixpkgs repository.

This file, along with flake.nix, can be committed alongside the application code and anyone with Nix installed can run nix develop to get a shell with the same packages and dependencies.

This isn't the same as other solutions, where you add something like FROM php:8.2 but, because there's no lockfile, there's no guarantee the same package versions will be installed so there could be mismatches that cause errors.

With flake.lock, the environment isn't just repeatable - it's completely reproducible.

Locally, in a CI pipeline or in production.

summary: null field_daily_email_cta: { }