diff --git a/NIX.md b/NIX.md
index 58cf7d12..d7a520ff 100644
--- a/NIX.md
+++ b/NIX.md
@@ -15,3 +15,55 @@ pkgs: devInputs: devInputs // {
     [ cabal-install hlint ghcid ormolu implicit-hie haskell-language-server ];
 }
 ```
+
+## NixOS Modules
+
+The core and contrib flakes provide NixOS configuration modules.
+You can bring them into your system flake like so:
+
+```nix
+{
+  inputs = {
+    nixpkgs.url = github:NixOS/nixpkgs/nixos-<version>;
+    xmonad.url = github:xmonad/xmonad;
+    xmonad-contrib.url = github:xmonad/xmonad-contrib;
+  };
+
+  outputs = { self, nixpkgs, xmonad, xmonad-contrib }: {
+    nixosConfigurations.<hostname> = nixpkgs.lib.nixosSystem rec {
+      system = <arch>;
+      modules = [
+        ./configuration.nix
+        xmonad.nixosModule
+        xmonad-contrib.nixosModule
+      ];
+    };
+  };
+}
+```
+
+Then you can set the provided options in your `configuration.nix` under `flake`:
+
+```nix
+  services.xserver.windowManager.xmonad = {
+    enable = true;
+    enableContribAndExtras = true;
+    flake = {
+      enable = true;
+    # prefix = "unstable";
+      compiler = "ghc921";
+    };
+  };
+```
+
+This will use core and contrib from git for your system xmonad, building your
+config with the compiler of your choice.
+
+With the flake enabled, the `xmonad.haskellPackages` option is not used directly,
+and is instead set by the `flake.compiler` option. When `compiler` is unset,
+the default `pkgs.haskellPackages` is used.
+
+The `prefix` option is used if you wish to select your haskell packages from
+within, e.g., unstable overlaid into `pkgs` as `pkgs.unstable`.
+
+See the flakes themselves and nix flake documentation for full detail.
diff --git a/flake.nix b/flake.nix
index 04a5da34..042b4e12 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,4 +1,5 @@
-# This file is maintained by @IvanMalison (github)
+# This file is maintained by @IvanMalison and @LSLeary (github)
+# See NIX.md for an overview of module usage.
 {
   inputs = {
     flake-utils.url = github:numtide/flake-utils;