vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / development / rstudio-server / default.nix
blob70f665b09e317e1cae40aa1e7d59380a99e444de
1 { config, lib, pkgs, ... }:
2 let
4   cfg = config.services.rstudio-server;
6   rserver-conf = builtins.toFile "rserver.conf" ''
7     server-working-dir=${cfg.serverWorkingDir}
8     www-address=${cfg.listenAddr}
9     ${cfg.rserverExtraConfig}
10   '';
12   rsession-conf = builtins.toFile "rsession.conf" ''
13     ${cfg.rsessionExtraConfig}
14   '';
18   meta.maintainers = with lib.maintainers; [ jbedo cfhammill ];
20   options.services.rstudio-server = {
21     enable = lib.mkEnableOption "RStudio server";
23     serverWorkingDir = lib.mkOption {
24       type = lib.types.str;
25       default = "/var/lib/rstudio-server";
26       description = ''
27         Default working directory for server (server-working-dir in rserver.conf).
28       '';
29     };
31     listenAddr = lib.mkOption {
32       type = lib.types.str;
33       default = "127.0.0.1";
34       description = ''
35         Address to listen on (www-address in rserver.conf).
36       '';
37     };
39     package = lib.mkPackageOption pkgs "rstudio-server" {
40       example = "rstudioServerWrapper.override { packages = [ pkgs.rPackages.ggplot2 ]; }";
41     };
43     rserverExtraConfig = lib.mkOption {
44       type = lib.types.str;
45       default = "";
46       description = ''
47         Extra contents for rserver.conf.
48       '';
49     };
51     rsessionExtraConfig = lib.mkOption {
52       type = lib.types.str;
53       default = "";
54       description = ''
55         Extra contents for resssion.conf.
56       '';
57     };
59   };
61   config = lib.mkIf cfg.enable
62     {
63       systemd.services.rstudio-server = {
64         description = "Rstudio server";
66         after = [ "network.target" ];
67         wantedBy = [ "multi-user.target" ];
68         restartTriggers = [ rserver-conf rsession-conf ];
70         serviceConfig = {
71           Restart = "on-failure";
72           Type = "forking";
73           ExecStart = "${cfg.package}/bin/rserver";
74           StateDirectory = "rstudio-server";
75           RuntimeDirectory = "rstudio-server";
76         };
77       };
79       environment.etc = {
80         "rstudio/rserver.conf".source = rserver-conf;
81         "rstudio/rsession.conf".source = rsession-conf;
82         "pam.d/rstudio".source = "/etc/pam.d/login";
83       };
84       environment.systemPackages = [ cfg.package ];
86       users = {
87         users.rstudio-server = {
88           uid = config.ids.uids.rstudio-server;
89           description = "rstudio-server";
90           group = "rstudio-server";
91         };
92         groups.rstudio-server = {
93           gid = config.ids.gids.rstudio-server;
94         };
95       };
97     };