flake.auto-import.enable

Whether to enable enable auto-importing modules.

Type: boolean

Default: false

Example: true

Declared by:

flake.auto-import.addTo.flakeParts

Whether to enable add {modules’} entries to {modules.{class}} (flake-parts extra module).

Type: boolean

Default: false

Example: true

Declared by:

flake.auto-import.addTo.modules

Whether to enable add {modules’} entries to toplevel flake output (i.e. nixosModules, flakeModules).

Type: boolean

Default: false

Example: true

Declared by:

flake.auto-import.flake

Auto-imported flake-parts modules from {dir}

Type: submodule

Default: { }

Declared by:

flake.auto-import.flake.addTo.flakeParts

Whether to enable add {modules’} entries to {modules.{class}} (flake-parts extra module).

Type: boolean

Default: true

Example: true

Declared by:

flake.auto-import.flake.addTo.modules

Whether to enable add {modules’} entries to toplevel flake output (i.e. nixosModules, flakeModules).

Type: boolean

Default: true

Example: true

Declared by:

flake.auto-import.flake.all

all nixos modules from nixosModules' after being filtered by filterAll

Type: list of raw value (read only)

Default: []

Declared by:

flake.auto-import.flake.class

Class to set by default for imports

Type: string

Default: "flake"

Example: "homeManager"

Declared by:

flake.auto-import.flake.dir

If set, modules are raked and imported into modules.nixos

Type: null or path

Default: null

Example: ./nixosModules

Declared by:

flake.auto-import.flake.filterByPath

list of attr path lists in modules' to remove from {all}

Type: list of list of string

Default: [ ]

Example:

[
  ["virt" "microvm" "vm"]
]

Declared by:

flake.auto-import.flake.filterModules

If set, apply this filter function to auto-imported modules from {dir}

Type: function that evaluates to a(n) function that evaluates to a(n) boolean

Default: n: c: !(hasPrefix "__" n)

Example: _: _: true

Declared by:

flake.auto-import.flake.flakeArgs

When set to null, modules are imported purely by path. Otherwise, all imported modules are mapped through import {module} {flakeArgs}.

This can allow all auto-imported to have access to your flake level args.

Type: null or unspecified value

Default: defaults.flakeArgs

Example: localFlake

Declared by:

flake.auto-import.flake.genImport

Type: function that evaluates to a(n) function that evaluates to a(n) raw value

Default:

''
  n: c: {
    _file = "$\{toString moduleLocation}#$\{class}Modules.$\{n}";
    _class = class;
    imports = [c];
  }
''

Declared by:

flake.auto-import.flake.modules

Auto-imported flake modules from ./dir

Optionally add entries (unfiltered) to flakeModules or modules.flake (flake-parts extra module).

Type: lazy attribute set of raw value

Default: { }

Declared by:

flake.auto-import.flake.modules’

Ready-to-import modules, extra args like _file set (using {genImport})

Type: lazy attribute set of raw value

Default: { }

Declared by:

flake.auto-import.flakeArgs

When set to null, modules are imported purely by path. Otherwise, all imported modules are mapped through import {module} {flakeArgs}.

This can allow all auto-imported to have access to your flake level args.

Type: null or unspecified value

Default: defaults.flakeArgs

Example: localFlake

Declared by:

flake.auto-import.homeManager

Auto-imported home-manager modules from {dir}

Type: submodule

Default: { }

Declared by:

flake.auto-import.homeManager.addTo.flakeParts

Whether to enable add {modules’} entries to {modules.{class}} (flake-parts extra module).

Type: boolean

Default: true

Example: true

Declared by:

flake.auto-import.homeManager.addTo.modules

Whether to enable add {modules’} entries to toplevel flake output (i.e. nixosModules, flakeModules).

Type: boolean

Default: true

Example: true

Declared by:

flake.auto-import.homeManager.all

all nixos modules from nixosModules' after being filtered by filterAll

Type: list of raw value (read only)

Default: []

Declared by:

flake.auto-import.homeManager.class

Class to set by default for imports

Type: string

Default: "homeManager"

Example: "homeManager"

Declared by:

flake.auto-import.homeManager.dir

If set, modules are raked and imported into modules.nixos

Type: null or path

Default: null

Example: ./nixosModules

Declared by:

flake.auto-import.homeManager.filterByPath

list of attr path lists in modules' to remove from {all}

Type: list of list of string

Default: [ ]

Example:

[
  ["virt" "microvm" "vm"]
]

Declared by:

flake.auto-import.homeManager.filterModules

If set, apply this filter function to auto-imported modules from {dir}

Type: function that evaluates to a(n) function that evaluates to a(n) boolean

Default: n: c: !(hasPrefix "__" n)

Example: _: _: true

Declared by:

flake.auto-import.homeManager.flakeArgs

When set to null, modules are imported purely by path. Otherwise, all imported modules are mapped through import {module} {flakeArgs}.

This can allow all auto-imported to have access to your flake level args.

Type: null or unspecified value

Default: defaults.flakeArgs

Example: localFlake

Declared by:

flake.auto-import.homeManager.genImport

Type: function that evaluates to a(n) function that evaluates to a(n) raw value

Default:

''
  n: c: {
    _file = "$\{toString moduleLocation}#$\{class}Modules.$\{n}";
    _class = class;
    imports = [c];
  }
''

Declared by:

flake.auto-import.homeManager.modules

Auto-imported homeManager modules from ./dir

Optionally add entries (unfiltered) to homeManagerModules or modules.homeManager (flake-parts extra module).

Type: lazy attribute set of raw value

Default: { }

Declared by:

flake.auto-import.homeManager.modules’

Ready-to-import modules, extra args like _file set (using {genImport})

Type: lazy attribute set of raw value

Default: { }

Declared by:

flake.auto-import.nixos

Auto-imported nixos modules from {dir}

NixOS modules set, less strict that flake.nixosModules since it can be recursiveAttrsOf config. Used to allow arbitrary nixosModule attrsets for exporting, to allow for grouping.

Type: submodule

Default: { }

Declared by:

flake.auto-import.nixos.addTo.flakeParts

Whether to enable add {modules’} entries to {modules.{class}} (flake-parts extra module).

Type: boolean

Default: true

Example: true

Declared by:

flake.auto-import.nixos.addTo.modules

Whether to enable add {modules’} entries to toplevel flake output (i.e. nixosModules, flakeModules).

Type: boolean

Default: true

Example: true

Declared by:

flake.auto-import.nixos.all

all nixos modules from nixosModules' after being filtered by filterAll

Type: list of raw value (read only)

Default: []

Declared by:

flake.auto-import.nixos.class

Class to set by default for imports

Type: string

Default: "nixos"

Example: "homeManager"

Declared by:

flake.auto-import.nixos.dir

If set, modules are raked and imported into modules.nixos

Type: null or path

Default: null

Example: ./nixosModules

Declared by:

flake.auto-import.nixos.filterByPath

list of attr path lists in modules' to remove from {all}

Type: list of list of string

Default: [ ]

Example:

[
  ["virt" "microvm" "vm"]
]

Declared by:

flake.auto-import.nixos.filterModules

If set, apply this filter function to auto-imported modules from {dir}

Type: function that evaluates to a(n) function that evaluates to a(n) boolean

Default: n: c: !(hasPrefix "__" n)

Example: _: _: true

Declared by:

flake.auto-import.nixos.flakeArgs

When set to null, modules are imported purely by path. Otherwise, all imported modules are mapped through import {module} {flakeArgs}.

This can allow all auto-imported to have access to your flake level args.

Type: null or unspecified value

Default: defaults.flakeArgs

Example: localFlake

Declared by:

flake.auto-import.nixos.genImport

Type: function that evaluates to a(n) function that evaluates to a(n) raw value

Default:

''
  n: c: {
    _file = "$\{toString moduleLocation}#$\{class}Modules.$\{n}";
    _class = class;
    imports = [c];
  }
''

Declared by:

flake.auto-import.nixos.modules

Auto-imported nixos modules from ./dir

Optionally add entries (unfiltered) to nixosModules or modules.nixos (flake-parts extra module).

Type: lazy attribute set of raw value

Default: { }

Declared by:

flake.auto-import.nixos.modules’

Ready-to-import modules, extra args like _file set (using {genImport})

Type: lazy attribute set of raw value

Default: { }

Declared by:

flake.docs.enable

Whether to enable enable docs integration.

Type: boolean

Default: false

Example: true

Declared by:

flake.docs.defaults

default values to pass into sites

Type: submodule

Default: { }

Declared by:

flake.docs.defaults.hostOptions

default options to use for documentation generation

Type: lazy attribute set of raw value

Default:

(import (localFlake.inputs.nixpkgs.outPath + "/nixos/lib/eval-config.nix") {
  # Overriden explicitly here, this would include all modules from NixOS otherwise.
  # See: docs of eval-config.nix for more details
  modules = [];
})
.options;

Example: self.nixosConfigurations.myhost.options

Declared by:

flake.docs.defaults.nuscht-search.baseHref

The directory to where the search is going to be deployed relative to the domain. Defaults to /.

Type: string

Default: "/"

Example: "/search/"

Declared by:

flake.docs.defaults.nuscht-search.customTheme

Custom theme file that replaces styles.scss in upstream package

Type: null or path in the Nix store

Default: null

Example:

pkgs.writeText "styles.scss" ''''
  @import "theme";
  @include theme();
  @import "scss/kanagawa";

  :root {
    --f-color: hsl(214, 41.1%, 78.0%); // lightsteelblue
  }

  * {
    box-sizing: border-box;
    background: #101010;
  }

  pre {
    white-space: pre-wrap;
  }
''''

Declared by:

flake.docs.defaults.nuscht-search.title

The title on the top left. Defaults to NüschtOS Search.

Type: string

Default: "Custom Options Search"

Declared by:

flake.docs.defaults.substitution.gitRepoFilePath

Base URL of git repo file browser, used for rewriting urls to source to the correct URL

Type: string

Default: "http://gitea.local.testing/tree/master"

Example: "https://github.com/kraftnix/provision-nix/tree/master/"

Declared by:

flake.docs.defaults.substitution.gitRepoUrl

URL of git repo, you need to set this.

Type: non-empty string

Default: "http://gitea.local.testing"

Example: "https://github.com/kraftnix/provision-nix"

Declared by:

flake.docs.defaults.substitution.outPath

outPath of the flake, used for rewriting /nix/store/ hardlinks in generated output from mkOptionsDoc

Type: path in the Nix store

Default: "/nix/store/9zw54x1b66rg4cbxhw2laf0b55kia3l7-source"

Example: self.outPath

Declared by:

flake.docs.sites

mdbook sites to generate, optionally generating module options documentation with mkOptionsDoc

The mdbook site for this repository can be found site.nix

Options documentation generated is added to {mdbook.path}/options/{name}-options.md before mdbook build is run.

This means that running mdbook locally (useful when writing docs due to hot-reload), generated options documentation won’t be avaiable.

Additionally, in order to use options generated from docgen, you must include them in your mdbook SUMMARY.md or else mdbook won’t include it during its build.

Type: attribute set of (submodule)

Default: { }

Example:

{
  provision-nix-docs-local = {
    mdbook.src = ./.;
    defaults = {
      hostOptions = self.nixosConfigurations.basic.options;
      substitution.outPath = self.outPath;
      substitution.gitRepoUrl = "https://github.com/kraftnix/provision-nix";
      # automatically set by above path
      # substitution.gitRepoFilePath = "https://github.com/kraftnix/provision-nix/tree/master/";
    };
    homepage = {
      url = "http://localhost:1111";
      body = "Homepage";
    };
    docgen.nixos-nftables.filter = option:
      builtins.elemAt option.loc 0 == "networking"
      &&
      builtins.elemAt option.loc 1 == "nftables"
      &&
      builtins.elemAt option.loc 2 == "gen"
      ;
  };
}

Declared by:

flake.docs.sites.<name>.enable

Whether to enable enable docs integration.

Type: boolean

Default: true

Example: true

Declared by:

flake.docs.sites.<name>.defaults

default values to pass into sites

Type: submodule

Default:

{

  # use a host from your config and optionally pass extra modules
  hostOptions =
    (import (localFlake.self.nixosConfigurations.basic.pkgs.path + "/nixos/lib/eval-config.nix") {
      # Overriden explicitly here, this would include all modules from NixOS otherwise.
      # See: docs of eval-config.nix for more details
      modules = [];
    }).options;

  # set some nuscht-search defaults
  nuscht-search = {
    baseHref = "/";
    customTheme = null;
    title = "Custom Options Search";
  };

  # substitutions for nuscht-search and options references
  substitution = {
    gitRepoUrl = "https://github.com/kraftnix/provision-nix";

    # by default, adds "/tree/master" to `gitRepoUrl`
    # gitRepoFilePath = "https://github.com/kraftnix/provision-nix/tree/master";

    # by default: is set to current flake's outPath
    # outPath = self.outPath;
  };
}

Declared by:

flake.docs.sites.<name>.defaults.hostOptions

default options to use for documentation generation

Type: lazy attribute set of raw value

Default:

(import (localFlake.inputs.nixpkgs.outPath + "/nixos/lib/eval-config.nix") {
  # Overriden explicitly here, this would include all modules from NixOS otherwise.
  # See: docs of eval-config.nix for more details
  modules = [];
})
.options;

Example: self.nixosConfigurations.myhost.options

Declared by:

flake.docs.sites.<name>.defaults.nuscht-search.baseHref

The directory to where the search is going to be deployed relative to the domain. Defaults to /.

Type: string

Default: "/"

Example: "/search/"

Declared by:

flake.docs.sites.<name>.defaults.nuscht-search.customTheme

Custom theme file that replaces styles.scss in upstream package

Type: null or path in the Nix store

Default: null

Example:

pkgs.writeText "styles.scss" ''''
  @import "theme";
  @include theme();
  @import "scss/kanagawa";

  :root {
    --f-color: hsl(214, 41.1%, 78.0%); // lightsteelblue
  }

  * {
    box-sizing: border-box;
    background: #101010;
  }

  pre {
    white-space: pre-wrap;
  }
''''

Declared by:

flake.docs.sites.<name>.defaults.nuscht-search.title

The title on the top left. Defaults to NüschtOS Search.

Type: string

Default: "Custom Options Search"

Declared by:

flake.docs.sites.<name>.defaults.substitution.gitRepoFilePath

Base URL of git repo file browser, used for rewriting urls to source to the correct URL

Type: string

Default: "http://gitea.local.testing/tree/master"

Example: "https://github.com/kraftnix/provision-nix/tree/master/"

Declared by:

flake.docs.sites.<name>.defaults.substitution.gitRepoUrl

URL of git repo, you need to set this.

Type: non-empty string

Default: "http://gitea.local.testing"

Example: "https://github.com/kraftnix/provision-nix"

Declared by:

flake.docs.sites.<name>.defaults.substitution.outPath

outPath of the flake, used for rewriting /nix/store/ hardlinks in generated output from mkOptionsDoc

Type: path in the Nix store

Default: "/nix/store/9zw54x1b66rg4cbxhw2laf0b55kia3l7-source"

Example: self.outPath

Declared by:

flake.docs.sites.<name>.docgen

Tranforms modules options into markdown files.

Options from a host, or evalModules can be provided, and custom filters can be applied to generate only specific options.

Type: attribute set of (submodule)

Default: { }

Example:

{
  filter = option:
    builtins.elemAt option.loc 0 == "networking"
    &&
    builtins.elemAt option.loc 1 == "nftables"
    ;
}

Declared by:

flake.docs.sites.<name>.docgen.<name>.enable

Whether to enable enable options docs generation.

Type: boolean

Default: true

Example: true

Declared by:

flake.docs.sites.<name>.docgen.<name>.filter

filter to apply to options

Type: function that evaluates to a(n) boolean

Default: <function>

Example:

# filter only `networking.nftables` options
option:
  builtins.elemAt option.loc 0 == "networking"
  &&
  builtins.elemAt option.loc 1 == "nftables"

Declared by:

flake.docs.sites.<name>.docgen.<name>.hostOptions

host to use for options evaluation

Type: lazy attribute set of raw value

Default: defaults.hostOptions

Example:

# gather `flake-parts` options from current flake
flake-parts-lib.evalFlakeModule
  { inputs.self = self; }
  {
    imports = [ ./flakeModules/my-flake-parts-module.nix ];
    systems = [ (throw "The `systems` option value is not available when generating documentation. This is generally caused by a missing `defaultText` on one or more options in the trace. Please run this evaluation with `--show-trace`, look for `while evaluating the default value of option` and add a `defaultText` to the one or more of the options involved.") ];
  }).options

Declared by:

flake.docs.sites.<name>.docgen.<name>.out.name

name of markdown file containing options

Type: string

Default: "‹name›-options.md"

Declared by:

flake.docs.sites.<name>.docgen.<name>.substitution.gitRepoFilePath

Base URL of git repo file browser, used for rewriting urls to source to the correct URL

Type: string

Default: "https://gitea.home.lan/kraftnix/provision-nix/src/branch/master/"

Example: "https://github.com/kraftnix/provision-nix/tree/master/"

Declared by:

flake.docs.sites.<name>.docgen.<name>.substitution.gitRepoUrl

URL of git repo

Type: string

Default: "https://gitea.home.lan/kraftnix/provision-nix"

Example: "https://github.com/kraftnix/provision-nix"

Declared by:

flake.docs.sites.<name>.docgen.<name>.substitution.outPath

outPath of the flake, used for rewriting /nix/store/ hardlinks in generated output from mkOptionsDoc

Type: path in the Nix store

Default: "/nix/store/9zw54x1b66rg4cbxhw2laf0b55kia3l7-source"

Example: self.outPath

Declared by:

flake.docs.sites.<name>.homepage.body

HTML Snippet inside <a> link used in documentation to point to home page.

Type: string

Default: "Home"

Example: "Homepage"

Declared by:

flake.docs.sites.<name>.homepage.siteBase

Base URL of docs

Type: string

Default: "/"

Example: "/projects/provision-nix/"

Declared by:

flake.docs.sites.<name>.homepage.url

Homepage of the website (for when siteBase is not at root)

Type: string

Default: "http://localhost:1111"

Example: "https://mydocswebsite.com"

Declared by:

flake.docs.sites.<name>.mdbook.path

path in src where mdbook docs are located

Type: string

Default: "docs"

Declared by:

flake.docs.sites.<name>.mdbook.src

source directory of mdBook documentation

Type: path

Default: docs

Example: ./.

Declared by:

flake.docs.sites.<name>.name

site name

Type: string

Default: "‹name›"

Example: "provision-nix"

Declared by:

flake.hosts

Generate nixosConfigurations with defaults:

  • auto-import host configurations from a directory
  • define default modules, overlays, specialArgs for hosts
  • define extra options for colmena, deploy-rs integration

Type: submodule

Default: { }

Declared by:

flake.hosts.colmena

Colmena options to add to each host.

Type: raw value

Default: { }

Example:

{
  targetPort = 22;
  targetUser = "deploy";
}

Declared by:

flake.hosts.configs

Define hosts inline, host configurations are auto-imported from {hostsDir} and added to `modules``;

  • modules: extra modules, auto-adds modules from defaults.modules
  • overlays: extra overlays, auto-adds overlays from overlays
  • nixpkgs: pkgs set, auto-adds from channels.{system}.nixpkgs.pkgs
  • system
  • specialArgs
  • deploy options (colmena, deploy-rs)

Type: lazy attribute set of (submodule)

Default: { }

Declared by:

flake.hosts.configs.<name>.enable

whether to generate flake config for nixosConfigurations, colmena and deploy

Type: boolean

Default: true

Declared by:

flake.hosts.configs.<name>.colmena

extra arguments to add in flake colmena.<host>.deployment

Type: attribute set of anything

Default: { }

Example:

{
  targetPort = 22;
  targetUser = "deploy";
}

Declared by:

flake.hosts.configs.<name>.deploy

extra arguments to add in flake deploy.nodes.<host>

Type: attribute set of anything

Default: { }

Example:

{
  fastConnection = true;
  sshUser = "deploy";
  magicRollback = true;
  autoRollback = true;
}

Declared by:

flake.hosts.configs.<name>.hostname

hostname to set for networking.hostName in hosts nixosConfiguration

Type: string

Default: "‹name›"

Declared by:

flake.hosts.configs.<name>.modules

extra nixos modules to eval for host.

Type: list of raw value

Default: [ ]

Example:

[
  inputs.provision.nixosModules.provision-scripts
  { networking.firewall.enable = lib.mkForce true; }
];

Declared by:

flake.hosts.configs.<name>.nixpkgs

The Nixpkgs to use for this host.

  • if set to a string, then a channel’s pkgs will be looked up in flake.channels.{system}.{name}.pkgs
  • otherwise, can be set to a pkgs directly.

By default uses nixpkgs channel in channels option.

Type: string or Nixpkgs package set

Default: "nixpkgs"

Example: "nixpkgs-stable"

Declared by:

flake.hosts.configs.<name>.overlays

extra overlays to add for host

Type: list of (nixpkgs overlay)

Default: [ ]

Example:

[
  inputs.provision-nix.overlays.lnav
]

Declared by:

flake.hosts.configs.<name>.rendered

Post eval nixosConfiguration field, added to nixosConfigurations.

Type: lazy attribute set of raw value

Default: { }

Declared by:

flake.hosts.configs.<name>.self

reference to current flake-parts self

Type: lazy attribute set of unspecified value

Default: self

Example: self

Declared by:

flake.hosts.configs.<name>.specialArgs

extra arguments to add to specialArgs in eval-config.nix

Type: lazy attribute set of raw value

Default: { }

Example:

{
  inherit self inputs;
}

Declared by:

flake.hosts.configs.<name>.system

system for host.

Type: one of “i686-cygwin”, “x86_64-cygwin”, “x86_64-darwin”, “i686-darwin”, “aarch64-darwin”, “armv7a-darwin”, “i686-freebsd”, “x86_64-freebsd”, “aarch64-freebsd”, “aarch64-genode”, “i686-genode”, “x86_64-genode”, “x86_64-solaris”, “javascript-ghcjs”, “aarch64-linux”, “armv5tel-linux”, “armv6l-linux”, “armv7a-linux”, “armv7l-linux”, “i686-linux”, “loongarch64-linux”, “m68k-linux”, “microblaze-linux”, “microblazeel-linux”, “mips-linux”, “mips64-linux”, “mips64el-linux”, “mipsel-linux”, “powerpc64-linux”, “powerpc64le-linux”, “riscv32-linux”, “riscv64-linux”, “s390-linux”, “s390x-linux”, “x86_64-linux”, “mmix-mmixware”, “aarch64-netbsd”, “armv6l-netbsd”, “armv7a-netbsd”, “armv7l-netbsd”, “i686-netbsd”, “m68k-netbsd”, “mipsel-netbsd”, “powerpc-netbsd”, “riscv32-netbsd”, “riscv64-netbsd”, “x86_64-netbsd”, “aarch64_be-none”, “aarch64-none”, “arm-none”, “armv6l-none”, “avr-none”, “i686-none”, “microblaze-none”, “microblazeel-none”, “mips-none”, “mips64-none”, “msp430-none”, “or1k-none”, “m68k-none”, “powerpc-none”, “powerpcle-none”, “riscv32-none”, “riscv64-none”, “rx-none”, “s390-none”, “s390x-none”, “vc4-none”, “x86_64-none”, “i686-openbsd”, “x86_64-openbsd”, “x86_64-redox”, “wasm64-wasi”, “wasm32-wasi”, “aarch64-windows”, “x86_64-windows”, “i686-windows”

Default: "x86_64-linux"

Example: "aarch64-linux"

Declared by:

flake.hosts.defaults

default options for generating hosts with genNixos

Type: submodule

Default: { }

Example:

{
  modules = [
    { networking.firewall.enable = lib.mkForce true; }
  ];
  overlays = [
    inputs.provision-nix.overlays.lnav
  ];
  specialArgs = {
    inherit self inputs;
  };
}

Declared by:

flake.hosts.defaults.colmena

extra arguments to add in flake colmena.<host>.deployment

Type: attribute set of anything

Default: { }

Example:

{
  targetPort = 22;
  targetUser = "deploy";
}

Declared by:

flake.hosts.defaults.deploy

extra arguments to add in flake deploy.nodes.<host>

Type: attribute set of anything

Default: { }

Example:

{
  fastConnection = true;
  sshUser = "deploy";
  magicRollback = true;
  autoRollback = true;
}

Declared by:

flake.hosts.defaults.modules

extra nixos modules to eval for host.

Type: list of raw value

Default: [ ]

Example:

[
  inputs.provision.nixosModules.provision-scripts
  { networking.firewall.enable = lib.mkForce true; }
];

Declared by:

flake.hosts.defaults.nixpkgs

The Nixpkgs to use for this host.

  • if set to a string, then a channel’s pkgs will be looked up in flake.channels.{system}.{name}.pkgs
  • otherwise, can be set to a pkgs directly.

By default uses nixpkgs channel in channels option.

Type: string or Nixpkgs package set

Default: "nixpkgs"

Example: "nixpkgs-stable"

Declared by:

flake.hosts.defaults.overlays

extra overlays to add for host

Type: list of (nixpkgs overlay)

Default: [ ]

Example:

[
  inputs.provision-nix.overlays.lnav
]

Declared by:

flake.hosts.defaults.self

reference to current flake-parts self

Type: lazy attribute set of unspecified value

Default: self

Example: self

Declared by:

flake.hosts.defaults.specialArgs

extra arguments to add to specialArgs in eval-config.nix

Type: lazy attribute set of raw value

Default: { }

Example:

{
  inherit self inputs;
}

Declared by:

flake.hosts.defaults.system

system for host.

Type: one of “i686-cygwin”, “x86_64-cygwin”, “x86_64-darwin”, “i686-darwin”, “aarch64-darwin”, “armv7a-darwin”, “i686-freebsd”, “x86_64-freebsd”, “aarch64-freebsd”, “aarch64-genode”, “i686-genode”, “x86_64-genode”, “x86_64-solaris”, “javascript-ghcjs”, “aarch64-linux”, “armv5tel-linux”, “armv6l-linux”, “armv7a-linux”, “armv7l-linux”, “i686-linux”, “loongarch64-linux”, “m68k-linux”, “microblaze-linux”, “microblazeel-linux”, “mips-linux”, “mips64-linux”, “mips64el-linux”, “mipsel-linux”, “powerpc64-linux”, “powerpc64le-linux”, “riscv32-linux”, “riscv64-linux”, “s390-linux”, “s390x-linux”, “x86_64-linux”, “mmix-mmixware”, “aarch64-netbsd”, “armv6l-netbsd”, “armv7a-netbsd”, “armv7l-netbsd”, “i686-netbsd”, “m68k-netbsd”, “mipsel-netbsd”, “powerpc-netbsd”, “riscv32-netbsd”, “riscv64-netbsd”, “x86_64-netbsd”, “aarch64_be-none”, “aarch64-none”, “arm-none”, “armv6l-none”, “avr-none”, “i686-none”, “microblaze-none”, “microblazeel-none”, “mips-none”, “mips64-none”, “msp430-none”, “or1k-none”, “m68k-none”, “powerpc-none”, “powerpcle-none”, “riscv32-none”, “riscv64-none”, “rx-none”, “s390-none”, “s390x-none”, “vc4-none”, “x86_64-none”, “i686-openbsd”, “x86_64-openbsd”, “x86_64-redox”, “wasm64-wasi”, “wasm32-wasi”, “aarch64-windows”, “x86_64-windows”, “i686-windows”

Default: "x86_64-linux"

Example: "aarch64-linux"

Declared by:

flake.hosts.deploy-rs

Default options for deploy-rs’s global options (not including nodes).

Type: raw value

Default: { }

Example:

{
  fastConnection = true;
  sshUser = "deploy";
  magicRollback = true;
  autoRollback = true;
}

Declared by:

flake.hosts.hostsDir

If set, then a rakeLeaves is performed on the path, and entries are used to seed flake.hosts.configs.

toplevel default file is ignored ({hostsDir}/default.nix).

Type: null or path

Default: null

Example: ./hosts

Declared by:

flake.hosts.overlays

List of overlays to add to all hosts.

Type: list of (nixpkgs overlay)

Default: [ ]

Example:

[
  (final: prev: {
    rofi-calc = prev.rofi-calc.override {
      rofi-unwrapped = final.rofi-wayland-unwrapped;
    };
  })
  inputs.provision-nix.overlays.lnav
]

Declared by:

flake.hosts.rendered

Post eval nixosConfiguration’s config field, useful for introspection.

Type: lazy attribute set of raw value (read only)

Default: { }

Declared by:

flake.hosts.toplevels

Post eval nixosConfiguration’s config.system.build.toplevel field, useful for nix-fast-build.

nix-fast-build -f .#hosts.toplevels

Type: lazy attribute set of raw value (read only)

Default: { }

Declared by:

flake.lib

Flake level lib option.

Type: lazy attribute set of anything

Default: { }

Example:

{
  mkEnableTrue = description: lib.mkEnableOption description // { default = true; };
}

Declared by:

flake.profiles

NixOS profiles.

You may use this for reusable snippets pieces of pure configuration (i.e. without options).

Type: lazy attribute set of unspecified value

Default: { }

Example:

{
  profiles = {
    inline-example = { lib, config, ... }: {
      networking.firewall.enable = lib.mkForce false;
      networking.domain = lib.mkForce config.networking.hostName;
    };
    server = ./profiles/server.nix;
  };
}

Declared by:

perSystem.packagesGroups

An attribute set of packages to be built by nix build. nix build .#<name> will build packages.<name>.

Type: lazy attribute set of lazy attribute set of package

Default: { }

Example:

{
  nushellPlugins = {
    explore = pkgs.callPackage ./nushell_plugin_explore.nix {};
    dbus = pkgs.callPackage ./nushell_plugin_dbus.nix {};
  };
}

Declared by:

perSystem.channels

NixOS Channels (pkgs) to allow hosts to use. The nixpkgs channel is always created, using your inputs.nixpkgs, but this is overridable.

Type: attribute set of (submodule)

Default: { }

Example:

{
  stable = {};
  latest.inputName = "nixpkgs-master";
  nixpkgs = {
    config.permittedInsecurePackages = [ "electron-28.3.3" ];
    config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
      "steam"
      "steamcmd"
      "steam-run"
    ];
    overlays = [
      self.overlays.channels
      (final: prev: {
        inherit (final.channels.stable)
          prometheus
          vector
          ;
      })
      inputs.provision-nix.overlays.lnav
    ];
  };
}

Declared by:

perSystem.channels.<name>.addChannelsOverlay

insert self channels overlay to each channel

Type: boolean

Default: true

Example: false

Declared by:

perSystem.channels.<name>.config

Nixpkgs Config to evaluate base channel with, passed into import nixpkgs { config }

Type: raw value

Default:

{
  allowUnfree = false;
}

Example:

{
  permittedInsecurePackages = [ "electron-28.3.3" ];
  allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
    "steam"
    "steam-run"
  ];
}

Declared by:

perSystem.channels.<name>.extraArgs

Overrides configuration arguments to pass into import nixpkgs

Type: raw value

Default: { }

Declared by:

perSystem.channels.<name>.input

Flake nixpkgs input to use as channel base.

Type: raw value

Default: { }

Declared by:

perSystem.channels.<name>.inputName

Name of nixpkgs input to use as channel base.

Type: string

Default: "‹name›"

Declared by:

perSystem.channels.<name>.overlays

List of overlays to apply to nixpkgs from input.

Type: list of (nixpkgs overlay)

Default: [ ]

Declared by:

perSystem.channels.<name>.pkgs

Final pkgs to use for hosts.

Type: Nixpkgs package set

Default: { }

Declared by:

Nüscht Search integration which combines all options in docgen into scopes

Options from a host, or evalModules can be provided, and custom filters can be applied to generate only specific options.

Type: attribute set of (submodule)

Default: { }

Example:

my-search = {
  title = "My Custom Options Search";
  baseHref = "/search/";
  scopes = {
    customScope = {
      name = "NixOS Modules";
      modules = [ self.inputs.nixos-modules.nixosModule ];
      urlPrefix = "https://github.com/NuschtOS/nixos-modules/blob/main/";
    };
  };
}

Declared by:

perSystem.nuscht-search.<name>.enable

Whether to enable enable nuscht-search generation.

Type: boolean

Default: true

Example: true

Declared by:

perSystem.nuscht-search.<name>.baseHref

The directory to where the search is going to be deployed relative to the domain. Defaults to /.

Type: string

Default: "/"

Example: "/search/"

Declared by:

perSystem.nuscht-search.<name>.customTheme

Custom theme file that replaces styles.scss in upstream package

Type: null or path

Default: null

Example:

pkgs.writeText "styles.scss" ''''
  @import "theme";
  @include theme();
  @import "scss/kanagawa";

  :root {
    --f-color: hsl(214, 41.1%, 78.0%); // lightsteelblue
  }

  * {
    box-sizing: border-box;
    background: #101010;
  }

  pre {
    white-space: pre-wrap;
  }
''''

Declared by:

perSystem.nuscht-search.<name>.multiSearch

final output of mkMultiSearch

Type: path in the Nix store

Declared by:

perSystem.nuscht-search.<name>.scopes

an attrset of scope attributes which each takes name, modules, optionsJSON, optionsPrefix or urlPrefix option. used as args for mkMultiSearch.

Automatically uses options from docgen.

see https://github.com/NuschtOS/search?tab=readme-ov-file#explanation-of-options for more information

Type: attribute set of (submodule)

Default: { }

Declared by:

perSystem.nuscht-search.<name>.scopes.<name>.enable

Whether to enable enable inclusion of scope in module.

Type: boolean

Default: true

Example: true

Declared by:

perSystem.nuscht-search.<name>.scopes.<name>.modules

A list of NixOS modules as an attrset or file similar to the nixosSystem function. Exclusive with optionsJSON.

Type: null or (list of raw value)

Default: null

Example: [ self.inputs.nixos-modules.nixosModule ]

Declared by:

perSystem.nuscht-search.<name>.scopes.<name>.name

Scope name

Type: string

Default: "‹name›"

Example: "Custom Search"

Declared by:

perSystem.nuscht-search.<name>.scopes.<name>.optionsJSON

Path to a pre-generated options.json file. Exclusive with modules.

Type: null or path

Default: null

Example: ./path/to/options.json

Declared by:

perSystem.nuscht-search.<name>.scopes.<name>.optionsJSONPackage

optional output of pkgs.nixosOptionsDoc

Type: null or package

Default: null

Declared by:

perSystem.nuscht-search.<name>.scopes.<name>.optionsPrefix

A static prefix to append to all options. An extra dot is always appended. Defaults to being empty.

Type: null or string

Default: null

Example: "programs.example"

Declared by:

perSystem.nuscht-search.<name>.scopes.<name>.urlPrefix

The prefix which is prepended to the declaration link. This is usually a link to a git.

Type: string

Default: ""

Example: "https://git.example.com/blob/main/"

Declared by:

perSystem.nuscht-search.<name>.title

The title on the top left. Defaults to NüschtOS Search.

Type: string

Default: "‹name› Options Search"

Declared by:

perSystem.provision

Provision shells module.

Allows configuring formatter, pre-commit and devshells.default.

Type: submodule

Default: { }

Example:

{
  enable = true;
  # enableDefaults = true;
  formatter = {
    enable = true;
    name = "alejandra";
    enablePreCommmit = true;
  };
  pre-commit.hooks.nil.enable = true;
}

Declared by:

perSystem.provision.enable

Whether to enable enable provision-nix shell.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.provision.enableDefaults

Whether to enable enables pre-commit hook + a default formatter.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.provision.deploy

Configure which deploy packages to add.

Type: submodule

Default: { }

Declared by:

perSystem.provision.deploy.enable

Whether to enable enable adding deploy packages.

Type: boolean

Default: true

Example: true

Declared by:

perSystem.provision.deploy.packages

packages to add to devshell

Type: list of package

Default: [ ]

Example:

[ inputs.colmena.packages.$\{pkgs.system}.colmena ]

Declared by:

perSystem.provision.formatter

Configure default formatter for flake, optionally add as a pre-commit hook.

Type: submodule

Default: { }

Declared by:

perSystem.provision.formatter.enable

Whether to enable enable setting formatter.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.provision.formatter.enablePreCommit

Whether to enable adds formatter to pre-commit hook.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.provision.formatter.package

optional formatter package to use, attempts to infer from name.

Type: null or package

Default: null

Declared by:

perSystem.provision.formatter.name

optional formatter package to use, attempts to infer from name.

Type: string

Default: ""

Declared by:

perSystem.provision.pre-commit.enable

Whether to enable enable pre-commit hooks integration from git-hooks.nix.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.provision.pre-commit.formatHook

format hook from provision.formatter option

Type: attribute set of raw value

Default: { }

Declared by:

perSystem.provision.pre-commit.hooks

hooks to passthrough to pre-commit.settings.hooks

Type: attribute set of raw value

Default: { }

Declared by:

perSystem.scripts

Generate scripts from different shells from string snippets, files, or nushell modules.

Enabled scripts are added to packages.{system} by name if scripts.addToPackages is set.

Type: submodule

Default: { }

Example:

{
  perSystem = { ... }: {
    scripts = {
      enable = true;
      addToPackages = true; # default
      defaultShell = "nu";  # default
      scripts = {
        my-test-script.text = "ls -l";
        my-test-script-bash-test.shell = "bash";
        my-test-script-bash-test.text = "ls -la";
        my-test-script-env-has.inputs = [pkgs.afetch];
        my-test-script-env-has.text = ''
          def main [ var ] {
            print $"Env ($var) present: (envHas $var)"
            afetch
          }
        '';
      };
    };
  };
}

Declared by:

perSystem.scripts.enable

Whether to enable enable scripts integration.

Type: boolean

Default: true

Example: true

Declared by:

perSystem.scripts.__enabledScripts

enabled scripts

Type: unspecified value (read only)

Default: { }

Declared by:

perSystem.scripts.__exportableScripts

enabled scripts, with some config removed, suitable for importing between scripts

Type: unspecified value (read only)

Default: { }

Declared by:

perSystem.scripts.addToPackages

Whether to enable adds all scripts to packages depending on module type

  • flake: packages.{system}
  • nixos: environment.systemPackages
  • home: home.packages .

Type: boolean

Default: true

Example: true

Declared by:

perSystem.scripts.defaultLibDirs

optional script lib dir set for all nushell scripts

Type: null or path

Default: null

Declared by:

perSystem.scripts.defaultShell

set default shell for all scripts

Type: string

Default: "nu"

Declared by:

perSystem.scripts.pkgs

Nixpkgs used to generate script. Influences shell runtime.

Type: Nixpkgs package set

Default: pkgs

Declared by:

perSystem.scripts.scripts

Generate scripts from different shells from string snippets, files, or nushell modules.

Enabled scripts are added to packages.{system} by name if scripts.addToPackages is set.

Type: attribute set of (submodule)

Default: { }

Example:

{
  my-test-script.text = "ls -l";
  my-test-script-bash-test.shell = "bash";
  my-test-script-bash-test.text = "ls -la";
  my-test-script-env-has.inputs = [pkgs.afetch];
  my-test-script-env-has.text = ''
    def main [ var ] {
      print $"Env ($var) present: (envHas $var)"
      afetch
    }
  '';
}

Declared by:

perSystem.scripts.scripts.<name>.enable

Whether to enable enable script, auto-matically adds script to packages.

Type: boolean

Default: true

Example: true

Declared by:

perSystem.scripts.scripts.<name>.package

package binary for running script

Type: package

Default: ""

Declared by:

perSystem.scripts.scripts.<name>.checkPhase

setting of writeShellApplication, if null runs a default bash one

Type: null or string

Default: ""

Declared by:

perSystem.scripts.scripts.<name>.env

runtime env to provide to script

Type: null or (attribute set of string)

Default: null

Example:

{
  ENV_VAR = "variable";
}

Declared by:

perSystem.scripts.scripts.<name>.extraConfig

extra config to add to `writeShellApplication

Type: attribute set of raw value

Default: { }

Example:

with pkgs; [
  caddy
  gnused
]

Declared by:

perSystem.scripts.scripts.<name>.file

optionally set script file path, recommended for script files which only contain a single main

Type: path

Default: builtins.toFile "‹name›.nu" config.text

Example: ./fill.nu

Declared by:

perSystem.scripts.scripts.<name>.inputs

runtime inputs to add to script

Type: list of package

Default: [ ]

Example:

with pkgs; [
  caddy
  gnused
]

Declared by:

perSystem.scripts.scripts.<name>.name

script name, also used as name of binary

Type: string

Default: "‹name›"

Declared by:

perSystem.scripts.scripts.<name>.nuLegacyModule

optional nu legacy module wrapper

Type: null or path

Default: null

Example: ./my-helpers.nu

Declared by:

perSystem.scripts.scripts.<name>.nuLibDirs

sets NU_LIB_DIRS in nushell scripts

Type: null or path

Default: null

Example: ./nu

Declared by:

perSystem.scripts.scripts.<name>.nuModule

optional nu module wrapper, very basic wrapper that exports a module to be called from cli

Type: null or path

Default: null

Example: ./my-helpers.nu

Declared by:

perSystem.scripts.scripts.<name>.runtimeShell

runtime shell package.

Type: package

Declared by:

perSystem.scripts.scripts.<name>.shell

runtime shell of script

Type: string

Default: "nu"

Example: "bash"

Declared by:

perSystem.scripts.scripts.<name>.text

nushell script

Type: string

Default: ""

Declared by:

perSystem.sites

generated docs packages

Type: attribute set of (submodule)

Default: { }

Declared by:

perSystem.sites.<name>.docgen

option docs generated from docs.sites.<site>.docgen

Type: attribute set of (submodule)

Default: { }

Declared by:

perSystem.sites.<name>.docgen.<name>.docsout

nixosOptionsDocs output

Type: lazy attribute set of raw value

Default: { }

Declared by:

perSystem.sites.<name>.docgen.<name>.filtered

filter optionsCommonMark output of {mkdocs}, removing file paths + fixing siteRoot links

Type: path in the Nix store

Declared by:

perSystem.sites.<name>.docgen.<name>.outName

output name, used for package names / prefix

Type: string

Default: ""

Declared by:

perSystem.sites.<name>.mdbook

mdbook build and some postprocessing

Type: path in the Nix store

Declared by:

perSystem.sites.<name>.mdbook-pre

mdbook with some preprocessing applied + docgen options copied in

Type: path in the Nix store

Declared by: