1
0
Fork 0
nix-configuration/modules/module.nix.template

50 lines
1.3 KiB
Plaintext

# This is an example of a blank module.
{ config, lib, ... }:
let
cfg = config.aux.system.services.myModule;
in
{
options = {
aux.system.services.myModule = {
enable = lib.mkEnableOption "Enables this example module.";
attributes = lib.mkOption {
default = { };
type = lib.types.attrs;
description = "An example of an attributes option.";
};
string = lib.mkOption {
default = "";
type = lib.types.str;
description = "An example of a string option.";
};
list = lib.mkOption {
default = [ ];
type = lib.types.listOf lib.types.int;
description = "An example of a list (of integers) option.";
};
enum = mkOption {
default = "one";
type = types.enum [
"one"
"two"
];
description = "An example of an enum option.";
};
};
};
config = lib.mkIf cfg.enable {
# Add changes applied by this module here.
};
systemd.services = {
# Forces systemd to wait for the module's configuration directory to be available before starting the service.
myModule.unitConfig.RequiresMountsFor = cfg.home;
# Tells Nginx to wait for the service to be available before coming online.
nginx.wants = [ config.systemd.services.myModule.name ];
};
}