parent
22e2cfe92b
commit
201590fd97
@ -0,0 +1,102 @@ |
||||
{ config, pkgs, lib, nodes, ... }: |
||||
with lib; |
||||
let |
||||
cfg = config.services.zerobin; |
||||
|
||||
zerobin_config = pkgs.writeText "zerobin-config.py" '' |
||||
PASTE_FILES_ROOT = "${cfg.dataDir}" |
||||
${cfg.extraConfig} |
||||
''; |
||||
|
||||
in |
||||
{ |
||||
options = { |
||||
services.zerobin = { |
||||
enable = mkEnableOption "0bin"; |
||||
|
||||
dataDir = mkOption { |
||||
type = types.str; |
||||
default = "/var/lib/zerobin"; |
||||
description = '' |
||||
Path to the 0bin data directory |
||||
''; |
||||
}; |
||||
|
||||
user = mkOption { |
||||
type = types.str; |
||||
default = "zerobin"; |
||||
description = '' |
||||
The user 0bin should run as |
||||
''; |
||||
}; |
||||
|
||||
group = mkOption { |
||||
type = types.str; |
||||
default = "zerobin"; |
||||
description = '' |
||||
The group 0bin should run as |
||||
''; |
||||
}; |
||||
|
||||
listenPort = mkOption { |
||||
type = types.int; |
||||
default = 8000; |
||||
example = 1357; |
||||
description = '' |
||||
The port zerobin should listen on |
||||
''; |
||||
}; |
||||
|
||||
listenAddress = mkOption { |
||||
type = types.str; |
||||
default = "localhost"; |
||||
example = "127.0.0.1"; |
||||
description = '' |
||||
The address zerobin should listen to |
||||
''; |
||||
}; |
||||
|
||||
extraConfig = mkOption { |
||||
type = types.lines; |
||||
default = ""; |
||||
example = '' |
||||
MENU = ( |
||||
('Home', '/'), |
||||
) |
||||
COMPRESSED_STATIC_FILE = True |
||||
''; |
||||
description = '' |
||||
Extra configuration to be appended to the 0bin config file |
||||
(see https://0bin.readthedocs.org/en/latest/en/options.html) |
||||
''; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf (cfg.enable) { |
||||
users.users."${cfg.user}" = |
||||
if cfg.user == "zerobin" then { |
||||
isSystemUser = true; |
||||
group = cfg.group; |
||||
home = cfg.dataDir; |
||||
createHome = true; |
||||
} |
||||
else {}; |
||||
users.groups."${cfg.group}" = {}; |
||||
|
||||
systemd.services.zerobin = { |
||||
enable = true; |
||||
after = [ "network-interfaces.target" ]; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
serviceConfig.ExecStart = "${pkgs.pythonPackages.zerobin}/bin/zerobin ${cfg.listenAddress} ${toString cfg.listenPort} false ${cfg.user} ${cfg.group} ${zerobin_config}"; |
||||
serviceConfig.PrivateTmp="yes"; |
||||
serviceConfig.User = cfg.user; |
||||
serviceConfig.Group = cfg.group; |
||||
preStart = '' |
||||
mkdir -p ${cfg.dataDir} |
||||
chown ${cfg.user} ${cfg.dataDir} |
||||
''; |
||||
}; |
||||
}; |
||||
} |
||||
|
Loading…
Reference in new issue