at 18.09-beta 1.6 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.services.emby; 7in 8{ 9 options = { 10 services.emby = { 11 enable = mkEnableOption "Emby Media Server"; 12 13 user = mkOption { 14 type = types.str; 15 default = "emby"; 16 description = "User account under which Emby runs."; 17 }; 18 19 group = mkOption { 20 type = types.str; 21 default = "emby"; 22 description = "Group under which emby runs."; 23 }; 24 25 dataDir = mkOption { 26 type = types.path; 27 default = "/var/lib/emby/ProgramData-Server"; 28 description = "Location where Emby stores its data."; 29 }; 30 }; 31 }; 32 33 config = mkIf cfg.enable { 34 systemd.services.emby = { 35 description = "Emby Media Server"; 36 after = [ "network.target" ]; 37 wantedBy = [ "multi-user.target" ]; 38 preStart = '' 39 test -d ${cfg.dataDir} || { 40 echo "Creating initial Emby data directory in ${cfg.dataDir}" 41 mkdir -p ${cfg.dataDir} 42 chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir} 43 } 44 ''; 45 46 serviceConfig = { 47 Type = "simple"; 48 User = cfg.user; 49 Group = cfg.group; 50 PermissionsStartOnly = "true"; 51 ExecStart = "${pkgs.emby}/bin/MediaBrowser.Server.Mono"; 52 Restart = "on-failure"; 53 }; 54 }; 55 56 users.users = mkIf (cfg.user == "emby") { 57 emby = { 58 group = cfg.group; 59 uid = config.ids.uids.emby; 60 }; 61 }; 62 63 users.groups = mkIf (cfg.group == "emby") { 64 emby = { 65 gid = config.ids.gids.emby; 66 }; 67 }; 68 }; 69}