summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--changelog.md7
-rw-r--r--compiler/nimconf.nim2
-rw-r--r--lib/pure/ospaths.nim4
3 files changed, 10 insertions, 3 deletions
diff --git a/changelog.md b/changelog.md
index 73d526136..90d74608b 100644
--- a/changelog.md
+++ b/changelog.md
@@ -230,4 +230,11 @@
 - On Posix systems the global system wide configuration is now put under ``/etc/nim/nim.cfg``,
   it used to be ``/etc/nim.cfg``. Usually it does not exist, however.
 
+- On Posix systems the user configuration is now looked under ``$XDG_CONFIG_HOME/nim/nim.cfg``
+  (if ``XDG_CONFIG_HOME`` is not defined, then under ``~/.config/nim/nim.cfg``). It used to be
+  ``$XDG_CONFIG_DIR/nim.cfg`` (and ``~/.config/nim.cfg``).
+
+  Similarly, on Windows, the user configuration is now looked under ``%APPDATA%/nim/nim.cfg``.
+  This used to be ``%APPDATA%/nim.cfg``.
+
 ### Bugfixes
diff --git a/compiler/nimconf.nim b/compiler/nimconf.nim
index cb7e52cf7..1a8a0acb5 100644
--- a/compiler/nimconf.nim
+++ b/compiler/nimconf.nim
@@ -220,7 +220,7 @@ proc readConfigFile(
     return true
 
 proc getUserConfigPath(filename: string): string =
-  result = joinPath(getConfigDir(), filename)
+  result = joinPath([getConfigDir(), "nim", filename])
 
 proc getSystemConfigPath(conf: ConfigRef; filename: string): string =
   # try standard configuration file (installation did not distribute files
diff --git a/lib/pure/ospaths.nim b/lib/pure/ospaths.nim
index cfa5e53c1..0414eae5d 100644
--- a/lib/pure/ospaths.nim
+++ b/lib/pure/ospaths.nim
@@ -525,14 +525,14 @@ proc getConfigDir*(): string {.rtl, extern: "nos$1",
   ## Returns the config directory of the current user for applications.
   ##
   ## On non-Windows OSs, this proc conforms to the XDG Base Directory
-  ## spec. Thus, this proc returns the value of the XDG_CONFIG_DIR environment
+  ## spec. Thus, this proc returns the value of the XDG_CONFIG_HOME environment
   ## variable if it is set, and returns the default configuration directory,
   ## "~/.config/", otherwise.
   ##
   ## An OS-dependent trailing slash is always present at the end of the
   ## returned string; `\\` on Windows and `/` on all other OSs.
   when defined(windows): return string(getEnv("APPDATA")) & "\\"
-  elif getEnv("XDG_CONFIG_DIR"): return string(getEnv("XDG_CONFIG_DIR")) & "/"
+  elif getEnv("XDG_CONFIG_HOME"): return string(getEnv("XDG_CONFIG_HOME")) & "/"
   else: return string(getEnv("HOME")) & "/.config/"
 
 proc getTempDir*(): string {.rtl, extern: "nos$1",