diff --git a/flake.lock b/flake.lock index ee81d0a..a4fadf6 100644 --- a/flake.lock +++ b/flake.lock @@ -16,9 +16,44 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1770107345, + "narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "treefmt-nix": "treefmt-nix" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1773297127, + "narHash": "sha256-6E/yhXP7Oy/NbXtf1ktzmU8SdVqJQ09HC/48ebEGBpk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "71b125cd05fbfd78cab3e070b73544abe24c5016", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 8c23277..5f0c6ba 100644 --- a/flake.nix +++ b/flake.nix @@ -1,9 +1,15 @@ { inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + treefmt-nix.url = "github:numtide/treefmt-nix"; }; - outputs = {nixpkgs, ...}: let + outputs = { + self, + nixpkgs, + treefmt-nix, + ... + }: let forSystems = fn: nixpkgs.lib.genAttrs [ "aarch64-linux" @@ -12,10 +18,16 @@ "x86_64-linux" ] (system: fn nixpkgs.legacyPackages.${system}); defaultForSystems = fn: forSystems (pkgs: {default = fn pkgs;}); + treefmtEval = forSystems (pkgs: treefmt-nix.lib.evalModule pkgs ./treefmt.nix); in { devShells = defaultForSystems (pkgs: pkgs.mkShell { nativeBuildInputs = with pkgs; [elixir erlang]; }); + + formatter = forSystems (pkgs: treefmtEval.${pkgs.stdenv.hostPlatform.system}.config.build.wrapper); + checks = forSystems (pkgs: { + formatting = treefmtEval.${pkgs.stdenv.hostPlatform.system}.config.build.check self; + }); }; } diff --git a/treefmt.nix b/treefmt.nix new file mode 100644 index 0000000..4740375 --- /dev/null +++ b/treefmt.nix @@ -0,0 +1,8 @@ +{...}: { + projectRootFile = "flake.nix"; + programs.alejandra.enable = true; + programs.mix-format.enable = true; + programs.prettier.enable = true; + + settings.formatter.prettier.proseWrap = "always"; +}