diff --git a/.eslintrc.js b/.eslintrc.js
index 9992685d6b..1f6bedac15 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -79,6 +79,26 @@ module.exports = {
XO_LITE_GIT_HEAD: true,
},
rules: {
+ 'import/order': [
+ 'error',
+ {
+ groups: ['builtin', 'object', 'internal', ['type', 'external']],
+ alphabetize: {
+ order: 'asc',
+ caseInsensitive: true,
+ },
+ pathGroups: [
+ {
+ pattern: '@/**',
+ group: 'internal',
+ },
+ {
+ pattern: '@core/**',
+ group: 'internal',
+ },
+ ],
+ },
+ ],
'no-void': ['error', { allowAsStatement: true }],
'n/no-missing-import': 'off', // using 'import' plugin instead, to support TS aliases
'no-redeclare': 'off', // automatically checked by the TypeScript compiler
diff --git a/@xen-orchestra/lite/src/App.vue b/@xen-orchestra/lite/src/App.vue
index e85718142a..f2cf425b2d 100644
--- a/@xen-orchestra/lite/src/App.vue
+++ b/@xen-orchestra/lite/src/App.vue
@@ -19,13 +19,13 @@
import AppHeader from '@/components/AppHeader.vue'
import AppLogin from '@/components/AppLogin.vue'
import AppNavigation from '@/components/AppNavigation.vue'
-import { usePoolStore } from '@/stores/xen-api/pool.store'
-import TooltipList from '@core/components/tooltip/TooltipList.vue'
import ModalList from '@/components/ui/modals/ModalList.vue'
import { useChartTheme } from '@/composables/chart-theme.composable'
import { useUnreachableHosts } from '@/composables/unreachable-hosts.composable'
-import { useUiStore } from '@core/stores/ui.store'
+import { usePoolStore } from '@/stores/xen-api/pool.store'
import { useXenApiStore } from '@/stores/xen-api.store'
+import TooltipList from '@core/components/tooltip/TooltipList.vue'
+import { useUiStore } from '@core/stores/ui.store'
import { useActiveElement, useMagicKeys, whenever } from '@vueuse/core'
import { logicAnd } from '@vueuse/math'
import { computed } from 'vue'
diff --git a/@xen-orchestra/lite/src/components/PoolOverrideWarning.vue b/@xen-orchestra/lite/src/components/PoolOverrideWarning.vue
index 7dc801b8ab..debb4c3a43 100644
--- a/@xen-orchestra/lite/src/components/PoolOverrideWarning.vue
+++ b/@xen-orchestra/lite/src/components/PoolOverrideWarning.vue
@@ -27,12 +27,11 @@
diff --git a/@xen-orchestra/lite/src/stories/progress-circle.story.vue b/@xen-orchestra/lite/src/stories/progress-circle.story.vue
index c1ce879e65..d2abb7ceeb 100644
--- a/@xen-orchestra/lite/src/stories/progress-circle.story.vue
+++ b/@xen-orchestra/lite/src/stories/progress-circle.story.vue
@@ -9,8 +9,8 @@
diff --git a/@xen-orchestra/lite/src/stories/web-core/ui-legend.story.vue b/@xen-orchestra/lite/src/stories/web-core/ui-legend.story.vue
index 9f8935ad96..c68d5ecb76 100644
--- a/@xen-orchestra/lite/src/stories/web-core/ui-legend.story.vue
+++ b/@xen-orchestra/lite/src/stories/web-core/ui-legend.story.vue
@@ -22,6 +22,6 @@
diff --git a/@xen-orchestra/lite/src/views/StoryView.vue b/@xen-orchestra/lite/src/views/StoryView.vue
index 64b65028cb..d2ca75889f 100644
--- a/@xen-orchestra/lite/src/views/StoryView.vue
+++ b/@xen-orchestra/lite/src/views/StoryView.vue
@@ -6,11 +6,11 @@