nixpkgs/nixos/modules/services/networking/onedrive.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

71 lines
1.6 KiB
Nix
Raw Normal View History

2020-06-29 19:56:41 +05:30
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.onedrive;
onedriveLauncher = pkgs.writeShellScriptBin "onedrive-launcher" ''
# XDG_CONFIG_HOME is not recognized in the environment here.
if [ -f $HOME/.config/onedrive-launcher ]
then
# Hopefully using underscore boundary helps locate variables
for _onedrive_config_dirname_ in $(cat $HOME/.config/onedrive-launcher | grep -v '[ \t]*#' )
do
systemctl --user start onedrive@$_onedrive_config_dirname_
done
else
systemctl --user start onedrive@onedrive
fi
'';
in
{
### Documentation
# meta.doc = ./onedrive.xml;
### Interface
2020-06-29 19:56:41 +05:30
options.services.onedrive = {
enable = lib.mkEnableOption "OneDrive service";
2020-06-29 19:56:41 +05:30
package = lib.mkOption {
type = lib.types.package;
default = pkgs.onedrive;
defaultText = lib.literalExpression "pkgs.onedrive";
2020-06-29 19:56:41 +05:30
description = ''
OneDrive package to use.
'';
};
};
### Implementation
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
systemd.user.services."onedrive@" = {
description = "Onedrive sync service";
serviceConfig = {
Type = "simple";
ExecStart = ''
2020-09-19 11:32:42 +05:30
${cfg.package}/bin/onedrive --monitor --confdir=%h/.config/%i
2020-06-29 19:56:41 +05:30
'';
Restart = "on-failure";
RestartSec = 3;
RestartPreventExitStatus = 3;
};
};
systemd.user.services.onedrive-launcher = {
wantedBy = [ "default.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${onedriveLauncher}/bin/onedrive-launcher";
};
};
};
}