Compare commits

...

3 Commits

Author SHA1 Message Date
515e244592 [docs] fix typo 2023-10-31 02:50:25 +01:00
fb4322c040 [docs] fix typos 2023-10-31 02:47:12 +01:00
f376d8684b [nix] allow configuration of triggers/actions in nix 2023-10-31 02:45:25 +01:00
7 changed files with 69 additions and 57 deletions

View File

@@ -49,7 +49,7 @@ func (p Printer) GetExample() string {
return `
{
type: "Print",
"options: {
"options": {
"message": "Hello World!"
}
}

View File

@@ -15,9 +15,7 @@ Actions have the following syntax:
"type": "SomeAction",
"options": { //each action defines its own options
"firstOption": "someValue",
"Stage": 2 //this (positive) number defines the order of multiple actions
"stage": 2 //this (positive) number defines the order of multiple actions
}
}
```
To get a list of all actions and their options from the commandline run ``` gokill -d ```

View File

@@ -17,5 +17,3 @@ Triggers have the following syntax:
"actions": [] //list actions that should be executed here
}
```
To get a list of all triggers and their options from the commandline run ```gokill -d```

112
flake.nix
View File

@@ -47,7 +47,7 @@
nixosModules.gokill = { config, lib, pkgs, ... }:
let
cfg = config.services.gokill;
configFile = pkgs.writeText "config.json" ''${cfg.extraConfig}'';
configFile = pkgs.writeText "config.json" (builtins.toJSON cfg.triggers);
gokill-pkg = self.packages.x86_64-linux.gokill;
in
{
@@ -61,6 +61,45 @@
'';
};
triggers = lib.mkOption {
description = "list of triggers";
default = [];
type = with lib.types; lib.types.listOf ( submodule {
options = {
type = lib.mkOption {
type = lib.types.str;
};
name = lib.mkOption {
type = lib.types.str;
};
options = lib.mkOption {
type = lib.types.attrs;
};
actions = lib.mkOption {
description = "list of actions";
type = with lib.types; lib.types.listOf ( submodule {
options = {
type = lib.mkOption {
type = lib.types.str;
};
options = lib.mkOption {
type = lib.types.attrs;
};
stage = lib.mkOption {
type = lib.types.int;
};
};
});
};
};
});
};
extraConfig = lib.mkOption {
type = lib.types.str;
description = lib.mdDoc ''
@@ -92,53 +131,30 @@
self.nixosModules.gokill
{
services.gokill.enable = true;
services.gokill.extraConfig = ''
[
{
"type": "Timeout",
"name": "custom timeout",
"options": {
"duration": 30
},
"actions": [
{
"type": "Print",
"options": {
"message": "Stage 1 triggered. Waiting 25 seconds"
},
"stage": 1
},
{
"type": "Timeout",
"options": {
"duration": 20
},
"stage": 1
},
{
"type": "Timeout",
"options": {
"duration": 5
},
"stage": 2
},
{
"type": "Print",
"options": {
"message": "Shutdown in 5 seconds..."
},
"stage": 2
},
{
"type": "Shutdown",
"options": {
},
"stage": 3
}
]
}
]
'';
services.gokill.triggers = [
{
type = "Timeout";
name = "custom timeout";
options = {
duration = 10;
};
actions = [
{
type = "Timeout";
options = {
duration = 5;
};
stage = 1;
}
{
type = "Shutdown";
options = {
};
stage = 2;
}
];
}
];
users.users.root.password = "root";
virtualisation.vmVariant.virtualisation.graphics = false;
}

View File

@@ -95,7 +95,7 @@ func (p EthernetDisconnect) GetExample() string {
"options": {
"interfaceName": "eth0",
"waitTillConnected": true
}
},
"actions": [
]
}

View File

@@ -54,7 +54,7 @@ func (p TimeOut) GetExample() string {
"name": "Example Trigger",
"options": {
"duration": 5
}
},
"actions": [
]
}

View File

@@ -96,7 +96,7 @@ func (p UsbDisconnect) GetExample() string {
"options": {
"deviceId": "ata-Samsung_SSD_860_EVO_1TB_S4AALKWJDI102",
"waitTillConnected": true
}
},
"actions": [
]
}