diff options
-rw-r--r-- | .config/nixpkgs/config.nix | 11 | ||||
-rw-r--r-- | .config/nixpkgs/packages/ruamel.yaml.cmd/default.nix | 68 | ||||
-rw-r--r-- | .config/yamllint/config | 32 | ||||
-rw-r--r-- | .vimrc | 3 |
4 files changed, 111 insertions, 3 deletions
diff --git a/.config/nixpkgs/config.nix b/.config/nixpkgs/config.nix index 15dd1ac..8576a48 100644 --- a/.config/nixpkgs/config.nix +++ b/.config/nixpkgs/config.nix @@ -286,8 +286,7 @@ in Python = pkgs.buildEnv { name = "python"; paths = [ - (python38.withPackages - (ps: with ps; [ mypy bandit pylint pip2nix pyflakes ])) + (python38.withPackages (ps: with ps; [ mypy bandit pylint pip2nix pyflakes ])) ]; }; @@ -369,5 +368,13 @@ in csslint ]; }; + + YAML = pkgs.buildEnv { + name = "yaml"; + paths = [ + (callPackage ./packages/ruamel.yaml.cmd/default.nix {}) + python38Packages.yamllint + ]; + }; }; } diff --git a/.config/nixpkgs/packages/ruamel.yaml.cmd/default.nix b/.config/nixpkgs/packages/ruamel.yaml.cmd/default.nix new file mode 100644 index 0000000..f0ca9f6 --- /dev/null +++ b/.config/nixpkgs/packages/ruamel.yaml.cmd/default.nix @@ -0,0 +1,68 @@ +{ stdenv, python38 }: + +with python38.pkgs; + +let + + meta = with stdenv.lib; { + license = licenses.mit; + description = "Command line utility to manipulate YAML files"; + homepage = "https://sourceforge.net/p/ruamel-yaml-cmd/code/ci/default/tree"; + }; + + ruamel.std.argparse = buildPythonPackage rec { + pname = "ruamel.std.argparse"; + version = "0.8.3"; + src = fetchPypi { + inherit pname version; + sha256 = "0srv4g6jryyaz26csx315pbmfhm4rw8jhfsl7rq7krrglgqwjryi"; + }; + doCheck = false; + inherit meta; + }; + + ruamel.std.convert = buildPythonPackage rec { + pname = "ruamel.yaml.convert"; + version = "0.3.2"; + src = fetchPypi { + inherit pname version; + sha256 = "1i6919b5f5ygj7y7c4x0wi91n8y0mw4nf9f0bcfjk29i594xjph6"; + }; + propagatedBuildInputs = [ python-dateutil ruamel_yaml ]; + doCheck = false; + inherit meta; + }; + + ruamel.yaml.cmd = buildPythonPackage rec { + pname = "ruamel.yaml.cmd"; + version = "0.5.6"; + src = fetchPypi { + inherit pname version; + sha256 = "0zc2h6b721r8c05dm7y8zgrgbvifbgcm8jmqvns7ar4ajll3cvwv"; + }; + propagatedBuildInputs = [ configobj ruamel.std.argparse ruamel.std.convert ]; + doCheck = false; + dontWrapPythonPrograms = true; + inherit meta; + }; + +in buildPythonApplication rec { + + pname = ruamel.yaml.cmd.pname; + version = ruamel.yaml.cmd.version; + propagatedBuildInputs = [ ruamel.yaml.cmd ]; + pythonEnvironment = python38.withPackages (_: propagatedBuildInputs); + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + cp ${ruamel.yaml.cmd}/bin/yaml $out/bin + sed -i 's|^#!.*$|#!${pythonEnvironment}/bin/python3.8|' $out/bin/yaml + runHook postInstall + ''; + + dontUnpack = true; + dontBuild = true; + doCheck = false; + inherit meta; +} diff --git a/.config/yamllint/config b/.config/yamllint/config new file mode 100644 index 0000000..2e4932f --- /dev/null +++ b/.config/yamllint/config @@ -0,0 +1,32 @@ +--- +yaml-files: +- '*.yaml' +- '*.yml' +- .yamllint + +rules: + braces: enable + brackets: enable + colons: enable + commas: enable + comments: + level: warning + comments-indentation: + level: warning + document-end: disable + document-start: + level: warning + empty-lines: enable + empty-values: disable + hyphens: enable + indentation: disable + key-duplicates: enable + key-ordering: disable + line-length: enable + new-line-at-end-of-file: enable + new-lines: enable + octal-values: disable + quoted-strings: disable + trailing-spaces: enable + truthy: + level: warning @@ -100,6 +100,7 @@ endfunction " Ansible Check function! AnsibleCheck() :silent !notify-send -t 10000 "$(ansible-playbook --syntax-check % 2>&1)" > /dev/null 2>&1 & + :redraw! endfunction " Shell Check @@ -302,7 +303,6 @@ augroup AutoCommands " Linting extension post write commands. autocmd BufWritePost *.php :call PHPFix() autocmd BufWritePost *.js :call ESLintFix() - autocmd BufWritePost *.yml :call AnsibleCheck() autocmd BufWritePost *.txt,*.md :only | :term ++rows=10 vale-wrapper % " Linting file type post write commands. @@ -314,6 +314,7 @@ augroup AutoCommands autocmd FileType c autocmd! BufWritePost <buffer> silent !notify-send "$(clang-format -i % 2>&1 && echo 'clang-format OK:' %)" autocmd FileType go autocmd! BufWritePost <buffer> silent !notify-send "$(gofmt -w -s -e % 2>&1 && go vet % 2>&1 && echo 'gofmt OK:' %)" autocmd FileType awk autocmd! BufWritePost <buffer> silent !notify-send "$(awk -g -f % 2>&1 && awk -o- -f % | sponge % && echo 'awk OK:' %)" + autocmd FileType yaml autocmd! BufWritePost <buffer> silent !notify-send "$(yaml round-trip --indent 2 --save % 2>&1 && yamllint -s % 2>&1 && echo 'yaml OK: %')" " File type function under cursor lookups. autocmd FileType go noremap <buffer> <leader>df :exe ':term ++rows=10 go doc ' . expand('<cexpr>')<cr> |