-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathstartup.nix
More file actions
114 lines (106 loc) · 3.95 KB
/
Copy pathstartup.nix
File metadata and controls
114 lines (106 loc) · 3.95 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{
config,
pkgs,
lib,
...
}: let
generateServiceWith = serviceName: command: extra:
lib.mkMerge [(generateService serviceName command) extra];
generateService = serviceName: command: {
Unit = {
Description = "${serviceName} Service";
PartOf = ["hyprland.target"];
Requires = ["hyprland.target"];
After = ["user-path-import.service"];
};
Install.WantedBy = ["hyprland.target"];
Service = {
Type = "simple";
Restart = "always";
ExecStart = "/usr/bin/env ${command}";
RestartSec = "1";
};
};
in {
home.file.".hushlogin".text = "";
programs.zsh.profileExtra = ''
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
exec zsh -c "start-hyprland | logger -t hyprland; sleep 10; systemctl --user stop hyprland.target"
fi
'';
systemd.user = {
targets.hyprland.Unit = {
Description = "Graphical Target, starts with wayland";
Requires = ["user-path-import.service"];
After = ["user-path-import.service"];
};
services = {
ags = generateService "ags" "ags run ${config.xdg.configHome}/ags/app.ts";
swayosd = generateService "swayosd" "swayosd-server";
ulauncher = generateServiceWith "ulauncher" "ulauncher --hide-window --no-window --no-window-shadow" {Unit.After = ["seaglass-theme.service"];};
waybar = generateServiceWith "waybar" "${config.programs.waybar.package}/bin/waybar" {Unit.After = ["seaglass-theme.service"];};
polkit-kde-auth = generateService "polkit-kde-auth" "/usr/lib/polkit-kde-authentication-agent-1";
powerdevil = generateService "powerdevil" "/usr/lib/org_kde_powerdevil";
xdg-desktop-portal-hyprland = generateService "xdg-desktop-portal-hyprland" "/usr/lib/xdg-desktop-portal-hyprland";
kded = generateService "kded" "kded6";
pyprland = generateService "pyprland" "pypr";
swaync = generateServiceWith "swaync" "swaync" {Unit.After = ["seaglass-theme.service"];};
hyprwatchd = generateService "hyprwatchd" "hyprwatchd";
dndwatchd = generateService "dndwatchd" "dndwatchd";
xsettingsd = generateServiceWith "xsettingsd" "xsettingsd" {Service.Restart = lib.mkForce "always";};
xdg-home-cleaner = generateService "xdg-home-cleaner" ./files/xdg-home-cleaner.sh;
swww-daemon = generateService "swww" "swww-daemon";
hypridle = generateService "hypridle" "hypridle";
variety = generateService "variety" "variety -n";
hypr-plasmoid = generateService "hypr-plasmoid" "hypr-plasmoid daemon";
# "1password" = (generateService "1password" "1password --disable-gpu --silent --ozone-platform-hint=auto");
};
};
systemd.user.services.user-path-import = {
Unit.Description = "Import PATH from zsh";
Install.WantedBy = ["hyprland.target"];
Service = {
Type = "oneshot";
ExecStart = "/usr/bin/zsh -lc 'systemctl --user import-environment PATH'";
RemainAfterExit = true;
};
};
systemd.user.services.seaglass-theme = {
Unit = {
Description = "Seaglass Theme";
PartOf = ["hyprland.target"];
After = ["user-path-import.service" "variety.service"];
};
Install.WantedBy = ["hyprland.target"];
Service = {
Type = "oneshot";
ExecStart = "/usr/bin/env seaglass-theme";
RemainAfterExit = true;
};
};
systemd.user.services.kded-modules = {
Unit = {
Description = "KDED Modules";
After = ["kded.service" "user-path-import.service"];
PartOf = ["kded.service"];
};
Install.WantedBy = ["hyprland.target"];
Service = {
Type = "oneshot";
ExecStart = "${pkgs.writeScript "start-kded-modules" ''
#!/usr/bin/env zsh
moduleNames=(
"gtkconfig"
"bluedevil"
"networkmanagement"
"smbwatcher"
"device_automounter"
)
for module in $moduleNames; do
qdbus org.kde.kded6 /kded org.kde.kded6.loadModule $module
done
''}";
RemainAfterExit = true;
};
};
}