summaryrefslogtreecommitdiff
path: root/modules/common/editorconfig.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-01-07 23:57:45 +0300
committerAzat Bahawi <azat@bahawi.net>2024-01-07 23:57:45 +0300
commit5a4e7e22a6975ebc3de70e68446ff53109c64170 (patch)
tree0004db42ea38a75bf9dc413f6b77e501f2270fad /modules/common/editorconfig.nix
parent458e552a9da54b2bb40f3e5fd9091117ade5063c (diff)
2024-01-07
Diffstat (limited to 'modules/common/editorconfig.nix')
-rw-r--r--modules/common/editorconfig.nix129
1 files changed, 129 insertions, 0 deletions
diff --git a/modules/common/editorconfig.nix b/modules/common/editorconfig.nix
new file mode 100644
index 0000000..822acf6
--- /dev/null
+++ b/modules/common/editorconfig.nix
@@ -0,0 +1,129 @@
+{
+ config,
+ lib,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.editorconfig;
+in {
+ options.nixfiles.modules.editorconfig.enable = mkEnableOption "Editorconfig";
+
+ config = mkIf cfg.enable {
+ hm.editorconfig = {
+ enable = true;
+ settings = {
+ "*" = {
+ charset = "utf-8";
+ end_of_line = "lf";
+ indent_size = 2;
+ indent_style = "space";
+ insert_final_newline = true;
+ max_line_length = 80;
+ trim_trailing_whitespace = true;
+ };
+
+ # https://google.github.io/styleguide/cppguide.html#Spaces_vs._Tabs
+ "*.{c,cc,cpp,cxx,h,hh,hpp,hxx}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://go.dev/doc/effective_go#formatting
+ "*.go" = {
+ indent_size = 2;
+ indent_style = "tab";
+ };
+
+ # https://google.github.io/styleguide/pyguide.html#s3.4-indentation
+ # https://peps.python.org/pep-0008/#indentation
+ "*.py" = {
+ indent_size = 4;
+ indent_style = "space";
+ };
+
+ # https://google.github.io/styleguide/shellguide.html#s5-formatting
+ "*.{sh,bash}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3
+ # https://en.wikibooks.org/wiki/Haskell/Indentation
+ "*.hs" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://google.github.io/styleguide/lispguide.xml#Formatting
+ "*.{lisp,cl,rkt,scm,el}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://github.com/ziglang/zig/wiki/FAQ#why-does-zig-fmt-use-spaces-instead-of-tabs
+ "*.zig" = {
+ indent_size = 4;
+ indent_style = "space";
+ };
+
+ "*.{asm,s}" = {
+ indent_size = 4;
+ indent_style = "spaces";
+ };
+
+ # https://www.gnu.org/software/make/manual/html_node/Rule-Syntax.html
+ "{Makefile*,*.mk}" = {
+ indent_size = 4;
+ indent_style = "tab";
+ };
+
+ # https://cmake-format.readthedocs.io/en/latest/configopts.html#tab-size
+ # https://cmake-format.readthedocs.io/en/latest/configopts.html#use-tabchars
+ "{CMakeLists.txt,*.cmake}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://github.com/NixOS/rfcs/pull/166
+ "*.nix" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://developer.hashicorp.com/terraform/language/syntax/style
+ "*.{tf,hcl}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ "*.{json,jsn}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://yaml.org/spec/1.2.2/#61-indentation-spaces
+ "*.{yaml,yml}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ "*.{toml,tml}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://google.github.io/styleguide/htmlcssguide.html#Indentation
+ "*.{html,css}" = {
+ indent_size = 2;
+ indent_style = "space";
+ };
+
+ # https://latexindentpl.readthedocs.io/en/latest/sec-default-user-local.html
+ "*.{tex,cls}" = {
+ indent_size = 4;
+ indent_style = "tab";
+ };
+ };
+ };
+ };
+}