diff options
author | Alexei Robyn <shados@shados.net> | 2016-05-12 15:10:17 +1000 |
---|---|---|
committer | Alexei Robyn <shados@shados.net> | 2016-05-12 20:49:17 +1000 |
commit | 11b0972544d6761a56d922af9a48b9e05863d6b2 (patch) | |
tree | 8a7501676411da20eb37892bbd5e0576dd653bf4 /nixos/modules/services/networking/teamspeak3.nix | |
parent | b874447eefdcb3ba8542fd4caed147742b98890b (diff) | |
download | nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.gz nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.bz2 nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.lz nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.xz nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.zst nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.zip |
teamspeak-server module: Create data directory by
leveraging users.users.<user>.createHome instead of a preStart script. preStart script is still required to ensure proper creation of logging directory.
Diffstat (limited to 'nixos/modules/services/networking/teamspeak3.nix')
-rw-r--r-- | nixos/modules/services/networking/teamspeak3.nix | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/nixos/modules/services/networking/teamspeak3.nix b/nixos/modules/services/networking/teamspeak3.nix index b3656d73dec0..5f04926eed24 100644 --- a/nixos/modules/services/networking/teamspeak3.nix +++ b/nixos/modules/services/networking/teamspeak3.nix @@ -10,13 +10,12 @@ let in { - + ###### interface options = { services.teamspeak3 = { - enable = mkOption { type = types.bool; default = false; @@ -96,34 +95,32 @@ in ###### implementation - config = mkIf cfg.enable { - - users.extraUsers.teamspeak = - { name = "teamspeak"; + config = mkMerge [ + (mkIf cfg.enable { + users.users.teamspeak = { description = "Teamspeak3 voice communication server daemon"; group = group; uid = config.ids.uids.teamspeak; + home = cfg.dataDir; + createHome = true; }; - users.extraGroups.teamspeak = - { name = "teamspeak"; + users.groups.teamspeak = { gid = config.ids.gids.teamspeak; }; - systemd.services.teamspeak3-server = { - description = "Teamspeak3 voice communication server daemon"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; + systemd.services.teamspeak3-server = { + description = "Teamspeak3 voice communication server daemon"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; - preStart = '' - mkdir -p ${cfg.dataDir} - mkdir -p ${cfg.logPath} - chown ${user}:${group} ${cfg.dataDir} - chown ${user}:${group} ${cfg.logPath} - ''; + preStart = '' + mkdir -p ${cfg.logPath} + chown ${user}:${group} ${cfg.logPath} + ''; - serviceConfig = - { ExecStart = '' + serviceConfig = { + ExecStart = '' ${ts3}/bin/ts3server \ dbsqlpath=${ts3}/lib/teamspeak/sql/ logpath=${cfg.logPath} \ voice_ip=${cfg.voiceIP} default_voice_port=${toString cfg.defaultVoicePort} \ @@ -133,10 +130,12 @@ in WorkingDirectory = cfg.dataDir; User = user; Group = group; - PermissionsStartOnly = true; # preStart needs to run with root permissions + PermissionsStartOnly = true; }; }; - - }; - + }) + { + meta.maintainers = with lib.maintainers; [ arobyn ]; + } + ]; } |