From 74d1b0827e64f9eb00dcb050cf530693d8ecfb9c Mon Sep 17 00:00:00 2001 From: Vladan Popovic Date: Thu, 17 Jun 2021 00:49:38 +0200 Subject: [PATCH] X1 Carbon Gen 7 Sway Desktop --- README.md | 22 +-- compose.sh | 2 +- config/i3status-rust/config.toml | 78 ++++++++ config/modprobe.d/i2c_i801-blacklist.conf | 1 + config/modprobe.d/i915.conf | 4 + config/sway-service.desktop | 6 + config/sway-service.sh | 7 + config/swaylock/config | 8 + config/systemd/firefox.service | 10 + config/systemd/mako.service | 15 ++ config/systemd/nm-applet.service | 14 ++ config/systemd/sway-session.target | 6 + config/systemd/sway.service | 14 ++ config/systemd/swayidle.service | 13 ++ config/systemd/swaylock.service | 11 ++ config/systemd/wayland-session.target | 16 ++ config/waybar/config | 95 ++++++++++ config/waybar/style.css | 213 ++++++++++++++++++++++ pitti-desktop.yaml | 147 --------------- pitti-post.sh | 101 ---------- post.sh | 10 +- x1-gen7-sway-desktop.yaml | 156 ++++++++++++++++ 22 files changed, 677 insertions(+), 272 deletions(-) create mode 100644 config/i3status-rust/config.toml create mode 100644 config/modprobe.d/i2c_i801-blacklist.conf create mode 100644 config/modprobe.d/i915.conf create mode 100644 config/sway-service.desktop create mode 100755 config/sway-service.sh create mode 100644 config/swaylock/config create mode 100644 config/systemd/firefox.service create mode 100644 config/systemd/mako.service create mode 100644 config/systemd/nm-applet.service create mode 100644 config/systemd/sway-session.target create mode 100644 config/systemd/sway.service create mode 100644 config/systemd/swayidle.service create mode 100644 config/systemd/swaylock.service create mode 100644 config/systemd/wayland-session.target create mode 100644 config/waybar/config create mode 100644 config/waybar/style.css delete mode 100644 pitti-desktop.yaml delete mode 100755 pitti-post.sh create mode 100644 x1-gen7-sway-desktop.yaml diff --git a/README.md b/README.md index b0eb74d..0340c1c 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,9 @@ -Martin Pitt's desktop -===================== +Vladan's X1 Carbon Gen 7 Sway Desktop config +============================================ This is an [rpm-ostree](https://coreos.github.io/rpm-ostree/) based minimal [Fedora](https://getfedora.org/) developer desktop with the [sway window manager](https://swaywm.org/) and [podman](https://podman.io/)/[toolbox](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/) for doing development and running less common graphical applications. -It gets [automatically built](.github/workflows/build.yml) every week and [published to my server](https://piware.de/ostree/pitti-workstation/). - -To use it from an existing OSTree based system like [Fedora CoreOS](https://getfedora.org/coreos) or [Fedora Silverblue](https://docs.fedoraproject.org/en-US/fedora-silverblue/), add my server URL as new remote and rebase your tree to it: - -```sh -sudo ostree remote add --no-gpg-verify piware https://piware.de/ostree/pitti-workstation/ -sudo rpm-ostree rebase piware:pitti-desktop -``` - -After that, you can install weekly updates with - -``` -sudo rpm-ostree upgrade -``` - -If anything goes wrong, you can go back to the previous version with `sudo rpm-ostree rollback`. - - Original README for [workstation-ostree-config](https://pagure.io/workstation-ostree-config) ============================================= diff --git a/compose.sh b/compose.sh index 101da94..01f2231 100755 --- a/compose.sh +++ b/compose.sh @@ -9,4 +9,4 @@ if [ ! -d $REPO/objects ]; then ostree --repo=$REPO init --mode=archive-z2 fi -rpm-ostree compose tree --unified-core --cachedir=$CACHE --repo=$REPO pitti-desktop.yaml +rpm-ostree compose tree --unified-core --cachedir=$CACHE --repo=$REPO x1-gen7-sway-desktop.yaml diff --git a/config/i3status-rust/config.toml b/config/i3status-rust/config.toml new file mode 100644 index 0000000..4681a21 --- /dev/null +++ b/config/i3status-rust/config.toml @@ -0,0 +1,78 @@ +# when using 3istsatus-rs with swaybar +# https://github.com/greshake/i3status-rust +# + +theme = "solarized-dark" +icons = "awesome5" + +[[block]] +block = "temperature" +collapsed = false +interval = 10 +format = "gpu {max}°" +chip = "amdgpu-pci-*" + +[[block]] +block = "temperature" +collapsed = false +interval = 10 +format = "cpu {max}°" +chip = "k10temp-pci-*" + +[[block]] +block = "temperature" +collapsed = true +interval = 10 +format = "nvme: {max}°" +chip = "nvme-pci-*" + +[[block]] +block = "temperature" +collapsed = true +interval = 10 +format = "wifi: {max}°" +chip = "iwlwifi_1-*" + +[[block]] +block = "net" +device = "wlan0" +format = "{ssid} {signal_strength} {ip} {speed_down} {graph_down}" +interval = 5 + +[[block]] +block = "disk_space" +path = "/" +alias = "/" +info_type = "available" +unit = "GB" +interval = 20 +warning = 20.0 +alert = 10.0 + +[[block]] +block = "memory" +display_type = "memory" +format_mem = "{Mup}%" +format_swap = "{SUp}%" + +[[block]] +block = "cpu" +interval = 1 + +[[block]] +block = "load" +interval = 1 +format = "{1m}" + +[[block]] +block = "sound" + +[[block]] +block = "keyboard_layout" +driver = "sway" +sway_kb_identifier = "6127:24585:Lite-On_Technology_Corp._ThinkPad_USB_Keyboard_with_TrackPoint" + +[[block]] +block = "time" +interval = 60 +format = "%a %d/%m %R" diff --git a/config/modprobe.d/i2c_i801-blacklist.conf b/config/modprobe.d/i2c_i801-blacklist.conf new file mode 100644 index 0000000..70f1f9b --- /dev/null +++ b/config/modprobe.d/i2c_i801-blacklist.conf @@ -0,0 +1 @@ +blacklist i2c_i801 diff --git a/config/modprobe.d/i915.conf b/config/modprobe.d/i915.conf new file mode 100644 index 0000000..39114f5 --- /dev/null +++ b/config/modprobe.d/i915.conf @@ -0,0 +1,4 @@ +options i915 enable_fbc=1 +options i915 enable_guc=2 +options i915 nuclear_pageflip=Y +options i915 enable_dc=2 diff --git a/config/sway-service.desktop b/config/sway-service.desktop new file mode 100644 index 0000000..63f18af --- /dev/null +++ b/config/sway-service.desktop @@ -0,0 +1,6 @@ +# /usr/share/wayland-sessions/sway-service.desktop +[Desktop Entry] +Name=Sway Service +Comment=i3-compatible Wayland compositor as a systemd service +Exec=sway-service.sh +Type=Application diff --git a/config/sway-service.sh b/config/sway-service.sh new file mode 100755 index 0000000..8b0de34 --- /dev/null +++ b/config/sway-service.sh @@ -0,0 +1,7 @@ +#! /bin/sh +# /usr/local/bin/sway-service.sh - needs to be 0755 + +# first import environment variables from the login manager +systemctl --user import-environment +# then start the service +exec systemctl --wait --user start sway.service \ No newline at end of file diff --git a/config/swaylock/config b/config/swaylock/config new file mode 100644 index 0000000..acb5cb4 --- /dev/null +++ b/config/swaylock/config @@ -0,0 +1,8 @@ +# ~/.config/swayidle/config +before-sleep 'systemctl --user start swaylock' +lock 'systemctl --user start swaylock' +unlock 'swaymsg "output * dpms on"' +after-resume 'swaymsg "output * dpms on"' +timeout 300 'systemctl --user start swaylock' +timeout 600 'swaymsg "output * dpms off"' +resume 'swaymsg "output * dpms on"' diff --git a/config/systemd/firefox.service b/config/systemd/firefox.service new file mode 100644 index 0000000..55bf229 --- /dev/null +++ b/config/systemd/firefox.service @@ -0,0 +1,10 @@ +[Unit] +Description=Firefox nightly +PartOf=graphical-session.target + +[Service] +Type=exec +ExecStart=/opt/firefox/firefox + +[Install] +WantedBy=graphical-session.target diff --git a/config/systemd/mako.service b/config/systemd/mako.service new file mode 100644 index 0000000..bd2fac2 --- /dev/null +++ b/config/systemd/mako.service @@ -0,0 +1,15 @@ +[Unit] +Description=Lightweight Wayland notification daemon +Documentation=man:mako(1) +PartOf=sway-session.target +After=sway-session.target + +[Service] +Type=dbus +BusName=org.freedesktop.Notifications +ExecCondition=/bin/sh -c '[ -n "$WAYLAND_DISPLAY" ]' +ExecStart=/usr/bin/mako +ExecReload=/usr/bin/makoctl reload + +[Install] +WantedBy=sway-session.target diff --git a/config/systemd/nm-applet.service b/config/systemd/nm-applet.service new file mode 100644 index 0000000..3e35f1c --- /dev/null +++ b/config/systemd/nm-applet.service @@ -0,0 +1,14 @@ +[Unit] +Description=network monitor and control GUI applet +Documentation=man:nm-applet(1) +PartOf=wayland-session.target +After=wayland-session.target + +# requires nm-applet compiled with -D appindicator=yes +[Service] +Type=dbus +BusName=org.freedesktop.network-manager-applet +ExecStart=/usr/bin/nm-applet --indicator + +[Install] +WantedBy=wayland-session.target diff --git a/config/systemd/sway-session.target b/config/systemd/sway-session.target new file mode 100644 index 0000000..87fe41d --- /dev/null +++ b/config/systemd/sway-session.target @@ -0,0 +1,6 @@ +[Unit] +Description=sway compositor session +Documentation=man:systemd.special(7) +BindsTo=graphical-session.target wayland-session.target +Wants=graphical-session-pre.target +After=graphical-session-pre.target diff --git a/config/systemd/sway.service b/config/systemd/sway.service new file mode 100644 index 0000000..ea21f05 --- /dev/null +++ b/config/systemd/sway.service @@ -0,0 +1,14 @@ +[Unit] +Description=sway - i3-compatible Wayland compositor +Documentation=man:sway(5) +Before=graphical-session.service +Wants=graphical-session-pre.service +After=graphical-session-pre.service + +[Service] +Type=simple +EnvironmentFile=-%h/.config/sway/env +ExecStart=/usr/bin/sway +Restart=on-failure +RestartSec=1 +TimeoutStopSec=10 diff --git a/config/systemd/swayidle.service b/config/systemd/swayidle.service new file mode 100644 index 0000000..d235a7a --- /dev/null +++ b/config/systemd/swayidle.service @@ -0,0 +1,13 @@ +[Unit] +Description=Idle manager for Wayland +Documentation=man:swayidle(1) +Documentation=https://github.com/gdamjan/swayidle - fork with sd-notify and autolock +PartOf=graphical-session.target +After=sway-session.target + +[Service] +Type=notify +ExecStart=/usr/bin/swayidle -w + +[Install] +WantedBy=sway-session.target diff --git a/config/systemd/swaylock.service b/config/systemd/swaylock.service new file mode 100644 index 0000000..88c7a10 --- /dev/null +++ b/config/systemd/swaylock.service @@ -0,0 +1,11 @@ +[Unit] +Description=swaylock - Screen locker for Wayland +Documentation=man:swaylock(1) + +[Service] +Type=forking +ExecStart=/usr/bin/swaylock -f +Restart=on-failure + +[Install] +WantedBy=sway-session.target diff --git a/config/systemd/wayland-session.target b/config/systemd/wayland-session.target new file mode 100644 index 0000000..d0b2888 --- /dev/null +++ b/config/systemd/wayland-session.target @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: LGPL-2.1+ +# +# This file is inspired from systemd's `graphical-session.target` +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Current wayland user session +Documentation=man:systemd.special(7) +Requires=basic.target +RefuseManualStart=yes +StopWhenUnneeded=yes +BindsTo=graphical-session.target diff --git a/config/waybar/config b/config/waybar/config new file mode 100644 index 0000000..8b81d45 --- /dev/null +++ b/config/waybar/config @@ -0,0 +1,95 @@ +{ + "layer": "top", + "position": "bottom", + "height": 24, + "modules-left": ["sway/workspaces", "idle_inhibitor", "sway/mode"], + "modules-center": ["sway/window"], + "modules-right": [ "pulseaudio", "backlight", "network", "cpu", "memory", "battery#bat0", "battery#bat1", + "tray", "sway/language", "clock" ], + "sway/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "format": "{index} {name}" + }, + "sway/mode": { + "format": "{}" + }, + "sway/language": { + "format": "{}", + "max-length": 50 + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + "tooltip-format": "{:%A\n%d %B %Y\n%H:%M}", + "format": "{:%a %d %b %H:%M}", + "format-alt": "{:%H:%M}" + }, + "cpu": { + "format": "{usage:2}% " + }, + "memory": { + "format": "{}% " + }, + "battery#bat0": { + "bat": "BAT0", + "name": "BAT0", + "states": { + "warning": 20, + "critical": 10 + }, + "format": "{capacity}% {icon}", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat1": { + "bat": "BAT1", + "name": "BAT1", + "states": { + "warning": 20, + "critical": 10 + }, + "format": "{capacity}% {icon}", + "format-icons": ["", "", "", "", ""] + }, + "network": { + "interval": 1, + "max-width": 50, + // "interface": "wlp2s0", // (Optional) To force the use of this interface + "format-wifi": "", + "format-ethernet": "{bandwidthUpBits} {bandwidthDownBits} ", + "format-disconnected": "⚠", + "tooltip-format-wifi": " {essid}: {frequency}Mhz ({signalStrength}%)\n{bandwidthUpBits}\n{bandwidthDownBits}", + "tooltip-format-ethernet": " {ifname}: {ipaddr}/{cidr}", + "tooltip-format-disconnected": "⚠ Disconnected" + }, + "pulseaudio": { + //"scroll-step": 1, + "format": "{volume}% {icon}", + "format-bluetooth": "{volume}% {icon}", + "format-muted": "", + "format-icons": { + "headphones": "", + "handsfree": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", ""] + }, + "on-click": "pavucontrol" + }, + "backlight": { + "device": "intel_backlight", + "format": "{percent}% {icon}", + "format-icons": ["", ""] + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + } +} diff --git a/config/waybar/style.css b/config/waybar/style.css new file mode 100644 index 0000000..f9db8d2 --- /dev/null +++ b/config/waybar/style.css @@ -0,0 +1,213 @@ +* { + border: none; + border-radius: 0; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; + min-height: 0; +} + +window#waybar { + background-color: rgba(43, 48, 59, 0.5); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; + border-bottom: 3px solid transparent; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); + box-shadow: inherit; + border-bottom: 3px solid #ffffff; +} + +#workspaces button.focused { + background-color: #64727D; + border-bottom: 3px solid #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + border-bottom: 3px solid #ffffff; +} + +#cpu, +#memory, +#temperature, +#backlight, +#network, +#pulseaudio, +#custom-media, +#tray, +#mode, +#idle_inhibitor { + padding: 0 10px; + margin: 0 4px; + color: #ffffff; +} + +#clock { + padding: 0 10px; + color: #ffffff; + background-color: #64727D; +} + +#battery .BAT0 { + margin-left: 9px; +} +#battery .BAT1 { + margin-right: 9px; +} +#battery { + padding: 0 10px; + background-color: #ffffff; + color: #000000; +} + +#battery.charging { + color: #ffffff; + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + background-color: #000000; +} + +#cpu { + background-color: #2ecc71; + color: #000000; +} + +#memory { + background-color: #9b59b6; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + background-color: #2980b9; +} + +#network.disconnected { + background-color: #f53c3c; +} + +#pulseaudio { + background-color: #f1c40f; + color: #000000; +} + +#pulseaudio.muted { + background-color: #90b1b1; + color: #2a5c45; +} + +#custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + background-color: #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + background-color: #2980b9; +} + +#idle_inhibitor { + background-color: #2d3436; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + +#mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} +#custom-layout { + background-color: #ecf0f1; + color: #2d3436; + min-width: 2em; +} + diff --git a/pitti-desktop.yaml b/pitti-desktop.yaml deleted file mode 100644 index d8aae02..0000000 --- a/pitti-desktop.yaml +++ /dev/null @@ -1,147 +0,0 @@ -include: fedora-common-ostree.yaml - -ref: pitti-desktop -rojig: - name: pitti-desktop - summary: "Pitti Desktop" - license: MIT - -repos: - - fedora-34 - - fedora-34-updates - - fedora-34-updates-testing - - rpmfusion-free - - rpmfusion-free-updates - -packages: -# hardware/drivers - - kernel - - kernel-modules-extra - - iwl6000g2a-firmware - - iwl7260-firmware - - alsa-sof-firmware - - NetworkManager-wifi - - NetworkManager-openvpn-gnome - - sane-backends - - sane-backends-drivers-scanners - - powertop - - iwd - - wpa_supplicant - - udisks2-lvm2 - - opensc -# basic system - - acl - - attr - - basesystem - - cryptsetup - - dnsmasq - - fedora-workstation-backgrounds - - filesystem - - glibc-langpack-de - - glibc-langpack-en - - hostname - - iproute - - kbd - - nss-altfiles - - pciutils - # don't care, but rpm-ostree build fails otherwise - - selinux-policy-targeted - - sudo - - usbutils -# shell tools and development - - bc - - gnupg2 - - fpaste - - lsof - - man-db - - mtr - - tree - - bzip2 - - zip - - unzip - - vim-enhanced - - ranger - - bash-completion - - fish - - qemu-system-x86-core - - qemu-ui-sdl - - qemu-img - - openvpn - - mutt - - nmap-ncat - - isync - - weechat - - duplicity - - openssh-server - - systemd-container - - git - - patchutils - - make - - strace - - wget - - w3m - - cockpit-system - - cockpit-ws - - syncthing - - krb5-workstation - -# desktop plumbing/apps - - dejavu-sans-fonts - - dejavu-serif-fonts - - dejavu-sans-mono-fonts - - fontawesome-fonts - - google-noto-emoji-color-fonts - - - gvfs-mtp - - pulseaudio-utils - - alsa-plugins-pulseaudio - - gstreamer1-plugins-good - - gstreamer1-plugins-ugly - - gstreamer1-libav - # for wf-recorder - - libavdevice - - xdg-desktop-portal-gtk - - - pavucontrol - - pcmanfm - - simple-scan - - nm-connection-editor - - eog - - evince - - rhythmbox - - gnome-keyring - - pinentry-gnome3 - - lxpolkit - - lxterminal - - gnome-disk-utility - - gtimelog - - rofimoji - -# sway/wayland desktop - - sway - - swayidle - - swaylock - - kanshi - - mako - - waybar - - slurp - - grim - - xorg-x11-server-Xwayland - - firefox-wayland - - wofi - - brightnessctl - - wl-clipboard - -exclude-packages: - # recommended by sway - - alacritty - - brltty - - glibc-all-langpacks - - xdg-desktop-portal-wlr - # recommended by gtimelog - - yelp - -add-files: - - ["2015-RH-IT-Root-CA.pem", "/etc/pki/ca-trust/source/anchors/2015-RH-IT-Root-CA.pem"] - -postprocess-script: pitti-post.sh diff --git a/pitti-post.sh b/pitti-post.sh deleted file mode 100755 index 1a4032c..0000000 --- a/pitti-post.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env bash -set -xeuo pipefail - -# Enable SysRQ -echo 'kernel.sysrq = 1' > /usr/lib/sysctl.d/90-sysrq.conf - -# power saving -echo 'blacklist e1000e' > /usr/lib/modprobe.d/blacklist-local.conf - -# NetworkManager config -cat < /usr/lib/NetworkManager/conf.d/local.conf -[main] -plugins= - -[device] -#wifi.backend=iwd -EOF -#ln -sfn ../iwd.service /usr/lib/systemd/system/multi-user.target.wants/iwd.service - -ln -sfn /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf - -# set up PAM for systemd-homed (https://bugzilla.redhat.com/show_bug.cgi?id=1806949) -patch /etc/pam.d/system-auth < /etc/systemd.journald.conf.new mv /etc/systemd.journald.conf{.new,} fi @@ -22,6 +25,7 @@ fi # mid-transaction, which never applies to rpm-ostree. This is structured as a # loop/glob to avoid hardcoding (or trying to match) the architecture. for x in /usr/sbin/glibc_post_upgrade.*; do + echo "Disabling srcipt ${x}" if test -f ${x}; then ln -srf /usr/bin/true ${x} fi diff --git a/x1-gen7-sway-desktop.yaml b/x1-gen7-sway-desktop.yaml new file mode 100644 index 0000000..9066bad --- /dev/null +++ b/x1-gen7-sway-desktop.yaml @@ -0,0 +1,156 @@ +include: fedora-common-ostree.yaml + +ref: x1-gen7-sway-desktop +rojig: + name: x1-gen7-sway-desktop + summary: "Thinkpad X1 Gen 7 Sway Desktop" + license: MIT + +repos: + - fedora-34 + - fedora-34-updates + - fedora-34-updates-testing + - rpmfusion-free + - rpmfusion-free-updates + +packages: +# hardware / drivers + - alsa-sof-firmware + - fwupd + - iwl6000g2a-firmware + - iwl7260-firmware + - kernel + - kernel-modules-extra + - libva-intel-driver + - libva-intel-hybrid-driver + - opensc + - udisks2-lvm2 +# basic system + - acl + - attr + - basesystem + - coreutils + - coreutils-common + - cpio + - cryptsetup + - dnsmasq + - filesystem + - glibc-langpack-en + - glibc-langpack-mk + - hostname + - kbd + - nss-altfiles + - passwd + - sddm + - selinux-policy-targeted + - sudo + - systemd + - usbutils + - util-linux +# diagnostic / utils + - bind-utils + - htop + - iotop + - iproute + - lm_sensors + - lsof + - mtr + - net-tools + - nmap-ncat + - pciutils + - powertop +# alternative modern rust apps + - bat + - ripgrep +# wifi + - iwd + - NetworkManager + - network-manager-applet + - wpa_supplicant +# shell tools and development + - alacritty + - bash-completion + - bc + - bzip2 + - emacs + - git + - gnupg2 + - make + - man-db + - neovim + - openssh-server + - patchutils + - squashfs-tools + - strace + - systemd-container + - tree + - unzip + - vim-enhanced + - w3m + - wget + - zip + - zram-generator +# fonts + - dejavu-sans-fonts + - dejavu-serif-fonts + - dejavu-sans-mono-fonts + - fontawesome-fonts + - google-noto-emoji-color-fonts +# audio / video + - alsa-plugins-pulseaudio + - ffmpeg + - gstreamer1-libav + - gstreamer1-plugins-good + - gstreamer1-plugins-ugly + - gvfs-mtp + - libavdevice + - libva + - libva-utils + - pavucontrol + - pulseaudio-utils + - vlc +# misc + - okular + - redshift + - xdg-desktop-portal-gtk +# sway / wayland desktop + - brightnessctl + - firefox-wayland + - grim + - i3status-rs + - kanshi + - mako + - slurp + - sway + - swayidle + - swaylock + - waybar + - wl-clipboard + - wofi +# virtualization + - libguestfs-tools + - libvirt-daemon-config-network + - libvirt-daemon-kvm + - python-libguestfs + - qemu-img + - qemu-kvm + - qemu-system-x86-core + - qemu-ui-sdl + - virt-install + - virt-manager + - virt-top + - virt-viewer + +add-files: + - ["config/systemd/firefox.service", "/etc/systemd/user/firefox.service"] + - ["config/systemd/mako.service", "/etc/systemd/user/mako.service"] + - ["config/systemd/nm-applet.service", "/etc/systemd/user/nm-applet.service"] + - ["config/systemd/swayidle.service", "/etc/systemd/user/swayidle.service"] + - ["config/systemd/swaylock.service", "/etc/systemd/user/swaylock.service"] + - ["config/systemd/sway.service", "/etc/systemd/user/sway.service"] + - ["config/systemd/sway-session.target", "/etc/systemd/user/sway-session.target"] + - ["config/systemd/wayland-session.target", "/etc/systemd/user/wayland-session.target"] + - ["config/sway-service.desktop", "/usr/share/wayland-sessions/sway-service.desktop"] + - ["config/sway-service.sh", "/usr/bin/sway-service.sh"] + - ["config/modprobe.d/i915.conf", "/etc/modprobe.d/i915.conf"] + - ["config/modprobe.d/i2c_i801-blacklist.conf", "/etc/modprobe.d/i2c_i801-blacklist.conf"]