{ "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.\r\n\r\nSometimes I just need PHP, nodejs or Tailwind CSS.\r\n\r\nSo, I've made some ready to go development shells that I can use.\r\n\r\nEach devshell has extra packages installed, such as Composer and Phpactor for PHP, and the the Tailwind CSS language server and watchman for Tailwind CSS. \r\n\r\nThe code is in a [public Git repository][0], so I can run a simple one-line command to start the devshell:\r\n\r\n```plain\r\nnix develop git+https:\/\/code.oliverdavies.uk\/opdavies\/dev-shells#php82\r\n```\r\n\r\nIf I need PHP and Tailwind CSS, I can run the same command again to create a sub-shell with both sets of packages.\r\n\r\nI can also use direnv to achieve the same result by adding these lines to an .envrc file:\r\n\r\n```bash\r\nuse flake git+https:\/\/code.oliverdavies.uk\/opdavies\/dev-shells#php74\r\nuse flake git+https:\/\/code.oliverdavies.uk\/opdavies\/dev-shells#tailwindcss\r\n```\r\n\r\nFor 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.\r\n\r\n[0]: https:\/\/code.oliverdavies.uk\/opdavies\/dev-shells\r\n[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.<\/p>\n
Sometimes I just need PHP, nodejs or Tailwind CSS.<\/p>\n
So, I've made some ready to go development shells that I can use.<\/p>\n
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.<\/p>\n
The code is in a public Git repository<\/a>, so I can run a simple one-line command to start the devshell:<\/p>\n If I need PHP and Tailwind CSS, I can run the same command again to create a sub-shell with both sets of packages.<\/p>\n I can also use direnv to achieve the same result by adding these lines to an .envrc file:<\/p>\n For long-term projects, I would create and commit a specific flake.nix file<\/a> to the code repository so the environment is reproducible and the packages are locked, but this works when I just need something quickly.<\/p>\n",
"summary": ""
}
],
"field_daily_email_cta": [
{
"target_type": "node",
"target_uuid": "c74de3cf-5362-4d08-935a-a9d0d22fcb94"
}
]
}nix develop git+https:\/\/code.oliverdavies.uk\/opdavies\/dev-shells#php82\n<\/code><\/pre>
use flake git+https:\/\/code.oliverdavies.uk\/opdavies\/dev-shells#php74\nuse flake git+https:\/\/code.oliverdavies.uk\/opdavies\/dev-shells#tailwindcss\n<\/code><\/pre>