This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

2configs/desktops/sway: replace eww with noctalia-shell

+79 -2
+2 -2
2configs/desktops/sway/default.nix
··· 25 25 26 26 in 27 27 { 28 - # Make goto-workspace available system-wide for eww and workspace-popup 28 + # Make goto-workspace available system-wide for workspace switching 29 29 environment.systemPackages = [ gotoWorkspace ]; 30 30 imports = [ 31 31 ../lib/wayland.nix 32 - ./eww.nix 32 + ./noctalia.nix 33 33 ]; 34 34 programs.sway = { 35 35 enable = true;
+77
2configs/desktops/sway/noctalia.nix
··· 1 + { 2 + pkgs, 3 + config, 4 + self, 5 + ... 6 + }: 7 + let 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 + }); 17 + in 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 + }