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;