diff --git a/hosts/elara/users/nikara/configs/console/wsl/default.nix b/hosts/elara/users/nikara/configs/console/wsl/default.nix index 5be028c..8b96760 100644 --- a/hosts/elara/users/nikara/configs/console/wsl/default.nix +++ b/hosts/elara/users/nikara/configs/console/wsl/default.nix @@ -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 ]; } diff --git a/hosts/elara/users/nikara/configs/console/wsl/wsl-zsh.sh b/hosts/elara/users/nikara/configs/console/wsl/wsl-zsh.sh new file mode 100644 index 0000000..2f9e9eb --- /dev/null +++ b/hosts/elara/users/nikara/configs/console/wsl/wsl-zsh.sh @@ -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