--- title: > Docker or Nix? pubDate: 2023-07-02 permalink: >- archive/2023/07/02/docker-or-nix tags: - docker - nix --- 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. ## Using Nix for software development 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: ```nix {   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. ## Will Nix replace Docker? 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.