diff --git a/boxes/desktop/home.nix b/boxes/desktop/home.nix index 18ea1e2..7f7d275 100644 --- a/boxes/desktop/home.nix +++ b/boxes/desktop/home.nix @@ -123,8 +123,14 @@ in # '') (pkgs.writeShellScriptBin "__eslint_default_config" '' - echo $(pwd) - exit 0 + if [[ -e ./.eslintrc.json ]]; then + eslint_d $@ + exit $? + else + eslint_d --config /home/${config.home.username}/.config/.eslintrc.json $@ + exit $? + fi + '') ]; # Home Manager is pretty good at managing dotfiles. The primary way to manage @@ -135,6 +141,10 @@ in source = ../../dotfiles/kitty; target = "./.config/kitty"; }; + eslint_d_config = { + source = ../../dotfiles/eslintrc.json; + target = "./.config/.eslintrc.json"; + }; gh = { recursive = true; source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/gh"; diff --git a/dotfiles/eslintrc.json b/dotfiles/eslintrc.json new file mode 100644 index 0000000..6dc017c --- /dev/null +++ b/dotfiles/eslintrc.json @@ -0,0 +1,90 @@ +{ + "env": { + "es2021": true, + "node": true + }, + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], + "overrides": [ + { + "env": { + "node": true + }, + "files": [".eslintrc.{js,cjs}"], + "parserOptions": { + "sourceType": "script" + } + } + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest" + }, + "plugins": ["@stylistic"], + "rules": { + "@stylistic/indent": ["error", 4], + "@stylistic/linebreak-style": ["error", "unix"], + "@stylistic/quotes": [ + "error", + "double", + { + "allowTemplateLiterals": true + } + ], + "@stylistic/semi": ["error", "always"], + "@stylistic/array-bracket-newline": ["error", "always"], + "newline-per-chained-call": [ + "error", + { + "ignoreChainWithDepth": 1 + } + ], + "@stylistic/comma-dangle": ["error", "always-multiline"], + "@stylistic/brace-style": "error", + "@stylistic/arrow-parens": ["error", "always"], + "@stylistic/arrow-spacing": [ + "error", + { + "before": true, + "after": true + } + ], + "@stylistic/block-spacing": ["error", "always"], + "@stylistic/comma-spacing": [ + "error", + { + "before": false, + "after": true + } + ], + "@stylistic/computed-property-spacing": ["error", "never"], + "@stylistic/dot-location": ["error", "property"], + "@stylistic/function-call-spacing": ["error", "never"], + "@stylistic/function-call-argument-newline": ["error", "consistent"], + "@stylistic/function-paren-newline": ["error", "consistent"], + "@stylistic/implicit-arrow-linebreak": ["error", "beside"], + "@stylistic/indent-binary-ops": ["error", 4], + "@stylistic/key-spacing": [ + "error", + { + "beforeColon": false, + "afterColon": true, + "mode": "strict" + } + ], + "@stylistic/keyword-spacing": [ + "error", + { + "before": true, + "after": true + } + ], + "@stylistic/lines-around-comment": [ + "error", + { + "beforeBlockComment": true + } + ], + "@stylistic/lines-between-class-members": ["error", "always"], + "@stylistic/new-parens": ["error", "always"] + } +}