dot

NixOS dotfiles
git clone https://git.echoz.io/dot.git
Log | Files | Refs

default.nix (2521B)


      1 {
      2   lib,
      3   pkgs,
      4 
      5   user,
      6   style,
      7   ...
      8 }:
      9 let
     10 in
     11 {
     12   home-manager.users.${user} =
     13     { config, ... }:
     14     {
     15       wayland.windowManager.hyprland.settings.layerrule = [
     16         "blur on, ignore_alpha 0.19, no_anim on, match:namespace microphone-indicator"
     17       ];
     18 
     19       programs.eww = {
     20         enable = true;
     21         yuckConfig = ''
     22           (defwidget microphone-indicator []
     23             (box
     24               :orientation "v"
     25               :halign "center"
     26               :valign "center"
     27               :visible {!microphone-muted}
     28               :active "false"
     29               (label :xalign 0.5 :justify "center" :text "")))
     30 
     31           (defwindow microphone-indicator
     32             :monitor 0
     33             :stacking "overlay"
     34             :focusable "none"
     35             :namespace "microphone-indicator"
     36             :geometry (geometry :y "10px" :width "0px" :height "0px" :anchor "top center")
     37             (microphone-indicator))
     38 
     39           (deflisten microphone-muted
     40             :initial "false"
     41             "${pkgs.writeShellScript "monitor-microphone-muted" ''
     42               ${lib.getExe pkgs.pamixer} --default-source --get-mute
     43               ${lib.getExe' pkgs.pulseaudio "pactl"} --format json subscribe \
     44                 | ${lib.getExe pkgs.jq} --unbuffered -cr 'select(.event == "change" and .on == "source") | "."' \
     45                 | xargs -L1 ${lib.getExe pkgs.pamixer} --default-source --get-mute
     46             ''}")
     47         '';
     48         scssConfig =
     49           let
     50             s = toString;
     51             fg = with style.colors.fg; "rgba(${s r},${s g},${s b},0.2)";
     52           in
     53           ''
     54             .microphone-indicator {
     55               color: ${fg};
     56               font-size: 32px;
     57               min-width: 44px;
     58               min-height: 44px;
     59 
     60               &.background {
     61                 background: ${style.colors.bg.rgba};
     62                 border-radius: 10px;
     63               }
     64             }
     65           '';
     66       };
     67 
     68       systemd.user.services.eww = {
     69         Unit = {
     70           PartOf = [ config.wayland.systemd.target ];
     71           After = [ config.wayland.systemd.target ];
     72           ConditionEnvironment = "WAYLAND_DISPLAY";
     73         };
     74 
     75         Service = {
     76           ExecStart = "${lib.getExe config.programs.eww.package} daemon --no-daemonize";
     77           ExecStartPost = "${lib.getExe config.programs.eww.package} open microphone-indicator";
     78           KillMode = "mixed";
     79           Restart = "on-failure";
     80         };
     81 
     82         Install.WantedBy = [ config.wayland.systemd.target ];
     83       };
     84     };
     85 }