256 lines
8.8 KiB
Nix
256 lines
8.8 KiB
Nix
{
|
|
inputs,
|
|
cell,
|
|
}: let
|
|
inherit (inputs) nixpkgs;
|
|
inherit (inputs.cells) std presets;
|
|
l = nixpkgs.lib // builtins;
|
|
in {
|
|
conform = {
|
|
data = {
|
|
commit = {
|
|
header = {length = 89;};
|
|
conventional = {
|
|
# Only allow these types of conventional commits (inspired by Angular)
|
|
types = [
|
|
"build"
|
|
"chore"
|
|
"ci"
|
|
"docs"
|
|
"feat"
|
|
"fix"
|
|
"perf"
|
|
"refactor"
|
|
"style"
|
|
"test"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
editorconfig = {
|
|
hook.mode = "copy"; # already useful before entering the devshell
|
|
data = {
|
|
root = true;
|
|
|
|
"*" = {
|
|
# Common
|
|
end_of_line = "lf";
|
|
insert_final_newline = true;
|
|
trim_trailing_whitespace = true;
|
|
charset = "utf-8";
|
|
indent_style = "space";
|
|
indent_size = 4;
|
|
indent_brace_style = "K&R";
|
|
max_line_length = 80;
|
|
tab_width = 4;
|
|
curly_bracket_next_line = true;
|
|
|
|
# Microsoft .NET properties
|
|
"csharp_new_line_before_members_in_object_initializers" = false;
|
|
"csharp_preferred_modifier_order" = "public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion";
|
|
"csharp_space_after_cast" = false;
|
|
"csharp_style_var_elsewhere" = "false:hint";
|
|
"csharp_style_var_for_built_in_types" = "false:hint";
|
|
"csharp_style_var_when_type_is_apparent" = "true:hint";
|
|
"csharp_preserve_single_line_statements" = false;
|
|
"csharp_preserve_single_line_blocks" = true;
|
|
"dotnet_style_predefined_type_for_locals_parameters_members" = "true:hint";
|
|
"dotnet_style_predefined_type_for_member_access" = "true:hint";
|
|
"dotnet_style_qualification_for_event" = "true:hint";
|
|
"dotnet_style_qualification_for_field" = "true:hint";
|
|
"dotnet_style_qualification_for_method" = "true:hint";
|
|
"dotnet_style_qualification_for_property" = "true:hint";
|
|
"dotnet_style_require_accessibility_modifiers" = "for_non_interface_members:hint";
|
|
|
|
# ReSharper properties
|
|
"resharper_alignment_tab_fill_style" = "optimal_fill";
|
|
"resharper_apply_on_completion" = true;
|
|
"resharper_blank_lines_after_control_transfer_statements" = 1;
|
|
"resharper_blank_lines_around_single_line_auto_property" = 1;
|
|
"resharper_blank_lines_around_single_line_property" = 1;
|
|
"resharper_blank_lines_before_single_line_comment" = 1;
|
|
"resharper_blank_lines_between_using_groups" = 1;
|
|
"resharper_braces_for_for" = "required";
|
|
"resharper_braces_for_foreach" = "required";
|
|
"resharper_braces_for_ifelse" = "required";
|
|
"resharper_braces_for_while" = "required";
|
|
"resharper_can_use_global_alias" = false;
|
|
"resharper_csharp_blank_lines_around_single_line_field" = 1;
|
|
"resharper_csharp_blank_lines_around_single_line_invocable" = 1;
|
|
"resharper_csharp_indent_style" = "tab";
|
|
"resharper_csharp_insert_final_newline" = true;
|
|
"resharper_csharp_keep_blank_lines_in_code" = 1;
|
|
"resharper_csharp_keep_blank_lines_in_declarations" = 1;
|
|
"resharper_csharp_new_line_before_while" = true;
|
|
"resharper_csharp_use_indent_from_vs" = false;
|
|
"resharper_csharp_wrap_arguments_style" = "chop_if_long";
|
|
"resharper_csharp_wrap_extends_list_style" = "chop_if_long";
|
|
"resharper_csharp_wrap_parameters_style" = "chop_if_long";
|
|
"resharper_css_insert_final_newline" = false;
|
|
"resharper_enforce_line_ending_style" = true;
|
|
"resharper_html_insert_final_newline" = false;
|
|
"resharper_indent_nested_fixed_stmt" = true;
|
|
"resharper_js_indent_style" = "tab";
|
|
"resharper_js_insert_final_newline" = true;
|
|
"resharper_js_keep_blank_lines_in_code" = 1;
|
|
"resharper_js_stick_comment" = false;
|
|
"resharper_js_use_indent_from_vs" = false;
|
|
"resharper_js_wrap_before_binary_opsign" = true;
|
|
"resharper_js_wrap_chained_method_calls" = "chop_if_long";
|
|
"resharper_keep_blank_lines_between_declarations" = 1;
|
|
"resharper_min_blank_lines_after_imports" = 1;
|
|
"resharper_place_attribute_on_same_line" = false;
|
|
"resharper_place_constructor_initializer_on_same_line" = false;
|
|
"resharper_place_type_constraints_on_same_line" = false;
|
|
"resharper_protobuf_insert_final_newline" = false;
|
|
"resharper_qualified_using_at_nested_scope" = true;
|
|
"resharper_resx_insert_final_newline" = false;
|
|
"resharper_space_within_single_line_array_initializer_braces" = true;
|
|
"resharper_use_indents_from_main_language_in_file" = false;
|
|
"resharper_vb_insert_final_newline" = false;
|
|
"resharper_wrap_after_declaration_lpar" = true;
|
|
"resharper_wrap_after_invocation_lpar" = true;
|
|
"resharper_wrap_before_extends_colon" = true;
|
|
"resharper_wrap_before_first_type_parameter_constraint" = true;
|
|
"resharper_wrap_before_type_parameter_langle" = true;
|
|
"resharper_xmldoc_indent_child_elements" = "ZeroIndent";
|
|
"resharper_xmldoc_indent_text" = "ZeroIndent";
|
|
"resharper_xmldoc_insert_final_newline" = false;
|
|
"resharper_xml_insert_final_newline" = false;
|
|
|
|
# ReSharper inspection severities
|
|
"resharper_check_namespace_highlighting" = "none";
|
|
"resharper_convert_to_auto_property_highlighting" = "none";
|
|
"resharper_localizable_element_highlighting" = "none";
|
|
"resharper_redundant_comma_in_attribute_list_highlighting" = "none";
|
|
"resharper_redundant_comma_in_enum_declaration_highlighting" = "none";
|
|
"resharper_redundant_comma_in_initializer_highlighting" = "none";
|
|
"resharper_string_compare_to_is_culture_specific_highlighting" = "none";
|
|
"resharper_string_index_of_is_culture_specific_1_highlighting" = "none";
|
|
"resharper_use_null_propagation_highlighting" = "none";
|
|
"resharper_use_object_or_collection_initializer_highlighting" = "hint";
|
|
"resharper_use_string_interpolation_highlighting" = "hint";
|
|
};
|
|
|
|
"*.{diff,patch}" = {
|
|
end_of_line = "unset";
|
|
insert_final_newline = "unset";
|
|
trim_trailing_whitespace = "unset";
|
|
indent_size = "unset";
|
|
};
|
|
|
|
"*.md" = {
|
|
max_line_length = "off";
|
|
trim_trailing_whitespace = false;
|
|
};
|
|
|
|
"package.json" = {
|
|
indent_style = "space";
|
|
indent_size = 2;
|
|
tab_width = 2;
|
|
};
|
|
|
|
"*.{appxmanifest,build,config,csproj,dbml,discomap,dtd,jsproj,lsproj,njsproj,nuspec,proj,props,resw,resx,StyleCop,targets,tasks,vbproj,xml,xsd}" = {
|
|
indent_style = "space";
|
|
indent_size = 2;
|
|
tab_width = 2;
|
|
};
|
|
|
|
"{LICENSES/**,LICENSE}" = {
|
|
end_of_line = "unset";
|
|
insert_final_newline = "unset";
|
|
trim_trailing_whitespace = "unset";
|
|
charset = "unset";
|
|
indent_style = "unset";
|
|
indent_size = "unset";
|
|
};
|
|
};
|
|
};
|
|
|
|
lefthook = {
|
|
data = {
|
|
commit-msg = {
|
|
commands = {
|
|
# Runs conform on commit-msg hook to ensure commit messages are
|
|
# compliant.
|
|
conform = {
|
|
run = "${nixpkgs.conform}/bin/conform enforce --commit-msg-file {1}";
|
|
};
|
|
};
|
|
};
|
|
pre-commit = {
|
|
commands = {
|
|
# Runs treefmt on pre-commit hook to ensure checked-in source code is
|
|
# properly formatted.
|
|
treefmt = {
|
|
run = "${nixpkgs.treefmt}/bin/treefmt {staged_files}";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
prettier = {
|
|
data = {
|
|
printWidth = 80;
|
|
proseWrap = "always";
|
|
};
|
|
output = ".prettierrc";
|
|
format = "json";
|
|
};
|
|
|
|
treefmt = {
|
|
data = {
|
|
formatter = {
|
|
nix = {
|
|
command = "alejandra";
|
|
includes = ["*.nix" "*.nix.hbs"];
|
|
};
|
|
|
|
prettier = {
|
|
command = "prettier";
|
|
options = ["--plugin" "prettier-plugin-toml" "--write"];
|
|
includes = [
|
|
"*.css"
|
|
"*.html"
|
|
"*.js"
|
|
"*.json"
|
|
"*.jsx"
|
|
"*.md"
|
|
"*.mdx"
|
|
"*.scss"
|
|
"*.ts"
|
|
"*.yaml"
|
|
"*.toml"
|
|
];
|
|
};
|
|
|
|
shell = {
|
|
command = "shfmt";
|
|
options = ["-i" "4" "-s" "-w"];
|
|
includes = ["*.sh"];
|
|
};
|
|
|
|
# We mainly use it here to format the Markdown in our README.
|
|
prettier = {
|
|
excludes = ["**.min.js"];
|
|
};
|
|
};
|
|
};
|
|
|
|
packages = [
|
|
nixpkgs.alejandra
|
|
nixpkgs.nodePackages.prettier
|
|
nixpkgs.nodePackages.prettier-plugin-toml
|
|
nixpkgs.shfmt
|
|
nixpkgs.go
|
|
];
|
|
|
|
devshell.startup.prettier-plugin-toml = l.stringsWithDeps.noDepEntry ''
|
|
export NODE_PATH=${nixpkgs.nodePackages.prettier-plugin-toml}/lib/node_modules:$NODE_PATH
|
|
'';
|
|
};
|
|
}
|