summaryrefslogtreecommitdiff
path: root/modules/nixos/psd.nix
diff options
context:
space:
mode:
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";
+ };
+ };
+ };
+}