old
 1{
 2  self,
 3  lib,
 4  ...
 5}: {
 6  den.aspects.desktop.xdg-user-dirs = {
 7    persistUser = {
 8      user,
 9      config,
10      ...
11    }: {
12      directories = with config.hjem.users.${user.userName}.xdg.user-dirs.directories; [
13        desktop
14        documents
15        music
16        pictures
17        projects
18        publicShare
19        templates
20        videos
21      ];
22    };
23    cacheHome = {config, ...}: let
24    in {
25      directories = [
26        config.xdg.userDirs.download
27      ];
28    };
29
30    nixos = {
31      environment.variables = {
32        XCOMPOSECACHE = "$XDG_CACHE_HOME/X11/xcompose";
33      };
34    };
35
36    hjem = {config, ...}: {
37      imports = ["${self.outPath}/hjemModules/xdg/user-dirs.nix"];
38
39      xdg.user-dirs = {
40        enable = true;
41        setSessionVariables = true;
42        directories = {
43          desktop = "${config.directory}/Desktop";
44          documents = "${config.directory}/Documents";
45          download = "${config.directory}/Downloads";
46          music = "${config.directory}/Musics";
47          pictures = "${config.directory}/Pictures";
48          projects = "${config.directory}/Development";
49          videos = "${config.directory}/Videos";
50          publicShare = "${config.directory}/Share";
51          templates = "${config.directory}/Templates";
52          screenshots = "${config.xdg.user-dirs.directories.pictures}/Screenshots";
53        };
54      };
55    };
56
57    homeManager = {
58      config,
59      pkgs,
60      ...
61    }: let
62      commonUserDirs = {
63        desktop = "${config.home.homeDirectory}/Desktop";
64        documents = "${config.home.homeDirectory}/Documents";
65        download = "${config.home.homeDirectory}/Downloads";
66        music = "${config.home.homeDirectory}/Musics";
67        pictures = "${config.home.homeDirectory}/Pictures";
68        projects = "${config.home.homeDirectory}/Development";
69        videos = "${config.home.homeDirectory}/Videos";
70      };
71      bookmarks =
72        pkgs.writeText "bookmarks"
73        (lib.concatMapStringsSep "\n"
74          (d: "file:///${d} ${lib.lists.last (lib.path.subpath.components (lib.path.splitRoot (/. + d)).subpath)}")
75          (lib.attrValues commonUserDirs));
76    in {
77      xdg.userDirs =
78        {
79          enable = false;
80          createDirectories = true;
81          setSessionVariables = false;
82
83          publicShare = "${config.home.homeDirectory}/Share";
84          templates = "${config.home.homeDirectory}/Templates";
85
86          extraConfig = {
87            SCREENSHOTS = "${config.xdg.userDirs.pictures}/Screenshots";
88          };
89        }
90        // commonUserDirs;
91
92      systemd.user.tmpfiles.rules = [
93        "C+ ${config.xdg.configHome}/gtk-3.0/bookmarks 0644 - - - ${bookmarks}"
94      ];
95    };
96  };
97}