docs: updating documentation
This commit is contained in:
parent
db3cde52c4
commit
ebd6b9196a
3 changed files with 117 additions and 0 deletions
115
README.md
Normal file
115
README.md
Normal file
|
@ -0,0 +1,115 @@
|
|||
# MfGames Project Setup Flake
|
||||
|
||||
_An opinionated setup for projects using Nix flakes._
|
||||
|
||||
According to Larry Wall, there are
|
||||
[three virtues of a great coder](https://thethreevirtues.com/): laziness,
|
||||
impatience, and hubris.
|
||||
|
||||
Over the years, the complexity of being a developer has only increased.
|
||||
Fortunately (or unfortunately depending the mood), we have embraced laziness and
|
||||
developed tools to help automate some of the more tedious tasks to ensure
|
||||
everything is formatted correctly and properly recorded. This has resulted in
|
||||
libraries such as:
|
||||
|
||||
- [EditorConfig](https://editorconfig.org/)
|
||||
- [Conform](https://github.com/siderolabs/conform)
|
||||
- [Lefthook](https://github.com/evilmartians/lefthook)
|
||||
- [Prettier](https://prettier.io/)
|
||||
- [Rustfmt](https://rust-lang.github.io/rustfmt/)
|
||||
- [Treefmt](https://numtide.github.io/treefmt/)
|
||||
|
||||
In addition, we need to document policies that guide our projects:
|
||||
|
||||
- [Contributor Convenant](https://www.contributor-covenant.org/)
|
||||
- [Developer Certificate of Origin](https://developercertificate.org/)
|
||||
|
||||
But, like the rest of the development world, all of these tools change and
|
||||
evolve. New tools become useful to ensure formatting while others are taken over
|
||||
by successors. Not to mention opinions and aesthetics change and what works
|
||||
yesterday doesn't always look right today.
|
||||
|
||||
## Nix
|
||||
|
||||
This project is intended to be used with [Nix](https://nixos.wiki/wiki/Flakes)
|
||||
flakes and can be used directly as an input.
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs.mfgames-project-setup.url = "git+https://src.mfgames.com/nixos-contrib/mfgames-project-setup-flake.git";
|
||||
}
|
||||
```
|
||||
|
||||
This flake provides a function in `mfgames-project-setup.lib.mkConfig` that
|
||||
creates a shell hook and the various tools required to run those hooks (because
|
||||
programs like `lefthook` assume that the program is in the `PATH`).
|
||||
|
||||
```nix
|
||||
config = mfgames-project-setup.lib.mkConfig {
|
||||
inherit system pkgs;
|
||||
# Options go here.
|
||||
};
|
||||
```
|
||||
|
||||
Of course, this being Nix, there are many ways of creating a devShell. This is
|
||||
one way of using the config inside the shell.
|
||||
|
||||
```nix
|
||||
devShells = forEachSupportedSystem ({ system, pkgs }:
|
||||
let
|
||||
config = inputs.mfgames-project-setup.lib.mkConfig {
|
||||
inherit system pkgs;
|
||||
conform.scopes = [ "cli" "website" ];
|
||||
rust.enable = false;
|
||||
};
|
||||
in
|
||||
{
|
||||
default = pkgs.mkShell {
|
||||
# Add in the required packages for the configuration.
|
||||
packages = [] ++ config.packages;
|
||||
|
||||
# Add in the
|
||||
shellHook = ''
|
||||
${config.shellHook}
|
||||
'';
|
||||
};
|
||||
});
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
This is definately opinionated, mainly by the virtue that is primarily used by a
|
||||
single developer. Internally, this uses
|
||||
[Nixago](https://github.com/nix-community/nixago) (including a little hacking
|
||||
for text files).
|
||||
|
||||
### conform.scopes
|
||||
|
||||
Controls which scope is allowed inside the
|
||||
[Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/).
|
||||
|
||||
Defaults to `[]`. An example would be `["cli" "infra"]`.
|
||||
|
||||
### contributorCovenant.enable
|
||||
|
||||
If set to true, then a `CODE_OF_CONDUCT.md` will be created using information
|
||||
from `contributorCovenant.contact` for the contact information. If the contact
|
||||
is missing, this will assert.
|
||||
|
||||
Defaults to `false`.
|
||||
|
||||
### contributorCovenant.contact
|
||||
|
||||
Set this to the value for the contact information inside the
|
||||
`CODE_OF_CONDUCT.md` file. This can be an email or a website.
|
||||
|
||||
### developerCertificateOfOrigin.enable
|
||||
|
||||
If set to true, then a `DCO.md` will be created using the boilerplate text from
|
||||
https://developercertificate.org/.
|
||||
|
||||
Defaults to `false`.
|
||||
|
||||
### rust.enable
|
||||
|
||||
If set to true, then `rustfmt.toml` will be created.
|
|
@ -1,3 +1,4 @@
|
|||
# https://www.contributor-covenant.org/
|
||||
inputs @ { pkgs, text-engine, contributorCovenant, ... }:
|
||||
assert pkgs.lib.assertMsg
|
||||
(contributorCovenant ? "contact") "contributorCovenant.contact must be set";
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# https://developercertificate.org/
|
||||
inputs @ { pkgs, text-engine, ... }:
|
||||
{
|
||||
output = "DCO.md";
|
||||
|
|
Loading…
Reference in a new issue