-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdesktop-fix.nix
38 lines (35 loc) · 1.71 KB
/
desktop-fix.nix
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
{ config, pkgs, lib, ... }:
{
programs.bash.profileExtra = lib.mkAfter ''
rm -rf ${config.home.homeDirectory}/.local/share/applications/home-manager
rm -rf ${config.home.homeDirectory}/.icons/nix-icons
ls ${config.home.homeDirectory}/.nix-profile/share/applications/*.desktop > ${config.home.homeDirectory}/.cache/current_desktop_files.txt
'';
home.activation = {
linkDesktopApplications = {
after = ["writeBoundary" "createXdgUserDirectories"];
before = [];
data = ''
rm -rf ${config.home.homeDirectory}/.local/share/applications/home-manager
rm -rf ${config.home.homeDirectory}/.icons/nix-icons
mkdir -p ${config.home.homeDirectory}/.local/share/applications/home-manager
mkdir -p ${config.home.homeDirectory}/.icons
ln -sf ${config.home.homeDirectory}/.nix-profile/share/icons ${config.home.homeDirectory}/.icons/nix-icons
# Check if the cached desktop files list exists
if [ -f ${config.home.homeDirectory}/.cache/current_desktop_files.txt ]; then
current_files=$(cat ${config.home.homeDirectory}/.cache/current_desktop_files.txt)
else
current_files=""
fi
# Symlink new desktop entries
for desktop_file in ${config.home.homeDirectory}/.nix-profile/share/applications/*.desktop; do
if ! echo "$current_files" | grep -q "$(basename $desktop_file)"; then
ln -sf "$desktop_file" ${config.home.homeDirectory}/.local/share/applications/home-manager/$(basename $desktop_file)
fi
done
# Update desktop database
${pkgs.desktop-file-utils}/bin/update-desktop-database ${config.home.homeDirectory}/.local/share/applications
'';
};
};
}