vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / development / lorri.nix
blob4aba3836e3233c58f12412e000f9b3f76dc10ae4
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.services.lorri;
5   socketPath = "lorri/daemon.socket";
6 in {
7   options = {
8     services.lorri = {
9       enable = lib.mkOption {
10         default = false;
11         type = lib.types.bool;
12         description = ''
13           Enables the daemon for `lorri`, a nix-shell replacement for project
14           development. The socket-activated daemon starts on the first request
15           issued by the `lorri` command.
16         '';
17       };
18       package = lib.mkOption {
19         default = pkgs.lorri;
20         type = lib.types.package;
21         description = ''
22           The lorri package to use.
23         '';
24         defaultText = lib.literalExpression "pkgs.lorri";
25       };
26     };
27   };
29   config = lib.mkIf cfg.enable {
30     systemd.user.sockets.lorri = {
31       description = "Socket for Lorri Daemon";
32       wantedBy = [ "sockets.target" ];
33       socketConfig = {
34         ListenStream = "%t/${socketPath}";
35         RuntimeDirectory = "lorri";
36       };
37     };
39     systemd.user.services.lorri = {
40       description = "Lorri Daemon";
41       requires = [ "lorri.socket" ];
42       after = [ "lorri.socket" ];
43       path = with pkgs; [ config.nix.package git gnutar gzip ];
44       serviceConfig = {
45         ExecStart = "${cfg.package}/bin/lorri daemon";
46         PrivateTmp = true;
47         ProtectSystem = "full";
48         Restart = "on-failure";
49       };
50     };
52     environment.systemPackages = [ cfg.package pkgs.direnv ];
53   };