Add workaround for wsl systemd bus issue

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-09-10 09:48:15 +00:00
parent 24d31f6881
commit f960808cc7
2 changed files with 47 additions and 1 deletions

View File

@@ -1,5 +1,36 @@
{ user, home }:
{ pkgs, ... }:
{ config, pkgs, ... }:
let
systemctl = "${pkgs.systemd}/bin/systemctl";
in
{
# FIXME: https://github.com/nix-community/NixOS-WSL/issues/375
# FIXME: https://github.com/Mic92/sops-nix/issues/687
# FIXME: https://github.com/microsoft/WSL/issues/8842
# FIXME: https://github.com/microsoft/WSL/issues/10205
# Fuck Microsoft.
security.sudo.extraRules = [
{
users = [ config.users.users.${user}.name ];
commands = [
{
command = "${systemctl} restart user@${toString config.users.users.${user}.uid}.service";
options = [ "NOPASSWD" ];
}
{
command = "${systemctl} restart user@${toString config.users.users.${user}.uid}";
options = [ "NOPASSWD" ];
}
];
}
];
users.users.${user}.shell = pkgs.writeShellApplication {
name = "wsl-zsh";
runtimeInputs = with pkgs; [ systemd ];
text = builtins.readFile ./wsl-zsh.sh;
passthru.shellPath = "/bin/wsl-zsh";
};
home-manager.users.${user}.home.packages = with pkgs; [ wsl-wl-clipboard ];
}

View File

@@ -0,0 +1,15 @@
# shellcheck shell=bash
user_bus="${DBUS_SESSION_BUS_ADDRESS#unix:path=}"
if [ -S "$user_bus" ]; then
exec zsh
fi
until [ -S /run/dbus/system_bus_socket ]; do
sleep 0.1
done
sudo systemctl restart "user@${UID}.service"
exec zsh