about summary refs log tree commit diff
path: root/modules/nixos/psd.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2022-12-17 16:39:09 +0300
committerAzat Bahawi <azat@bahawi.net>2022-12-17 16:39:09 +0300
commit8f137c28230623259a964484adcf31fe00756594 (patch)
tree82bce6a13fda125087cf6d9dc80aa91d9230d6c4 /modules/nixos/psd.nix
parent2022-11-20 (diff)
2022-12-17
Diffstat (limited to 'modules/nixos/psd.nix')
-rw-r--r--modules/nixos/psd.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/modules/nixos/psd.nix b/modules/nixos/psd.nix
new file mode 100644
index 0000000..77d3c66
--- /dev/null
+++ b/modules/nixos/psd.nix
@@ -0,0 +1,60 @@
+{
+  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 = {
+        psd = {
+          unitConfig = {
+            Description = "Profile-sync-daemon";
+            Wants = ["psd-resync.service"];
+            RequiresMountsFor = "/home/";
+            After = ["local-fs.target"];
+          };
+          serviceConfig = {
+            RemainAfterExit = true;
+            ExecStart = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon startup";
+            ExecStop = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon unsync";
+          };
+          wantedBy = ["graphical.target"];
+        };
+
+        psd-resync = {
+          unitConfig = {
+            Description = "Profile-sync-daemon resync";
+            After = ["psd.service"];
+            Wants = ["psd-resync.timer"];
+            BindsTo = ["psd.service"];
+          };
+          serviceConfig.ExecStart = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon resync";
+          wantedBy = ["graphical.target"];
+        };
+      };
+
+      timers.psd-resync = {
+        unitConfig = {
+          Description = "Profile-sync-daemon resync timer";
+          BindsTo = ["psd.service"];
+        };
+        timerConfig.OnUnitActiveSec = "1h";
+      };
+    };
+  };
+}

Consider giving Nix/NixOS a try! <3