Merge: zmap: 4.2.0 -> 4.3.1 (#364578)
[NixPkgs.git] / nixos / modules / services / networking / onedrive.nix
blobdae3ed31b30bcf9a48719296963345af1fe5ea2e
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
7 let
8   cfg = config.services.onedrive;
10   onedriveLauncher = pkgs.writeShellScriptBin "onedrive-launcher" ''
11     # XDG_CONFIG_HOME is not recognized in the environment here.
12     if [ -f $HOME/.config/onedrive-launcher ]
13     then
14       # Hopefully using underscore boundary helps locate variables
15       for _onedrive_config_dirname_ in $(cat $HOME/.config/onedrive-launcher | grep -v '[ \t]*#' )
16       do
17         systemctl --user start onedrive@$_onedrive_config_dirname_
18       done
19     else
20       systemctl --user start onedrive@onedrive
21     fi
22   '';
26   ### Documentation
27   # meta.doc = ./onedrive.xml;
29   ### Interface
31   options.services.onedrive = {
32     enable = lib.mkEnableOption "OneDrive service";
34     package = lib.mkOption {
35       type = lib.types.package;
36       default = pkgs.onedrive;
37       defaultText = lib.literalExpression "pkgs.onedrive";
38       description = ''
39         OneDrive package to use.
40       '';
41     };
42   };
43   ### Implementation
45   config = lib.mkIf cfg.enable {
46     environment.systemPackages = [ cfg.package ];
48     systemd.user.services."onedrive@" = {
49       description = "Onedrive sync service";
51       serviceConfig = {
52         Type = "simple";
53         ExecStart = ''
54           ${cfg.package}/bin/onedrive --monitor --confdir=%h/.config/%i
55         '';
56         Restart = "on-failure";
57         RestartSec = 3;
58         RestartPreventExitStatus = 3;
59       };
60     };
62     systemd.user.services.onedrive-launcher = {
63       wantedBy = [ "default.target" ];
64       serviceConfig = {
65         Type = "oneshot";
66         ExecStart = "${onedriveLauncher}/bin/onedrive-launcher";
67       };
68     };
69   };