module.nix: config -> settings
This commit is contained in:
@@ -5,8 +5,8 @@ show_tracebacks = true
|
|||||||
input_encoding = 'utf8'
|
input_encoding = 'utf8'
|
||||||
|
|
||||||
[database]
|
[database]
|
||||||
; url = postgresql://robertem@127.0.0.1/pvvvv
|
# url = "postgresql://robertem@127.0.0.1/pvvvv"
|
||||||
url = sqlite:///test.db
|
url = "sqlite:///test.db"
|
||||||
|
|
||||||
[limits]
|
[limits]
|
||||||
low_credit_warning_limit = -100
|
low_credit_warning_limit = -100
|
||||||
|
@@ -1,21 +1,31 @@
|
|||||||
{ config, pkgs, lib, ... }: let
|
{ config, pkgs, lib, ... }: let
|
||||||
cfg = config.services.dibbler;
|
cfg = config.services.dibbler;
|
||||||
|
|
||||||
|
format = pkgs.formats.ini { };
|
||||||
in {
|
in {
|
||||||
options.services.dibbler = {
|
options.services.dibbler = {
|
||||||
enable = lib.mkEnableOption "dibbler, the little kiosk computer";
|
enable = lib.mkEnableOption "dibbler, the little kiosk computer";
|
||||||
|
|
||||||
package = lib.mkPackageOption pkgs "dibbler" { };
|
package = lib.mkPackageOption pkgs "dibbler" { };
|
||||||
|
|
||||||
config = lib.mkOption {
|
settings = lib.mkOption {
|
||||||
type = lib.types.path;
|
description = "Configuration for dibbler";
|
||||||
description = "Path to the configuration file.";
|
default = { };
|
||||||
default = ../example-config.ini;
|
type = lib.types.submodule {
|
||||||
|
freeformType = format.type;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
screen = "${pkgs.screen}/bin/screen";
|
screen = "${pkgs.screen}/bin/screen";
|
||||||
in lib.mkIf cfg.enable {
|
in lib.mkIf cfg.enable {
|
||||||
|
services.dibbler.settings = lib.pipe ../example-config.ini [
|
||||||
|
builtins.readFile
|
||||||
|
builtins.fromTOML
|
||||||
|
(lib.mapAttrsRecursive (_: lib.mkDefault))
|
||||||
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
consoleLogLevel = 0;
|
consoleLogLevel = 0;
|
||||||
enableContainers = false;
|
enableContainers = false;
|
||||||
@@ -28,7 +38,7 @@ in {
|
|||||||
group = "dibbler";
|
group = "dibbler";
|
||||||
extraGroups = [ "lp" ];
|
extraGroups = [ "lp" ];
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = ((pkgs.writeShellScriptBin "login-shell" "${screen} -x dibbler") // {shellPath = "/bin/login-shell";});
|
shell = (pkgs.writeShellScriptBin "login-shell" "${screen} -x dibbler") // {shellPath = "/bin/login-shell";};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -37,7 +47,9 @@ in {
|
|||||||
wantedBy = [ "default.target" ];
|
wantedBy = [ "default.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStartPre = "-${screen} -X -S dibbler kill";
|
ExecStartPre = "-${screen} -X -S dibbler kill";
|
||||||
ExecStart = "${screen} -dmS dibbler -O -l ${cfg.package}/bin/dibbler --config ${cfg.config} loop";
|
ExecStart = let
|
||||||
|
config = format.generate "dibbler-config.ini" cfg.settings;
|
||||||
|
in "${screen} -dmS dibbler -O -l ${cfg.package}/bin/dibbler --config ${config} loop";
|
||||||
ExecStartPost = "${screen} -X -S dibbler width 42 80";
|
ExecStartPost = "${screen} -X -S dibbler width 42 80";
|
||||||
User = "dibbler";
|
User = "dibbler";
|
||||||
Group = "dibbler";
|
Group = "dibbler";
|
||||||
|
Reference in New Issue
Block a user