aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRebecca Turner <rbt@sent.as>2024-04-04 16:11:37 -0700
committerRebecca Turner <rbt@sent.as>2024-04-08 09:42:34 -0700
commitb3233405381b50c7f7eb87d7962b25a06d16be44 (patch)
treee720ef2064ce51531d44eedd4b20cb409b83e3f2
parente55fc5af715020d79ec91c856447303737bf3015 (diff)
Add `nixfmt`
Change-Id: I7f21695e3971cfd02b2cce0dd016ff6eb3389905
-rw-r--r--flake.nix11
-rw-r--r--nix-support/nixfmt.nix65
-rw-r--r--treefmt.toml4
3 files changed, 78 insertions, 2 deletions
diff --git a/flake.nix b/flake.nix
index 26540a995..77e34fa7f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -71,6 +71,9 @@
};
overlays = [
(overlayFor (p: p.${stdenv}))
+ (final: prev: {
+ nixfmt = final.callPackage ./nix-support/nixfmt.nix {};
+ })
];
config.permittedInsecurePackages = [ "nix-2.13.6" ];
@@ -296,7 +299,11 @@
};
treefmt = {
enable = true;
- settings.formatters = [ ];
+ settings.formatters =
+ let
+ pkgs = nixpkgsFor.${system}.native;
+ in
+ [ pkgs.nixfmt ];
};
};
}) pre-commit-hooks.lib;
@@ -366,7 +373,7 @@
}).overrideAttrs (prev: {
# Required for clang-tidy checks
buildInputs = prev.buildInputs
- ++ [ pkgs.just ]
+ ++ [ pkgs.just pkgs.nixfmt ]
++ lib.optional (pre-commit ? enabledPackages) pre-commit.enabledPackages
++ lib.optionals (stdenv.cc.isClang) [ pkgs.llvmPackages.llvm pkgs.llvmPackages.clang-unwrapped.dev ];
nativeBuildInputs = prev.nativeBuildInputs
diff --git a/nix-support/nixfmt.nix b/nix-support/nixfmt.nix
new file mode 100644
index 000000000..b51e26295
--- /dev/null
+++ b/nix-support/nixfmt.nix
@@ -0,0 +1,65 @@
+# Copy of `nixfmt-rfc-style` vendored from `nixpkgs` master:
+# https://github.com/NixOS/nixpkgs/blob/ab6071eb54cc9b66dda436111d4f569e4e56cbf4/pkgs/by-name/ni/nixfmt-rfc-style/package.nix
+{
+ haskell,
+ haskellPackages,
+ fetchFromGitHub,
+}:
+let
+ inherit (haskell.lib.compose) justStaticExecutables;
+ raw-pkg = haskellPackages.callPackage (
+ {
+ mkDerivation,
+ base,
+ cmdargs,
+ directory,
+ fetchzip,
+ filepath,
+ lib,
+ megaparsec,
+ mtl,
+ parser-combinators,
+ safe-exceptions,
+ scientific,
+ text,
+ transformers,
+ unix,
+ }:
+ mkDerivation {
+ pname = "nixfmt";
+ version = "0.6.0-unstable-2024-03-14";
+ src = fetchFromGitHub {
+ owner = "serokell";
+ repo = "nixfmt";
+ rev = "8d13b593fa8d8d6e5075f541f3231222a08e84df";
+ hash = "sha256-HtXvzmfN4wk45qiKZ7V+/5WBV7jnTHfd7iBwF4XGl64=";
+ };
+ isLibrary = true;
+ isExecutable = true;
+ libraryHaskellDepends = [
+ base
+ megaparsec
+ mtl
+ parser-combinators
+ scientific
+ text
+ transformers
+ ];
+ executableHaskellDepends = [
+ base
+ cmdargs
+ directory
+ filepath
+ safe-exceptions
+ text
+ unix
+ ];
+ jailbreak = true;
+ homepage = "https://github.com/serokell/nixfmt";
+ description = "An opinionated formatter for Nix";
+ license = lib.licenses.mpl20;
+ mainProgram = "nixfmt";
+ }
+ ) { };
+in
+justStaticExecutables raw-pkg
diff --git a/treefmt.toml b/treefmt.toml
index 81df72cc2..ff7d972be 100644
--- a/treefmt.toml
+++ b/treefmt.toml
@@ -1 +1,5 @@
[formatter]
+# [formatter.nix]
+# command = "nixfmt"
+# includes = ["*.nix"]
+# excludes = ["tests/**"]