diff --git a/modules/quickshell/config/.envrc b/modules/quickshell/config/.envrc
new file mode 100644
index 00000000..3cd98c4c
--- /dev/null
+++ b/modules/quickshell/config/.envrc
@@ -0,0 +1 @@
+use flake "$FLAKE#qml"
diff --git a/modules/quickshell/config/.qmlformat.ini b/modules/quickshell/config/.qmlformat.ini
new file mode 100644
index 00000000..47f522b7
--- /dev/null
+++ b/modules/quickshell/config/.qmlformat.ini
@@ -0,0 +1,8 @@
+[General]
+FunctionsSpacing=true
+IndentWidth=4
+MaxColumnWidth=-1
+NewlineType=native
+NormalizeOrder=true
+ObjectsSpacing=true
+UseTabs=false
diff --git a/modules/quickshell/config/.qmllint.ini b/modules/quickshell/config/.qmllint.ini
new file mode 100644
index 00000000..1756e578
--- /dev/null
+++ b/modules/quickshell/config/.qmllint.ini
@@ -0,0 +1,42 @@
+[General]
+DisableDefaultImports=false
+MaxWarnings=-1
+
+[Warnings]
+AccessSingletonViaObject=warning
+AttachedPropertyReuse=disable
+BadSignalHandlerParameters=warning
+CompilerWarnings=disable
+Deprecated=warning
+DuplicatePropertyBinding=warning
+DuplicatedName=warning
+ImportFailure=warning
+IncompatibleType=warning
+InheritanceCycle=warning
+InvalidLintDirective=warning
+LintPluginWarnings=disable
+MissingProperty=warning
+MissingType=warning
+MultilineStrings=info
+NonListProperty=warning
+PrefixedImportType=warning
+PropertyAliasCycles=warning
+Quick.Anchors=warning
+Quick.AttachedPropertyReuse=disable
+Quick.AttachedPropertyType=warning
+Quick.ControlsAttachedPropertyReuse=disable
+Quick.ControlsNativeCustomize=warning
+Quick.LayoutsPositioning=warning
+Quick.PropertyChangesParsed=warning
+Quick.UnexpectedVarType=warning
+ReadOnlyProperty=warning
+RequiredProperty=warning
+RestrictedType=warning
+TopLevelComponent=warning
+UncreatableType=disable
+UnqualifiedAccess=warning
+UnresolvedType=warning
+UnusedImports=info
+UseProperFunction=warning
+VarUsedBeforeDeclaration=warning
+WithStatement=warning