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