# EditorConfig configuration for nixpkgs
# https://EditorConfig.org

# Top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file, utf-8 charset
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

# Ignore diffs/patches
[*.{diff,patch}]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset

# We want readFile .version to return the version without a newline.
[.version]
insert_final_newline = false

# see https://nixos.org/nixpkgs/manual/#chap-conventions

# Match json/lockfiles/markdown/nix/perl/python/ruby/shell/docbook files, set indent to spaces
[*.{json,lock,md,nix,pl,pm,py,rb,sh,xml}]
indent_style = space

# Match docbook files, set indent width of one
[*.xml]
indent_size = 1

# Match json/lockfiles/markdown/nix/ruby files, set indent width of two
[*.{json,lock,md,nix,rb}]
indent_size = 2

# Match perl/python/shell scripts, set indent width of four
[*.{pl,pm,py,sh}]
indent_size = 4

# Match gemfiles, set indent to spaces with width of two
[Gemfile]
indent_size = 2
indent_style = space

# Match package.json, which are generally pulled from upstream and accept them as they are
[package.json]
indent_style = unset

# Disable file types or individual files
# some of these files may be auto-generated and/or require significant changes

[*.{c,h}]
insert_final_newline = unset
trim_trailing_whitespace = unset

[*.{asc,key,ovpn}]
insert_final_newline = unset
end_of_line = unset
trim_trailing_whitespace = unset

[*.lock]
indent_size = unset

# Although Markdown/CommonMark allows using two trailing spaces to denote
# a hard line break, we do not use that feature in nixpkgs since
# it forces the surrounding paragraph to become a <literallayout> which
# does not wrap reasonably.
# Instead of a hard line break, start a new paragraph by inserting a blank line.
[*.md]
trim_trailing_whitespace = true

# binaries
[*.nib]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
charset = unset

[eggs.nix]
trim_trailing_whitespace = unset

[nixos/modules/services/networking/ircd-hybrid/*.{conf,in}]
trim_trailing_whitespace = unset

[pkgs/build-support/dotnetenv/Wrapper/**]
end_of_line = unset
indent_style = unset
insert_final_newline = unset
trim_trailing_whitespace = unset

[pkgs/development/compilers/elm/registry.dat]
end_of_line = unset
insert_final_newline = unset

[pkgs/development/haskell-modules/hackage-packages.nix]
indent_style = unset
trim_trailing_whitespace = unset

[pkgs/misc/documentation-highlighter/**]
insert_final_newline = unset

[pkgs/servers/dict/wordnet_structures.py]
trim_trailing_whitespace = unset

[pkgs/tools/misc/timidity/timidity.cfg]
trim_trailing_whitespace = unset

[pkgs/tools/virtualization/ovftool/*.ova]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
charset = unset

[lib/tests/*.plist]
indent_style = tab
insert_final_newline = unset

[pkgs/kde/generated/**]
insert_final_newline = unset
end_of_line = unset
