diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..9d791b3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,32 @@ +name: build +on: + schedule: + - cron: 0 2 * * 6 + workflow_dispatch: +jobs: + build: + runs-on: ubuntu-latest + container: + image: docker.io/fedora:latest + # Fix SELinux for the built OSTree: https://github.com/coreos/rpm-ostree/issues/1943 + options: --privileged --security-opt label:disable + steps: + - name: Install dependencies + run: dnf install -y rpm-ostree selinux-policy selinux-policy-targeted policycoreutils + + - name: Clone repository + uses: actions/checkout@v2 + + - name: Build OSTree + run: ./compose.sh + + # upload-artifact@v2 has trouble with tens of thousands of files + - name: Create repo tarball + run: tar -czf /var/tmp/repo.tar.gz -C /var/tmp/repo . + + - name: Create repository artifact + uses: actions/upload-artifact@v2 + with: + name: repository + path: /var/tmp/repo.tar.gz + retention-days: 5 diff --git a/2015-RH-IT-Root-CA.pem b/2015-RH-IT-Root-CA.pem new file mode 100644 index 0000000..f306f00 --- /dev/null +++ b/2015-RH-IT-Root-CA.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENDCCAxygAwIBAgIJANunI0D662cnMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYD +VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExEDAOBgNVBAcMB1JhbGVp +Z2gxFjAUBgNVBAoMDVJlZCBIYXQsIEluYy4xEzARBgNVBAsMClJlZCBIYXQgSVQx +GzAZBgNVBAMMElJlZCBIYXQgSVQgUm9vdCBDQTEhMB8GCSqGSIb3DQEJARYSaW5m +b3NlY0ByZWRoYXQuY29tMCAXDTE1MDcwNjE3MzgxMVoYDzIwNTUwNjI2MTczODEx +WjCBpTELMAkGA1UEBhMCVVMxFzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMRAwDgYD +VQQHDAdSYWxlaWdoMRYwFAYDVQQKDA1SZWQgSGF0LCBJbmMuMRMwEQYDVQQLDApS +ZWQgSGF0IElUMRswGQYDVQQDDBJSZWQgSGF0IElUIFJvb3QgQ0ExITAfBgkqhkiG +9w0BCQEWEmluZm9zZWNAcmVkaGF0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBALQt9OJQh6GC5LT1g80qNh0u50BQ4sZ/yZ8aETxt+5lnPVX6MHKz +bfwI6nO1aMG6j9bSw+6UUyPBHP796+FT/pTS+K0wsDV7c9XvHoxJBJJU38cdLkI2 +c/i7lDqTfTcfLL2nyUBd2fQDk1B0fxrskhGIIZ3ifP1Ps4ltTkv8hRSob3VtNqSo +GxkKfvD2PKjTPxDPWYyruy9irLZioMffi3i/gCut0ZWtAyO3MVH5qWF/enKwgPES +X9po+TdCvRB/RUObBaM761EcrLSM1GqHNueSfqnho3AjLQ6dBnPWlo638Zm1VebK +BELyhkLWMSFkKwDmne0jQ02Y4g075vCKvCsCAwEAAaNjMGEwHQYDVR0OBBYEFH7R +4yC+UehIIPeuL8Zqw3PzbgcZMB8GA1UdIwQYMBaAFH7R4yC+UehIIPeuL8Zqw3Pz +bgcZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQBDNvD2Vm9sA5A9AlOJR8+en5Xz9hXcxJB5phxcZQ8jFoG04Vshvd0e +LEnUrMcfFgIZ4njMKTQCM4ZFUPAieyLx4f52HuDopp3e5JyIMfW+KFcNIpKwCsak +oSoKtIUOsUJK7qBVZxcrIyeQV2qcYOeZhtS5wBqIwOAhFwlCET7Ze58QHmS48slj +S9K0JAcps2xdnGu0fkzhSQxY8GPQNFTlr6rYld5+ID/hHeS76gq0YG3q6RLWRkHf +4eTkRjivAlExrFzKcljC4axKQlnOvVAzz+Gm32U0xPBF4ByePVxCJUHw1TsyTmel +RxNEp7yHoXcwn+fXna+t5JWh1gxUZty3 +-----END CERTIFICATE----- diff --git a/README.md b/README.md index 31f49b8..0340c1c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ +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. + +Original README for [workstation-ostree-config](https://pagure.io/workstation-ostree-config) +============================================= + For some background, see: - https://fedoraproject.org/wiki/Workstation/AtomicWorkstation diff --git a/compose.sh b/compose.sh new file mode 100755 index 0000000..01f2231 --- /dev/null +++ b/compose.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -eu +CACHE=/var/cache/ostree +REPO=/var/tmp/repo + +mkdir -p $CACHE + +if [ ! -d $REPO/objects ]; then + ostree --repo=$REPO init --mode=archive-z2 +fi + +rpm-ostree compose tree --unified-core --cachedir=$CACHE --repo=$REPO x1-gen7-sway-desktop.yaml diff --git a/comps-sync-exclude-list.yml b/comps-sync-exclude-list.yml index 4aa2ed1..cbfb2de 100644 --- a/comps-sync-exclude-list.yml +++ b/comps-sync-exclude-list.yml @@ -41,6 +41,7 @@ exclude_list: # Architecture specific packages - powerpc-utils - lsvpd + - s390utils-base base-x: # x86 specific packages. Added back by fedora-common-ostree.yaml - xorg-x11-drv-intel @@ -61,6 +62,7 @@ exclude_list: - dnf - dnf-plugins-core - deltarpm + - python3-dnf-plugin-system-upgrade # We use fedora-release-silverblue instead - fedora-release-workstation # Really not worth listing explicitly @@ -106,7 +108,6 @@ exclude_list: # filesystem tools, again priv container - symlinks - dosfstools - - ntfs-3g # Misc - dos2unix # Gnome specific @@ -169,7 +170,6 @@ desktop_exclude_list: - abrt-desktop - cups-pk-helper - dnfdragora - - plasma-pk-updates # Non-critical apps -> Flatpak - akregator - cagibi 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/fedora-34-updates.repo b/fedora-34-updates.repo new file mode 100644 index 0000000..e107df5 --- /dev/null +++ b/fedora-34-updates.repo @@ -0,0 +1,13 @@ +[fedora-34-updates] +name=Fedora 34 $basearch Updates +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f34&arch=$basearch +enabled=0 +gpgcheck=1 +metadata_expire=1d + +[fedora-34-updates-testing] +name=Fedora 34 $basearch Updates +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f34&arch=$basearch +enabled=0 +gpgcheck=1 +metadata_expire=1d diff --git a/fedora-34.repo b/fedora-34.repo new file mode 100644 index 0000000..18b9b5c --- /dev/null +++ b/fedora-34.repo @@ -0,0 +1,6 @@ +[fedora-34] +name=Fedora 34 $basearch +mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-34&arch=$basearch +enabled=0 +gpgcheck=1 +metadata_expire=1d diff --git a/fedora-base.yaml b/fedora-base.yaml index ed3c178..d0ed67e 100644 --- a/fedora-base.yaml +++ b/fedora-base.yaml @@ -1,5 +1,5 @@ include: fedora-common-ostree.yaml -ref: fedora/rawhide/${basearch}/base +ref: fedora/34/${basearch}/base rojig: name: fedora-base summary: "Fedora base image for alternative DE" @@ -12,4 +12,5 @@ packages: - xdg-desktop-portal-gtk repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/fedora-common-ostree-pkgs.yaml b/fedora-common-ostree-pkgs.yaml index f99a8fd..df5fcb3 100644 --- a/fedora-common-ostree-pkgs.yaml +++ b/fedora-common-ostree-pkgs.yaml @@ -28,6 +28,7 @@ packages: - chrony - cifs-utils - colord + - compsize - coreutils - cpio - cryptsetup @@ -41,8 +42,8 @@ packages: - dhcp-client - dnsmasq - e2fsprogs - - earlyoom - ethtool + - exfatprogs - fedora-bookmarks - fedora-chromium-config - fedora-repos-modular @@ -72,9 +73,9 @@ packages: - hostname - hplip - hunspell + - ibus-anthy - ibus-gtk3 - ibus-hangul - - ibus-kkc - ibus-libpinyin - ibus-libzhuyin - ibus-m17n @@ -114,6 +115,7 @@ packages: - libertas-sd8686-firmware - libertas-sd8787-firmware - libertas-usb8388-firmware + - libglvnd-gles - linux-firmware - logrotate - lohit-assamese-fonts @@ -139,6 +141,7 @@ packages: - nfs-utils - nss-altfiles - nss-mdns + - ntfs-3g - ntfsprogs - opensc - openssh-clients @@ -189,6 +192,7 @@ packages: - sudo - system-config-printer-udev - systemd + - systemd-oomd-defaults - systemd-udev - tar - thai-scalable-waree-fonts diff --git a/fedora-common-ostree.yaml b/fedora-common-ostree.yaml index e66c6cc..3818b66 100644 --- a/fedora-common-ostree.yaml +++ b/fedora-common-ostree.yaml @@ -1,14 +1,11 @@ -ref: fedora/rawhide/${basearch}/ostree-base +ref: fedora/34/${basearch}/ostree-base automatic_version_prefix: "34" mutate-os-release: "34" -include: fedora-common-ostree-pkgs.yaml - packages: - fedora-release-silverblue - git-core - - lvm2 - rpm-ostree # Container management - buildah @@ -17,23 +14,7 @@ packages: - toolbox # Flatpak support - flatpak - - flatpak-builder - xdg-desktop-portal - # HFS filesystem tools for Apple hardware - # See https://github.com/projectatomic/rpm-ostree/issues/1380 - - hfsplus-tools - # Bundle the minimal -devel packages needed to build a kernel. - # This is needed because we can't rely on layering to install these - # due to version conflicts with the base image. - - glibc-devel - - kernel-devel - - elfutils-libelf-devel - # Contains default ostree remote config to be used on client's - # system for fetching ostree update - - fedora-repos-ostree - # the archive repo for more reliable package layering - # https://github.com/coreos/fedora-coreos-tracker/issues/400 - - fedora-repos-archive selinux: true documentation: true @@ -42,6 +23,9 @@ etc-group-members: - wheel tmp-is-dir: true +# We can drop this when it's the rpm-ostree default +rpmdb: sqlite + postprocess-script: post.sh ignore-removed-users: @@ -77,13 +61,6 @@ packages-x86_64: - microcode_ctl - mcelog - thermald - - hyperv-daemons - - open-vm-tools-desktop - - virtualbox-guest-additions - - xorg-x11-drv-intel - - xorg-x11-drv-openchrome - - xorg-x11-drv-vesa - - xorg-x11-drv-vmware # Make sure the following are not pulled in when Recommended by other packages exclude-packages: diff --git a/fedora-deepin.yaml b/fedora-deepin.yaml index a6470e4..4808cd8 100644 --- a/fedora-deepin.yaml +++ b/fedora-deepin.yaml @@ -1,5 +1,5 @@ include: deepin-desktop-pkgs.yaml -ref: fedora/rawhide/${basearch}/deepin +ref: fedora/34/${basearch}/deepin rojig: name: fedora-deepin summary: "Fedora Deepin base image" @@ -9,4 +9,5 @@ packages: - gnome-software repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/fedora-kinoite.yaml b/fedora-kinoite.yaml index 25099f1..f3a54cf 100644 --- a/fedora-kinoite.yaml +++ b/fedora-kinoite.yaml @@ -1,5 +1,5 @@ include: kde-desktop-pkgs.yaml -ref: fedora/rawhide/${basearch}/kinoite +ref: fedora/34/${basearch}/kinoite rojig: name: fedora-kde summary: "Fedora Kinoite (KDE) base image" @@ -15,5 +15,11 @@ packages: # Provide an archive manager by default - ark +# Make sure the following are not pulled in when Recommended by other packages +exclude-packages: + - plasma-discover-offline-updates + - plasma-discover-packagekit + repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/fedora-lxqt.yaml b/fedora-lxqt.yaml index 21ecf2b..7106dfc 100644 --- a/fedora-lxqt.yaml +++ b/fedora-lxqt.yaml @@ -1,5 +1,5 @@ include: lxqt-desktop-pkgs.yaml -ref: fedora/rawhide/${basearch}/lxqt +ref: fedora/34/${basearch}/lxqt rojig: name: fedora-lxqt summary: "Fedora LXQt base image" @@ -10,4 +10,5 @@ packages: - xdg-desktop-portal-kde repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/fedora-mate.yaml b/fedora-mate.yaml index 6080915..948010d 100644 --- a/fedora-mate.yaml +++ b/fedora-mate.yaml @@ -1,5 +1,5 @@ include: mate-desktop-pkgs.yaml -ref: fedora/rawhide/${basearch}/mate +ref: fedora/34/${basearch}/mate rojig: name: fedora-mate summary: "Fedora Mate base image" @@ -13,4 +13,5 @@ exclude-packages: - python3-unbound repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/fedora-pantheon.yaml b/fedora-pantheon.yaml index 31327f4..455de5b 100644 --- a/fedora-pantheon.yaml +++ b/fedora-pantheon.yaml @@ -1,5 +1,5 @@ include: pantheon-desktop-pkgs.yaml -ref: fedora/rawhide/${basearch}/pantheon +ref: fedora/34/${basearch}/pantheon rojig: name: fedora-pantheon summary: "Fedora Pantheon base image" @@ -7,4 +7,5 @@ rojig: packages: repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/fedora-rawhide.repo b/fedora-rawhide.repo deleted file mode 100644 index 5881c94..0000000 --- a/fedora-rawhide.repo +++ /dev/null @@ -1,7 +0,0 @@ -[fedora-rawhide] -name=Fedora rawhide $basearch -#baseurl=https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/$basearch/os/ -mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=rawhide&arch=$basearch -enabled=0 -gpgcheck=0 -metadata_expire=1d diff --git a/fedora-silverblue.yaml b/fedora-silverblue.yaml index f7f810a..9f4980a 100644 --- a/fedora-silverblue.yaml +++ b/fedora-silverblue.yaml @@ -1,5 +1,5 @@ include: gnome-desktop-pkgs.yaml -ref: fedora/rawhide/${basearch}/silverblue +ref: fedora/34/${basearch}/silverblue rojig: name: fedora-silverblue summary: "Fedora Silverblue base image" @@ -14,6 +14,10 @@ packages: # Include evince-thumbnailer otherwise PDF thumbnails won't work in Nautilus # https://github.com/fedora-silverblue/issue-tracker/issues/98 - evince-thumbnailer + # Include totem-video-thumbnailer for video thumbnailing in Nautilus + # https://pagure.io/fedora-workstation/issue/168 + - totem-video-thumbnailer repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/fedora-xfce.yaml b/fedora-xfce.yaml index 4655808..5da1f1b 100644 --- a/fedora-xfce.yaml +++ b/fedora-xfce.yaml @@ -1,5 +1,5 @@ include: xfce-desktop-pkgs.yaml -ref: fedora/rawhide/${basearch}/xfce +ref: fedora/34/${basearch}/xfce rojig: name: fedora-xfce summary: "Fedora XFCE base image" @@ -8,4 +8,5 @@ packages: # Portals for Flatpak - xdg-desktop-portal-gtk repos: - - fedora-rawhide + - fedora-34 + - fedora-34-updates diff --git a/github-fetch.sh b/github-fetch.sh new file mode 100755 index 0000000..ebf972e --- /dev/null +++ b/github-fetch.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# Download built GitHub OSTree repository artifact and unpack it into a plain directory +set -eux + +# download latest repo build +REPO_FINAL="$(dirname $0)/pitti-workstation" +REPO="${REPO_FINAL}.new" + +CURL="curl -u token:$(cat ~/.config/github-token) --show-error --fail" +RESPONSE=$($CURL --silent https://api.github.com/repos/martinpitt/ostree-pitti-workstation/actions/artifacts) +ZIP=$(echo "$RESPONSE" | jq --raw-output '.artifacts | map(select(.name == "repository"))[0].archive_download_url') +echo "INFO: Downloading $ZIP ..." +[ -e /tmp/repository.zip ] || $CURL -L -o /tmp/repository.zip "$ZIP" +rm -rf "$REPO" +mkdir -p "$REPO" +unzip -p /tmp/repository.zip | tar -xzC "$REPO" +rm /tmp/repository.zip +[ ! -e "$REPO_FINAL" ] || mv "${REPO_FINAL}" "${REPO_FINAL}.old" +mv "$REPO" "$REPO_FINAL" +rm -rf "${REPO_FINAL}.old" diff --git a/gnome-desktop-pkgs.yaml b/gnome-desktop-pkgs.yaml index fd31ff5..4a2901b 100644 --- a/gnome-desktop-pkgs.yaml +++ b/gnome-desktop-pkgs.yaml @@ -25,7 +25,6 @@ packages: - gnome-color-manager - gnome-control-center - gnome-disk-utility - - gnome-getting-started-docs - gnome-initial-setup - gnome-remote-desktop - gnome-session-wayland-session diff --git a/kde-desktop-pkgs.yaml b/kde-desktop-pkgs.yaml index 2a1afb6..57d38db 100644 --- a/kde-desktop-pkgs.yaml +++ b/kde-desktop-pkgs.yaml @@ -5,12 +5,10 @@ packages: - bluedevil - breeze-icon-theme - dolphin - - earlyoom - firewall-config - glibc-all-langpacks - gnome-keyring-pam - initial-setup-gui - - kcm_systemd - kde-gtk-config - kde-print-manager - kde-settings-pulseaudio @@ -29,7 +27,6 @@ packages: - konsole5 - kscreen - kscreenlocker - - ksysguard - kwalletmanager5 - kwin - pam-kwallet @@ -39,9 +36,12 @@ packages: - plasma-desktop - plasma-desktop-doc - plasma-discover + - plasma-discover-notifier - plasma-drkonqi - plasma-nm - plasma-pa + - plasma-systemmonitor + - plasma-thunderbolt - plasma-workspace - plasma-workspace-geolocation - plasma-workspace-xorg diff --git a/mate-desktop-pkgs.yaml b/mate-desktop-pkgs.yaml index 1f49c68..cadcaad 100644 --- a/mate-desktop-pkgs.yaml +++ b/mate-desktop-pkgs.yaml @@ -23,10 +23,10 @@ packages: - dconf-editor - engrampa - eom - - f33-backgrounds-base - - f33-backgrounds-extras-base - - f33-backgrounds-extras-mate - - f33-backgrounds-mate + - f34-backgrounds-base + - f34-backgrounds-extras-base + - f34-backgrounds-extras-mate + - f34-backgrounds-mate - firefox - firewall-config - gnome-epub-thumbnailer @@ -94,3 +94,5 @@ packages: - system-config-printer-applet - usermode-gtk - xdg-user-dirs-gtk + - xmodmap + - xrdb diff --git a/pantheon-desktop-pkgs.yaml b/pantheon-desktop-pkgs.yaml index dd97c4d..cc4df6e 100644 --- a/pantheon-desktop-pkgs.yaml +++ b/pantheon-desktop-pkgs.yaml @@ -11,10 +11,12 @@ packages: - elementary-greeter - elementary-icon-theme - elementary-music + - elementary-notifications - elementary-photos - elementary-print - elementary-screenshot-tool - elementary-shortcut-overlay + - elementary-sideload - elementary-sound-theme - elementary-terminal - elementary-theme @@ -36,7 +38,6 @@ packages: - switchboard-plug-mouse-touchpad - switchboard-plug-networking - switchboard-plug-notifications - - switchboard-plug-onlineaccounts - switchboard-plug-pantheon-shell - switchboard-plug-printers - switchboard-plug-sharing diff --git a/post.sh b/post.sh index 39db86f..03b03a8 100755 --- a/post.sh +++ b/post.sh @@ -6,13 +6,16 @@ set -xeuo pipefail # https://github.com/projectatomic/rpm-ostree/issues/1542#issuecomment-419684977 -for x in /etc/yum.repos.d/*modular.repo; do - sed -i -e 's,enabled=[01],enabled=0,' ${x} -done +# for x in /etc/yum.repos.d/*modular.repo; do +# sed -i -e 's,enabled=[01],enabled=0,' ${x} +# done + +ls -al /etc/yum.repos.d/ # Work around https://bugzilla.redhat.com/show_bug.cgi?id=1265295 # Also note the create-new-then-rename dance for rofiles-fuse compat if ! grep -q '^Storage=persistent' /etc/systemd/journald.conf; then + echo "Journal missing Storage=persistent" (cat /etc/systemd/journald.conf && echo 'Storage=persistent') > /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/rpmfusion.repo b/rpmfusion.repo new file mode 100644 index 0000000..e826798 --- /dev/null +++ b/rpmfusion.repo @@ -0,0 +1,18 @@ +[rpmfusion-free] +name=RPM Fusion for Fedora $releasever - Free +#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/$basearch/os/ +metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-34&arch=$basearch +enabled=1 +metadata_expire=14d +type=rpm-md +gpgcheck=0 + +[rpmfusion-free-updates] +name=RPM Fusion for Fedora $releasever - Free - Updates +#baseurl=http://download1.rpmfusion.org/free/fedora/updates/$releasever/$basearch/ +metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-updates-released-34&arch=$basearch +enabled=1 +enabled_metadata=1 +type=rpm-md +gpgcheck=0 +repo_gpgcheck=0 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"] diff --git a/xfce-desktop-pkgs.yaml b/xfce-desktop-pkgs.yaml index e473a98..def43f1 100644 --- a/xfce-desktop-pkgs.yaml +++ b/xfce-desktop-pkgs.yaml @@ -45,5 +45,4 @@ packages: - xfconf - xfdesktop - xfwm4 - - xfwm4-theme-nodoka - xfwm4-themes