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にクローズされました