programs: replace systemd-specific 'environment' option with generic 'env'
note, these services no longer work with systemd, because systemd expects absolute paths
This commit is contained in:
parent
d199e9df99
commit
291e704477
|
@ -47,12 +47,11 @@ in
|
||||||
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
# add --verbose for more debugging
|
# add --verbose for more debugging
|
||||||
ExecStart = "${cfg.package}/bin/gnome-calls --daemon";
|
ExecStart = "env G_MESSAGES_DEBUG=all ${cfg.package}/bin/gnome-calls --daemon";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "10s";
|
RestartSec = "10s";
|
||||||
};
|
};
|
||||||
environment.G_MESSAGES_DEBUG = "all";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
programs.calls = lib.mkIf cfg.enabled {
|
programs.calls = lib.mkIf cfg.enabled {
|
||||||
|
|
|
@ -73,21 +73,19 @@ in
|
||||||
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/bin/dino";
|
# audio buffering; see: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained>
|
||||||
|
# dino defaults to 10ms mic buffer, which causes underruns, which Dino handles *very* poorly
|
||||||
|
# as in, the other end of the call will just not receive sound from us for a couple seconds.
|
||||||
|
# pipewire uses power-of-two buffering for the mic itself. that would put us at 21.33 ms, but this env var supports only whole numbers (21ms ends up not power-of-two).
|
||||||
|
# also, Dino's likely still doing things in 10ms batches internally anyway.
|
||||||
|
#
|
||||||
|
# note that debug logging during calls produces so much journal spam that it pegs the CPU and causes dropped audio
|
||||||
|
# env G_MESSAGES_DEBUG = "all";
|
||||||
|
ExecStart = "env PULSE_LATENCY_MSEC=20 ${cfg.package}/bin/dino";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "20s";
|
RestartSec = "20s";
|
||||||
};
|
};
|
||||||
|
|
||||||
# audio buffering; see: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained>
|
|
||||||
# dino defaults to 10ms mic buffer, which causes underruns, which Dino handles *very* poorly
|
|
||||||
# as in, the other end of the call will just not receive sound from us for a couple seconds.
|
|
||||||
# pipewire uses power-of-two buffering for the mic itself. that would put us at 21.33 ms, but this env var supports only whole numbers (21ms ends up not power-of-two).
|
|
||||||
# also, Dino's likely still doing things in 10ms batches internally anyway.
|
|
||||||
environment.PULSE_LATENCY_MSEC = "20";
|
|
||||||
|
|
||||||
# note that debug logging during calls produces so much journal spam that it pegs the CPU and causes dropped audio
|
|
||||||
# environment.G_MESSAGES_DEBUG = "all";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,16 +98,18 @@ in
|
||||||
description = "feedbackd audio/vibration/led controller";
|
description = "feedbackd audio/vibration/led controller";
|
||||||
wantedBy = [ "default.target" ]; #< should technically be `sound.target`, but that doesn't seem to get auto-started?
|
wantedBy = [ "default.target" ]; #< should technically be `sound.target`, but that doesn't seem to get auto-started?
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/libexec/feedbackd";
|
ExecStart = lib.escapeShellArgs ([
|
||||||
|
"env"
|
||||||
|
"G_MESSAGES_DEBUG=all"
|
||||||
|
] ++ lib.optionals cfg.config.proxied [
|
||||||
|
"FEEDBACK_THEME=$HOME/.config/feedbackd/themes/proxied.json"
|
||||||
|
] ++ [
|
||||||
|
"${cfg.package}/libexec/feedbackd"
|
||||||
|
]);
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = "10s";
|
RestartSec = "10s";
|
||||||
};
|
};
|
||||||
environment = {
|
|
||||||
G_MESSAGES_DEBUG = "all";
|
|
||||||
} // (lib.optionalAttrs cfg.config.proxied {
|
|
||||||
FEEDBACK_THEME = "/home/colin/.config/feedbackd/themes/proxied.json";
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -73,12 +73,12 @@ in
|
||||||
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
# env "G_MESSAGES_DEBUG=all"
|
||||||
ExecStart = "${cfg.package}/bin/fractal";
|
ExecStart = "${cfg.package}/bin/fractal";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "20s";
|
RestartSec = "20s";
|
||||||
};
|
};
|
||||||
# environment.G_MESSAGES_DEBUG = "all";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ in
|
||||||
after = [ "graphical-session.target" ];
|
after = [ "graphical-session.target" ];
|
||||||
wantedBy = [ "graphical-session.target" ];
|
wantedBy = [ "graphical-session.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
# env PIPEWIRE_LOG_SYSTEMD=false"
|
||||||
|
# env PIPEWIRE_DEBUG"*:3,mod.raop*:5,pw.rtsp-client*:5"
|
||||||
ExecStart = "${cfg.package}/bin/pipewire";
|
ExecStart = "${cfg.package}/bin/pipewire";
|
||||||
ExecStartPost = pkgs.writeShellScript "pipewire-wait-started" ''
|
ExecStartPost = pkgs.writeShellScript "pipewire-wait-started" ''
|
||||||
waitFor() {
|
waitFor() {
|
||||||
|
@ -48,9 +50,6 @@ in
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "5s";
|
RestartSec = "5s";
|
||||||
};
|
};
|
||||||
|
|
||||||
# environment.PIPEWIRE_LOG_SYSTEMD = "false";
|
|
||||||
# environment.PIPEWIRE_DEBUG = "*:3,mod.raop*:5,pw.rtsp-client*:5";
|
|
||||||
};
|
};
|
||||||
services.pipewire-pulse = {
|
services.pipewire-pulse = {
|
||||||
description = "pipewire-pulse: Pipewire compatibility layer for PulseAudio clients";
|
description = "pipewire-pulse: Pipewire compatibility layer for PulseAudio clients";
|
||||||
|
|
|
@ -51,13 +51,12 @@ in
|
||||||
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/bin/signal-desktop";
|
# for some reason the --ozone-platform-hint=auto flag fails when signal-desktop is launched from a service
|
||||||
|
ExecStart = "env NIXOS_OZONE_WL=1 ${cfg.package}/bin/signal-desktop";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "20s";
|
RestartSec = "20s";
|
||||||
};
|
};
|
||||||
# for some reason the --ozone-platform-hint=auto flag fails when signal-desktop is launched from a service
|
|
||||||
environment.NIXOS_OZONE_WL = "1";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,12 +33,17 @@ in
|
||||||
description = "adjust global desktop scale to match the activate application";
|
description = "adjust global desktop scale to match the activate application";
|
||||||
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/bin/sway-autoscaler --loop-sec ${builtins.toString cfg.config.interval}";
|
ExecStart = lib.escapeShellArgs [
|
||||||
|
"env"
|
||||||
|
"SWAY_DEFAULT_SCALE=${builtins.toString cfg.config.defaultScale}"
|
||||||
|
"${cfg.package}/bin/sway-autoscaler"
|
||||||
|
"--loop-sec"
|
||||||
|
(builtins.toString cfg.config.interval)
|
||||||
|
];
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "10s";
|
RestartSec = "10s";
|
||||||
};
|
};
|
||||||
environment.SWAY_DEFAULT_SCALE = builtins.toString cfg.config.defaultScale;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -479,13 +479,12 @@ in
|
||||||
wantedBy = [ "graphical-session.target" ];
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/bin/swaync";
|
ExecStart = "env G_MESSAGES_DEBUG=all ${cfg.package}/bin/swaync";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
# BusName = "org.freedesktop.Notifications";
|
# BusName = "org.freedesktop.Notifications";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = "10s";
|
RestartSec = "10s";
|
||||||
};
|
};
|
||||||
environment.G_MESSAGES_DEBUG = "all";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -120,12 +120,12 @@ in
|
||||||
wantedBy = [ "graphical-session.target" ];
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
# env G_MESSAGES_DEBUG=all
|
||||||
ExecStart = "${cfg.package}/bin/waybar";
|
ExecStart = "${cfg.package}/bin/waybar";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = "10s";
|
RestartSec = "10s";
|
||||||
};
|
};
|
||||||
# environment.G_MESSAGES_DEBUG = "all";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.sane.programs.wvkbd;
|
cfg = config.sane.programs.wvkbd;
|
||||||
in
|
in
|
||||||
|
@ -22,32 +22,35 @@ in
|
||||||
wantedBy = [ "graphical-session.target" ];
|
wantedBy = [ "graphical-session.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
# --hidden: send SIGUSR2 to unhide
|
# --hidden: send SIGUSR2 to unhide
|
||||||
ExecStart = "${cfg.package}/bin/wvkbd-mobintl --hidden";
|
ExecStart = lib.escapeShellArgs [
|
||||||
|
"env"
|
||||||
|
# wvkbd layers:
|
||||||
|
# - full
|
||||||
|
# - landscape
|
||||||
|
# - special (e.g. coding symbols like ~)
|
||||||
|
# - emoji
|
||||||
|
# - nav
|
||||||
|
# - simple (like landscape, but no parens/tab/etc; even fewer chars)
|
||||||
|
# - simplegrid (simple, but grid layout)
|
||||||
|
# - dialer (digits)
|
||||||
|
# - cyrillic
|
||||||
|
# - arabic
|
||||||
|
# - persian
|
||||||
|
# - greek
|
||||||
|
# - georgian
|
||||||
|
"WVKBD_LANDSCAPE_LAYERS=landscape,special,emoji"
|
||||||
|
"WVKBD_LAYERS=full,special,emoji"
|
||||||
|
"WVKBD_HEIGHT=216" #< default: 250 (pixels)
|
||||||
|
# "WVKBD_LANDSCAPE_HEIGHT=??" #< default: 120 (pixels)
|
||||||
|
# more settings tunable inside config.h when compiling:
|
||||||
|
# - KBD_KEY_BORDER = 2
|
||||||
|
"${cfg.package}/bin/wvkbd-mobintl"
|
||||||
|
"--hidden"
|
||||||
|
];
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "3s";
|
RestartSec = "3s";
|
||||||
};
|
};
|
||||||
|
|
||||||
# wvkbd layers:
|
|
||||||
# - full
|
|
||||||
# - landscape
|
|
||||||
# - special (e.g. coding symbols like ~)
|
|
||||||
# - emoji
|
|
||||||
# - nav
|
|
||||||
# - simple (like landscape, but no parens/tab/etc; even fewer chars)
|
|
||||||
# - simplegrid (simple, but grid layout)
|
|
||||||
# - dialer (digits)
|
|
||||||
# - cyrillic
|
|
||||||
# - arabic
|
|
||||||
# - persian
|
|
||||||
# - greek
|
|
||||||
# - georgian
|
|
||||||
environment.WVKBD_LANDSCAPE_LAYERS = "landscape,special,emoji";
|
|
||||||
environment.WVKBD_LAYERS = "full,special,emoji";
|
|
||||||
environment.WVKBD_HEIGHT = "216"; #< default: 250 (pixels)
|
|
||||||
# environment.WVKBD_LANDSCAPE_HEIGHT = "??"; #< default: 120 (pixels)
|
|
||||||
# more settings tunable inside config.h when compiling:
|
|
||||||
# - KBD_KEY_BORDER = 2
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,16 +64,17 @@ in
|
||||||
# i can actually almost omit it today; problem is that if you don't set it it'll look for `sway-portals.conf` in ~/.config/xdg-desktop-portal
|
# i can actually almost omit it today; problem is that if you don't set it it'll look for `sway-portals.conf` in ~/.config/xdg-desktop-portal
|
||||||
# but then will check its *own* output dir for {gtk,wlr}.portal.
|
# but then will check its *own* output dir for {gtk,wlr}.portal.
|
||||||
# arguable if that's a packaging bug, or limitation...
|
# arguable if that's a packaging bug, or limitation...
|
||||||
ExecStart=''env XDG_DESKTOP_PORTAL_DIR="$HOME/.config/xdg-desktop-portal" ${cfg.package}/libexec/xdg-desktop-portal'';
|
ExecStart = lib.escapeShellArgs [
|
||||||
|
"env"
|
||||||
|
"XDG_DESKTOP_PORTAL_DIR=$HOME/.config/xdg-desktop-portal"
|
||||||
|
# "G_MESSAGES_DEBUG=all" #< also applies to all apps launched by the portal
|
||||||
|
"${cfg.package}/libexec/xdg-desktop-portal"
|
||||||
|
];
|
||||||
Type = "dbus";
|
Type = "dbus";
|
||||||
BusName = "org.freedesktop.portal.Desktop";
|
BusName = "org.freedesktop.portal.Desktop";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "10s";
|
RestartSec = "10s";
|
||||||
};
|
};
|
||||||
|
|
||||||
# environment.XDG_DESKTOP_PORTAL_DIR = "%E/xdg-desktop-portal";
|
|
||||||
|
|
||||||
# environment.G_MESSAGES_DEBUG = "all"; #< also applies to all apps launched by the portal
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.xdg-permission-store = {
|
services.xdg-permission-store = {
|
||||||
|
@ -85,13 +86,16 @@ in
|
||||||
wantedBy = [ "xdg-desktop-portal.service" ];
|
wantedBy = [ "xdg-desktop-portal.service" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart="${cfg.package}/libexec/xdg-permission-store";
|
ExecStart = lib.escapeShellArgs [
|
||||||
|
"env"
|
||||||
|
"XDG_DESKTOP_PORTAL_DIR=$HOME/.config/xdg-desktop-portal"
|
||||||
|
"${cfg.package}/libexec/xdg-permission-store"
|
||||||
|
];
|
||||||
Type = "dbus";
|
Type = "dbus";
|
||||||
BusName = "org.freedesktop.impl.portal.PermissionStore";
|
BusName = "org.freedesktop.impl.portal.PermissionStore";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = "10s";
|
RestartSec = "10s";
|
||||||
};
|
};
|
||||||
environment.XDG_DESKTOP_PORTAL_DIR = "%E/xdg-desktop-portal";
|
|
||||||
};
|
};
|
||||||
# also available: ${cfg.package}/libexec/xdg-document-portal
|
# also available: ${cfg.package}/libexec/xdg-document-portal
|
||||||
# - <https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Documents.html>
|
# - <https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Documents.html>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user