From e6ed60548397627bf10f561f9438201dbba0a36e Mon Sep 17 00:00:00 2001 From: Azat Bahawi Date: Sun, 21 Apr 2024 02:15:42 +0300 Subject: 2024-04-21 --- modules/editorconfig.nix | 133 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 modules/editorconfig.nix (limited to 'modules/editorconfig.nix') diff --git a/modules/editorconfig.nix b/modules/editorconfig.nix new file mode 100644 index 0000000..5dfe845 --- /dev/null +++ b/modules/editorconfig.nix @@ -0,0 +1,133 @@ +{ 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,go.mod}" = { + 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,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://nickel-lang.org/user-manual/syntax + "*.ncl" = { + 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"; + }; + }; + }; + }; +} -- cgit v1.2.3