summaryrefslogtreecommitdiff
path: root/modules/psd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/psd.nix')
-rw-r--r--modules/psd.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/modules/psd.nix b/modules/psd.nix
new file mode 100644
index 0000000..f974af2
--- /dev/null
+++ b/modules/psd.nix
@@ -0,0 +1,65 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib;
+let
+ cfg = config.nixfiles.modules.psd;
+in
+{
+ options.nixfiles.modules.psd.enable = mkEnableOption "Profile Sync Daemon";
+
+ config = mkIf cfg.enable {
+ hm = {
+ home.packages = with pkgs; [ profile-sync-daemon ];
+
+ xdg.configFile."psd/psd.conf".text = ''
+ USE_OVERLAYFS="yes"
+ '';
+ };
+
+ systemd.user = {
+ services =
+ let
+ exe = getExe' pkgs.profile-sync-daemon "profile-sync-daemon";
+ in
+ {
+ psd = {
+ unitConfig = {
+ Description = "Profile-sync-daemon";
+ Wants = [ "psd-resync.service" ];
+ RequiresMountsFor = "/home/";
+ After = [ "local-fs.target" ];
+ };
+ serviceConfig = {
+ RemainAfterExit = true;
+ ExecStart = "${exe} startup";
+ ExecStop = "${exe} unsync";
+ };
+ wantedBy = [ "graphical.target" ];
+ };
+
+ psd-resync = {
+ unitConfig = {
+ Description = "Profile-sync-daemon resync";
+ After = [ "psd.service" ];
+ Wants = [ "psd-resync.timer" ];
+ BindsTo = [ "psd.service" ];
+ };
+ serviceConfig.ExecStart = "${exe} resync";
+ wantedBy = [ "graphical.target" ];
+ };
+ };
+
+ timers.psd-resync = {
+ unitConfig = {
+ Description = "Profile-sync-daemon resync timer";
+ BindsTo = [ "psd.service" ];
+ };
+ timerConfig.OnUnitActiveSec = "1h";
+ };
+ };
+ };
+}