uuid: - value: 8b84ccf4-bb4b-48fd-8009-2c2641466185 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:38+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: | Docker or Nix? created: - value: '2023-07-02T00:00:00+00:00' changed: - value: '2025-05-11T09:00:38+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2023/07/02/docker-or-nix langcode: en body: - value: |
I've been a Nix user for about a year, starting with its package manager on my previously installed Linux distribution.
I started to use Home Manager for my user configuration and dotfiles and later switched to the NixOS operating system.
I've also been using Nix Flakes for per-project configuration.
A Flake file is a simple file written in the Nix language that defines the project's dependencies and installs them from the Nix package manager.
Here is an example Flake for a PHP CLI application:
{
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" ];
perSystem = { config, self', inputs', pkgs, system, ... }: {
devShells = {
default = pkgs.mkShell {
buildInputs = with pkgs; [ php82 php82Packages.composer ];
};
};
};
};
}
It declares that PHP 8.2 and Composer are available, even if I have different versions installed globally.
Nix and Flakes have replaced Docker for me on some projects.
If I have a simple setup and need a specific version of PHP or Node and some additional programs, I can get those from the Flake.
I don't know if it'll replace Docker for me completely and work on more complex projects, but it's working well for me where I'm using it.
format: full_html processed: |I've been a Nix user for about a year, starting with its package manager on my previously installed Linux distribution.
I started to use Home Manager for my user configuration and dotfiles and later switched to the NixOS operating system.
I've also been using Nix Flakes for per-project configuration.
A Flake file is a simple file written in the Nix language that defines the project's dependencies and installs them from the Nix package manager.
Here is an example Flake for a PHP CLI application:
{
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" ];
perSystem = { config, self', inputs', pkgs, system, ... }: {
devShells = {
default = pkgs.mkShell {
buildInputs = with pkgs; [ php82 php82Packages.composer ];
};
};
};
};
}
It declares that PHP 8.2 and Composer are available, even if I have different versions installed globally.
Nix and Flakes have replaced Docker for me on some projects.
If I have a simple setup and need a specific version of PHP or Node and some additional programs, I can get those from the Flake.
I don't know if it'll replace Docker for me completely and work on more complex projects, but it's working well for me where I'm using it.
summary: null field_daily_email_cta: { }