devenv 1.5: Overlays Support and Performance Improvements
In this release, we're introducing a powerful Nix concept: overlays for modifying and extending the nixpkgs package set, along with significant performance and TLS certificate improvements.
Overlays: Customizing Your Package Set
Overlays allow you to modify or extend the default package set (pkgs
) that devenv uses. This is particularly useful when you need to:
- Apply patches to existing packages
- Use different versions of packages than what's provided by default
- Add custom packages not available in nixpkgs
- Use packages from older nixpkgs versions
Here's an example of using overlays in your devenv.nix
file to apply a patch to the hello
package:
{ pkgs, ... }:
{
# Define overlays to modify the package set
overlays = [
# Override an existing package with a patch
(final: prev: {
hello = prev.hello.overrideAttrs (oldAttrs: {
patches = (oldAttrs.patches or []) ++ [ ./hello-fix.patch ];
});
})
];
# Use the modified packages
packages = [ pkgs.hello pkgs.my-tool ];
}
Using packages from a different nixpkgs version
You can even use packages from a different nixpkgs version by adding an extra input to your devenv.yaml
:
inputs:
nixpkgs:
url: github:cachix/devenv-nixpkgs/rolling
nixpkgs-unstable:
url: github:nixos/nixpkgs/nixpkgs-unstable
And then using it in your devenv.nix
:
{ pkgs, inputs, ... }:
{
overlays = [
(final: prev: {
nodejs = (import inputs.nixpkgs-unstable {
system = prev.stdenv.system;
}).nodejs;
})
];
# Now you can use the unstable version of Node.js
languages.javascript.enable = true;
}
For more details and examples, check out the overlays documentation.
TLS Improvements: Native System Certificates
We've heard from ZScaler how they are using devenv and we've fixed their major annoyance by ensuring devenv now respects system certificates that many enterprises rely on.
macOS Development Enhancements: Custom Apple SDK Support
For macOS developers, we've added the ability to customize which Apple SDK is used for development:
This allows you to: - Control exactly which version of the SDK to use - Ensure consistency across development environments - Avoid incompatibilities between different macOS versions
Performance Improvements
Sander further tweaked the performance of developer environment activation at OceanSprint when it can be cached:
- Linux: ~500ms -> ~150ms
- macOS: ~1300ms -> ~300ms
Join our Discord to share feedback and suggestions!
Domen