uuid: - value: 2365767c-117e-42d3-8657-09bae7d223c2 langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-06-30T07:12:21+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: 'Ready to go devshells' created: - value: '2025-06-27T07:03:24+00:00' changed: - value: '2025-06-30T07:12:21+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2025/06/27/ready-go-devshells langcode: en body: - value: |- When I'm quickly evaluating or contributing to an open source project, sometimes I don't need to create a complicated local environment. Sometimes I just need PHP, nodejs or Tailwind CSS. So, I've made some ready to go development shells that I can use. Each devshell has extra packages installed, such as Composer and Phpactor for PHP, and the the Tailwind CSS language server and watchman for Tailwind CSS. The code is in a [public Git repository][0], so I can run a simple one-line command to start the devshell: ```plain nix develop git+https://code.oliverdavies.uk/opdavies/dev-shells#php82 ``` If I need PHP and Tailwind CSS, I can run the same command again to create a sub-shell with both sets of packages. I can also use direnv to achieve the same result by adding these lines to an .envrc file: ```bash use flake git+https://code.oliverdavies.uk/opdavies/dev-shells#php74 use flake git+https://code.oliverdavies.uk/opdavies/dev-shells#tailwindcss ``` For long-term projects, I would create and commit a [specific flake.nix file][1] to the code repository so the environment is reproducible and the packages are locked, but this works when I just need something quickly. [0]: https://code.oliverdavies.uk/opdavies/dev-shells [1]: /daily/2025/06/26/project-specific-dependencies-nix-flakes format: markdown processed: |

When I'm quickly evaluating or contributing to an open source project, sometimes I don't need to create a complicated local environment.

Sometimes I just need PHP, nodejs or Tailwind CSS.

So, I've made some ready to go development shells that I can use.

Each devshell has extra packages installed, such as Composer and Phpactor for PHP, and the the Tailwind CSS language server and watchman for Tailwind CSS.

The code is in a public Git repository, so I can run a simple one-line command to start the devshell:

nix develop git+https://code.oliverdavies.uk/opdavies/dev-shells#php82
      

If I need PHP and Tailwind CSS, I can run the same command again to create a sub-shell with both sets of packages.

I can also use direnv to achieve the same result by adding these lines to an .envrc file:

use flake git+https://code.oliverdavies.uk/opdavies/dev-shells#php74
      use flake git+https://code.oliverdavies.uk/opdavies/dev-shells#tailwindcss
      

For long-term projects, I would create and commit a specific flake.nix file to the code repository so the environment is reproducible and the packages are locked, but this works when I just need something quickly.

summary: '' field_daily_email_cta: - target_type: node target_uuid: c74de3cf-5362-4d08-935a-a9d0d22fcb94