merged void-laptop and updated void-desktop-install.md

This commit is contained in:
Luc Bijl 2023-04-09 16:06:50 +02:00
parent 0cff788e38
commit bf022064d7
9 changed files with 982 additions and 23 deletions

View file

@ -0,0 +1,5 @@
font=monospace:size=10
initial-window-size-pixels=1000x600
[colors]
background=000000
alpha=0.5

View file

@ -0,0 +1,3 @@
profile{
output eDP-1 position 0,0
}

View file

@ -0,0 +1,9 @@
font=Roboto 8
background-color=#1515157F
border-size=6
border-radius=20
border-color=#1515157F
progress-color=#3949A0FF
icons=1
icon-path=/usr/share/icons/Papirus-Dark
default-timeout=6000

View file

@ -0,0 +1,53 @@
[
{
"layer": "top",
"output": "eDP-1",
"position": "top",
"modules-left": ["wlr/taskbar"],
"modules-center": ["clock"],
"modules-right": ["battery","tray","custom/search","custom/poweroff"],
"fixed-center": true,
"spacing": 20,
"custom/poweroff":
{
"tooltip": false,
"format": "",
"on-click": "wlogout"
},
"custom/search":
{
"tooltip": false,
"format": "",
"on-click": "wofi --show drun"
},
"clock":
{
"interval": 60,
"format": "{:%a %H:%M %d-%m-%y}",
"tooltip": false
},
"battery":
{
"bat": "BAT0",
"interval": 60,
"format": "{icon} {capacity}%",
"format-icons": ["","","","",""]
},
"tray":
{
"icon-size": 16,
"spacing": 20
},
"wlr/taskbar":
{
"format": "{icon}",
"icon-size": 16,
"tooltip-format": "{title}",
"on-click": "activate",
"on-click-middle": "close",
"ignore-list": [
"wlogout"
]
}
}
]

View file

@ -0,0 +1,45 @@
*
{
border: 0;
border-radius: 0;
font-family: "FontAwesome";
font-size: 16px;
min-height: 0;
padding-top: 0px;
padding-bottom: 1px;
}
window#waybar
{
background: rgba(0, 0, 0, 1);
border-bottom: 0px solid rgba(0, 0, 0, 1);
color: white;
}
tooltip
{
background: rgba(0, 0, 0, 0.5);
border: 1px solid rgba(0, 0, 0, 0.5);
border-radius: 10;
}
tooltip label
{
color: white;
}
#custom-poweroff
{
padding-right: 20px;
}
#taskbar
{
padding-left: 20px;
}
#taskbar button
{
padding-left: 15px;
padding-right: 0px;
}

View file

@ -0,0 +1,350 @@
[alpha]
min_value = 0.100000
modifier = <alt> <super>
[animate]
close_animation = fade
duration = 400
enabled_for = all
fade_duration = 400
fade_enabled_for = none
fire_duration = 300
fire_enabled_for = none
fire_particle_size = 16.000000
fire_particles = 2000
open_animation = fade
startup_duration = 600
zoom_duration = 500
zoom_enabled_for = none
[autostart]
audio = pipewire
audio_notify = sleep 5; dbus-launch pa-notify -t 2
automount = udiskie -As
autostart_wf_shell = false
background = wf-background
bar = waybar
element = dbus-launch element-desktop --hidden --enable-features=UseOzonePlatform --ozone-platform=wayland
idle = swayidle -w timeout 230 gtklock before-sleep gtklock
network = sleep 5; nm-applet --indicator
notifications = mako
outputs = kanshi
[blur]
blur_by_default = type is "toplevel"
bokeh_degrade = 1
bokeh_iterations = 15
bokeh_offset = 5.000000
box_degrade = 1
box_iterations = 2
box_offset = 1.000000
gaussian_degrade = 1
gaussian_iterations = 2
gaussian_offset = 1.000000
kawase_degrade = 8
kawase_iterations = 2
kawase_offset = 2.000000
method = gaussian
saturation = 1.000000
toggle = none
[command]
binding_filer = <super> KEY_F
binding_firefox = <super> KEY_B
binding_gamma = <super> KEY_G
binding_kanshi = <super> KEY_K
binding_launcher = <super> KEY_S
binding_matrix = <super> KEY_E
binding_mute = KEY_MUTE
binding_screenshot = <shift> KEY_SYSRQ
binding_screenshot_interactive = KEY_SYSRQ
binding_terminal = <super> KEY_T
binding_volumedown = KEY_VOLUMEDOWN
binding_volumeup = KEY_VOLUMEUP
binding_vscode = <super> KEY_V
binding_waybar = <super> KEY_W
binding_wlogout = <super> KEY_P
command_filer = Thunar
command_firefox = firefox
command_gamma = wlsunset -l 52.0 -L 5.9 -t 3000
command_kanshi = kanshi
command_launcher = wofi --show drun
command_matrix = dbus-launch element-desktop --enable-features=UseOzonePlatform --ozone-platform=wayland
command_mute = pamixer -t
command_screenshot = grim $(date '+%F_%T').png
command_screenshot_interactive = slurp | grim -g - $(date '+%F_%T').png
command_terminal = foot
command_volumedown = pamixer -d 5 -u
command_volumeup = pamixer -i 5 -u
command_vscode = ~/packages/vscode/code
command_waybar = pkill -9 waybar; waybar
command_wlogout = wlogout
[core]
background_color = \#000000FF
close_top_view = <super> KEY_Q | <alt> KEY_F4
focus_button_with_modifiers = false
focus_buttons = BTN_LEFT | BTN_MIDDLE | BTN_RIGHT
focus_buttons_passthrough = true
max_render_time = -1
plugins = alpha animate autostart command cube expo fast-switcher grid idle invert move oswitch place resize switcher vswitch window-rules wobbly wrot zoom blur
preferred_decoration_mode = server
vheight = 3
vwidth = 3
xwayland = true
[cube]
activate = <alt> <ctrl> BTN_LEFT
background = \#00000000
background_mode = simple
cubemap_image =
deform = 0
initial_animation = 350
light = true
rotate_left = none
rotate_right = none
skydome_mirror = true
skydome_texture =
speed_spin_horiz = 0.020000
speed_spin_vert = 0.020000
speed_zoom = 0.070000
zoom = 0.100000
[decoration]
active_color = \#000000FF
border_size = 0
button_order =
font = Roboto
ignore_views = none
inactive_color = \#000000FF
title_height = 0
[expo]
background = \#00000000
duration = 300
offset = 10
select_workspace_1 = KEY_1
select_workspace_2 = KEY_2
select_workspace_3 = KEY_3
select_workspace_4 = KEY_4
select_workspace_5 = KEY_5
select_workspace_6 = KEY_6
select_workspace_7 = KEY_7
select_workspace_8 = KEY_8
select_workspace_9 = KEY_9
toggle = <super>
[extra-gestures]
close_fingers = 20
move_delay = 500
move_fingers = 3
[fast-switcher]
activate = <alt> KEY_TAB
activate_backward = <alt> <shift> KEY_TAB
inactive_alpha = 0.700000
[fisheye]
radius = 450.000000
toggle = <ctrl> <super> KEY_F
zoom = 7.000000
[grid]
duration = 300
restore = <super> KEY_DOWN | <super> KEY_KP0
slot_b = <super> KEY_KP2
slot_bl = <super> KEY_KP1
slot_br = <super> KEY_KP3
slot_c = <super> KEY_UP | <super> KEY_KP5
slot_l = <super> KEY_LEFT | <super> KEY_KP4
slot_r = <super> KEY_RIGHT | <super> KEY_KP6
slot_t = <super> KEY_KP8
slot_tl = <super> KEY_KP7
slot_tr = <super> KEY_KP9
type = crossfade
[idle]
cube_max_zoom = 1.500000
cube_rotate_speed = 1.000000
cube_zoom_speed = 1000
disable_on_fullscreen = true
dpms_timeout = 240
screensaver_timeout = 180
toggle = none
[input]
click_method = default
cursor_size = 24
cursor_theme = default
disable_touchpad_while_mouse = false
disable_touchpad_while_typing = false
gesture_sensitivity = 1.000000
kb_capslock_default_state = false
kb_numlock_default_state = false
kb_repeat_delay = 400
kb_repeat_rate = 40
left_handed_mode = false
middle_emulation = false
modifier_binding_timeout = 400
mouse_accel_profile = default
mouse_cursor_speed = 0.000000
mouse_scroll_speed = 1.000000
natural_scroll = false
scroll_method = default
tap_to_click = true
touchpad_accel_profile = default
touchpad_cursor_speed = 0.000000
touchpad_scroll_speed = 1.000000
xkb_layout = eu
xkb_model =
xkb_options =
xkb_rules = evdev
xkb_variant =
[input-device]
output =
[invert]
preserve_hue = false
toggle = <super> KEY_I
[move]
activate = <super> BTN_LEFT
enable_snap = false
enable_snap_off = true
join_views = false
quarter_snap_threshold = 50
snap_off_threshold = 10
snap_threshold = 10
workspace_switch_after = -1
[oswitch]
next_output = <super> KEY_O
next_output_with_win = <shift> <super> KEY_O
[output]
mode = auto
position = auto
scale = 1.000000
transform = normal
[place]
mode = center
[preserve-output]
last_output_focus_timeout = 1000000
[resize]
activate = <super> BTN_RIGHT
[scale]
allow_zoom = false
background = 0.0 0.0 0.0 0.0
bg_color = \#1A1A1AE6
duration = 750
inactive_alpha = 0.750000
interact = false
middle_click_close = false
spacing = 50
text_color = \#CCCCCCFF
title_font_size = 16
title_overlay = all
title_position = center
toggle = <super> KEY_P
toggle_all =
[scale-title-filter]
bg_color = \#00000080
case_sensitive = false
font_size = 30
overlay = true
share_filter = false
text_color = \#CCCCCCCC
[simple-tile]
button_move = <super> BTN_LEFT
button_resize = <super> BTN_RIGHT
inner_gap_size = 5
keep_fullscreen_on_adjacent = true
key_focus_above = <super> KEY_K
key_focus_below = <super> KEY_J
key_focus_left = <super> KEY_H
key_focus_right = <super> KEY_L
key_toggle = <super> KEY_T
outer_horiz_gap_size = 0
outer_vert_gap_size = 0
tile_by_default = all
[switcher]
next_view = <alt> KEY_TAB
prev_view = <alt> <shift> KEY_TAB
speed = 500
view_thumbnail_scale = 1.000000
[vswipe]
background = \#1A1A1AFF
delta_threshold = 24.000000
duration = 180
enable_free_movement = false
enable_horizontal = true
enable_smooth_transition = false
enable_vertical = true
fingers = 4
gap = 32.000000
speed_cap = 0.050000
speed_factor = 256.000000
threshold = 0.350000
[vswitch]
background = \#00000000
binding_down = <ctrl> <super> KEY_DOWN
binding_left = <ctrl> <super> KEY_LEFT
binding_right = <ctrl> <super> KEY_RIGHT
binding_up = <ctrl> <super> KEY_UP
binding_win_down = <ctrl> <shift> <super> KEY_DOWN
binding_win_left = <ctrl> <shift> <super> KEY_LEFT
binding_win_right = <ctrl> <shift> <super> KEY_RIGHT
binding_win_up = <ctrl> <shift> <super> KEY_UP
duration = 300
gap = 20
with_win_down = <ctrl> <super> <shift> KEY_DOWN
with_win_left = <ctrl> <super> <shift> KEY_LEFT
with_win_right = <ctrl> <super> <shift> KEY_RIGHT
with_win_up = <ctrl> <super> <shift> KEY_UP
wraparound = false
[window-rules]
[wm-actions]
minimize = none
send_to_back = none
toggle_always_on_top = none
toggle_fullscreen = none
toggle_maximize = none
toggle_showdesktop = none
toggle_sticky = none
[wobbly]
friction = 5.000000
grid_resolution = 6
spring_k = 8.000000
[workarounds]
all_dialogs_modal = true
app_id_mode = stock
dynamic_repaint_delay = false
[wrot]
activate = <ctrl> <super> BTN_RIGHT
activate-3d = <shift> <super> BTN_RIGHT
invert = false
reset = <ctrl> <super> KEY_R
reset-one = <super> KEY_R
reset_radius = 25.000000
sensitivity = 24
[zoom]
modifier = <super>
smoothing_duration = 300
speed = 0.010000

View file

@ -0,0 +1,8 @@
mode=drun
location=2
yoffset=0
prompt=
width=800
height=400
allow_images=true
allow_markup=true

View file

@ -0,0 +1,52 @@
*
{
font-family: "Roboto";
font-size: 16px;
font-weight: 400;
}
#window
{
margin: 0px;
border: none;
border-color: rgba(0, 0, 0, 0.5);
border-radius: 16;
background-color: rgba(0, 0, 0, 0.5);
color: #dfe2e1;
}
#input
{
margin: 25px;
background-color: 191724;
color: rgb(255, 255, 255);
border-radius: 10px;
border: none;
}
#scroll
{
margin-bottom: 25px;
}
#entry
{
margin: 0px 25px;
}
#entry:selected
{
border-radius: 10px;
border: none;
outline: none;
}
#entry > box
{
margin-left: 15px;
}
#entry image
{
padding-right: 10px;
}

View file

@ -1,6 +1,6 @@
# A Void Linux desktop install (Unfinished)
# A Void Linux install (Unfinished)
This install is based on the [EFI boot stub](https://mth.st/blog/void-efistub/) blog entry of [Matthias Totschnig](https://mth.st/), the [Void Handbook](https://docs.voidlinux.org/about/index.html) and the Void Linux man pages. This guide focuses on a Void Linux x86-64 glibc/musl install. In this install gummiboot is used as bootloader and the root partition will be encrypted.
This install is based on the [EFI boot stub](https://mth.st/blog/void-efistub/) blog entry of [Matthias Totschnig](https://mth.st/), the [Void Handbook](https://docs.voidlinux.org/about/index.html) and the Void Linux man pages. This guide focuses on a Void Linux x86_64 glibc/musl install on uefi. In this install gummiboot is used as bootloader and the root partition will be encrypted.
## Provisioning
@ -10,7 +10,7 @@ It should look something like this:
| Number of partition | Size | Type |
|:-----:|:-----:|:-----: |
| 1 | 1 to 2 GB | EFI System |
| 1 | 1 to 2 GB or more | EFI System |
| 2 | Rest of the drive | Linux filesystem |
Then to create the filesystem of the efi partition.
@ -27,9 +27,11 @@ And the encrypted filesystem of the root partition.
# mkfs.ext4 -L root /dev/mapper/root
```
Other filesystems can also be used but `ext4` is the standard for most linux distobutions.
## Installation
The encrypted partition and the efi partition have to be mounted to the main system.
To install the Void Linux distribution on the system, the encrypted partition and the efi partition have to be mounted to the main system.
```
# mount /dev/mapper/root /mnt
@ -152,7 +154,7 @@ The `uuid` is needed again and can be obtained by:
Now edit `/boot/loader/void-options.conf` and insert:
```
rw rd.luks.name=<uuid>=root root=/dev/mapper/root quiet splash apparmor=1 security=apparmor
rw rd.luks.name=<uuid>=root root=/dev/mapper/root quiet splash apparmor=1 security=apparmor loglevel=1
```
To obtain a boot menu. A timeout may be added to `/boot/loader/loader.conf`.
@ -161,31 +163,18 @@ To obtain a boot menu. A timeout may be added to `/boot/loader/loader.conf`.
timeout 4
```
Then to configure the locales:
* For glibc: edit `/etc/default/libc-locales` and uncomment.
If running `glibc` the locales have to be configured, to configure the locales edit `/etc/default/libc-locales` and uncomment.
```
en_US.UTF-8 UTF-8
```
* For musl:
And reconfigure the locales.
```
# xbps-reconfigure -f glibc-locales
```
Then reconfigure the locales.
* For glibc:
```
# xbps-reconfigure -f glibc-locales
```
* For musl:
```
```
To obtain better security, `apparmor` will be set to enforce. By editing `/etc/default/apparmor` and inserting:
@ -202,7 +191,7 @@ To set the internal network edit `/etc/hosts` and insert.
Finally reconfigure Linux.
```
# xbps-reconfigure -f linux{version}
# xbps-reconfigure -f linux<version>
```
Exit the chroot.
@ -224,3 +213,448 @@ And reboot.
```
## Post install
In the post install section the installation and configuration of certain applications are elaborated. With the use of the config-files in this repository.
To obtain these config-files the void-desktop repository may be cloned with the `git` command.
```
$ git clone https://git.bijl.us/luc/void-desktop.git
```
### Network
NetworkManager will be used as Network daemon due to its versatility. The package was already installed with the installation, thereby it only needs to be symlinked to `/var/service` to function.
```
# ln -s /etc/sv/NetworkManager /var/service
```
NetworkManager needs the `dbus` daemon to function, in general most other applications that will be discussed in the Post install section need `dbus`. To symlink `dbus` to `/var/service`:
```
# ln -s /etc/sv/dbus /var/service
```
Then, NetworkManager may be configured to enhance the security of the system. This is especially useful for laptops etc. To do this edit `/etc/NetworkManager/NetworkManager.conf`.
```
[device-mac-randomization]
wifi.scan-rand-mac-address=yes
[connection-mac-randomization]
ethernet.cloned-mac-address=random
wifi.cloned-mac-address=random
```
### Users
A user should be added to improve security of the system.
```
# useradd <user>
```
The user may be added to certain groups, to give it some rights.
```
# usermod -aG wheel,audio,video,kvm,tty,input,storage(,bluetooth,_seatd) <user>
```
The package `sudo` that is present in the `base-system` package will be removed. Since, it is bloatware. To persist this. That is sudo will not be installed ever again on the system. Edit `/etc/xbps.d/xbps.conf` and insert:
```
ignorepkg=sudo
```
Then remove `sudo`.
```
# xbps-remove -y sudo
```
The `sudo` package will be replaced by `opendoas`. To install it:
```
# xbps-install -Sy opendoas
```
Symlink it to `/bin/sudo` so that applications which require root can still be granted by the user.
```
# ln -s /bin/doas /bin/sudo
```
And edit `/etc/doas.conf` to give users in the `wheel` group access to the `doas` command.
```
permit persist :wheel as root
```
To finalize this section, the `.bashrc` and `.bash_profile` configuration files will be copied to the home space of the user.
```
$ cp void-desktop/config-files/bash/.bashrc .bashrc
$ cp void-desktop/config-files/bash/.bash_profile .bash_profile
```
### Linux-lts
It might be desirable to install an LTS kernel for better stability. This can be done by:
```
# xbps-install -Sy linux-lts linux-lts-headers
```
To uninstall the non-lts kernel, ignore the package through `/etc/xbps.d/xbps.conf` by adding:
```
ignorepkg=linux
```
And then removing the `linux` meta package and its dependecies:
```
# xbps-remove -Ry linux
```
### Localtime
A "Network Time Protocol Daemon" (nptd for short) can sync the system clock with internet standard time servers. The `chrony` daemon is used as ntpd. Install it by:
```
# xbps-install -Sy chrony
```
Then to active its service:
```
ln -s /etc/sv/chronyd /var/service
```
To configure the timezone to your own edit the `/etc/rc.conf` file and set these lines:
```
HARDWARECLOCK="localtime"
TIMEZONE=("Europe/Amsterdam")
```
### Using Swap
Swap can be utilised by the system to free up space in RAM. For most use cases it is recommend to create a swapfile that is one and a half times the size of your RAM.
To create a swapfile of 8 GB use:
```
# dd if=/dev/zero of=/swapfile bs=8M count=1024 status=progress
```
To create a different size of swapfile, change the `count=` amount to a desirable size.
Then to actually add the swap space to your system issue these commands:
```
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
```
To mount the swap to the system at boot, add the swapfile to your `/etc/fstab`:
```
/swapfile none swap defaults 0 0
```
And do not forget to reconfigure the kernel after updating`/etc/fstab`:
```
# xbps-reconfigure -f linux<version>
```
### Network filesystems
Network filesystems may be used for enhanced workflow between multiple devices and persistance of storage.
#### Samba
Samba is such a Network filesystem protocol that may be used between different platforms. To use it install.
```
# xbps-install -Sy cifs-utils
```
Next, a credentials file will be created that is, `$HOME/.smbpasswd`. Edit the file and insert:
```
username=<username>
password=<password>
domain=<domain>
```
Concerning security considerations, the permissions may be enhanced.
```
# chmod 600 $HOME/.smbpasswd
```
Then edit `/etc/fstab` and insert:
```
//<domain>/<homefolder> $HOME/<smbfolder> cifs credentials=$HOME/.smbpasswd,_netdev,uid=<uid> 0 0
```
Finally mount the network filesystem.
```
# mount -a
```
### Logging
Logging may be benificial to spot certain misbehaviours or errors in the system. The `socklog-void` package will be used as logging daemon.
```
# xbps-install -Sy socklog-void
# ln -s /etc/sv/socklog-unix /var/service/
# ln -s /etc/sv/nanoklogd /var/service/
```
To read the logs use:
```
# svlogtail
```
Or go to `/var/log/socklog`.
### Repositories
To install the official Void Linux 32-bit and nonfree repositories simply install their respective packages:
* For glibc
```
# xbps-install -Sy void-repo-multilib void-repo-nonfree void-repo-multilib-nonfree
```
* For musl
```
# xbps-install -Sy void-repo-nonfree
```
And update the repositories:
```
# xbps-install -S
```
There is also our unnofficial extra repository for some additional packages and some packages which are needed for the graphical installation. To use those add them to `/etc/xbps.d/00-repository-ample.conf`,
* For glibc:
```
repository=https://git.bijl.us/lnco/xbps-ample/raw/branch/main/current
repository=https://git.bijl.us/lnco/xbps-ample/raw/branch/main/current/nonfree
```
* For musl
```
repository=https://git.bijl.us/lnco/xbps-ample/raw/branch/main/current/musl
```
And refresh the repositories:
```
# xbps-install -S
```
### Firmware and drivers
#### GPU drivers
It is necessary for a graphical enviroment to install GPU drivers. To install the drivers for your GPU use one of the following commands:
* For Intel
```
# xbps-install -Sy linux-firmware-intel mesa mesa-dri vulkan-loader mesa-vulkan-intel intel-video-accel
```
* For AMD
```
# xbps-install -Sy linux-firmware-amd vulkan-loader mesa-vulkan-radeon amdvlk xf86-video-amdgpu mesa-vaapi mesa-vdpau mesa-dri
```
* For Nvidia (*glibc only*)
```
# xbps-install -Sy nvidia nvidia-opencl
```
##### 32-bit drivers
(Only applicable to glibc as Void Linux musl only supports 64-bit)
To run 32-bit applications like some videogames it will also be necessary to install the 32-bit drivers:
* For Intel
```
# xbps-install -Sy mesa-32bit mesa-dri-32bit mesa-vulkan-intel-32bit vulkan-loader-32bit
```
* For AMD
```
# xbps-install -Sy vulkan-loader-32bit amdvlk-32bit mesa-32bit mesa-dri-32bit
```
* For Nvidia
```
# xbps-install -Sy nvidia-libs-32bit
```
#### CPU firmware
To keep the firmware of your CPU up to date it is necessary to install the correct microcode:
* For Intel
(The Intel microcode requires that you are using the nonfree repository)
```
# xbps-install -Sy intel-ucode
```
And regenerate the initramfs:
```
# xbps-reconfigure -f linux<version>
```
* For AMD
```
# xbps-install -Sy linux-firmware-amd
```
### Secure-boot
#### Linux Windows dual boot
```
# xbps-install -Sy sbctl
# sbctl create-keys
# sbctl enroll-keys --microsoft
# sbctl sign -s /boot/EFI/Boot/BOOTX64.EFI
# sbctl sign -s /boot/EFI/gummiboot/gummibootx64.efi
# sbctl sign -s /boot/vmlinuz-<version>
# sbctl verify
```
### Laptop-management
```
# xbps-install -Sy tlp tlpui
```
```
# ln -s /etc/sv/tlp /var/service
# ln -s /etc/sv/acpid /var/service
```
Edit `/etc/tlp.d/00-template.conf`
```
CPU_ENERGY_PERF_POLICY_ON_AC=performance
CPU_ENERGY_PERF_POLICY_ON_BAT=power
```
## Graphical session
### Session manager
To use a graphical enviroment it is necessary to start a seat and session manager. For a minimal install it is recommended to use `seatd`, `dumb_runtime_dir` and `polkit`. To install those run:
```
# xbps-install -Sy seatd dumb_runtime_dir polkit
```
Then to enable them:
```
# ln -s /etc/sv/seatd /var/service
# ln -s /etc/sv/polkitd /var/service
```
And for `dumb_runtime_dir` to function, configure `/etc/pam.d/system-login` by uncommenting:
```
session optional pam_dumb_runtime_dir.so
```
For some sane polkit rules add these lines to `/etc/polkit-1/rules.d/00-polkit.rules`:
```
polkit.addRule(function(action, subject)
{
if (action.id == "org.freedesktop.policykit.exec" && action.lookup("program") == "/bin/shutdown" && subject.isInGroup("wheel"))
return polkit.Result.YES;
});
polkit.addRule(function(action, subject)
{
if (action.id == "org.freedesktop.policykit.exec" && action.lookup("program") == "/bin/zzz" && subject.isInGroup("wheel"))
return polkit.Result.YES;
});
polkit.addRule(function(action, subject)
{
if (action.id.startsWith("org.freedesktop.udisks2.") && subject.isInGroup("storage"))
return polkit.Result.YES;
});
```
Or for the more lazy under us copy `void-desktop/config-files/polkit/00-polkit.rules` to `/etc/polkit-1/rules.d/`.
```
# cp -r void-desktop/config-files/polkit/00-polkit.rules /etc/polkit-1/rules.d/
```
### Login manager
To make it easier to log into the system, set up a login manager. For a minimal and wayland-compatible login manager use `greetd` with `gtkgreet`. Install them with:
```
# xbps-install -Sy greetd gtkgreet
```
### Window manager
There are many different window managers and desktop enviroments which can provide a decent experience. Wayfire is a functional, relativily lightweight and good looking wayland window manager and will be used for this install.
### Audio
### Essential applications
### Auto-mounting
### Printing
### Bluetooth
## Misc
### Virt-manager
### Wine
### Steam