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/dconf.nix @rycee
|
||||||
|
|
||||||
|
/modules/misc/editorconfig.nix @loicreynier
|
||||||
|
/test/modules/misc/editorconfig @loicreynier
|
||||||
|
|
||||||
/modules/misc/fontconfig.nix @rycee
|
/modules/misc/fontconfig.nix @rycee
|
||||||
/tests/modules/misc/fontconfig @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'.
|
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
|
./manual.nix
|
||||||
./misc/dconf.nix
|
./misc/dconf.nix
|
||||||
./misc/debug.nix
|
./misc/debug.nix
|
||||||
|
./misc/editorconfig.nix
|
||||||
./misc/fontconfig.nix
|
./misc/fontconfig.nix
|
||||||
./misc/gtk.nix
|
./misc/gtk.nix
|
||||||
./misc/lib.nix
|
./misc/lib.nix
|
||||||
|
|
|
@ -127,6 +127,7 @@ import nmt {
|
||||||
./modules/config/i18n
|
./modules/config/i18n
|
||||||
./modules/i18n/input-method
|
./modules/i18n/input-method
|
||||||
./modules/misc/debug
|
./modules/misc/debug
|
||||||
|
./modules/misc/editorconfig
|
||||||
./modules/misc/gtk
|
./modules/misc/gtk
|
||||||
./modules/misc/numlock
|
./modules/misc/numlock
|
||||||
./modules/misc/pam
|
./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