A flake for performing common project setup files such as formatting and hooking into Git commits.
  • Nix 87.1%
  • JavaScript 9.9%
  • Shell 2.2%
  • Just 0.8%
Find a file
D. Moonfire 69d8d14d8c fix: incorrect flag on add-missing-project-uuid
Signed-off-by: D. Moonfire <d.moonfire@moonfire.us>
2026-04-17 00:41:47 -05:00
.config feat: implemented SQL formatting 2026-04-03 14:11:18 -05:00
docs feat: added the ability to include additional Just targets 2026-04-16 00:34:22 -05:00
LICENSES feat: switched to REUSE licensing 2026-04-03 08:48:53 -05:00
news docs: updated blog news 2026-04-12 20:16:07 -05:00
src fix: incorrect flag on add-missing-project-uuid 2026-04-17 00:41:47 -05:00
.editorconfig feat: updating flake dependencies to NixOS 25.11 2025-12-15 20:44:42 -06:00
.envrc feat: switched configuration to flake options 2026-04-01 22:14:57 -05:00
.gitignore feat: implemented SQL formatting 2026-04-03 14:11:18 -05:00
.prettierignore fix: generate .prettierignore files 2026-04-03 12:15:35 -05:00
CODE_OF_CONDUCT.md fix: avoid treefmt/nixago cycle on the Contributor Convenant 2024-02-05 18:46:40 -06:00
DCO.md feat: added the ability to ignore files automatically 2024-03-07 19:37:15 -06:00
flake.lock feat: changed flake to use flake-parts 2026-01-17 18:56:53 -06:00
flake.nix fix: incorrect flag on add-missing-project-uuid 2026-04-17 00:41:47 -05:00
Justfile feat: added the ability to include additional Just targets 2026-04-16 00:34:22 -05:00
README.md docs: updating main 2026-04-03 14:16:35 -05:00
REUSE.toml refactor: switched to a JS version of the options generator 2026-04-03 10:33:04 -05:00

MfGames Project Setup Flake

An opinionated setup for projects using Nix flakes.

According to Larry Wall, there are three virtues of a great coder: 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:

In addition, we need to document policies that guide our projects:

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 flakes and can be used directly as an input.

{
  inputs.mfgames-project-setup.url = "git+https://src.mfgames.com/nixos-contrib/mfgames-project-setup-flake.git";
}

To use it, the module must be added first, then the options as used.

{
    outputs = ...
        imports = [
            inputs.mfgames-project-setup.flakeModules.default
        ];

        mfgames.project.enable = true;
}

Of course, this being Nix, there are many ways of creating a devShell. This is one way of using the config inside the shell.

devShells = ...
    default = pkgs.mkShell {
        packages = [] ++ config.mfgames.project.packages;
        shellHook = config.mfgames.project.shellHook;
    };