Appendix A. Home Manager configuration options

A.1. Usage
A.2. Options

A.1. Usage

To use these options modify your home.nix such that it has the format

{ pkgs, ... }:

let

  nurNoPkgs = import <nur> { pkgs = null; };

in

{
  import = [ nurNoPkgs.repos.rycee.hmModules.name … ];

  # …
}

where name is

emacs-init

for options under programs.emacs.init, or

theme-base16

for options under theme.base16 and enableBase16Theme options for various Home Manager modules.

A.2. Options

_module.args

Additional arguments passed to each module in addition to ones like lib, config, and pkgs, modulesPath.

This option is also available to all submodules. Submodules do not inherit args from their parent module, nor do they provide args to their parent module or sibling submodules. The sole exception to this is the argument name which is provided by parent modules to a submodule and contains the attribute name the submodule is bound to, or a unique generated name if it is not bound to an attribute.

Some arguments are already passed by default, of which the following cannot be changed with this option:

  • lib: The nixpkgs library.
  • config: The results of all options after merging the values from all modules together.
  • options: The options declared in all modules.
  • specialArgs: The specialArgs argument passed to evalModules.
  • All attributes of specialArgs

    Whereas option values can generally depend on other option values thanks to laziness, this does not apply to imports, which must be computed statically before anything else.

    For this reason, callers of the module system can provide specialArgs which are available during import resolution.

    For NixOS, specialArgs includes modulesPath, which allows you to import extra modules from the nixpkgs package tree without having to somehow make the module aware of the location of the nixpkgs or NixOS directories.

    { modulesPath, ... }: {
      imports = [
        (modulesPath + "/profiles/minimal.nix")
      ];
    }
    

For NixOS, the default value for this option includes at least this argument:

  • pkgs: The nixpkgs package set according to the nixpkgs.pkgs option.

Type: lazy attribute set of raw value

Declared by:

<nur-rycee/lib/modules.nix>
gtk.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/gtk.nix>
programs.bat.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/bat.nix>
programs.emacs.enableBase16Theme

Build Base16 theme for Emacs. Note, this does not actually enable the theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/emacs.nix>
programs.emacs.init.enable

Whether to enable Emacs configuration.

Type: boolean

Default: false

Example: true

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.packageQuickstart

Whether to enable package-quickstart. This will make sure that package.el is activated and all autoloads are available.

If disabled you can save quite a few milliseconds on the startup time, but you will most likely have to tweak the command option of various packages.

As an example, running (emacs-init-time) on an Emacs configuration with this option enabled reported ~300ms. Disabling the option dropped the init time to ~200ms.

Type: boolean

Default: true

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.earlyInit

Configuration lines to add in early-init.el.

Type: strings concatenated with "\n"

Default: ""

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.postlude

Configuration lines to add in the end of init.el.

Type: strings concatenated with "\n"

Default: ""

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.prelude

Configuration lines to add in the beginning of init.el.

Type: strings concatenated with "\n"

Default: ""

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.recommendedGcSettings

Whether to enable recommended garbage collection settings.

This will reduce garbage collection frequency during startup and while the minibuffer is active.

Type: boolean

Default: false

Example: true

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.startupTimer

Whether to enable Emacs startup duration timer.

Type: boolean

Default: false

Example: true

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage

Attribute set of use-package configurations.

Type: attribute set of (submodule)

Default: { }

Example:

{
  dhall-mode = {
    mode = [ ''"\\.dhall\\'"'' ];
  };
}

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.enable

Whether to enable Emacs package ‹name›.

Type: boolean

Default: false

Example: true

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.package

The package to use for this module. Either the package name within the Emacs package set or a function taking the Emacs package set and returning a package.

Type: name of package or (function from epkgs to package)

Default: "‹name›"

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.after

The entries to use for :after.

Type: list of string

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.bind

The entries to use for :bind.

Type: attribute set of string

Default: { }

Example:

{
  "M-<down>" = "drag-stuff-down";
  "M-<up>" = "drag-stuff-up";
}

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.bindKeyMap

The entries to use for :bind-keymap.

Type: attribute set of string

Default: { }

Example:

{
  "C-c p" = "projectile-command-map";
}

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.bindLocal

The entries to use for local keymaps in :bind.

Type: attribute set of attribute set of string

Default: { }

Example:

{
  helm-command-map = {
    "C-c h" = "helm-execute-persistent-action";
  };
}

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.chords

The entries to use for :chords.

Type: attribute set of string

Default: { }

Example:

{
  jj = "ace-jump-char-mode";
  jk = "ace-jump-word-mode";
}

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.command

The entries to use for :commands.

Type: list of string

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.config

Code to place in the :config section.

Type: strings concatenated with "\n"

Default: ""

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.defer

The :defer setting.

Type: boolean or positive integer, meaning >0

Default: false

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.defines

The entries to use for :defines.

Type: list of string

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.demand

The :demand setting.

Type: boolean

Default: false

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.diminish

The entries to use for :diminish.

Type: list of string

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.earlyInit

Lines to add to programs.emacs.init.earlyInit when this package is enabled.

Note, the package is not automatically loaded so you will have to require the necessary features yourself.

Type: strings concatenated with "\n"

Default: ""

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.extraConfig

Additional lines to place in the use-package configuration.

Type: strings concatenated with "\n"

Default: ""

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.extraPackages

Extra packages to add to home.packages.

Type: list of package

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.functions

The entries to use for :functions.

Type: list of string

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.hook

The entries to use for :hook.

Type: list of string

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.init

The entries to use for :init.

Type: strings concatenated with "\n"

Default: ""

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackage.<name>.mode

The entries to use for :mode.

Type: list of string

Default: [ ]

Declared by:

<nur-rycee/emacs-init.nix>
programs.emacs.init.usePackageVerbose

Whether to enable verbose use-package mode.

Type: boolean

Default: false

Example: true

Declared by:

<nur-rycee/emacs-init.nix>
programs.gnome-terminal.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/gnome-terminal.nix>
programs.jq.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/jq.nix>
programs.rofi.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/rofi.nix>
services.dunst.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/dunst.nix>
services.polybar.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/polybar.nix>
services.screen-locker.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/screen-locker.nix>
services.xscreensaver.enableBase16Theme

Enable Base16 theme.

Type: boolean

Default: true

Example: false

Declared by:

<nur-rycee/theme-base16/xscreensaver.nix>
theme.base16.colors.base00

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base01

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base02

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base03

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base04

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base05

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base06

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base07

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base08

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base09

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base0A

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base0B

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base0C

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base0D

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base0E

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.colors.base0F

Color value. Either a hexadecimal or decimal RGB triplet must be given. If a hexadecimal triplet is given then the decimal triplet is automatically populated, and vice versa. That is, the example could be equivalently written

  { hex.r = "b1"; hex.g = "2a"; hex.b = "2a"; }

And

  "red dec: ${dec.r}, red hex: ${hex.r}, rgb hex: ${hex.rgb}"

would expand to red dec: 177, red hex: b1, rgb hex: b12a2a.

Type: submodule

Example:

{
  dec = {
    b = 42;
    g = 42;
    r = 177;
  };
}

Declared by:

<nur-rycee/theme-base16>
theme.base16.kind

Whether theme is dark or light. The default value is determined by a basic heuristic, if an incorrect value is found then this option must be set explicitly.

Type: one of "dark", "light"

Default:

"light", if sum of RGB components of base00 color ≥ 382,
"dark", otherwise

Example: "dark"

Declared by:

<nur-rycee/theme-base16>
theme.base16.name

The theme name.

Type: string

Example: "My-Fine-Theme"

Declared by:

<nur-rycee/theme-base16>