User:Pavlix

Why Gentoo
I'm more of a pragmatic user of Gentoo. As an open source software developer digging into many projects, I'm taking advantage of portage, overlays, ebuilds and user patches. Gentoo serves the purpose of quickly turning my wishes into an installed package I can use for further testing or daily use.

Hardware

 * Lenovo ThinkPad X61
 * Lenovo ThinkPad X201
 * Lenovo ThinkPad X420s

System

 * Bash
 * eix
 * genkernel
 * LVM
 * sudo
 * screen
 * pm-utils
 * iproute
 * networkmanager
 * ntpd
 * acpid
 * laptop-mode-tools
 * thermal-daemon

Developmnet / Testing

 * LXC
 * Qemu
 * libvirt

Desktop

 * Awesome

Applications

 * screen
 * vim
 * offlineimap
 * mutt
 * Firefox, Midori

Force --autounmask-write changes
CONFIG_PROTECT_MASK="${CONFIG_PROTECT_MASK} /etc/portage"

Keyboard
US and Czech qwerty keyboard layouts, toggled with Alt+Shift, with AltGr+Menu as Compose/Multi key.

setxkbmap "us,cz(qwerty)" -option grp:alt_shift_toggle,compose:menu-altgr

Trackpoint
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Device Accel Profile" 8 3 xinput set-float-prop "TPPS/2 IBM TrackPoint" "Device Accel Velocity Scaling" 30 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 8 1 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 8 2 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Timeout" 16 200 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 8 6 7 4 5

Portage: User patches
I recently switched from  to   to patch the source before running eautoreconf.

Portage: Restart emerge automatically after autounmask-write
{{File|/etc/portage/patches/sys-apps/portage-2.2.8-r1/autounmask.patch|| Index: portage-2.2.8/pym/_emerge/depgraph.py

=
====================================================== --- portage-2.2.8.orig/pym/_emerge/depgraph.py +++ portage-2.2.8/pym/_emerge/depgraph.py @@ -27,7 +27,7 @@ from portage.dep._slot_operator import i from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use, \ _get_eapi_attrs from portage.exception import (InvalidAtom, InvalidData, InvalidDependString, -      PackageNotFound, PortageException) +      PackageNotFound, PortageException, RetryEmerge) from portage.output import colorize, create_color_func, \        darkgreen, green bad = create_color_func("BAD") @@ -7349,6 +7349,8 @@ class depgraph(object):                        for root in roots:                                chk_updated_cfg_files(root, [os.path.join(os.sep, USER_CONFIG_PATH)]) +                      if autounmask_write: +                               raise RetryEmerge("Re-try emerge")                elif not pretend and not autounmask_write and roots:                        writemsg("\nUse --autounmask-write to write changes to config files (honoring\n"                                "CONFIG_PROTECT). Carefully examine the list of proposed changes,\n" Index: portage-2.2.8/pym/_emerge/main.py

=
====================================================== --- portage-2.2.8.orig/pym/_emerge/main.py +++ portage-2.2.8/pym/_emerge/main.py @@ -18,6 +18,7 @@ portage.proxy.lazyimport.lazyimport(glob       '_emerge.is_valid_package_atom:insert_category_into_atom' ) from portage import os +from portage.exception import RetryEmerge from portage.util._argparse import ArgumentParser if sys.hexversion >= 0x3000000: @@ -1029,6 +1030,8 @@ def emerge_main(args=None): try: return run_action(emerge_config) +      except RetryEmerge: +              return emerge_main finally: # Call destructors for our portdbapi instances. for x in emerge_config.trees.values: Index: portage-2.2.8/pym/portage/exception.py

=
====================================================== --- portage-2.2.8.orig/pym/portage/exception.py +++ portage-2.2.8/pym/portage/exception.py @@ -74,6 +74,9 @@ class InvalidData(PortageException): class InvalidDataType(PortageException): """An incorrect type was passed instead of the expected one""" +class RetryEmerge(PortageException): +      """Re-try the emerge request""" + class InvalidLocation(PortageException): """Data was not found when it was expected to exist or was specified incorrectly""" }}

Debugging
FEATURES="splitdebug installsources"

Fedora rawhide on LXC
NAME=rawhide RELEASE=rawhide VGNAME=vg

euse -E lua caps -p app-arch/rpm emerge -v1 rpm

lxc-create -n $NAME -t fedora -B lvm --vgname $VGNAME -- -R $RELEASE

Notes:


 * With new LXC builds, LVM won't work.
 * LXC container's systemd breaks host's ttys

Systemd
From udev to systemd:

emerge --unmerge udev emerge -v systemd

What you need to have a dual boot Gentoo with systemd and OpenRC:

app-emulation/libvirt >= 1.2.3 sys-fs/lvm2 >= ???


 * Configure PAM

Network printing
Install the necessary packages:

euse -E zeroconf emerge -av cups nss-mdns system-config-printer-gnome

Make sure nss-mdns is configured:

hosts:      files mdns_minimal dns mdns
 * 1) grep hosts /etc/nsswitch.conf

Start cups and avahi-daemon.

Find and configure the printer:

system-config-printer

Get rid of window tearing
compton -c --vsync opengl --backend glx --vsync opengl-swc

Screen lock using systemd
/etc/systemd/system/slock.service:

[Unit] Description=Lock X session using slock Before=sleep.target

[Service] User=pavlix Environment=DISPLAY=:0 Type=simple ExecStart=/usr/bin/slock

[Install] WantedBy=sleep.target WantedBy=lock.target

A multi-user variant can be prepared with xautolock.

Pages

 * Debugging