editorconfig: add module (#3204)
Add a module to generate `~/.editorconfig` configuration file. Co-authored-by: Robert Helgesson <robert@rycee.net> Co-authored-by: Sumner Evans <me@sumnerevans.com>
This commit is contained in:
parent
583a99f016
commit
de94878b6b
3
.github/CODEOWNERS
vendored
3
.github/CODEOWNERS
vendored
|
@ -18,6 +18,9 @@ Makefile @thiagokokada
|
|||
|
||||
/modules/misc/dconf.nix @rycee
|
||||
|
||||
/modules/misc/editorconfig.nix @loicreynier
|
||||
/test/modules/misc/editorconfig @loicreynier
|
||||
|
||||
/modules/misc/fontconfig.nix @rycee
|
||||
/tests/modules/misc/fontconfig @rycee
|
||||
|
||||
|
|
53
modules/misc/editorconfig.nix
Normal file
53
modules/misc/editorconfig.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.editorconfig;
|
||||
|
||||
iniFormat = pkgs.formats.ini { };
|
||||
|
||||
in {
|
||||
meta.maintainers = with maintainers; [ loicreynier ];
|
||||
|
||||
options.editorconfig = {
|
||||
enable = mkEnableOption "EditorConfig home configuration file";
|
||||
|
||||
settings = mkOption {
|
||||
type = iniFormat.type;
|
||||
default = { };
|
||||
description = ''
|
||||
Configuration written to <filename>$HOME/.editorconfig</filename>.
|
||||
<code>root = true</code> is automatically added to the file,
|
||||
it must not be added here.
|
||||
See <link xlink:href="https://editorconfig.org"/> for documentation.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
"*" = {
|
||||
charset = "utf-8";
|
||||
end_of_line = "lf";
|
||||
trim_trailing_whitespace = true;
|
||||
insert_final_newline = true;
|
||||
max_line_width = 78;
|
||||
indent_style = "space";
|
||||
indent_size = 4;
|
||||
};
|
||||
};
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf (cfg.enable && cfg.settings != { }) {
|
||||
home.file.".editorconfig".text = let
|
||||
renderedSettings = generators.toINIWithGlobalSection { } {
|
||||
globalSection = { root = true; };
|
||||
sections = cfg.settings;
|
||||
};
|
||||
in ''
|
||||
# Generated by Home Manager
|
||||
${renderedSettings}
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -668,6 +668,13 @@ in
|
|||
A new module is available: 'programs.btop'.
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
time = "2022-09-05T11:05:25+00:00";
|
||||
message = ''
|
||||
A new module is available: 'editorconfig'.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ let
|
|||
./manual.nix
|
||||
./misc/dconf.nix
|
||||
./misc/debug.nix
|
||||
./misc/editorconfig.nix
|
||||
./misc/fontconfig.nix
|
||||
./misc/gtk.nix
|
||||
./misc/lib.nix
|
||||
|
|
|
@ -127,6 +127,7 @@ import nmt {
|
|||
./modules/config/i18n
|
||||
./modules/i18n/input-method
|
||||
./modules/misc/debug
|
||||
./modules/misc/editorconfig
|
||||
./modules/misc/gtk
|
||||
./modules/misc/numlock
|
||||
./modules/misc/pam
|
||||
|
|
1
tests/modules/misc/editorconfig/default.nix
Normal file
1
tests/modules/misc/editorconfig/default.nix
Normal file
|
@ -0,0 +1 @@
|
|||
{ editorconfig-simple-config = ./editorconfig-simple-config.nix; }
|
|
@ -0,0 +1,15 @@
|
|||
# Generated by Home Manager
|
||||
root=true
|
||||
|
||||
[*]
|
||||
charset=utf-8
|
||||
end_of_line=lf
|
||||
indent_style=space
|
||||
insert_final_newline=true
|
||||
max_line_width=78
|
||||
trim_trailing_whitespace=true
|
||||
|
||||
[*.md]
|
||||
indent_size=unset
|
||||
trim_trailing_whitespace=false
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
editorconfig = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"*" = {
|
||||
charset = "utf-8";
|
||||
end_of_line = "lf";
|
||||
trim_trailing_whitespace = true;
|
||||
insert_final_newline = true;
|
||||
max_line_width = 78;
|
||||
indent_style = "space";
|
||||
};
|
||||
"*.md" = {
|
||||
indent_size = "unset";
|
||||
trim_trailing_whitespace = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.editorconfig
|
||||
assertFileContent home-files/.editorconfig ${
|
||||
./editorconfig-simple-config-expected
|
||||
}
|
||||
'';
|
||||
}
|
Loading…
Reference in a new issue