Closed3
NixOSでX11開発環境の整備

開発環境用
{
outputs = { self, nixpkgs }: {
devShell.x86_64-linux = with nixpkgs.legacyPackages.x86_64-linux; mkShell {
buildInputs = [
# Core X11 Libraries
xorg.libX11.dev
xorg.libXext
xorg.libXinerama
xorg.libXrandr
xorg.libXrender
xorg.libXcursor
xorg.libXfixes
xorg.libXi
xorg.libXt
xorg.libXxf86vm
# Utility Libraries
xorg.libXmu
xorg.libXtst
xorg.libXpm
# Advanced Graphics
libGL
libGLU
# Font Handling
xorg.libXfont
xorg.libXft
];
};
};
}
実行環境用
{
outputs = { self, nixpkgs }: {
devShell.x86_64-linux = with nixpkgs.legacyPackages.x86_64-linux; mkShell {
buildInputs = [
xorg.xorgserver
xorg.xinit
xorg.xauth
xorg.xf86inputevdev
xorg.xf86inputsynaptics
xorg.xf86inputlibinput
xorg.xf86videointel
xorg.xf86videoati
xorg.xf86videonouveau
];
};
};
}
この状態でもstartx
自体は可能になった一方で、入力が何一つ効かなくなってしまう
というわけでservices.xserver.exportConfiguration = true;
を設定する
参考: https://discourse.nixos.org/t/xorg-libinput-configuration-seems-to-be-ignored/15504

ああ 世の中の全てだ ありがとう

このような構造にした
.
├── flake.lock
├── flake.nix
├── Makefile
├── /tinywm
├── /lwm
└── /(その他色々なWM...)
flake.nix
{
outputs = { self, nixpkgs }: {
imports = [ /home/tada/.dotfiles/nixos/programs.nix ];
devShell.x86_64-linux = with nixpkgs.legacyPackages.x86_64-linux; mkShell {
buildInputs = [
# Core X11 Libraries
xorg.libX11.dev
xorg.libXext
xorg.libXinerama
xorg.libXrandr
xorg.libXrender
xorg.libXcursor
xorg.libXfixes
xorg.libXi
xorg.libXt
xorg.libXxf86vm
# Utility Libraries
xorg.libXmu
xorg.libXtst
xorg.libXpm
# Advanced Graphics
libGL
libGLU
# Font Handling
xorg.libXfont
xorg.libXft
];
};
};
}
Makefile
.PHONY: start-dev
start-dev:
nix develop -c "zsh"
.PHONY: set-xinitrc
set-xinitrc:
echo "Setting xinitrc..."
if [ -z $(WM) ]; then \
echo "environment variable WM is empty; set relative path to binary"; \
exit 1; \
fi
echo "exec $(PWD)/$(WM) & xterm" > $(HOME)/.xinitrc
echo "Done."
これでmake start-dev
とやれば開発環境が開くし、make set-xinitrc
とやれば勝手に~/.xinitrc
を書き換えてくれる。
このスクラップは2023/12/08にクローズされました