Files
dotfiles/hosts/main/setup.md
Sebastian Moser 2139920fbc changes
2026-10-02 22:09:50 +02:00

5.5 KiB

chroot on host

btrfs subvolume create /cachy

mkdir -p /cachy/nix
mkdir -p /cachy/proc
mkdir -p /cachy/sys
mkdir -p /cachy/dev
mkdir -p /cachy/out
mkdir -p /cachy/home/me/work
mount -o bind /proc /cachy/proc
mount -o bind /sys /cachy/sys
mount -o bind /dev /cachy/dev
mount -o bind /nix /cachy/nix
mount -o bind / /cachy/out
mount -o bind /home/me/work /cachy/home/me/work
mount -o bind /run/user/1000 /cachy/run/user/1000
mount -t devpts -o gid=5,mode=620 devpts /cachy/dev/pts

docker run -it -v /cachy:/cachy -v /:/out --privileged cachyos/cachyos /bin/bash

in container:

pacstrap -K /cachy base base-devel vim nix less direnv nvim
pacstrap -K /cachy wayland firefox alacritty dms-shell git cmake paru

pacstrap -K /cachy freerdp remmina
pacstrap -K /cachy brightnessctl playerctl nm-connection-editor ttf-hack zenity prismlauncher docker inetutils freerdp

chroot

SHELL=/bin/bash chroot /cachy
unset XDG_CONFIG_DIR XDG_DATA_DIRS
export WAYLAND_DISPLAY=wayland-1

in chroot

# you sometimes need to .... so that df -h can find /
mount /

ln -sf /proc/self/mounts /etc/mtab
echo "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" > /root/.bashrc
echo "me ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf

ln -sf /home/me/work/config/hosts/main/bashrc /home/me/.bashrc
ln -sf /home/me/work/config/hosts/main/bashrc /root/.bashrc

ln -fs ~/work/app-data/firefox-data/places.sqlite ~/.mozilla/firefox/me/places.sqlite
ln -fs ~/work/app-data/firefox-data/places.sqlite-wal ~/.mozilla/firefox/me/places.sqlite-wal
ln -fs ~/work/app-data/firefox-data/onetab-folder ~/.mozilla/firefox/me/storage/default/moz-extension+++e2297551-90b4-4da0-92c8-1d00cda2d080^userContextId=4294967295
ln -fs $CONFIG_DIR/hosts/main/firefox-user.js ~/.mozilla/firefox/me/user.js
sd ln -fs $CONFIG_DIR/hosts/main/lan-mouse.service /lib/systemd/user/lan-mouse.service
sd ln -fs $CONFIG_DIR/hosts/main/elephant.service /lib/systemd/user/elephant.service
mkdir -p ~/.config/walker
sd ln -fs $CONFIG_DIR/hosts/main/walker.toml ~/.config/walker/config.toml
sudo ln -sf /home/me/work/app-data/network-manager /etc/NetworkManager
sudo ln -sf $HERE_DIR/waydroid-lib /var/lib/waydroid 
sudo ln -sf $HERE_DIR/waydroid-data $HOME/.local/share/waydroid
ln -s ~/work/app-data/thunderbird ~/.mozilla/thunderbird

sudo ln -sf $CONFIG_DIR/hosts/main/hosts /etc/hosts

# docker
sudo pacman -S docker
sudo systemctl enable --now docker
sudo usermod -a -G docker me

# screencast
pacman -S xdg-desktop-portal-hyprland pipewire wireplumber qt6-wayland

# netbird
curl -fsSL https://pkgs.netbird.io/install.sh | sh
# move over /var/lib/netbird

# nixpkgs
nix profile add ni#rustdesk ni#yt-dlp ni#delta

# timezone
sudo timedatectl set-timezone Europe/Vienna
sudo systemctl enable --now systemd-timesyncd

fstab

# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
#arch_root    /          9p    trans=virtio,version=9p2000.L,msize=1048576,rw    0    0
#work_share   /home/me/work  9p    trans=virtio,version=9p2000.L,msize=1048576,rw    0    0

/dev/mapper/root    	/         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=cachy	0 0
/dev/mapper/root    	/home/me/work         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=work	0 0
/dev/mapper/root    	/home/me/secrets         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=secrets	0 0
/dev/mapper/root    	/home/me/here   btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=here	0 0
/dev/mapper/root    	/out         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=nixos	0 0
/dev/mapper/root    	/nix         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=nix	0 0
/dev/mapper/root    	/swap         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=swap	0 0

LABEL=MAIN-BOOT      	/boot     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro	0 2

/swapfile           	none      	swap      	defaults  	0 0
/home/me/work/app-data/network-manager  /etc/NetworkManager  none  bind  0  0

VM

sudo systemctl edit getty@tty1 # and put the following in the correct place (read comments)
#[Service]
#ExecStart=
#ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin your_username %I $TERM

parts

  • mounts/disk setup
  • keyd
  • lan-mouse
  • keyring service
sudo ln -fs $CONFIG_DIR/hosts/main/bw.service /lib/systemd/user/bw.service
sudo ln -fs $CONFIG_DIR/hosts/main/keyring.service /lib/systemd/user/keyring.service
systemctl --user enable --now bw
systemctl --user enable --now keyring
sudo ln -fs $CONFIG_DIR/zed ~/.config/

log

  • first tried to run the pacman from nixpkgs (problems)

  • then a nixpkgs basic chroot see ./install.sh (problems)

  • then had the idea to use the cachyos docker container (worked)

  • there are some finicky things with chroot

    • you need to mount / from in the chroot again... so that df -h can diaplay usage of / (required by pacman)
    • you need to mount /dev/pts for sudo to work
    • and this: ln -sf /proc/self/mounts /etc/mtab
  • hyprland can not run in the chroot as it wants the xdg shell wayland proto v6 and the sway outside only has 5

  • so let's go VM