aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Olagbaiye <me@fron.io>2020-09-01 07:13:04 +0100
committerRobert Helgesson <robert@rycee.net>2020-09-04 14:24:38 +0200
commitbfc66df13dc941361f5af92eaf88f2ea5db39722 (patch)
tree6e8e3bc334681aa00d99d09f1995d72fa515dacc
parent1ed8e7ef98db46af84e6be02f6538250f2ef259f (diff)
readme: add a basic flake usage example
-rw-r--r--README.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/README.md b/README.md
index 874ae2b4b34..5e538e8447b 100644
--- a/README.md
+++ b/README.md
@@ -305,6 +305,60 @@ in your system configuration and
in your Home Manager configuration.
+Flakes
+------
+
+Home Manager includes a flake.nix for compatibility with [NixOS flakes](https://nixos.wiki/wiki/Flakes) for those
+that wish to use it as a module. A bare-minimum flake.nix would be as follows:
+
+```nix
+{
+ description = "NixOS configuration";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ home-manager.url = "github:rycee/home-manager";
+ };
+
+ outputs = inputs: {
+ nixosConfigurations = {
+ hostname = let
+ system = "x86_64-linux";
+ pkgs = inputs.nixpkgs.legacyPackages.${system};
+ inherit (inputs.nixpkgs) lib;
+
+ # Things in this set are passed to modules and accessible
+ # in the top-level arguments (e.g. `{ pkgs, lib, inputs, ... }:`).
+ specialArgs = {
+ inherit inputs;
+ };
+
+ hm-nixos-as-super = { config, ... }: {
+ # Submodules have merge semantics, making it possible to amend
+ # the `home-manager.users` submodule for additional functionality.
+ options.home-manager.users = lib.mkOption {
+ type = lib.types.attrsOf (lib.types.submoduleWith {
+ modules = [ ];
+ # Makes specialArgs available to Home Manager modules as well.
+ specialArgs = specialArgs // {
+ # Allow accessing the parent NixOS configuration.
+ super = config;
+ };
+ });
+ };
+ };
+
+ modules = [
+ ./configuration.nix
+ inputs.home.nixosModules.home-manager
+ hm-nixos-as-super
+ ];
+ in lib.nixosSystem { inherit system modules specialArgs; };
+ };
+ };
+}
+```
+
Releases
--------