Nix: install the program with a flake (#13) master
## What the change gives A flake at the root of the repository builds the program for `x86_64-linux` and for `aarch64-linux`. A user runs the program one time with `nix run`, puts it in a profile with `nix profile install`, or adds the repository to the inputs of an other flake. The `overlays.default` output gives the name `pkgs.dynamonix` to a configuration that uses an overlay. The README shows the three methods. ## One derivation for the flake and for the overlay `nix/package.nix` holds the derivation alone. The flake and the overlay share this one file, therefore the two cannot build a different program. A user of a configuration with no flake calls the same file with `callPackage`. The derivation reads the name, the description and the version from the Cargo manifests. A change of the version needs no edit of the Nix code. ## A build with no addition nixpkgs is the only input of the flake. The workspace uses no library outside of Rust, so the derivation needs no `buildInputs` and no `nativeBuildInputs`. `cargoLock.lockFile` takes the version of each dependency from `Cargo.lock`, and the build adds no second list of versions. The source is a file set of `Cargo.toml`, `Cargo.lock` and `crates`. A change of the README or of the CI configuration therefore builds nothing again. The tests need no terminal and no compositor, so the sandbox runs the full suite. A `nix build` gives the same evidence as the local checks. ## Checks `cargo fmt --all --check` and `cargo clippy --workspace --all-targets --locked -- -D warnings` pass, with the clippy of Rust 1.90 also clean. `nix build .#dynamonix` passes. The sandbox ran the 247 tests of the suite with no failure, and the program of the result reports version 0.2.0. `nix flake check` passes. A NixOS configuration that takes the flake as an input and uses the overlay evaluates to dynamonix 0.2.0. Reviewed-on: https://git.devtechnica.com/sreedev/dynamonix/pulls/13