diff --git a/src/content/daily-email/2023-07-02.md b/src/content/daily-email/2023-07-02.md new file mode 100644 index 000000000..25f399907 --- /dev/null +++ b/src/content/daily-email/2023-07-02.md @@ -0,0 +1,51 @@ +--- +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.