summaryrefslogtreecommitdiff
path: root/accounts/gkleen@skadhi/keepassxc.nix
blob: 7b7d60ef918c2414afaf22e06eda8c42d8d9e25e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{ pkgs, lib, ... }:
let
  wrappedKeepassxc = pkgs.symlinkJoin {
    inherit (pkgs.keepassxc) name;
    paths = with pkgs; [
      keepassxc
      (pkgs.writeTextFile {
        name = "org.keepassxc.KeePassXC";
        destination = "/share/dbus-1/services/org.keepassxc.KeePassXC.MainWindow.service";
        text = ''
          [D-BUS Service]
          Name=org.keepassxc.KeePassXC.MainWindow
          Exec=${lib.getExe' pkgs.coreutils "false"}
          SystemdService=keepassxc.service
        '';
      })
      (pkgs.writeTextFile {
        name = "org.freedesktop.secrets";
        destination = "/share/dbus-1/services/org.freedesktop.secrets.service";
        text = ''
          [D-BUS Service]
          Name=org.freedesktop.secrets
          Exec=${lib.getExe' pkgs.coreutils "false"}
          SystemdService=keepassxc.service
        '';
      })
    ];
  };
in {
  config = {
    home.packages = [
      wrappedKeepassxc
    ];

    xdg.dataFile = {
      "dbus-1/services/org.keepassxc.KeePassXC.service".source = "${wrappedKeepassxc}/share/dbus-1/services/org.keepassxc.KeePassXC.service";
      "dbus-1/services/org.freedesktop.secrets.service".source = "${wrappedKeepassxc}/share/dbus-1/services/org.freedesktop.secrets.service";
      "dbus-1/services/org.kde.kwalletd6.service".source = "${pkgs.kdePackages.kwallet}/share/dbus-1/services/org.kde.kwalletd6.service";
      "dbus-1/services/org.kde.kwalletd5.service".source = "${pkgs.kdePackages.kwallet}/share/dbus-1/services/org.kde.kwalletd5.service";
    };

    home.persistence."/persistent" = {
      directories = [
        ".config/keepassxc"
      ];
      files = [
        "store.kdbx"
      ];
    };

    services.gnome-keyring.enable = lib.mkForce false;
  };
}