diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..37cfb73 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,34 @@ + +# How do I contribute? + +Flake-parts is designed to be extremely modular, so often, you don't have to. + +Nonetheless, some changes can only be made here. + +Step 1. Look for an open or closed issue. This may be the quickest path to a solution to your problem. + +Step 2. If needed, open an issue. This way we can discuss the problem, and if necessary discuss changes, if any need to be made. + +Step 3. If needed, create a PR. Make sure to run `nix-shell` before comitting. It installs a pre-commit hook with `nixpkgs-fmt`. + + +# Style + +This repository is written in a style similar to that of Nixpkgs, with some exceptions + + - File names may be in camelCase. This reduces the number of unique names in the project. + + - The "contains attribute" operator is spelled without spaces, just like the "select attribute" operator. I believe Nixpkgs is undecided on this. + ```nix + if x?a then "has a" else "does not have a" + # ^^^ + ``` + +Except for file names, the Nixpkgs casing rule is maintained here as well: + + - Package names are verbatim or in snake-case. Example: + - `flake-parts-lib` + + - Functionality provided by flake-parts is in camelCase. Examples: + - `getSystem` + - `mkFlake`