This repository has no description
2.3 kB
77 lines
1{
2 pkgs,
3 config,
4 self,
5 ...
6}:
7let
8 # Patch noctalia-shell to use workspace name instead of number for sway
9 # Quickshell's activate() sends "workspace number <num>" which fails for named workspaces (num=-1)
10 noctalia-shell-patched = pkgs.noctalia-shell.overrideAttrs (old: {
11 postInstall = (old.postInstall or "") + ''
12 substituteInPlace $out/share/noctalia-shell/Services/Compositor/SwayService.qml \
13 --replace-fail 'workspace.handle.activate();' \
14 'Quickshell.execDetached([msgCommand, "workspace", workspace.name]);'
15 '';
16 });
17in
18{
19 systemd.user.services.noctalia-shell = {
20 description = "Noctalia Shell - Wayland desktop shell";
21 documentation = [ "https://docs.noctalia.dev" ];
22 partOf = [ "sway-session.target" ];
23 wantedBy = [ "sway-session.target" ];
24 after = [ "sway-session.target" ];
25 path = [
26 pkgs.bash
27 pkgs.coreutils
28 pkgs.gnugrep
29 pkgs.gawk
30 pkgs.procps
31 pkgs.util-linux
32 pkgs.sway
33 pkgs.brightnessctl
34 pkgs.pulseaudio
35 pkgs.networkmanager
36 pkgs.wl-clipboard
37 ];
38 serviceConfig = {
39 ExecStart = "${noctalia-shell-patched}/bin/noctalia-shell";
40 Restart = "on-failure";
41 };
42 };
43
44 environment.systemPackages = [
45 noctalia-shell-patched
46 # ryzenadj and power-profile for power profile control
47 pkgs.ryzenadj
48 self.packages.${pkgs.system}.power-profile
49 ];
50
51 # Idle inhibit service - toggled by bar button
52 systemd.user.services.sway-idle-inhibit = {
53 description = "Inhibit idle/sleep";
54 serviceConfig = {
55 Type = "simple";
56 ExecStart = "${pkgs.systemd}/bin/systemd-inhibit --what=idle:sleep --who=noctalia --why='User requested' --mode=block sleep infinity";
57 };
58 };
59
60 # Allow user to run ryzenadj without password (for power profile switching)
61 security.sudo.extraRules = [
62 {
63 users = [ config.users.users.mainUser.name ];
64 commands = [
65 {
66 command = "/run/current-system/sw/bin/ryzenadj";
67 options = [ "NOPASSWD" ];
68 }
69 ];
70 }
71 ];
72
73 # Make RAPL energy counters readable for power monitoring
74 services.udev.extraRules = ''
75 SUBSYSTEM=="powercap", ACTION=="add", RUN+="${pkgs.coreutils}/bin/chmod a+r /sys/class/powercap/%k/energy_uj"
76 '';
77}