NixOS on Hyper-V で拡張セッションを有効にしてみた
読了まで:約2分
なんとなく
Microsoft/linux-vm-tooks は結局を何をしているか
実際の
[https://github.com/Microsoft/linux-vm-tools:embed]
を
xrdp
とxorgxrdp
をインストール xrdp
とxrdp-sesman
のサービスを 有効化 - その他、
関連する ソフトウェアの 細々と した 設定
NixOS で linux-vm-tools 相当の事を行う
そのため shell script の
{ config, pkgs, ... }:
{
boot.kernelModules = [
"hv_sock"
];
services.xserver = {
enable = true;
autorun = false;
videoDrivers = [ "fbdev" ];
};
services.xrdp = {
enable = true;
defaultWindowManager = "${config.services.xserver.displayManager.session.wrapper}";
package = pkgs.xrdp.overrideAttrs (old: rec {
configureFlags = old.configureFlags ++ [ " --enable-vsock" ];
postInstall = old.postInstall + ''
${pkgs.gnused}/bin/sed -i -e "s!use[/ vsock=false!use]vsock=true!g" $out/etc/xrdp/xrdp.ini
${pkgs.gnused}/bin/sed -i -e "s!security[/ layer=negotiate!security]layer=rdp!g" $out/etc/xrdp/xrdp.ini
${pkgs.gnused}/bin/sed -i -e "s!crypt[/ level=high!crypt]level=none!g" $out/etc/xrdp/xrdp.ini
${pkgs.gnused}/bin/sed -i -e "s!bitmap[/ compression=true!bitmap]compression=false!g" $out/etc/xrdp/xrdp.ini
${pkgs.gnused}/bin/sed -i -e "s!FuseMountName=thinclient_drives!FuseMountName=shared-drives!g" $out/etc/xrdp/sesman.ini
'';
});
};
environment.etc."X11/Xwrapper.config" = {
mode = "0644";
text = ''
allowed_users=anybody
needs[/ root]rights=auto
'';
};
security.pam.services.xrdp-sesman-rdp = {
text = ''
auth include system-remote-login
account include system-remote-login
password include system-remote-login
session include system-remote-login
'';
};
security.polkit = {
enable = true;
extraConfig = ''
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.color-manager.create-device" ||
action.id == "org.freedesktop.color-manager.modify-profile" ||
action.id == "org.freedesktop.color-manager.delete-device" ||
action.id == "org.freedesktop.color-manager.create-profile" ||
action.id == "org.freedesktop.color-manager.modify-profile" ||
action.id == "org.freedesktop.color-manager.delete-profile") &&
subject.isInGroup("users")) {
return polkit.Result.YES;
}
});
'';
};
}
な~/.xsession
で
そのため、~/.xsession
から
{ config, pkgs, ... }:
let
bspwmInit = pkgs.writeScript "bspwmrc" ''
#!/bin/sh
${pkgs.gnome3.dconf.lib}/libexec/dconf-service &
${pkgs.gnome2.GConf}/libexec/gconfd-2 &
${config.i18n.inputMethod.package}/bin/ibus-daemon -drx --config=${config.i18n.inputMethod.package}/libexec/ibus-gconf
exec /etc/nixos/dotfiles/nyarla/bspwm/bspwmrc
'';
in
{
services.xserver = {
desktopManager.xterm.enable = false;
windowManager = {
bspwm = {
enable = true;
configFile = "${bspwmInit}";
sxhkd.configFile = "/etc/nixos/dotfiles/nyarla/sxhkd/sxhkdrc";
};
};
};
environment.etc."X11/XLaunchXRDP" = {
mode = "0755";
text = ''
#!/bin/sh
export _JAVA_AWT_WM_NONREPARENTING=1
${pkgs.xorg.xsetroot}/bin/xsetroot -solid "#242424" -cursor_name left_ptr
SXHKD_SHELL=/bin/sh ${config.services.xserver.windowManager.bspwm.sxhkd.package}/bin/sxhkd -c /etc/nixos/dotfiles/nyarla/sxhkd/sxhkdrc &
exec ${config.services.xserver.windowManager.bspwm.package}/bin/bspwm -c "${bspwmInit}"
'';
};
environment.systemPackages = with pkgs; [
polybar xtitle psmisc
];
}
以上
今回、
Xorg の
Window Manager を どう 起動させるか
と
あと
** 細々と
した 設定を 調整して 適用する ** 、
と
システムの
設定ファイルを 弄くりまわした 挙句に boot しなくなって 再インストール……
と