diff --git a/flake.lock b/flake.lock index a16c929..9f292f6 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,21 @@ "type": "github" } }, + "flake-utils": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flakeCompat": { "flake": false, "locked": { @@ -73,7 +88,8 @@ "fenix": "fenix", "flakeCompat": "flakeCompat", "flakeUtils": "flakeUtils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "treefmt": "treefmt" } }, "rust-analyzer-src": { @@ -92,6 +108,27 @@ "repo": "rust-analyzer", "type": "github" } + }, + "treefmt": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1640364438, + "narHash": "sha256-sV1Oa9JVNmpAwZ4cnVs7ovHrKL8EPg3J08jPX/a48LI=", + "owner": "numtide", + "repo": "treefmt", + "rev": "26d7f5f15e5d22d4413ba7c5ae0447fdc0b5cc76", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index c9ddd38..c311fd9 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,8 @@ flakeCompat.url = github:edolstra/flake-compat; flakeCompat.flake = false; flakeUtils.url = "github:numtide/flake-utils"; + treefmt.url = "github:numtide/treefmt"; + treefmt.inputs.nixpkgs.follows = "nixpkgs"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; }; outputs = @@ -15,6 +17,7 @@ let nixpkgs = import inputs.nixpkgs { inherit system; }; cargoToml = builtins.fromTOML ( builtins.readFile ./Cargo.toml ); + treefmt = inputs.treefmt.defaultPackage.${ system }; fenix = inputs.fenix.packages.${ system }; fenixPlatform = nixpkgs.makeRustPlatform { inherit ( fenix.latest ) cargo rustc; }; in @@ -53,7 +56,11 @@ fenix.latest.rust-src fenix.latest.rustc fenix.latest.rustfmt + treefmt + nixpkgs.shfmt + nixpkgs.nodePackages.prettier ]; + shellHook = "cargo build"; }; } ); diff --git a/treefmt.toml b/treefmt.toml new file mode 100644 index 0000000..944d008 --- /dev/null +++ b/treefmt.toml @@ -0,0 +1,32 @@ +# One CLI to format the code tree - https://github.com/numtide/treefmt + +[formatter.nix] +command = "./target/debug/alejandra" +includes = ["*.nix"] + +[formatter.prettier] +command = "prettier" +options = ["--write"] +includes = [ + "*.css", + "*.html", + "*.js", + "*.json", + "*.jsx", + "*.md", + "*.mdx", + "*.scss", + "*.ts", + "*.yaml", +] + +[formatter.shell] +command = "shfmt" +options = [ + "-i", + "2", # indent 2 + "-s", # simplify the code + "-w", # write back to the file +] +includes = ["*.sh"] +