MyNixOS website logo
Description

XDG Basedir.

See README.md

XDG Basedir implementation

This is a compliant implementation of the XDG Base Directory Specification.

Compliance

  • [X] $XDG_DATA_HOME
    • [X] get path
    • [X] read file
    • [X] write file
  • [X] $XDG_CONFIG_HOME
    • [X] get path
    • [X] read file
    • [X] write file
  • [X] $XDG_STATE_HOME
    • [X] get path
    • [X] read file
    • [X] write file
  • [X] $XDG_DATA_DIRS
    • [X] get path list
    • [X] read best file
    • [X] merge files
  • [X] $XDG_CONFIG_DIRS
    • [X] get path list
    • [X] read best file
    • [X] merge files
  • [X] $XDG_CACHE_HOME
    • [X] get path
    • [X] read file
    • [X] write file
  • [X] $XDG_RUNTIME_DIR
    • [X] get path
    • [X] read file
    • [X] write file
  • [X] treat relative paths as invalid

As this library deals purely with accessing files, I eventually chose not to implement the notion of warning the user when $XDG_RUNTIME_DIR isn't set and of providing a replacement directory. Any application where that behaviour would be relevant can use the exception raised by getRuntimeDir to detect this problem, should deal with warning the user in its own context, and can set $XDG_RUNTIME_DIR with a path that makes sense for that application.

Build

You can build the project with:

hpack
cabal build

If you have Nix installed, shell.nix provides an environment with all the needed dependencies. It is suitable for nix-direnv.

Metadata

Version

1.2.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows