mirror of
https://github.com/tumillanino/miasma-os.git
synced 2026-04-11 07:15:31 +00:00
switching from cachy to bazzite kernel
This commit is contained in:
1
docs/solarpowered-main/.github/CODEOWNERS
vendored
1
docs/solarpowered-main/.github/CODEOWNERS
vendored
@@ -1 +0,0 @@
|
||||
* @xynydev @fiftydinar
|
||||
@@ -1,6 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
@@ -1,58 +0,0 @@
|
||||
name: Build solarpowered-ex
|
||||
on:
|
||||
schedule:
|
||||
- cron: "30 2 * * 1,5" # build at 2:30 AM UTC every Monday & Friday
|
||||
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/build-solarpowered-ex.yml"
|
||||
- "recipes/images/solarpowered-ex.yml"
|
||||
- "recipes/packages/solarpowered-ex.yml"
|
||||
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
bluebuild:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
recipe:
|
||||
- images/solarpowered-ex.yml
|
||||
steps:
|
||||
- name: Optimize build times
|
||||
shell: bash
|
||||
run: |
|
||||
echo 'set man-db/auto-update false' | sudo debconf-communicate
|
||||
sudo dpkg-reconfigure man-db
|
||||
sudo rm -f /var/lib/man-db/auto-update
|
||||
sudo sed -i 's/^update_initramfs=.*/update_initramfs=no/' /etc/initramfs-tools/update-initramfs.conf
|
||||
|
||||
- name: Build solarpowered-ex
|
||||
uses: blue-build/github-action@v1.11
|
||||
with:
|
||||
recipe: ${{ matrix.recipe }}
|
||||
build_chunked_oci: true
|
||||
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
|
||||
registry_token: ${{ github.token }}
|
||||
pr_event_number: ${{ github.event.number }}
|
||||
maximize_build_space: true
|
||||
retry_push_count: 3
|
||||
build_opts: --rechunk-clear-plan
|
||||
|
||||
# generate_release:
|
||||
# name: Generate Release
|
||||
# permissions:
|
||||
# contents: write
|
||||
# needs: [bluebuild]
|
||||
# if: github.event_name != 'pull_request'
|
||||
# secrets: inherit
|
||||
# uses: ./.github/workflows/release.yml
|
||||
@@ -1,58 +0,0 @@
|
||||
name: Build solarpowered
|
||||
on:
|
||||
schedule:
|
||||
- cron: "00 2 * * 1,5"
|
||||
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/build-solarpowered.yml"
|
||||
- "recipes/images/solarpowered.yml"
|
||||
- "recipes/packages/solarpowered.yml"
|
||||
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
bluebuild:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
recipe:
|
||||
- images/solarpowered.yml
|
||||
steps:
|
||||
- name: Optimize build times
|
||||
shell: bash
|
||||
run: |
|
||||
echo 'set man-db/auto-update false' | sudo debconf-communicate
|
||||
sudo dpkg-reconfigure man-db
|
||||
sudo rm -f /var/lib/man-db/auto-update
|
||||
sudo sed -i 's/^update_initramfs=.*/update_initramfs=no/' /etc/initramfs-tools/update-initramfs.conf
|
||||
|
||||
- name: Build solarpowered
|
||||
uses: blue-build/github-action@v1.11
|
||||
with:
|
||||
recipe: ${{ matrix.recipe }}
|
||||
build_chunked_oci: true
|
||||
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
|
||||
registry_token: ${{ github.token }}
|
||||
pr_event_number: ${{ github.event.number }}
|
||||
maximize_build_space: true
|
||||
retry_push_count: 3
|
||||
build_opts: --rechunk-clear-plan
|
||||
|
||||
# generate_release:
|
||||
# name: Generate Release
|
||||
# permissions:
|
||||
# contents: write
|
||||
# needs: [bluebuild]
|
||||
# if: github.event_name != 'pull_request'
|
||||
# secrets: inherit
|
||||
# uses: ./.github/workflows/release.yml
|
||||
@@ -1,23 +0,0 @@
|
||||
name: Clean up images
|
||||
on:
|
||||
schedule:
|
||||
- cron: "00 0 * * 0"
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
||||
|
||||
jobs:
|
||||
delete-older-than-30:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
packages: write
|
||||
steps:
|
||||
- name: Clean up images more than 30 days
|
||||
uses: dataaxiom/ghcr-cleanup-action@v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
packages: solarpowered,solarpowered-ex
|
||||
older-than: 30 days
|
||||
delete-untagged: true
|
||||
# dry-run: true
|
||||
@@ -1,49 +0,0 @@
|
||||
on:
|
||||
workflow_call:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
handwritten:
|
||||
description: 'Small changelog about changes in this build:'
|
||||
target:
|
||||
description: 'Release branch (e.g., testing). Defaults to branch name.'
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
name: Generate Release
|
||||
jobs:
|
||||
generate-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout last 500 commits (for <commits> to work)
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
with:
|
||||
fetch-depth: 500
|
||||
|
||||
- name: Get target
|
||||
id: get-target
|
||||
run: |
|
||||
TARGET="${{ github.event.inputs.target || github.ref }}"
|
||||
TARGET="${TARGET##*/}"
|
||||
if [ "$TARGET" = "main" ]; then
|
||||
TARGET="latest"
|
||||
fi
|
||||
echo "target=$TARGET" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Generate Release Text
|
||||
id: generate-release
|
||||
run: |
|
||||
python3 ./.github/workflows/changelog.py \
|
||||
"${{ steps.get-target.outputs.target }}" \
|
||||
./output.env ./changelog.md --workdir . --handwritten "${{ github.event.inputs.handwritten }}"
|
||||
source ./output.env
|
||||
echo "title=${TITLE}" >> $GITHUB_OUTPUT
|
||||
echo "tag=${TAG}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2
|
||||
with:
|
||||
name: ${{ steps.generate-release.outputs.title }}
|
||||
tag_name: ${{ steps.generate-release.outputs.tag }}
|
||||
body_path: ./changelog.md
|
||||
make_latest: ${{ steps.get-target.outputs.target == 'stable' }}
|
||||
prerelease: ${{ steps.get-target.outputs.target != 'stable' }}
|
||||
16
docs/solarpowered-main/.gitignore
vendored
16
docs/solarpowered-main/.gitignore
vendored
@@ -1,16 +0,0 @@
|
||||
cosign.key
|
||||
cosign.private
|
||||
/Containerfile
|
||||
/Containerfile-tmp
|
||||
/tmp.yml
|
||||
recipes/tmp.yml
|
||||
recipes/recipe-tmp.yml
|
||||
*tmp.*
|
||||
.bluebuild-scripts_*
|
||||
/.bluebuild-scripts_*
|
||||
qcow2
|
||||
manifest*
|
||||
config.toml
|
||||
Containerfile*
|
||||
./containerfile
|
||||
*.img
|
||||
@@ -1,92 +0,0 @@
|
||||
@default:
|
||||
just --list
|
||||
|
||||
set shell := ["bash", "-c"]
|
||||
RCPDIR := "./recipes/images"
|
||||
CTFS := "./containerfiles"
|
||||
VERSION := "localbuild"
|
||||
USRN := "local"
|
||||
PSWD := "local"
|
||||
|
||||
# Build image-name as named in ./recipes/images
|
||||
build *ARGS:
|
||||
#!/usr/bin/env bash
|
||||
if [[ -e Containerfile."{{ ARGS }}" ]]; then
|
||||
rm Containerfile."{{ ARGS }}"
|
||||
fi
|
||||
bluebuild generate -o Containerfile."{{ ARGS }}" "{{ RCPDIR }}"/"{{ ARGS }}".yml --skip-validation
|
||||
podman build -t "{{ ARGS }}":"{{ VERSION }}" --file Containerfile."{{ ARGS }}" --squash . 2>&1 | tee "{{ RCPDIR }}"/"{{ ARGS }}".log
|
||||
rm Containerfile."{{ ARGS }}"
|
||||
rm -rf ./.bluebuild-*
|
||||
|
||||
# Build a Containerfile stored within ./containerfiles/argument/ with logs
|
||||
ctf *ARGS:
|
||||
podman build -f "{{ CTFS }}"/"{{ ARGS }}"/Containerfile -t "{{ ARGS }}":{{VERSION}} . 2>&1 | tee "{{ CTFS }}"/"{{ ARGS }}"/"{{ ARGS }}".log
|
||||
|
||||
# Build, create, and purge archive of image-name as named in ./recipes/images. Slower, but useful for testing recipes cleanly
|
||||
targz *ARGS:
|
||||
bluebuild build --skip-validation -s -c zstd -a ./ "{{ RCPDIR }}"/"{{ ARGS }}".yml
|
||||
rm -f ./tmp.tar.gz
|
||||
rm -rf ./.bluebuild-scripts_*
|
||||
|
||||
# Save Podman container to a .gz file for inspection
|
||||
save *ARGS:
|
||||
podman save {{ ARGS }}:{{ VERSION }} | gzip > {{ ARGS }}.gz
|
||||
|
||||
# Build image-name as named in ./recipes/images and export a VM-ready QCOW2 file in ./qcow2
|
||||
qcow2 *ARGS: config
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
if [[ ! -e {{ RCPDIR }}/{{ ARGS }}.yml ]]; then
|
||||
sudo podman build -t "{{ ARGS }}":"{{ VERSION }}" --file {{ CTFS }}/{{ ARGS }}/Containerfile . 2>&1 | tee {{ CTFS }}/{{ ARGS }}/{{ ARGS }}.log
|
||||
sudo chown 1000:1000 {{ CTFS }}/{{ ARGS }}/{{ ARGS }}.log
|
||||
else
|
||||
bluebuild generate -o Containerfile."{{ ARGS }}" "{{ RCPDIR }}"/"{{ ARGS }}".yml
|
||||
sudo podman build -t "{{ ARGS }}":"{{ VERSION }}" --file Containerfile."{{ ARGS }}"
|
||||
fi
|
||||
sudo podman run --rm -it --privileged \
|
||||
--pull=newer \
|
||||
--security-opt label=type:unconfined_t \
|
||||
-v /var/lib/containers/storage:/var/lib/containers/storage \
|
||||
-v .:/output \
|
||||
-v ./config.toml:/config.toml:ro \
|
||||
quay.io/centos-bootc/bootc-image-builder:latest \
|
||||
--rootfs btrfs \
|
||||
--use-librepo=True \
|
||||
--chown 1000:1000 \
|
||||
localhost/"{{ ARGS }}":"{{ VERSION }}"
|
||||
if [[ ! -e {{ RCPDIR }}/{{ ARGS }}.yml ]]; then
|
||||
sudo rm -rf ./.bluebuild*
|
||||
rm Containerfile."{{ ARGS }}"
|
||||
fi
|
||||
sudo rm ./manifest*
|
||||
|
||||
# Completely clean user & system-level Podman image registry & ./
|
||||
scrub:
|
||||
#!/usr/bin/env bash
|
||||
set -uo pipefail
|
||||
rm -rf ./qcow2 ./.bluebuild-scripts_*
|
||||
rm -f ./tmp.tar.gz ./config.toml
|
||||
podman rmi -f $(podman images -f "dangling=true" -q)
|
||||
sudo rm -f manifest-qcow2.json
|
||||
sudo podman rmi -f $(sudo podman images -f "dangling=true" -q)
|
||||
|
||||
# Generate bootc-image-builder config
|
||||
config:
|
||||
#!/usr/bin/env bash
|
||||
if [[ ! -e ./config.toml ]]; then
|
||||
echo "Generating config.toml..."
|
||||
cat <<EOF >> ./config.toml
|
||||
[[customizations.user]]
|
||||
name = "{{ USRN }}"
|
||||
password = "{{ PSWD }}"
|
||||
groups = ["wheel"]
|
||||
EOF
|
||||
echo "config.toml generated."
|
||||
else
|
||||
echo "config.toml already exists."
|
||||
fi
|
||||
|
||||
# Restore SELinux context to /var/lib/containers in case rootful Podman perms get messed up
|
||||
restorecon:
|
||||
sudo restorecon -R -F /var/lib/containers
|
||||
@@ -1,201 +0,0 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -1,86 +0,0 @@
|
||||
# <center>☀️ solarpowered ☀️</center>
|
||||
|
||||
`solarpowered` and `solarpowered-ex` are custom images based on [Fedora Silverblue](https://quay.io/repository/fedora/fedora-silverblue?tab=tags) using [BlueBuild](https://github.com/blue-build/template). I started this project as a learning and hobby project to familiarize myself with containers, Linux, and GitHub.
|
||||
|
||||
Both images are fully functional for daily operations.
|
||||
|
||||
Also check out [atomic-t480s](https://github.com/askpng/atomic-t480s), much simpler custom image project I started to support Lenovo Thinkpad T480s users.
|
||||
|
||||
I named this project `solarpowered` because I like Gawain from Fate/Extra & Fate/Grand Order.
|
||||
|
||||
# Highlights
|
||||
|
||||
- Multimedia codecs from `fedora-multimedia` repo (and `intel-media-driver` from RPM Fusion)
|
||||
- Distrobox, Just, and VSCodium
|
||||
- Waydroid and ADB
|
||||
- Nautilus addons
|
||||
- More vanilla GNOME Experience
|
||||
- Zen Browser instead of Firefox
|
||||
- Colloid, MoreWaita, Tela, and Qogir icon themes
|
||||
- Nerd Fonts Symbols and a small selection of fonts from Google Fonts
|
||||
- Several sound & icon themes & fonts installed OOTB
|
||||
|
||||
## solarpowered - made to support Lenovo T480/s devices
|
||||
|
||||
Includes the following tools for maximum Lenovo T480/s functionality with 0 layering:
|
||||
- `igt-gpu-tools` for monitoring iGPU use
|
||||
- [python-validity](https://copr.fedorainfracloud.org/coprs/sneexy/python-validity/) (sneexy)
|
||||
- [throttled](https://copr.fedorainfracloud.org/coprs/abn/throttled/) (abn)
|
||||
- TLP
|
||||
- `zcfan`
|
||||
|
||||
This image is shipped with [kernel-blu](https://copr.fedorainfracloud.org/coprs/sentry/kernel-blu/) with `v4l2loopback` kernel module
|
||||
|
||||
It is highly recommended to run `append solarpowered-setup` upon installation. This installs TLP-UI Flatpak, configrues necessary kernel arguments & local `initramfs` regeneration, and enables `python-validity` and `zcfan`. It is recommended to reboot afterwards.
|
||||
|
||||
> NOTE: This does *not* configure `throttled`, as undervolt stable values differ between machines. For further information about undervolting, refer to the official documentation on `throttled`.
|
||||
|
||||
## solarpowered-ex - for Ryzen/AMD computers
|
||||
|
||||
Includes the following tools:
|
||||
- Gamescope, Lutris, MangoHud and experimental implementation of Steam Gaming Mode
|
||||
- Beta/Unstable version of Sunshine for game streaming
|
||||
- Ramalama and ROCM packages
|
||||
- [LACT-libadwaita](https://copr.fedorainfracloud.org/coprs/ilyaz/LACT/)
|
||||
|
||||
This image is shipped with [kernel-cachyos-lto](https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos/) with its built-in `v4l2loopback`, `evdi` and `displaylink`, as well as `zenergy` for Ryzen power stats reading.
|
||||
|
||||
# Installation
|
||||
|
||||
You can install by rebasing from Silverblue or generating an ISO file yourself. If you decide to give this a go, and would like to provide feedback and/or suggestions, feel free to open a new issue.
|
||||
|
||||
## Rebase
|
||||
To rebase from a Silverblue installation, follow the steps below.
|
||||
|
||||
### solarpowered
|
||||
|
||||
1. Rebase to the unsigned image to get the proper signing keys + policies installed and reboot automatically:
|
||||
```
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/askpng/solarpowered:latest --reboot
|
||||
```
|
||||
2. Rebase to the signed image and reboot automatically:
|
||||
```
|
||||
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/askpng/solarpowered:latest --reboot
|
||||
```
|
||||
|
||||
### solarpowered-ex
|
||||
|
||||
1. Rebase to the unsigned image to get the proper signing keys + policies installed and reboot automatically:
|
||||
```
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/askpng/solarpowered-ex:latest --reboot
|
||||
```
|
||||
2. Rebase to the signed image and reboot automatically:
|
||||
```
|
||||
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/askpng/solarpowered-ex:latest --reboot
|
||||
```
|
||||
|
||||
## Verification
|
||||
These images are signed with [Sigstore](https://www.sigstore.dev/)'s [cosign](https://github.com/sigstore/cosign).
|
||||
|
||||
### Verify `cosign.pub`
|
||||
|
||||
Download the `cosign.pub` file from this repo and run the following command within the same directory:
|
||||
|
||||
```bash
|
||||
cosign verify --key cosign.pub ghcr.io/askpng/solarpowered
|
||||
```
|
||||
@@ -1,43 +0,0 @@
|
||||
name: Build autosolarpowered
|
||||
on:
|
||||
schedule:
|
||||
- cron: "00 18 * * 1,5" # build at 17:30 every Monday & Friday
|
||||
|
||||
push: # build on push
|
||||
paths: # build on push of the following files
|
||||
- "recipes/images/autosolarpowered.yml" # solarpowered recipe
|
||||
- "recipes/images/autosolarpowered-ex.yml" # solarpowered-ex recipe
|
||||
|
||||
pull_request: # allow PRs triggering builds
|
||||
workflow_dispatch: # allow manually triggering builds
|
||||
concurrency:
|
||||
# only run one build at a time
|
||||
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
bluebuild:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false # stop GH from cancelling all matrix builds if one fails
|
||||
matrix:
|
||||
recipe:
|
||||
- images/autosolarpowered.yml
|
||||
- images/autosolarpowered-ex.yml
|
||||
steps:
|
||||
# the build is fully handled by the reusable github action
|
||||
- name: Build Custom Image
|
||||
uses: blue-build/github-action@v1.8
|
||||
with:
|
||||
recipe: ${{ matrix.recipe }}
|
||||
rechunk: true
|
||||
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
|
||||
registry_token: ${{ github.token }}
|
||||
pr_event_number: ${{ github.event.number }}
|
||||
|
||||
# enabled by default, disable if your image is small and you want faster builds
|
||||
maximize_build_space: true
|
||||
@@ -1,37 +0,0 @@
|
||||
name: Build bootc images
|
||||
on:
|
||||
schedule:
|
||||
- cron: "00 18 * * 4" # build at 18:00 UTC every Thursday
|
||||
|
||||
push:
|
||||
paths:
|
||||
- "recipes/base/base-bootc.yml" # base of bootc images
|
||||
- "recipes/solarpowered-bootc.yml" # solarpowered-bootc recipe
|
||||
- "recipes/solarpowered-ex-bootc.yml" # solarpowered-bootc recipe
|
||||
|
||||
pull_request: # allow PRs triggering builds
|
||||
workflow_dispatch: # allow manually triggering builds
|
||||
jobs:
|
||||
bluebuild:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false # stop GH from cancelling all matrix builds if one fails
|
||||
matrix:
|
||||
recipe:
|
||||
- solarpowered-bootc.yml
|
||||
- solarpowered-ex-bootc.yml
|
||||
steps:
|
||||
# the build is fully handled by the reusable github action
|
||||
- name: Build Custom Image
|
||||
uses: blue-build/github-action@v1.8
|
||||
with:
|
||||
recipe: ${{ matrix.recipe }}
|
||||
rechunk: true
|
||||
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
|
||||
registry_token: ${{ github.token }}
|
||||
pr_event_number: ${{ github.event.number }}
|
||||
@@ -1,34 +0,0 @@
|
||||
name: Build solarpowered-raw
|
||||
on:
|
||||
schedule:
|
||||
- cron: "00 17 * * 1,3,5" # build at 17:00 UTC every Monday, Wednesday & Friday
|
||||
|
||||
push:
|
||||
paths: # trigger build only if solarpowered-ex.yml is updated
|
||||
- "recipes/solarpowered-raw.yml"
|
||||
|
||||
pull_request: # allow PRs triggering builds
|
||||
workflow_dispatch: # allow manually triggering builds
|
||||
jobs:
|
||||
bluebuild:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false # stop GH from cancelling all matrix builds if one fails
|
||||
matrix:
|
||||
recipe:
|
||||
- solarpowered-raw.yml
|
||||
steps:
|
||||
# the build is fully handled by the reusable github action
|
||||
- name: Build Custom Image
|
||||
uses: blue-build/github-action@v1.8
|
||||
with:
|
||||
recipe: ${{ matrix.recipe }}
|
||||
rechunk: true
|
||||
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
|
||||
registry_token: ${{ github.token }}
|
||||
pr_event_number: ${{ github.event.number }}
|
||||
@@ -1,43 +0,0 @@
|
||||
name: Build solarizzed
|
||||
on:
|
||||
schedule:
|
||||
- cron: "00 6 * * 1,5" # build at 6 AM UTC every Monday & Friday
|
||||
|
||||
push: # build on push
|
||||
paths: # build on push of the following files
|
||||
# - "recipes/images/solarizzed.yml" # solarizzed recipe
|
||||
- "recipes/images/solarizzed-gnome.yml" # solarizzed recipe
|
||||
|
||||
pull_request: # allow PRs triggering builds
|
||||
workflow_dispatch: # allow manually triggering builds
|
||||
concurrency:
|
||||
# only run one build at a time
|
||||
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
bluebuild:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false # stop GH from cancelling all matrix builds if one fails
|
||||
matrix:
|
||||
recipe:
|
||||
# - images/solarizzed.yml
|
||||
- images/solarizzed-gnome.yml
|
||||
steps:
|
||||
# the build is fully handled by the reusable github action
|
||||
- name: Build Custom Image
|
||||
uses: blue-build/github-action@v1.9
|
||||
with:
|
||||
recipe: ${{ matrix.recipe }}
|
||||
rechunk: true
|
||||
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
|
||||
registry_token: ${{ github.token }}
|
||||
pr_event_number: ${{ github.event.number }}
|
||||
|
||||
# enabled by default, disable if your image is small and you want faster builds
|
||||
maximize_build_space: true
|
||||
@@ -1,43 +0,0 @@
|
||||
name: Build solarpowered-rawhide
|
||||
on:
|
||||
# schedule:
|
||||
# - cron: "00 18 * * 1,5" # build at 17:30 every Monday & Friday
|
||||
|
||||
push: # build on push
|
||||
paths: # build on push of the following files
|
||||
- "recipes/images/solarpowered-rawhide.yml" # solarpowered recipe
|
||||
- "recipes/images/solarpowered-ex-rawhide.yml" # solarpowered-ex recipe
|
||||
|
||||
pull_request: # allow PRs triggering builds
|
||||
workflow_dispatch: # allow manually triggering builds
|
||||
concurrency:
|
||||
# only run one build at a time
|
||||
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
bluebuild:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false # stop GH from cancelling all matrix builds if one fails
|
||||
matrix:
|
||||
recipe:
|
||||
- images/solarpowered-rawhide.yml
|
||||
- images/solarpowered-ex-rawhide.yml
|
||||
steps:
|
||||
# the build is fully handled by the reusable github action
|
||||
- name: Build Custom Image
|
||||
uses: blue-build/github-action@v1.8
|
||||
with:
|
||||
recipe: ${{ matrix.recipe }}
|
||||
rechunk: true
|
||||
cosign_private_key: ${{ secrets.SIGNING_SECRET }}
|
||||
registry_token: ${{ github.token }}
|
||||
pr_event_number: ${{ github.event.number }}
|
||||
|
||||
# enabled by default, disable if your image is small and you want faster builds
|
||||
maximize_build_space: true
|
||||
@@ -1,3 +0,0 @@
|
||||
# archives
|
||||
|
||||
This folder is for placing archived recipes/files. For reference only.
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ouex pipefail
|
||||
|
||||
OS_VERSION=$(rpm -E %fedora)
|
||||
|
||||
VER=$(basename $(curl -Ls -o /dev/null -w %{url_effective} https://github.com/bazzite-org/kernel-bazzite/releases/latest))
|
||||
|
||||
dnf -y remove kernel-* && rm -drf /usr/lib/modules/*
|
||||
|
||||
echo 'Installing Bazzite kernel...'
|
||||
dnf install -y \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-common-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-core-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-devel-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-devel-matched-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-akmods-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-core-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-extra-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-extra-matched-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-internal-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-tools-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-tools-libs-$VER.fc$OS_VERSION.x86_64.rpm
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# find latest version of cosign
|
||||
LATEST_VERSION=$(curl https://api.github.com/repos/sigstore/cosign/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")
|
||||
|
||||
# download & install cosign
|
||||
rpm-ostree install https://github.com/sigstore/cosign/releases/latest/download/cosign-${LATEST_VERSION}-1.x86_64.rpm
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
sudo sed -i 's/enabled=1/enabled=0/' \
|
||||
/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:phracek:PyCharm.repo \
|
||||
/etc/yum.repos.d/google-chrome.repo \
|
||||
/etc/yum.repos.d/rpmfusion-nonfree-nvidia-driver.repo \
|
||||
/etc/yum.repos.d/rpmfusion-nonfree-steam.repo
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Replace multimedia packages with ones from negativo17-multimedia-repo
|
||||
echo 'Replacing multimedia packages to packages from negativo17-multimedia-repo'
|
||||
rpm-ostree override replace --experimental --from repo='fedora-multimedia' \
|
||||
libheif \
|
||||
libva \
|
||||
libva-intel-media-driver \
|
||||
mesa-dri-drivers \
|
||||
mesa-filesystem \
|
||||
mesa-libEGL \
|
||||
mesa-libGL \
|
||||
mesa-libgbm \
|
||||
mesa-libglapi \
|
||||
mesa-libxatracker \
|
||||
mesa-va-drivers \
|
||||
mesa-vulkan-drivers
|
||||
|
||||
rpm-ostree override replace --from repo='fedora' --experimental --remove=OpenCL-ICD-Loader ocl-icd || true
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
wget https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-porn/hosts -O /usr/etc/hosts
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
GITHUB_URL="https://github.com/bikass/kora"
|
||||
|
||||
if [ -z "$GITHUB_URL" ]; then
|
||||
echo "Error: GITHUB_URL is not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_NAME=$(basename "$GITHUB_URL" .git)
|
||||
CLONE_DIR="/tmp/clone/$REPO_NAME"
|
||||
|
||||
echo "Preparing directory for cloning..."
|
||||
mkdir -p "$CLONE_DIR"
|
||||
cd "$CLONE_DIR"
|
||||
echo "Directory created."
|
||||
|
||||
git clone "$GITHUB_URL"
|
||||
|
||||
echo "Repo cloned. Copying files..."
|
||||
|
||||
if [ -d "./$REPO_NAME/kora" ]; then
|
||||
echo "Installing kora icon set..."
|
||||
cp -r "./$REPO_NAME/kora" /usr/share/icons/
|
||||
fi
|
||||
if [ -d "./$REPO_NAME/kora-light" ]; then
|
||||
echo "Installing kora-light icon set..."
|
||||
cp -r "./$REPO_NAME/kora-light" /usr/share/icons/
|
||||
fi
|
||||
if [ -d "./$REPO_NAME/kora-light-panel" ]; then
|
||||
echo "Installing kora-light-panel icon set..."
|
||||
cp -r "./$REPO_NAME/kora-light-panel" /usr/share/icons/
|
||||
fi
|
||||
if [ -d "./$REPO_NAME/kora-pgrey" ]; then
|
||||
echo "Installing kora-pgrey icon set..."
|
||||
cp -r "./$REPO_NAME/kora-pgrey" /usr/share/icons/
|
||||
fi
|
||||
|
||||
echo "Folders copied. Cleaning up!"
|
||||
rm -drf "$CLONE_DIR"
|
||||
echo "Cloned repo deleted."
|
||||
|
||||
echo "Script finished. Theme installation complete."
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# find latest version of luminance
|
||||
LATEST_VERSION=$(curl https://api.github.com/repos/sidevesh/Luminance/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")
|
||||
|
||||
# download & install latest version of luminance
|
||||
rpm-ostree install https://github.com/sidevesh/Luminance/releases/latest/download/luminance-${LATEST_VERSION}.rpm
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Tell this script to exit if there are any errors.
|
||||
# You should have this in every custom script, to ensure that your completed
|
||||
# builds actually ran successfully without any errors!
|
||||
set -oue pipefail
|
||||
|
||||
# Download udev rules file
|
||||
wget https://openrgb.org/releases/release_0.9/60-openrgb.rules
|
||||
|
||||
# Move udev rules file to udev rules directory
|
||||
mv 60-openrgb.rules /usr/lib/udev/rules.d
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# find latest version of windscribe stable RPM
|
||||
LATEST_VERSION=$(curl https://api.github.com/repos/Windscribe/Desktop-App/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")
|
||||
|
||||
# download & install latest version of windscribe stable RPM
|
||||
rpm-ostree install https://github.com/Windscribe/Desktop-App/releases/latest/download/windscribe_${LATEST_VERSION}_x86_64_fedora.rpm
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
echo 'Preparing directory for cloning...'
|
||||
|
||||
mkdir -p /tmp/clone/ChromeOS-kde
|
||||
cd /tmp/clone/ChromeOS-kde
|
||||
echo 'Directory created.'
|
||||
|
||||
git clone https://github.com/vinceliuice/ChromeOS-kde.git
|
||||
echo 'Repo cloned. Running install script...'
|
||||
|
||||
ChromeOS-kde/install.sh
|
||||
echo 'Install script finished. Removing cloned repo...'
|
||||
|
||||
rm -r ChromeOS-kde/
|
||||
echo 'Cloned repo deleted.'
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
GIT=https://github.com/pkgforge-dev/Citron-AppImage
|
||||
APPDIR=/usr/libexec/appimages
|
||||
GITOWNER=$(echo "$GIT" | sed -E 's#https://github.com/([^/]+)/([^/]+)(\.git)*#\1#')
|
||||
GITREPO=$(echo "$GIT" | sed -E 's#https://github.com/([^/]+)/([^/]+)(\.git)*#\2#')
|
||||
APPNAME=citron
|
||||
|
||||
echo 'Downloading latest version of $APPNAME from $GITOWNER/$GITREPO'.
|
||||
|
||||
URL="https://github.com/$GITOWNER/$GITREPO/releases/download/v$(curl https://api.github.com/repos/$GITOWNER/$GITREPO/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")/Citron-v$(curl https://api.github.com/repos/$GITOWNER/$GITREPO/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")-anylinux-x86_64_v3.AppImage"
|
||||
|
||||
echo "Downloading $URL as $APPDIR/$APPNAME.AppImage"
|
||||
|
||||
mkdir -p $APPDIR
|
||||
|
||||
curl -L "$URL" -o "$APPDIR/$APPNAME.AppImage"
|
||||
|
||||
echo "Download finished! Making $APPNAME executable..."
|
||||
chmod +x $APPDIR/$APPNAME.AppImage
|
||||
|
||||
echo "Creating symlink to /usr/bin/$APPNAME..."
|
||||
ln -sf $APPDIR/$APPNAME.AppImage /usr/bin/$APPNAME
|
||||
|
||||
echo "/usr/bin/$APPNAME symlink created!"
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
echo 'Preparing directory for cloning...'
|
||||
|
||||
mkdir -p /tmp/clone
|
||||
cd /tmp/clone/
|
||||
echo 'Directory created.'
|
||||
|
||||
git clone https://github.com/vinceliuice/Layan-kde.git
|
||||
echo 'Repo cloned. Running install script...'
|
||||
|
||||
Layan-kde/install.sh
|
||||
echo 'Install script finished. Removing cloned repo...'
|
||||
|
||||
rm -r Layan-kde
|
||||
echo 'Cloned repo deleted.'
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
echo 'Preparing directory for cloning...'
|
||||
|
||||
mkdir -p /tmp/clone/
|
||||
cd /tmp/clone/
|
||||
echo 'Directory created.'
|
||||
|
||||
git clone https://github.com/Notify-ctrl/Plasma-Overdose.git
|
||||
echo 'Repo cloned. Copying files...'
|
||||
|
||||
# theme
|
||||
cp -r ./Plasma-Overdose/aurorae/ /usr/share/aurorae/themes
|
||||
# cursors
|
||||
cp -r ./Plasma-Overdose/cursors /usr/share/icons/CursorsOverdose/
|
||||
# colorscheme
|
||||
cp -r ./Plasma-Overdose/colorschemes/* /usr/share/color-schemes/
|
||||
# global theme
|
||||
cp -r ./Plasma-Overdose/plasma /usr/share/
|
||||
echo 'Folders copied. Cleaning up!'
|
||||
|
||||
rm -drf Plasma-Overdose/
|
||||
echo 'Cloned repo deleted.'
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
GIT=https://github.com/Ryubing/Ryujinx
|
||||
APPDIR=/usr/libexec/appimages
|
||||
GITOWNER=$(echo "$GIT" | sed -E 's#https://github.com/([^/]+)/([^/]+)(\.git)*#\1#')
|
||||
GITREPO=$(echo "$GIT" | sed -E 's#https://github.com/([^/]+)/([^/]+)(\.git)*#\2#')
|
||||
APPNAME=$GITREPO
|
||||
|
||||
echo 'Downloading latest version of $APPNAME from $GITOWNER/$GITREPO'.
|
||||
|
||||
URL="https://github.com/$GITOWNER/$GITREPO/releases/download/$(curl https://api.github.com/repos/$GITOWNER/$GITREPO/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")/ryujinx-$(curl https://api.github.com/repos/$GITOWNER/$GITREPO/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")-x64.AppImage"
|
||||
|
||||
echo "Downloading $URL as $APPDIR/$APPNAME.AppImage"
|
||||
|
||||
mkdir -p $APPDIR
|
||||
|
||||
curl -L "$URL" -o "$APPDIR/$APPNAME.AppImage"
|
||||
|
||||
echo "Download finished! Making $APPNAME executable..."
|
||||
chmod +x $APPDIR/$APPNAME.AppImage
|
||||
|
||||
echo "Creating symlink to /usr/bin/$APPNAME..."
|
||||
ln -sf $APPDIR/$APPNAME.AppImage /usr/bin/$APPNAME
|
||||
|
||||
echo "/usr/bin/$APPNAME symlink created!"
|
||||
@@ -1,28 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
GIT=https://github.com/SteamGridDB/steam-rom-manager
|
||||
APPDIR=/usr/libexec/appimages
|
||||
GITOWNER=$(echo "$GIT" | sed -E 's#https://github.com/([^/]+)/([^/]+)(\.git)*#\1#')
|
||||
GITREPO=$(echo "$GIT" | sed -E 's#https://github.com/([^/]+)/([^/]+)(\.git)*#\2#')
|
||||
# APPNAME=$GITREPO
|
||||
APPNAME=Steam-ROM-Manager # Manually entered because their release name != git repo name
|
||||
|
||||
echo 'Downloading latest version of $APPNAME from $GITOWNER/$GITREPO'.
|
||||
|
||||
URL="https://github.com/$GITOWNER/$GITREPO/releases/download/v$(curl https://api.github.com/repos/$GITOWNER/$GITREPO/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")/$APPNAME-$(curl https://api.github.com/repos/$GITOWNER/$GITREPO/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ").AppImage"
|
||||
|
||||
echo "Downloading $URL as $APPDIR/$APPNAME.AppImage"
|
||||
|
||||
mkdir -p $APPDIR
|
||||
|
||||
curl -L "$URL" -o "$APPDIR/$APPNAME.AppImage"
|
||||
|
||||
echo "Download finished! Making $APPNAME executable..."
|
||||
chmod +x $APPDIR/$APPNAME.AppImage
|
||||
|
||||
echo "Creating symlink to /usr/bin/$APPNAME..."
|
||||
ln -sf $APPDIR/$APPNAME.AppImage /usr/bin/$APPNAME
|
||||
|
||||
echo "/usr/bin/$APPNAME symlink created!"
|
||||
@@ -1,65 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
|
||||
# enter image name here
|
||||
name: solarpowered-ex
|
||||
# enter image description here
|
||||
description: Custom image optimized for AMD PCs on top of Silverblue
|
||||
|
||||
# defines base image // not to be changed
|
||||
base-image: ghcr.io/ublue-os/silverblue-main
|
||||
# base image is locked to latest // not to be changed
|
||||
image-version: 41
|
||||
|
||||
modules:
|
||||
# contains repo files for codium, configs and services that will be shared across images
|
||||
- from-file: shared/files.yml
|
||||
|
||||
# kernel selection. select ONE of the following from-file line
|
||||
# or uncomment all three to opt to use stock fedora kernel
|
||||
# - from-file: kernels/blu.yml
|
||||
- from-file: kernels/cachy.yml
|
||||
# - from-file: kernels/tkg.yml
|
||||
|
||||
# removes firefox, unused fonts, undesired gnome packages & other utilities
|
||||
- from-file: packages/core-discard.yml
|
||||
|
||||
# installs necessities such as GUI apps, CLI apps, themes, & replaces mutter packages with patched version
|
||||
- from-file: packages/core.yml
|
||||
|
||||
# image-specific packages module
|
||||
# systemd services related to image-specific packages
|
||||
# may also be placed within this module for simplicity.
|
||||
- from-file: packages/solarpowered-ex.yml
|
||||
|
||||
# disables all repos except for fedora and fedora-updates
|
||||
- from-file: shared/disable-repos.yml
|
||||
|
||||
# installs icons packs & nautilus extensions
|
||||
- from-file: shared/script.yml
|
||||
|
||||
# installs shared fonts
|
||||
- from-file: shared/fonts.yml
|
||||
|
||||
# contains gnome extensions that will be shared across all images
|
||||
# does not contain several other extensions that must be installed locally
|
||||
- from-file: shared/gnome-extensions.yml
|
||||
|
||||
# configures gschema for extensions, desktop, touchpad, and WM prefs
|
||||
# - from-file: shared/gschema-overrides.yml
|
||||
|
||||
# disables NetworkManager-online-service, flatpak update services,
|
||||
# and enables topgrade updater
|
||||
- from-file: shared/systemd.yml
|
||||
|
||||
# image-specific files module
|
||||
# copies files into /
|
||||
- type: files
|
||||
files:
|
||||
# create a folder under files/ with the image name
|
||||
# and place directories and files appropriately.
|
||||
# source entry should be the same name as the image name.
|
||||
- source: solarpowered-ex # image name, or folder as named under files/
|
||||
destination: /
|
||||
|
||||
- type: signing
|
||||
@@ -1,65 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
|
||||
# enter image name here
|
||||
name: solarpowered
|
||||
# enter image description here
|
||||
description: Custom image optimized for AMD PCs on top of Silverblue
|
||||
|
||||
# defines base image // not to be changed
|
||||
base-image: ghcr.io/ublue-os/silverblue-main
|
||||
# base image is locked to latest // not to be changed
|
||||
image-version: 41
|
||||
|
||||
modules:
|
||||
# contains repo files for codium, configs and services that will be shared across images
|
||||
- from-file: shared/files.yml
|
||||
|
||||
# kernel selection. select ONE of the following from-file line
|
||||
# or uncomment all three to opt to use stock fedora kernel
|
||||
- from-file: kernels/blu.yml
|
||||
# - from-file: kernels/cachy.yml
|
||||
# - from-file: kernels/tkg.yml
|
||||
|
||||
# removes firefox, unused fonts, undesired gnome packages & other utilities
|
||||
- from-file: packages/core-discard.yml
|
||||
|
||||
# installs necessities such as GUI apps, CLI apps, themes, & replaces mutter packages with patched version
|
||||
- from-file: packages/core.yml
|
||||
|
||||
# image-specific packages module
|
||||
# systemd services related to image-specific packages
|
||||
# may also be placed within this module for simplicity.
|
||||
- from-file: packages/solarpowered.yml
|
||||
|
||||
# disables all repos except for fedora and fedora-updates
|
||||
- from-file: shared/disable-repos.yml
|
||||
|
||||
# installs icons packs & nautilus extensions
|
||||
- from-file: shared/script.yml
|
||||
|
||||
# installs shared fonts
|
||||
- from-file: shared/fonts.yml
|
||||
|
||||
# contains gnome extensions that will be shared across all images
|
||||
# does not contain several other extensions that must be installed locally
|
||||
- from-file: shared/gnome-extensions.yml
|
||||
|
||||
# configures gschema for extensions, desktop, touchpad, and WM prefs
|
||||
# - from-file: shared/gschema-overrides.yml
|
||||
|
||||
# disables NetworkManager-online-service, flatpak update services,
|
||||
# and enables topgrade updater
|
||||
- from-file: shared/systemd.yml
|
||||
|
||||
# image-specific files module
|
||||
# copies files into /
|
||||
- type: files
|
||||
files:
|
||||
# create a folder under files/ with the image name
|
||||
# and place directories and files appropriately.
|
||||
# source entry should be the same name as the image name.
|
||||
- source: solarpowered # image name, or folder as named under files/
|
||||
destination: /
|
||||
|
||||
- type: signing
|
||||
@@ -1,81 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
|
||||
name: solarizzed-gnome
|
||||
description: Based on bazzite-deck-gnome
|
||||
|
||||
base-image: ghcr.io/ublue-os/bazzite-deck-gnome
|
||||
image-version: stable
|
||||
|
||||
modules:
|
||||
- type: files
|
||||
files:
|
||||
- source: shared/usr
|
||||
destination: /usr
|
||||
|
||||
- type: dnf
|
||||
repos:
|
||||
cleanup: true
|
||||
files:
|
||||
- https://raw.githubusercontent.com/terrapkg/subatomic-repos/main/terra.repo
|
||||
copr:
|
||||
- tigro/better_fonts
|
||||
- dusansimic/themes
|
||||
- sneexy/zen-browser
|
||||
- ilyaz/LACT
|
||||
optfix:
|
||||
- zen
|
||||
install:
|
||||
install-weak-deps: false
|
||||
packages:
|
||||
# codium
|
||||
- codium
|
||||
# prettifying packages
|
||||
- deepin-sound-theme
|
||||
- fontconfig-font-replacements
|
||||
- go-task
|
||||
- morewaita-icon-theme
|
||||
- nautilus-extensions
|
||||
- nautilus-python
|
||||
- oxygen-sounds
|
||||
- pop-sound-theme
|
||||
- rclone
|
||||
- rclone-browser
|
||||
- yaru-sound-theme
|
||||
# misc
|
||||
- lact
|
||||
- python3-pyclip
|
||||
- zen-browser
|
||||
remove:
|
||||
packages:
|
||||
- gnome-tweaks
|
||||
|
||||
- type: systemd
|
||||
system:
|
||||
enabled:
|
||||
- lactd.service
|
||||
|
||||
- type: default-flatpaks
|
||||
configurations:
|
||||
- notify: false
|
||||
scope: system
|
||||
install:
|
||||
- page.tesk.Refine
|
||||
|
||||
# extensions
|
||||
- type: gnome-extensions
|
||||
install:
|
||||
- Alphabetical App Grid
|
||||
- 5425 # Battery time
|
||||
- Bluetooth Battery Meter
|
||||
- Night Theme Switcher
|
||||
- 841 # Freon
|
||||
- Quick Settings Tweaks
|
||||
# installs themes & icons
|
||||
- from-file: shared/script.yml
|
||||
# installs luminance & windscribe
|
||||
- from-file: shared/rpms.yml
|
||||
# installs shared fonts
|
||||
- from-file: shared/fonts.yml
|
||||
|
||||
- type: signing
|
||||
@@ -1,64 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
|
||||
name: solarizzed
|
||||
description: Based on bazzite-deck
|
||||
|
||||
base-image: ghcr.io/ublue-os/bazzite-deck
|
||||
image-version: stable
|
||||
|
||||
modules:
|
||||
# contains repo files for codium
|
||||
- type: files
|
||||
files:
|
||||
- source: shared/etc/yum.repos.d
|
||||
destination: /etc/yum.repos.d
|
||||
- source: shared/usr
|
||||
destination: /usr
|
||||
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
# better-fonts repo for fontconfig-font-replacements
|
||||
- https://copr.fedorainfracloud.org/coprs/hyperreal/better_fonts/repo/fedora-%OS_VERSION%/hyperreal-better_fonts-fedora-%OS_VERSION%.repo
|
||||
# Koi
|
||||
- https://copr.fedorainfracloud.org/coprs/birkch/Koi/repo/fedora-%OS_VERSION%/birkch-Koi-fedora-%OS_VERSION%.repo
|
||||
# zen browser
|
||||
- https://copr.fedorainfracloud.org/coprs/sneexy/zen-browser/repo/fedora-%OS_VERSION%/sneexy-zen-browser-fedora-%OS_VERSION%.repo
|
||||
optfix:
|
||||
- windscribe
|
||||
- zen
|
||||
install:
|
||||
# codium
|
||||
- codium
|
||||
# prettifying packages
|
||||
- adw-gtk3-theme
|
||||
- deepin-sound-theme
|
||||
- fontconfig-font-replacements
|
||||
- Koi
|
||||
- kvantum
|
||||
- oxygen-sounds
|
||||
- pop-sound-theme
|
||||
- rclone
|
||||
- rclone-browser
|
||||
- yaru-sound-theme
|
||||
# misc
|
||||
- python3-pyclip
|
||||
- zen-browser
|
||||
# installs themes & icons
|
||||
- type: script
|
||||
scripts:
|
||||
- solarizzed/chromeos.sh
|
||||
- solarizzed/layan.sh
|
||||
- shared/tela-icon-theme.sh
|
||||
- shared/qogir-icon-theme.sh
|
||||
- shared/kora-icon-theme.sh
|
||||
# citron appimage + /usr/bin link
|
||||
- solarizzed/citron.sh
|
||||
snippets:
|
||||
# auto-fetch & install latest version of windscribe
|
||||
- 'rpm-ostree install https://github.com/Windscribe/Desktop-App/releases/latest/download/windscribe_$(curl https://api.github.com/repos/Windscribe/Desktop-App/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ")_x86_64_fedora.rpm'
|
||||
|
||||
# installs shared fonts
|
||||
- from-file: shared/fonts.yml
|
||||
|
||||
- type: signing
|
||||
@@ -1,27 +0,0 @@
|
||||
name: solarpowered-bootc
|
||||
description: Lenovo T480s image based on Fedora's bootc image.
|
||||
|
||||
base-image: quay.io/fedora/fedora-bootc
|
||||
image-version: 41
|
||||
|
||||
modules:
|
||||
- from-file: shared/files.yml
|
||||
|
||||
- from-file: base/base-bootc.yml
|
||||
|
||||
- from-file: kernels/blu.yml
|
||||
|
||||
- from-file: shared/fonts.yml
|
||||
|
||||
- from-file: shared/gnome-extensions.yml
|
||||
|
||||
- from-file: shared/script.yml
|
||||
|
||||
- from-file: shared/systemd.yml
|
||||
|
||||
- type: files
|
||||
files:
|
||||
- source: solarpowered
|
||||
destination: /
|
||||
|
||||
- type: signing
|
||||
@@ -1,29 +0,0 @@
|
||||
name: solarpowered-ex-bootc
|
||||
description: Image optimized for AMD PC, based on Fedora's bootc image.
|
||||
|
||||
base-image: quay.io/fedora/fedora-bootc
|
||||
image-version: 41
|
||||
|
||||
modules:
|
||||
- from-file: shared/files.yml
|
||||
|
||||
- from-file: base/base-bootc.yml
|
||||
|
||||
- from-file: kernels/tkg.yml
|
||||
|
||||
- from-file: packages/packages-ex.yml
|
||||
|
||||
- from-file: shared/fonts.yml
|
||||
|
||||
- from-file: shared/gnome-extensions.yml
|
||||
|
||||
- from-file: shared/script.yml
|
||||
|
||||
- from-file: shared/systemd.yml
|
||||
|
||||
- type: files
|
||||
files:
|
||||
- source: solarpowered-ex
|
||||
destination: /
|
||||
|
||||
- type: signing
|
||||
@@ -1,240 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
|
||||
# enter image name here
|
||||
name: autosolarpowered-ex-rawhide
|
||||
# enter image description here
|
||||
description: Custom image for AMD machines, based on Vanilla Silverblue
|
||||
|
||||
# defines base image
|
||||
# ---
|
||||
base-image: quay.io/fedora-ostree-desktops/silverblue
|
||||
# defines image major version
|
||||
# ---
|
||||
image-version: rawhide
|
||||
|
||||
modules:
|
||||
- type: files
|
||||
files:
|
||||
- source: shared
|
||||
destination: /
|
||||
|
||||
- type: bling
|
||||
install:
|
||||
# rpmfusion instead of negativo17 for rawhide
|
||||
- rpmfusion
|
||||
|
||||
- type: script
|
||||
scripts:
|
||||
- shared/nautilus-copy-path.sh
|
||||
- shared/tela-icon-theme.sh
|
||||
- shared/qogir-icon-theme.sh
|
||||
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/zhangyuannie/butter/repo/fedora-rawhide/zhangyuannie-butter-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/tigro/better_fonts/repo/fedora-rawhide/tigro-better_fonts-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/dusansimic/themes/repo/fedora-rawhide/dusansimic-themes-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/shdwchn10/AllTheTools/repo/fedora-rawhide/shdwchn10-AllTheTools-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/sneexy/zen-browser/repo/fedora-rawhide/sneexy-zen-browser-fedora-rawhide.repo
|
||||
optfix:
|
||||
- zen
|
||||
install:
|
||||
- alsa-firmware
|
||||
- ffmpeg
|
||||
- ffmpeg-libs
|
||||
- ffmpegthumbnailer
|
||||
- fontconfig-font-replacements
|
||||
- gnome-epub-thumbnailer
|
||||
- heif-pixbuf-loader
|
||||
- intel-media-driver
|
||||
- libcamera
|
||||
- libcamera-gstreamer
|
||||
- libcamera-ipa
|
||||
- libcamera-tools
|
||||
- libva-utils
|
||||
- pipewire-plugin-libcamera
|
||||
- pipewire-plugin-vulkan
|
||||
- pulseaudio-utils
|
||||
- uxplay
|
||||
- vulkan-headers
|
||||
- apr
|
||||
- apr-util
|
||||
- bootc
|
||||
- distrobox
|
||||
- fastfetch
|
||||
- fish
|
||||
- fzf
|
||||
- ifuse
|
||||
- inxi
|
||||
- just
|
||||
- kernel-tools
|
||||
- lm_sensors
|
||||
- lzip
|
||||
- net-tools
|
||||
- nvme-cli
|
||||
- nvtop
|
||||
- openssl
|
||||
- smartmontools
|
||||
- squashfs-tools
|
||||
- starship
|
||||
- symlinks
|
||||
- tcpdump
|
||||
- topgrade
|
||||
- traceroute
|
||||
- wireguard-tools
|
||||
- wl-clipboard
|
||||
- zstd
|
||||
- baobab
|
||||
- butter
|
||||
- codium
|
||||
- firewall-config
|
||||
- gnome-boxes
|
||||
- gnome-tweaks
|
||||
- nautilus-extensions
|
||||
- nautilus-python
|
||||
- ptyxis
|
||||
- zen-browser
|
||||
- flatpak-spawn
|
||||
- fuse
|
||||
- grub2-tools-extra
|
||||
- hunspell
|
||||
- hunspell-en
|
||||
- ibus-mozc
|
||||
- input-remapper
|
||||
- libappindicator
|
||||
- libratbag-ratbagd
|
||||
- ocl-icd
|
||||
- openrgb-udev-rules
|
||||
- steam-devices
|
||||
- xorg-x11-server-Xwayland
|
||||
- adw-gtk3-theme
|
||||
- fonts-tweak-tool
|
||||
- morewaita-icon-theme
|
||||
- deepin-sound-theme
|
||||
- oxygen-sounds
|
||||
- pop-sound-theme
|
||||
- yaru-sound-theme
|
||||
- android-tools
|
||||
- python3-pyclip
|
||||
- waydroid
|
||||
# nonfree-codecs
|
||||
- ffmpeg
|
||||
- gstreamer1-plugin-libav
|
||||
- gstreamer1-plugins-bad-free-extras
|
||||
- gstreamer1-plugins-bad-freeworld
|
||||
- gstreamer1-plugins-ugly
|
||||
- gstreamer1-vaapi
|
||||
- mesa-va-drivers-freeworld
|
||||
remove:
|
||||
- fedora-bookmarks
|
||||
- fedora-chromium-config
|
||||
- fedora-chromium-config-gnome
|
||||
- fedora-flathub-remote
|
||||
- fedora-repos-archive
|
||||
- fedora-repos-ostree
|
||||
- fedora-third-party
|
||||
- fedora-workstation-repositories
|
||||
- fedora-workstation-backgrounds
|
||||
- gnome-classic-session
|
||||
- gnome-shell-extension-apps-menu
|
||||
- gnome-shell-extension-background-logo
|
||||
- gnome-shell-extension-launch-new-instance
|
||||
- gnome-shell-extension-places-menu
|
||||
- gnome-shell-extension-window-list
|
||||
- gnome-software
|
||||
- gnome-software-rpm-ostree
|
||||
- gnome-system-monitor
|
||||
- gnome-tour
|
||||
- totem-video-thumbnailer
|
||||
- default-fonts-cjk-sans
|
||||
- firefox
|
||||
- firefox-langpacks
|
||||
- OpenCL-ICD-Loader
|
||||
- rygel
|
||||
- yelp
|
||||
# free codecs
|
||||
- fdk-aac-free
|
||||
- ffmpeg-free
|
||||
- libavcodec-free
|
||||
- libavdevice-free
|
||||
- libavfilter-free
|
||||
- libavformat-free
|
||||
- libavutil-free
|
||||
- libpostproc-free
|
||||
- libswresample-free
|
||||
- libswscale-free
|
||||
- mesa-va-drivers
|
||||
replace:
|
||||
- from-repo: https://copr.fedorainfracloud.org/coprs/trixieua/mutter-patched/repo/fedora-rawhide/trixieua-mutter-patched-fedora-rawhide.repo
|
||||
packages:
|
||||
- gnome-shell
|
||||
- mutter
|
||||
- mutter-common
|
||||
- xorg-x11-server-Xwayland
|
||||
- type: rpm-ostree
|
||||
optfix:
|
||||
- windscribe
|
||||
# installs luminance & windscribe directly from github releases
|
||||
- from-file: shared/rpms.yml
|
||||
# installs shared fonts
|
||||
- from-file: shared/fonts.yml
|
||||
# disables NetworkManager-online-service, flatpak update services,
|
||||
# and enables topgrade updater
|
||||
- from-file: shared/systemd.yml
|
||||
|
||||
# kernel selection
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-addons/repo/fedora-rawhide/bieszczaders-kernel-cachyos-addons-fedora-rawhide.repo #cachy uksmd
|
||||
- https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos/repo/fedora-rawhide/bieszczaders-kernel-cachyos-fedora-rawhide.repo #cachy kernel
|
||||
install:
|
||||
- libcap-ng
|
||||
- libcap-ng-devel
|
||||
- procps-ng
|
||||
- procps-ng-devel
|
||||
- uksmd
|
||||
|
||||
- type: script
|
||||
snippets:
|
||||
- "echo 'Enable SElinux policy' && setsebool -P domain_kernel_load_modules on"
|
||||
- "echo 'CachyOS kernel override' && rpm-ostree override remove kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra --install kernel-cachyos"
|
||||
|
||||
- type: systemd
|
||||
system:
|
||||
enabled:
|
||||
- uksmd.service
|
||||
|
||||
# image-specific packages module
|
||||
# base/core packages are all handled by solarpowered-raw
|
||||
# and should not be added here.
|
||||
# systemd services related to image-specific packages
|
||||
# may also be placed within this module for simplicity
|
||||
# ---
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/ilyaz/LACT/repo/fedora-rawhide/ilyaz-LACT-fedora-rawhide.repo #lact
|
||||
install:
|
||||
- lact-libadwaita
|
||||
- nvtop
|
||||
|
||||
- type: systemd
|
||||
system:
|
||||
enabled:
|
||||
- lactd.service
|
||||
|
||||
# disables all repos except for fedora and fedora-updates
|
||||
- from-file: shared/disable-repos.yml
|
||||
|
||||
# files module
|
||||
# copies files into /
|
||||
# ---
|
||||
- type: files
|
||||
files:
|
||||
# create a folder under files/ with the image name
|
||||
# and place directories and files appropriately
|
||||
# source entry should be the same name as the image name
|
||||
- source: solarpowered-ex # image name, or folder as named under files/
|
||||
destination: /
|
||||
|
||||
- type: signing
|
||||
@@ -1,58 +0,0 @@
|
||||
name: solarpowered-raw
|
||||
description: Custom desktop image based on the official, vanilla Fedora Silverblue image
|
||||
|
||||
base-image: quay.io/fedora-ostree-desktops/silverblue
|
||||
image-version: 41
|
||||
|
||||
modules:
|
||||
|
||||
# this image obsoletes the need to specify many modules in derivative images
|
||||
# and will only require the following modules:
|
||||
# 1. image-specific packages (& related systemd services), if any
|
||||
# 2. image-specific kernel
|
||||
|
||||
# contains repo files for codium, configs and services that will be shared across images
|
||||
- from-file: shared/files.yml
|
||||
|
||||
# installs RPMFusion and dconf updater
|
||||
- type: bling
|
||||
install:
|
||||
- rpmfusion
|
||||
# - dconf-update-service
|
||||
|
||||
# installs negativo17-multimedia-repo & Cosign
|
||||
# installed separately from the shared scripts module to ensure icons are installed properly
|
||||
- type: script
|
||||
scripts:
|
||||
# - cosign.sh
|
||||
- negativo17-multimedia-repo.sh
|
||||
|
||||
# installs and removes packages, this will apply to all solarpowered images
|
||||
# includes installation entries for audio & codecs, CLI utilities, GUI apps,
|
||||
# other system tools, prettifying packages, printing drivers for EPSON, and waydroid
|
||||
# also includes removal entries for undesired fedora, gnome, free multimedia packages,
|
||||
# and native installation of firefox
|
||||
# also replaces gnome-shell & mutter packages with patched version
|
||||
- from-file: packages/packages-raw.yml
|
||||
|
||||
# contains direct links for luminance & windscribe
|
||||
- from-file: shared/shared-rpms.yml
|
||||
|
||||
# installs icons packs & nautilus extensions
|
||||
- from-file: shared/script.yml
|
||||
|
||||
# installs shared fonts
|
||||
- from-file: shared/fonts.yml
|
||||
|
||||
# contains gnome extensions that will be shared across all images
|
||||
# does not contain several other extensions that must be installed locally
|
||||
- from-file: shared/gnome-extensions.yml
|
||||
|
||||
# configures gschema for extensions, desktop, touchpad, and WM prefs
|
||||
- from-file: shared/gschema-overrides.yml
|
||||
|
||||
# disables NetworkManager-online-service, flatpak update services,
|
||||
# and enables topgrade updater
|
||||
- from-file: shared/systemd.yml
|
||||
|
||||
- type: signing
|
||||
@@ -1,247 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://schema.blue-build.org/recipe-v1.json
|
||||
|
||||
# enter image name here
|
||||
name: autosolarpowered-rawhide
|
||||
# enter image description here
|
||||
description: Custom image for Lenovo T480/s devices, based on Vanilla Silverblue
|
||||
|
||||
# defines base image
|
||||
# ---
|
||||
base-image: quay.io/fedora-ostree-desktops/silverblue
|
||||
# defines image major version
|
||||
# ---
|
||||
image-version: rawhide
|
||||
|
||||
modules:
|
||||
- type: files
|
||||
files:
|
||||
- source: shared
|
||||
destination: /
|
||||
|
||||
- type: bling
|
||||
install:
|
||||
# rpmfusion instead of negativo17 for rawhide
|
||||
- rpmfusion
|
||||
|
||||
- type: script
|
||||
scripts:
|
||||
- shared/nautilus-copy-path.sh
|
||||
- shared/tela-icon-theme.sh
|
||||
- shared/qogir-icon-theme.sh
|
||||
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/zhangyuannie/butter/repo/fedora-rawhide/zhangyuannie-butter-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/tigro/better_fonts/repo/fedora-rawhide/tigro-better_fonts-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/dusansimic/themes/repo/fedora-rawhide/dusansimic-themes-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/shdwchn10/AllTheTools/repo/fedora-rawhide/shdwchn10-AllTheTools-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/sneexy/zen-browser/repo/fedora-rawhide/sneexy-zen-browser-fedora-rawhide.repo
|
||||
optfix:
|
||||
- zen
|
||||
install:
|
||||
- alsa-firmware
|
||||
- ffmpeg
|
||||
- ffmpeg-libs
|
||||
- ffmpegthumbnailer
|
||||
- fontconfig-font-replacements
|
||||
- gnome-epub-thumbnailer
|
||||
- heif-pixbuf-loader
|
||||
- intel-media-driver
|
||||
- libcamera
|
||||
- libcamera-gstreamer
|
||||
- libcamera-ipa
|
||||
- libcamera-tools
|
||||
- libva-utils
|
||||
- pipewire-plugin-libcamera
|
||||
- pipewire-plugin-vulkan
|
||||
- pulseaudio-utils
|
||||
- uxplay
|
||||
- vulkan-headers
|
||||
- apr
|
||||
- apr-util
|
||||
- bootc
|
||||
- distrobox
|
||||
- fastfetch
|
||||
- fish
|
||||
- fzf
|
||||
- ifuse
|
||||
- inxi
|
||||
- just
|
||||
- kernel-tools
|
||||
- lm_sensors
|
||||
- lzip
|
||||
- net-tools
|
||||
- nvme-cli
|
||||
- nvtop
|
||||
- openssl
|
||||
- smartmontools
|
||||
- squashfs-tools
|
||||
- starship
|
||||
- symlinks
|
||||
- tcpdump
|
||||
- topgrade
|
||||
- traceroute
|
||||
- wireguard-tools
|
||||
- wl-clipboard
|
||||
- zstd
|
||||
- baobab
|
||||
- butter
|
||||
- codium
|
||||
- firewall-config
|
||||
- gnome-boxes
|
||||
- gnome-tweaks
|
||||
- nautilus-extensions
|
||||
- nautilus-python
|
||||
- ptyxis
|
||||
- zen-browser
|
||||
- flatpak-spawn
|
||||
- fuse
|
||||
- grub2-tools-extra
|
||||
- hunspell
|
||||
- hunspell-en
|
||||
- ibus-mozc
|
||||
- input-remapper
|
||||
- libappindicator
|
||||
- libratbag-ratbagd
|
||||
- ocl-icd
|
||||
- openrgb-udev-rules
|
||||
- steam-devices
|
||||
- xorg-x11-server-Xwayland
|
||||
- adw-gtk3-theme
|
||||
- fonts-tweak-tool
|
||||
- morewaita-icon-theme
|
||||
- deepin-sound-theme
|
||||
- oxygen-sounds
|
||||
- pop-sound-theme
|
||||
- yaru-sound-theme
|
||||
- android-tools
|
||||
- python3-pyclip
|
||||
- waydroid
|
||||
# nonfree-codecs
|
||||
- ffmpeg
|
||||
- gstreamer1-plugin-libav
|
||||
- gstreamer1-plugins-bad-free-extras
|
||||
- gstreamer1-plugins-bad-freeworld
|
||||
- gstreamer1-plugins-ugly
|
||||
- gstreamer1-vaapi
|
||||
- mesa-va-drivers-freeworld
|
||||
remove:
|
||||
- fedora-bookmarks
|
||||
- fedora-chromium-config
|
||||
- fedora-chromium-config-gnome
|
||||
- fedora-flathub-remote
|
||||
- fedora-repos-archive
|
||||
- fedora-repos-ostree
|
||||
- fedora-third-party
|
||||
- fedora-workstation-repositories
|
||||
- fedora-workstation-backgrounds
|
||||
- gnome-classic-session
|
||||
- gnome-shell-extension-apps-menu
|
||||
- gnome-shell-extension-background-logo
|
||||
- gnome-shell-extension-launch-new-instance
|
||||
- gnome-shell-extension-places-menu
|
||||
- gnome-shell-extension-window-list
|
||||
- gnome-software
|
||||
- gnome-software-rpm-ostree
|
||||
- gnome-system-monitor
|
||||
- gnome-tour
|
||||
- totem-video-thumbnailer
|
||||
- default-fonts-cjk-sans
|
||||
- firefox
|
||||
- firefox-langpacks
|
||||
- OpenCL-ICD-Loader
|
||||
- rygel
|
||||
- yelp
|
||||
# free codecs
|
||||
- fdk-aac-free
|
||||
- ffmpeg-free
|
||||
- libavcodec-free
|
||||
- libavdevice-free
|
||||
- libavfilter-free
|
||||
- libavformat-free
|
||||
- libavutil-free
|
||||
- libpostproc-free
|
||||
- libswresample-free
|
||||
- libswscale-free
|
||||
- mesa-va-drivers
|
||||
replace:
|
||||
- from-repo: https://copr.fedorainfracloud.org/coprs/trixieua/mutter-patched/repo/fedora-rawhide/trixieua-mutter-patched-fedora-rawhide.repo
|
||||
packages:
|
||||
- gnome-shell
|
||||
- mutter
|
||||
- mutter-common
|
||||
- xorg-x11-server-Xwayland
|
||||
- type: rpm-ostree
|
||||
optfix:
|
||||
- windscribe
|
||||
# installs luminance & windscribe directly from github releases
|
||||
- from-file: shared/rpms.yml
|
||||
# installs shared fonts
|
||||
- from-file: shared/fonts.yml
|
||||
# disables NetworkManager-online-service, flatpak update services,
|
||||
# and enables topgrade updater
|
||||
- from-file: shared/systemd.yml
|
||||
|
||||
# kernel selection // blue doesn't have a successful build for rawhide
|
||||
# - type: rpm-ostree
|
||||
# replace:
|
||||
# - from-repo: https://copr.fedorainfracloud.org/coprs/sentry/kernel-blu/repo/fedora-rawhide/sentry-kernel-blu-fedora-rawhide.repo
|
||||
# packages:
|
||||
# - kernel
|
||||
# - kernel-core
|
||||
# - kernel-headers
|
||||
# - kernel-modules
|
||||
# - kernel-modules-core
|
||||
# - kernel-modules-extra
|
||||
|
||||
# image-specific packages module
|
||||
# base/core packages are all handled by solarpowered-raw
|
||||
# and should not be added here.
|
||||
# systemd services related to image-specific packages
|
||||
# may also be placed within this module for simplicity
|
||||
# ---
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/abn/throttled/repo/fedora-rawhide/abn-throttled-fedora-rawhide.repo
|
||||
- https://copr.fedorainfracloud.org/coprs/sneexy/python-validity/repo/fedora-rawhide/sneexy-python-validity-fedora-rawhide.repo
|
||||
install:
|
||||
- igt-gpu-tools
|
||||
- fprintd-clients
|
||||
- fprintd-clients-pam
|
||||
- open-fprintd
|
||||
- python3-validity
|
||||
- tlp
|
||||
- tlp-rdw
|
||||
- throttled
|
||||
- zcfan
|
||||
remove:
|
||||
- fprintd
|
||||
- fprintd-pam
|
||||
- thermald
|
||||
- tuned-ppd
|
||||
- tuned
|
||||
|
||||
- type: systemd
|
||||
system:
|
||||
enabled:
|
||||
- tlp.service
|
||||
masked:
|
||||
- systemd-rfkill.service
|
||||
- systemd-rfkill.socket
|
||||
|
||||
# disables all repos except for fedora and fedora-updates
|
||||
- from-file: shared/disable-repos.yml
|
||||
|
||||
# files module
|
||||
# copies files into /
|
||||
# ---
|
||||
- type: files
|
||||
files:
|
||||
# create a folder under files/ with the image name
|
||||
# and place directories and files appropriately
|
||||
# source entry should be the same name as the image name
|
||||
- source: solarpowered # image name, or folder as named under files/
|
||||
destination: /
|
||||
|
||||
- type: signing
|
||||
@@ -1,24 +0,0 @@
|
||||
modules:
|
||||
- type: rpm-ostree
|
||||
remove:
|
||||
- firefox
|
||||
- firefox-langpacks
|
||||
- google-noto-sans-balinese-fonts
|
||||
- google-noto-sans-javanese-fonts
|
||||
- google-noto-sans-sundanese-fonts
|
||||
- htop
|
||||
- rygel
|
||||
- ublue-os-update-services
|
||||
#unnecessary gnomies
|
||||
- gnome-software
|
||||
- gnome-system-monitor
|
||||
- gnome-tour
|
||||
- yelp
|
||||
#fedora default gnome extensions
|
||||
- gnome-shell-extension-apps-menu
|
||||
- gnome-shell-extension-background-logo
|
||||
- gnome-shell-extension-launch-new-instance
|
||||
- gnome-shell-extension-places-menu
|
||||
- gnome-shell-extension-window-list
|
||||
#gnome xorg
|
||||
- gnome-classic-session
|
||||
@@ -1,64 +0,0 @@
|
||||
modules:
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/hyperreal/better_fonts/repo/fedora-%OS_VERSION%/hyperreal-better_fonts-fedora-%OS_VERSION%.repo #better fonts
|
||||
- https://copr.fedorainfracloud.org/coprs/zhangyuannie/butter/repo/fedora-%OS_VERSION%/zhangyuannie-butter-fedora-%OS_VERSION%.repo #butter
|
||||
- https://copr.fedorainfracloud.org/coprs/dusansimic/themes/repo/fedora-%OS_VERSION%/dusansimic-themes-fedora-%OS_VERSION%.repo #morewaita
|
||||
- https://copr.fedorainfracloud.org/coprs/shdwchn10/AllTheTools/repo/fedora-%OS_VERSION%/shdwchn10-AllTheTools-fedora-%OS_VERSION%.repo #starship & topgrade
|
||||
- https://copr.fedorainfracloud.org/coprs/sneexy/zen-browser/repo/fedora-%OS_VERSION%/sneexy-zen-browser-fedora-%OS_VERSION%.repo #zen
|
||||
optfix:
|
||||
- windscribe
|
||||
- zen
|
||||
install:
|
||||
- baobab
|
||||
- butter
|
||||
- codium
|
||||
- epson-inkjet-printer-escpr
|
||||
- epson-inkjet-printer-escpr2
|
||||
- fish
|
||||
- firewall-config
|
||||
- fontconfig-font-replacements
|
||||
- gnome-boxes
|
||||
- hunspell
|
||||
- hunspell-en
|
||||
- ibus-mozc
|
||||
- ifuse
|
||||
- input-remapper
|
||||
- inxi
|
||||
- lm_sensors
|
||||
- libappindicator
|
||||
- ptyxis
|
||||
- pulseaudio-utils
|
||||
- rsms-inter-fonts
|
||||
- starship
|
||||
- steam-devices
|
||||
- topgrade
|
||||
- uxplay
|
||||
- wl-clipboard
|
||||
- xorg-x11-server-Xwayland
|
||||
- zen-browser
|
||||
- openssl
|
||||
- nautilus-python
|
||||
- nautilus-extensions
|
||||
- https://github.com/sidevesh/Luminance/releases/download/1.1.0/luminance-1.1.0.rpm
|
||||
# extra niceties
|
||||
- deepin-sound-theme
|
||||
- fastfetch
|
||||
- fonts-tweak-tool
|
||||
- morewaita-icon-theme
|
||||
- oxygen-sounds
|
||||
- pop-sound-theme
|
||||
- yaru-sound-theme
|
||||
# waydroid
|
||||
- android-tools
|
||||
- lzip
|
||||
- waydroid
|
||||
# windscribe
|
||||
- https://github.com/Windscribe/Desktop-App/releases/download/v2.14.4/windscribe_2.14.4_guinea_pig_x86_64_fedora.rpm
|
||||
replace:
|
||||
- from-repo: https://copr.fedorainfracloud.org/coprs/trixieua/mutter-patched/repo/fedora-%OS_VERSION%/trixieua-mutter-patched-fedora-%OS_VERSION%.repo
|
||||
packages:
|
||||
- gnome-shell
|
||||
- mutter
|
||||
- mutter-common
|
||||
- xorg-x11-server-Xwayland
|
||||
@@ -1,204 +0,0 @@
|
||||
modules:
|
||||
- type: bling
|
||||
install:
|
||||
- rpmfusion
|
||||
|
||||
- type: rpm-ostree
|
||||
repos:
|
||||
- https://copr.fedorainfracloud.org/coprs/zhangyuannie/butter/repo/fedora-%OS_VERSION%/zhangyuannie-butter-fedora-%OS_VERSION%.repo #butter
|
||||
- https://copr.fedorainfracloud.org/coprs/dusansimic/themes/repo/fedora-%OS_VERSION%/dusansimic-themes-fedora-%OS_VERSION%.repo #morewaita
|
||||
- https://copr.fedorainfracloud.org/coprs/ilyaz/LACT/repo/fedora-%OS_VERSION%/ilyaz-LACT-fedora-%OS_VERSION%.repo #lact
|
||||
- https://copr.fedorainfracloud.org/coprs/shdwchn10/AllTheTools/repo/fedora-%OS_VERSION%/shdwchn10-AllTheTools-fedora-%OS_VERSION%.repo #starship & topgrade
|
||||
- https://copr.fedorainfracloud.org/coprs/ublue-os/staging/repo/fedora-%OS_VERSION%/ublue-os-staging-fedora-%OS_VERSION%.repo # ublue-os staging
|
||||
- https://copr.fedorainfracloud.org/coprs/sneexy/zen-browser/repo/fedora-%OS_VERSION%/sneexy-zen-browser-fedora-%OS_VERSION%.repo #zen browser
|
||||
optfix:
|
||||
- windscribe
|
||||
- zen
|
||||
install:
|
||||
- alsa-ucm
|
||||
- alsa-utils
|
||||
- android-udev-rules
|
||||
- anthy-unicode
|
||||
- apr
|
||||
- apr-util
|
||||
- audit
|
||||
- audit-rules
|
||||
- avahi-gobject
|
||||
- avahi-tools
|
||||
- baobab
|
||||
- bluez-cups
|
||||
- buildah
|
||||
- cairo
|
||||
- cldr-emoji-annotation
|
||||
- cldr-emoji-annotation-dtd
|
||||
- cups
|
||||
- cups-filters
|
||||
- dbus-glib
|
||||
- dconf
|
||||
- default-fonts-cjk-mono
|
||||
- default-fonts-cjk-serif
|
||||
- default-fonts-core-emoji
|
||||
- default-fonts-core-math
|
||||
- default-fonts-core-mono
|
||||
- default-fonts-core-serif
|
||||
- default-fonts-other-mono
|
||||
- default-fonts-other-sans
|
||||
- default-fonts-other-serif
|
||||
- desktop-backgrounds-gnome
|
||||
- dhcp-client
|
||||
- dhcp-common
|
||||
- distribution-gpg-keys
|
||||
- djvulibre-libs
|
||||
- dnf5-plugins
|
||||
- dotconf
|
||||
- firewall-config
|
||||
- flatpak
|
||||
- flatpak-spawn
|
||||
- fprintd-pam
|
||||
- fuse
|
||||
- fuse-common
|
||||
- fuse-libs
|
||||
- fuse-overlayfs
|
||||
- fuse3
|
||||
- fuse3-libs
|
||||
- fwupd
|
||||
- gamemode
|
||||
- gdm
|
||||
- ghostscript
|
||||
- git
|
||||
- git-credential-libsecret
|
||||
- glib-networking
|
||||
- gnome-boxes
|
||||
- gnome-bluetooth
|
||||
- gnome-browser-connector
|
||||
- gnome-control-center
|
||||
- gnome-disk-utility
|
||||
- gnome-epub-thumbnailer
|
||||
- gnome-session-wayland-session
|
||||
- gnome-shell
|
||||
- gnome-user-share
|
||||
- google-noto-color-emoji-fonts
|
||||
- google-noto-sans-cjk-fonts
|
||||
- gsettings-desktop-schemas
|
||||
- gstreamer1-plugin-libav
|
||||
- gstreamer1-plugin-openh264
|
||||
- gstreamer1-plugins-bad-free
|
||||
- gstreamer1-plugins-good
|
||||
- gstreamer1-plugins-ugly-free
|
||||
- gutenprint
|
||||
- gvfs-afc
|
||||
- gvfs-afp
|
||||
- gvfs-archive
|
||||
- gvfs-client
|
||||
- gvfs-fuse
|
||||
- gvfs-goa
|
||||
- gvfs-gphoto2
|
||||
- gvfs-mtp
|
||||
- gvfs-nfs
|
||||
- gvfs-smb
|
||||
- ibus-anthy
|
||||
- ibus-gtk4
|
||||
- ifuse
|
||||
- iwlwifi-dvm-firmware
|
||||
- iwlwifi-mvm-firmware
|
||||
- kernel-modules-extra
|
||||
- langpacks-core-en
|
||||
- mesa-dri-drivers
|
||||
- mesa-libEGL
|
||||
- mesa-va-drivers
|
||||
- mesa-vulkan-drivers
|
||||
- ModemManager
|
||||
- mutter
|
||||
- nautilus
|
||||
- nss-mdns
|
||||
- NetworkManager
|
||||
- NetworkManager-adsl
|
||||
- NetworkManager-bluetooth
|
||||
- NetworkManager-config-connectivity-fedora
|
||||
- NetworkManager-openconnect-gnome
|
||||
- NetworkManager-openvpn-gnome
|
||||
- NetworkManager-ppp
|
||||
- NetworkManager-pptp
|
||||
- NetworkManager-pptp-gnome
|
||||
- NetworkManager-ssh-gnome
|
||||
- NetworkManager-vpnc-gnome
|
||||
- NetworkManager-wifi
|
||||
- NetworkManager-wwan
|
||||
- PackageKit-command-not-found
|
||||
- PackageKit-gstreamer-plugin
|
||||
- PackageKit-gtk3-module
|
||||
- pango
|
||||
- pipewire
|
||||
- pipewire-alsa
|
||||
- pipewire-pulseaudio
|
||||
- pipewire-utils
|
||||
- plymouth
|
||||
- polkit
|
||||
- ptyxis
|
||||
- python3-pyxdg
|
||||
- rsms-inter-fonts
|
||||
- samba-client
|
||||
- sane-backends-drivers-scanners
|
||||
- sushi
|
||||
- system-config-printer-udev
|
||||
- wireguard-tools
|
||||
- wireplumber
|
||||
- xdg-dbus-proxy
|
||||
- xdg-desktop-portal
|
||||
- xdg-desktop-portal-gnome
|
||||
- xdg-desktop-portal-gtk
|
||||
- xdg-user-dirs-gtk
|
||||
- xdg-utils
|
||||
# basic stuff
|
||||
- adw-gtk3-theme
|
||||
- alsa-firmware
|
||||
- android-tools
|
||||
- butter
|
||||
- codium
|
||||
- deepin-sound-theme
|
||||
- distrobox
|
||||
- epson-inkjet-printer-escpr
|
||||
- epson-inkjet-printer-escpr2
|
||||
- fastfetch
|
||||
- ffmpeg
|
||||
- ffmpegthumbnailer
|
||||
- fish
|
||||
- gnome-tweaks
|
||||
- heif-pixbuf-loader
|
||||
- hunspell
|
||||
- hunspell-en
|
||||
- inxi
|
||||
- just
|
||||
- libappindicator
|
||||
- libheif-freeworld
|
||||
- libheif-tools
|
||||
- libva-utils
|
||||
- lm_sensors
|
||||
- lzip
|
||||
- morewaita-icon-theme
|
||||
- nautilus-extensions
|
||||
- nautilus-python
|
||||
- openrgb
|
||||
- openrgb-udev-rules
|
||||
- openssl
|
||||
- oxygen-sounds
|
||||
- pop-sound-theme
|
||||
- starship
|
||||
- topgrade
|
||||
- unzip
|
||||
- uxplay
|
||||
- waydroid
|
||||
- wl-clipboard
|
||||
- xorg-x11-server-Xwayland
|
||||
- yaru-sound-theme
|
||||
- zen-browser
|
||||
- zstd
|
||||
- https://github.com/sidevesh/Luminance/releases/download/1.1.0/luminance-1.1.0.rpm
|
||||
- https://github.com/Windscribe/Desktop-App/releases/download/v2.13.8/windscribe_2.13.8_x86_64_fedora.rpm
|
||||
replace:
|
||||
- from-repo: https://copr.fedorainfracloud.org/coprs/trixieua/mutter-patched/repo/fedora-%OS_VERSION%/trixieua-mutter-patched-fedora-%OS_VERSION%.repo
|
||||
packages:
|
||||
- gnome-shell
|
||||
- mutter
|
||||
- mutter-common
|
||||
- xorg-x11-server-Xwayland
|
||||
@@ -1,4 +0,0 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnz+kko9HwCdM4RYio+lTmDzpzGkL
|
||||
1GBz4Y92qGyn0eXUFwI7zxsO2u6C+Bs4FTn9bgmmyfrMjTrYYGgKJApq6Q==
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -1,24 +0,0 @@
|
||||
# README.md
|
||||
|
||||
This folder contains
|
||||
|
||||
# gschema-overrides/
|
||||
|
||||
gschema-overrides files for all images
|
||||
|
||||
# scripts/
|
||||
|
||||
Scripts for from-scratch images (`base/`), images regardless of base (`shared/`), and for `solarizzed`.
|
||||
|
||||
# shared/
|
||||
|
||||
Files that will be transferred into all images' /.
|
||||
|
||||
# solarpowered/
|
||||
|
||||
Files that will be transferred into /. Only for `solarpowered` and `autosolarpowered`. Device-specific. Contains T480/s config files.
|
||||
|
||||
# solarpowered-ex/
|
||||
|
||||
Files that will be transferred into /. Only for `solarpowered-ex` and `autosolarpowered-ex`. Device-specific. Contains `B550-suspend-fix.service`.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
[gitlab.com_paulcarroty_vscodium_repo]
|
||||
name=gitlab.com_paulcarroty_vscodium_repo
|
||||
baseurl=https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/rpms/
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
repo_gpgcheck=1
|
||||
gpgkey=https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg
|
||||
metadata_expire=1h
|
||||
@@ -1,3 +0,0 @@
|
||||
# README.md
|
||||
|
||||
This folder contains gschema-overrides files.
|
||||
@@ -1,5 +0,0 @@
|
||||
[org.gnome.desktop.app-folders.folders.Waydroid]
|
||||
apps=['Waydroid.desktop']
|
||||
categories=['X-WayDroid-App']
|
||||
name='Waydroid'
|
||||
translate=false
|
||||
@@ -1,4 +0,0 @@
|
||||
[org.gnome.shell]
|
||||
|
||||
disable-user-extensions=false
|
||||
enabled-extensions=['nightthemeswitcher@romainvigier.fr', 'do-not-disturb-while-screen-sharing-or-recording@marcinjahn.com', 'caffeine@patapon.info', 'Bluetooth-Battery-Meter@maniacx.github.com', 'light-style@gnome-shell-extensions.gcampax.github.com', 'hibernate-status@dromi', 'gsconnect@andyholmes.github.io']
|
||||
@@ -1,5 +0,0 @@
|
||||
[org.gnome.desktop.background]
|
||||
color-shading-type='solid'
|
||||
picture-options='zoom'
|
||||
primary-color='#000000'
|
||||
secondary-color='#000000'
|
||||
@@ -1,11 +0,0 @@
|
||||
[org.gnome.desktop.interface]
|
||||
accent-color='purple'
|
||||
enable-hot-corners=false
|
||||
clock-format='24h'
|
||||
clock-show-weekday=false
|
||||
show-battery-percentage=true
|
||||
font-antialiasing='rgba'
|
||||
font-hinting='none'
|
||||
font-rendering='automatic'
|
||||
gtk-theme='adw-gtk3'
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
[org.gnome.desktop.peripherals.touchpad]
|
||||
tap-to-click=true
|
||||
two-finger-scrolling-enabled=true
|
||||
@@ -1,3 +0,0 @@
|
||||
[org.gnome.desktop.wm.preferences]
|
||||
action-double-click-titlebar='toggle-maximize'
|
||||
titlebar-uses-system-font=true
|
||||
@@ -1,3 +0,0 @@
|
||||
[org.gnome.mutter]
|
||||
center-new-windows=true
|
||||
check-alive-timeout=30000
|
||||
@@ -1,4 +0,0 @@
|
||||
[org.gnome.nautilus.preferences]
|
||||
default-sort-order='type'
|
||||
show-create-link=true
|
||||
show-delete-permanently=true
|
||||
@@ -1,15 +0,0 @@
|
||||
# README.md
|
||||
|
||||
This folder contains
|
||||
|
||||
## base/
|
||||
|
||||
Scripts for use with DIY images, based on vanilla Fedora Silverblue as opposed to UBlue's `silverblue-main`
|
||||
|
||||
# shared/
|
||||
|
||||
Scripts for use with all images regardless of base
|
||||
|
||||
# solarizzed/
|
||||
|
||||
Scripts for use with `solarizzed` only, mainly contains KDE Plasma-related scripts
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Tell this script to exit if there are any errors.
|
||||
# You should have this in every custom script, to ensure that your completed
|
||||
# builds actually ran successfully without any errors!
|
||||
set -oue pipefail
|
||||
|
||||
# Your code goes here.
|
||||
echo 'This is an example shell script'
|
||||
echo 'Scripts here will run during build if specified in recipe.yml'
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ouex pipefail
|
||||
|
||||
OS_VERSION=$(rpm -E %fedora)
|
||||
|
||||
VER=$(basename $(curl -Ls -o /dev/null -w %{url_effective} https://github.com/bazzite-org/kernel-bazzite/releases/latest))
|
||||
|
||||
dnf -y remove kernel-* && rm -drf /usr/lib/modules/*
|
||||
|
||||
echo 'Installing Bazzite kernel...'
|
||||
dnf install -y \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-common-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-core-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-devel-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-devel-matched-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-akmods-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-core-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-extra-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-extra-matched-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-modules-internal-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-tools-$VER.fc$OS_VERSION.x86_64.rpm \
|
||||
https://github.com/bazzite-org/kernel-bazzite/releases/download/$VER/kernel-tools-libs-$VER.fc$OS_VERSION.x86_64.rpm
|
||||
@@ -1,50 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Remove Fedora kernel & remove leftover files
|
||||
dnf -y remove \
|
||||
kernel \
|
||||
kernel-* && \
|
||||
rm -r -f /usr/lib/modules/*
|
||||
|
||||
# Install dnf-plugins-core just in case
|
||||
dnf -y install --setopt=install_weak_deps=False \
|
||||
dnf-plugins-core \
|
||||
dnf5-plugins
|
||||
|
||||
# Configure exclusion
|
||||
dnf -y config-manager setopt "fedora*".exclude=" \
|
||||
kernel \
|
||||
kernel-core \
|
||||
kernel-modules \
|
||||
kernel-modules-core \
|
||||
kernel-modules-extra \
|
||||
kernel-devel \
|
||||
kernel-headers \
|
||||
"
|
||||
|
||||
# Enable repos for kernel-blu and akmods
|
||||
dnf -y copr enable sentry/kernel-blu
|
||||
# dnf -y copr enable ublue-os/akmods
|
||||
dnf -y config-manager addrepo --from-repofile=https://raw.githubusercontent.com/terrapkg/subatomic-repos/main/terra.repo
|
||||
dnf -y config-manager addrepo --from-repofile=https://negativo17.org/repos/fedora-multimedia.repo
|
||||
|
||||
# Install akmods, kernel, and modules
|
||||
dnf -y install --setopt=install_weak_deps=False \
|
||||
kernel \
|
||||
kernel-devel \
|
||||
kernel-modules-extra \
|
||||
akmods \
|
||||
akmod-evdi \
|
||||
help2man \
|
||||
v4l2loopback \
|
||||
zenergy
|
||||
|
||||
# Manually build modules, run depmod & generate initramfs
|
||||
VER=$(ls /lib/modules) &&
|
||||
akmods --force --kernels $VER --kmod v4l2loopback &&
|
||||
akmods --force --kernels $VER --kmod zenergy &&
|
||||
depmod -a $VER &&
|
||||
dracut --kver $VER --force --add ostree --no-hostonly --reproducible /usr/lib/modules/$VER/initramfs.img
|
||||
|
||||
# Clean up repos from earlier
|
||||
rm -f /etc/yum.repos.d/{*copr*,*terra*,*multimedia*}.repo
|
||||
@@ -1,56 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Remove Fedora kernel & remove leftover files
|
||||
dnf -y remove \
|
||||
kernel \
|
||||
kernel-* && \
|
||||
rm -r -f /usr/lib/modules/*
|
||||
|
||||
# Install dnf-plugins-core just in case
|
||||
dnf -y install --setopt=install_weak_deps=False \
|
||||
dnf-plugins-core \
|
||||
dnf5-plugins
|
||||
|
||||
# Enable repos
|
||||
dnf -y copr enable bieszczaders/kernel-cachyos-lto
|
||||
dnf -y copr enable bieszczaders/kernel-cachyos-addons
|
||||
# dnf -y copr enable ublue-os/akmods
|
||||
dnf -y config-manager addrepo --from-repofile=https://negativo17.org/repos/fedora-multimedia.repo
|
||||
dnf -y config-manager addrepo --from-repofile=https://raw.githubusercontent.com/terrapkg/subatomic-repos/main/terra.repo
|
||||
|
||||
# Handles kernel post-transaction scriptlet
|
||||
# mv /usr/lib/kernel/install.d/05-rpmostree.install /usr/lib/kernel/install.d/05-rpmostree.install.bak
|
||||
# mv /usr/lib/kernel/install.d/50-dracut.install /usr/lib/kernel/install.d/50-dracut.install.bak
|
||||
# printf '%s\n' '#!/bin/sh' 'exit 0' > /usr/lib/kernel/install.d/05-rpmostree.install
|
||||
# printf '%s\n' '#!/bin/sh' 'exit 0' > /usr/lib/kernel/install.d/50-dracut.install
|
||||
# chmod +x \
|
||||
# /usr/lib/kernel/install.d/05-rpmostree.install \
|
||||
# /usr/lib/kernel/install.d/50-dracut.install
|
||||
|
||||
# Install CachyOS LTO kernel & akmods
|
||||
dnf -y install --setopt=install_weak_deps=False \
|
||||
kernel-cachyos-lto \
|
||||
kernel-cachyos-lto-devel \
|
||||
akmods \
|
||||
akmod-evdi \
|
||||
zenergy \
|
||||
scx-scheds \
|
||||
scx-tools \
|
||||
scx-manager
|
||||
dnf -y swap zram-generator-defaults cachyos-settings
|
||||
|
||||
# Handles kernel post-transaction scriptlet
|
||||
# rm -f /usr/lib/kernel/install.d/05-rpmostree.install \
|
||||
# /usr/lib/kernel/install.d/50-dracut.install
|
||||
# mv /usr/lib/kernel/install.d/05-rpmostree.install.bak /usr/lib/kernel/install.d/05-rpmostree.install
|
||||
# mv /usr/lib/kernel/install.d/50-dracut.install.bak /usr/lib/kernel/install.d/50-dracut.install
|
||||
|
||||
# Manually build modules, run depmod & generate initramfs
|
||||
VER=$(ls /lib/modules) && \
|
||||
akmods --force --kernels $VER --kmod zenergy && \
|
||||
akmods --force --kernels $VER --kmod evdi && \
|
||||
depmod -a $VER && \
|
||||
dracut --kver $VER --force --add ostree --no-hostonly --reproducible /usr/lib/modules/$VER/initramfs.img
|
||||
|
||||
# Clean up repos from earlier
|
||||
rm -f /etc/yum.repos.d/{*copr*,*multimedia*,*terra*}.repo
|
||||
@@ -1,31 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Install dnf-plugins-core just in case
|
||||
dnf -y install --setopt=install_weak_deps=False \
|
||||
dnf-plugins-core \
|
||||
dnf5-plugins
|
||||
|
||||
# Enable repos for akmods
|
||||
dnf -y copr enable ublue-os/akmods
|
||||
dnf -y config-manager addrepo --from-repofile=https://raw.githubusercontent.com/terrapkg/subatomic-repos/main/terra.repo
|
||||
dnf config-manager addrepo --from-repofile=https://negativo17.org/repos/fedora-multimedia.repo
|
||||
|
||||
# Install akmods, kernel, and modules
|
||||
dnf -y install --setopt=install_weak_deps=False \
|
||||
kernel-devel \
|
||||
kernel-modules-extra \
|
||||
akmods \
|
||||
akmod-evdi \
|
||||
help2man \
|
||||
v4l2loopback \
|
||||
zenergy
|
||||
|
||||
# Manually build modules, run depmod & generate initramfs
|
||||
VER=$(ls /lib/modules) &&
|
||||
akmods --force --kernels $VER --kmod v4l2loopback &&
|
||||
akmods --force --kernels $VER --kmod zenergy &&
|
||||
depmod -a $VER &&
|
||||
dracut --kver $VER --force --add ostree --no-hostonly --reproducible /usr/lib/modules/$VER/initramfs.img
|
||||
|
||||
# Clean up repos from earlier
|
||||
rm -f /etc/yum.repos.d/{*copr*,*terra*,*multimedia*}.repo
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
echo 'Preparing directory for cloning...'
|
||||
|
||||
mkdir -p /tmp/clone/Adwaita-colors/
|
||||
cd /tmp/clone/Adwaita-colors/
|
||||
echo 'Directory created.'
|
||||
|
||||
git clone https://github.com/dpejoh/Adwaita-colors
|
||||
echo 'Repo cloned. Copying files...'
|
||||
|
||||
cp -r ./Adwaita-colors/* /usr/share/icons/
|
||||
echo 'Folders copied. Cleaning up!'
|
||||
|
||||
rm -r Adwaita-colors/
|
||||
echo 'Cloned repo deleted.'
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
VER=$(basename $(curl -Ls -o /dev/null -w %{url_effective} https://github.com/pkgforge-dev/android-tools-AppImage/releases/latest))
|
||||
curl -fLs --create-dirs https://github.com/pkgforge-dev/android-tools-AppImage/releases/download/${VER}/Android_Tools-${VER%@*}-anylinux-x86_64.AppImage -o /usr/bin/android-tools
|
||||
chmod +x /usr/bin/android-tools
|
||||
mkdir -p /tmp/android-tmp/
|
||||
(
|
||||
cd /tmp/android-tmp/
|
||||
/usr/bin/android-tools --appimage-extract
|
||||
)
|
||||
readarray -t BINS < <(find /tmp/android-tmp/AppDir/bin/ -type f -printf "%f\n")
|
||||
rm -rf /tmp/android-tmp/
|
||||
for bin in "${BINS[@]}"; do
|
||||
case "$bin" in
|
||||
*xdg-open|*.hook|*.conf) continue;;
|
||||
esac
|
||||
ln -fs /usr/bin/android-tools /usr/bin/"$bin"
|
||||
done
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
GITHUB_URL="https://github.com/vinceliuice/Colloid-icon-theme"
|
||||
if [ -z "$GITHUB_URL" ]; then
|
||||
echo "Error: GITHUB_URL is not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_NAME=$(basename "$GITHUB_URL" .git)
|
||||
CLONE_DIR="/tmp/clone/$REPO_NAME"
|
||||
|
||||
echo "Preparing directory for cloning..."
|
||||
mkdir -p "$CLONE_DIR"
|
||||
cd "$CLONE_DIR"
|
||||
echo "Directory created."
|
||||
|
||||
git clone "$GITHUB_URL"
|
||||
|
||||
echo "Repo cloned. Copying files..."
|
||||
|
||||
if [ -f "./$REPO_NAME/install.sh" ]; then
|
||||
chmod +x "./$REPO_NAME/install.sh"
|
||||
./"$REPO_NAME/install.sh" -d /usr/share/icons -s default -t default -b
|
||||
fi
|
||||
|
||||
echo "Folders copied. Cleaning up!"
|
||||
rm -drf "$CLONE_DIR"
|
||||
echo "Cloned repo deleted."
|
||||
|
||||
echo "Script finished. Theme installation complete."
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euox pipefail
|
||||
|
||||
tee "/etc/dracut.conf.d/00-dp-2.conf" > /dev/null << 'EOF'
|
||||
install_items+=" /lib/firmware/edid/edid.bin "
|
||||
EOF
|
||||
@@ -1,49 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
GITHUB_URL="https://github.com/somepaulo/MoreWaita"
|
||||
if [ -z "$GITHUB_URL" ]; then
|
||||
echo "Error: GITHUB_URL is not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_NAME=$(basename "$GITHUB_URL" .git)
|
||||
CLONE_DIR="/tmp/clone/$REPO_NAME"
|
||||
|
||||
echo "Preparing directory for cloning..."
|
||||
mkdir -p "$CLONE_DIR"
|
||||
cd "$CLONE_DIR"
|
||||
echo "Directory created."
|
||||
|
||||
git clone "$GITHUB_URL"
|
||||
|
||||
echo "Repo cloned. Copying files..."
|
||||
|
||||
if [ -f "./$REPO_NAME/install.sh" ]; then
|
||||
chmod +x "./$REPO_NAME/install.sh"
|
||||
./"$REPO_NAME/install.sh"
|
||||
fi
|
||||
|
||||
echo "Folders copied. Cleaning up!"
|
||||
rm -drf "$CLONE_DIR"
|
||||
echo "Cloned repo deleted."
|
||||
|
||||
echo "Script finished. Theme installation complete."
|
||||
|
||||
|
||||
# ---
|
||||
# echo 'Preparing directory for cloning...'
|
||||
|
||||
# mkdir -p /tmp/clone/MoreWaita/
|
||||
# cd /tmp/clone/MoreWaita/
|
||||
# echo 'Directory created.'
|
||||
|
||||
# git clone https://github.com/somepaulo/MoreWaita.git
|
||||
# echo 'Repo cloned. Running install script...'
|
||||
|
||||
# MoreWaita/install.sh
|
||||
# cho 'Install script finished. Removing cloned repo...'
|
||||
|
||||
# rm -r MoreWaita
|
||||
# echo 'Cloned repo deleted.'
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
echo 'Preparing directory for cloning...'
|
||||
|
||||
mkdir -p /tmp/clone/nautilus-copy-path/
|
||||
cd /tmp/clone/nautilus-copy-path/
|
||||
echo 'Directory created.'
|
||||
|
||||
git clone https://github.com/chr314/nautilus-copy-path.git
|
||||
echo 'Repo cloned. Copying files...'
|
||||
|
||||
mkdir -p /usr/share/nautilus-python/extensions/nautilus-copy-path
|
||||
cp ./nautilus-copy-path/nautilus-copy-path.py /usr/share/nautilus-python/extensions
|
||||
cp ./nautilus-copy-path/nautilus_copy_path.py ./nautilus-copy-path/translation.py ./nautilus-copy-path/config.json /usr/share/nautilus-python/extensions/nautilus-copy-path
|
||||
cp -rf ./nautilus-copy-path/translations /usr/share/nautilus-python/extensions/nautilus-copy-path
|
||||
|
||||
echo 'Install script finished. Removing cloned repo...'
|
||||
|
||||
rm -r nautilus-copy-path
|
||||
echo 'Cloned repo deleted.'
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
GITHUB_URL="https://github.com/vinceliuice/Qogir-icon-theme"
|
||||
if [ -z "$GITHUB_URL" ]; then
|
||||
echo "Error: GITHUB_URL is not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_NAME=$(basename "$GITHUB_URL" .git)
|
||||
CLONE_DIR="/tmp/clone/$REPO_NAME"
|
||||
|
||||
echo "Preparing directory for cloning..."
|
||||
mkdir -p "$CLONE_DIR"
|
||||
cd "$CLONE_DIR"
|
||||
echo "Directory created."
|
||||
|
||||
git clone "$GITHUB_URL"
|
||||
|
||||
echo "Repo cloned. Copying files..."
|
||||
|
||||
if [ -f "./$REPO_NAME/install.sh" ]; then
|
||||
chmod +x "./$REPO_NAME/install.sh"
|
||||
./"$REPO_NAME/install.sh" -t default -c standard
|
||||
fi
|
||||
|
||||
echo "Folders copied. Cleaning up!"
|
||||
rm -drf "$CLONE_DIR"
|
||||
echo "Cloned repo deleted."
|
||||
|
||||
echo "Script finished. Theme installation complete."
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -oue pipefail
|
||||
|
||||
GITHUB_URL="https://github.com/vinceliuice/Tela-icon-theme"
|
||||
if [ -z "$GITHUB_URL" ]; then
|
||||
echo "Error: GITHUB_URL is not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_NAME=$(basename "$GITHUB_URL" .git)
|
||||
CLONE_DIR="/tmp/clone/$REPO_NAME"
|
||||
|
||||
echo "Preparing directory for cloning..."
|
||||
mkdir -p "$CLONE_DIR"
|
||||
cd "$CLONE_DIR"
|
||||
echo "Directory created."
|
||||
|
||||
git clone "$GITHUB_URL"
|
||||
|
||||
echo "Repo cloned. Copying files..."
|
||||
|
||||
if [ -f "./$REPO_NAME/install.sh" ]; then
|
||||
chmod +x "./$REPO_NAME/install.sh"
|
||||
./"$REPO_NAME/install.sh" -d /usr/share/icons
|
||||
fi
|
||||
|
||||
echo "Folders copied. Cleaning up!"
|
||||
rm -drf "$CLONE_DIR"
|
||||
echo "Cloned repo deleted."
|
||||
|
||||
echo "Script finished. Theme installation complete."
|
||||
@@ -1,68 +0,0 @@
|
||||
# Arch Linux box for CLI use
|
||||
[box]
|
||||
image=ghcr.io/askpng/box
|
||||
pull=true
|
||||
replace=true
|
||||
nvidia=false
|
||||
init=false
|
||||
entry=false
|
||||
start_now=true
|
||||
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/xdg-open
|
||||
exported_apps="blackbox"
|
||||
exported_bins="bat btop eza glow pingu tldr"
|
||||
|
||||
# Arch Linux box for gaming use
|
||||
[gamebox]
|
||||
image=ghcr.io/askpng/gamebox:latest
|
||||
pull=true
|
||||
replace=true
|
||||
nvidia=false
|
||||
init=false
|
||||
entry=false
|
||||
start_now=true
|
||||
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/xdg-open
|
||||
exported_apps="blackbox celluloid hatt lutris megabasterd steam vesktop"
|
||||
|
||||
# BlueBuild-CLI
|
||||
[bluebuild-cli]
|
||||
image=ghcr.io/blue-build/cli:latest-alpine
|
||||
additional_packages="nano bat fish git"
|
||||
replace=true
|
||||
|
||||
# Debian
|
||||
[debian]
|
||||
image=quay.io/toolbx-images/debian-toolbox:unstable
|
||||
additional_packages="nano bat fish"
|
||||
replace=true
|
||||
|
||||
[fedora]
|
||||
image=ghcr.io/ublue-os/fedora-distrobox:latest
|
||||
additional_packages="nano bat fish"
|
||||
|
||||
#[bluefin-cli]
|
||||
#image=ghcr.io/ublue-os/bluefin-cli
|
||||
#nvidia=true
|
||||
|
||||
#[opensuse]
|
||||
#image=quay.io/toolbx-images/opensuse-toolbox:tumbleweed
|
||||
#nvidia=true
|
||||
|
||||
#[ubuntu]
|
||||
#image=ghcr.io/ublue-os/ubuntu-toolbox:latest
|
||||
#nvidia=true
|
||||
|
||||
#[alma]
|
||||
#image=quay.io/toolbx-images/almalinux-toolbox:latest
|
||||
#nvidia=true
|
||||
|
||||
#[centos]
|
||||
#image=quay.io/toolbx-images/centos-toolbox:latest
|
||||
#nvidia=true
|
||||
|
||||
#[wolfi]
|
||||
#image=ghcr.io/ublue-os/wolfi-toolbox
|
||||
#nvidia=true
|
||||
|
||||
#[wolfi-dx]
|
||||
#image=ghcr.io/ublue-os/wolfi-dx-toolbox
|
||||
#nvidia=true
|
||||
@@ -1,4 +0,0 @@
|
||||
container_always_pull="1"
|
||||
container_generate_entry=1
|
||||
container_manager="podman"
|
||||
non_interactive="1"
|
||||
@@ -1,7 +0,0 @@
|
||||
# Entries in this file show the compile time defaults.
|
||||
# You can change settings by editing this file.
|
||||
# For option meanings, see rpm-ostreed.conf(5).
|
||||
|
||||
[Daemon]
|
||||
AutomaticUpdatePolicy=stage
|
||||
#IdleExitTimeout=60
|
||||
@@ -1,50 +0,0 @@
|
||||
################### File Generated by Goverlay ###################
|
||||
legacy_layout=false
|
||||
|
||||
|
||||
background_alpha=0.0
|
||||
round_corners=0
|
||||
background_alpha=0.0
|
||||
background_color=000000
|
||||
|
||||
font_size=14
|
||||
text_color=FFFFFF
|
||||
position=top-left
|
||||
toggle_hud=Shift_R+F12
|
||||
pci_dev=0:08:00.0
|
||||
table_columns=3
|
||||
gpu_text=GPU
|
||||
gpu_stats
|
||||
gpu_temp
|
||||
gpu_color=2E9762
|
||||
cpu_text=CPU
|
||||
cpu_stats
|
||||
|
||||
cpu_temp
|
||||
cpu_color=2E97CB
|
||||
vram
|
||||
vram_color=AD64C1
|
||||
ram
|
||||
ram_color=C26693
|
||||
fps
|
||||
fps_limit_method=late
|
||||
toggle_fps_limit=Shift_L+F1
|
||||
|
||||
fps_limit=90
|
||||
fps_color_change
|
||||
fps_color=B22222,F9F06B,99C1F1
|
||||
fps_value=30,90
|
||||
#offset=0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
output_folder=/var/home/mel
|
||||
log_duration=30
|
||||
autostart_log=0
|
||||
log_interval=100
|
||||
toggle_logging=Shift_L+F2
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
## GENERAL ##
|
||||
|
||||
## profile ##
|
||||
profile=fast
|
||||
|
||||
## hardware acceleration ##
|
||||
# vo=gpu-next
|
||||
# hwdec=auto
|
||||
gpu-context=wayland,auto
|
||||
vo=dmabuf-wayland,gpu-next
|
||||
hwdec=auto-safe
|
||||
|
||||
# others #
|
||||
save-position-on-quit=yes
|
||||
keep-open=yes
|
||||
border=yes
|
||||
screenshot-directory="~/Pictures/mpv/"
|
||||
screenshot-template="%F - [%P]v%#01n"
|
||||
screenshot-format=webp
|
||||
screenshot-webp-quality=90
|
||||
slang=eng,en,enUS,en-US,English,jpn,jp,jap,Japanese
|
||||
sub-font-size=32
|
||||
volume-max=100
|
||||
|
||||
## INPUT ##
|
||||
|
||||
## OSD ##
|
||||
osd-duration=2000
|
||||
osd-playing-msg='${filename}'
|
||||
# osc-seekbarstyle=bar
|
||||
# osd-font-size=20
|
||||
|
||||
## resize window ##
|
||||
autofit-larger=75%x75%
|
||||
|
||||
## yt-dlp ##
|
||||
[protocol.https]
|
||||
prefetch-playlist=yes
|
||||
cache-secs=10
|
||||
osd-playing-msg='${media-title}'
|
||||
ytdl-format="bestvideo[height<=1080]+bestaudio"
|
||||
ytdl-raw-options=cookies-from-browser=firefox
|
||||
@@ -1,333 +0,0 @@
|
||||
-- Copyright (c) 2021, Eisa AlAwadhi
|
||||
-- License: BSD 2-Clause License
|
||||
|
||||
-- Creator: Eisa AlAwadhi
|
||||
-- Project: SmartCopyPaste
|
||||
-- Version: 2.4.1
|
||||
|
||||
local utils = require 'mp.utils'
|
||||
local msg = require 'mp.msg'
|
||||
local protocols
|
||||
local extensions
|
||||
local pasted = false
|
||||
|
||||
----------------------------USER CUSTOMIZATION SETTINGS-----------------------------------
|
||||
--These settings are for users to manually change some options in the script.
|
||||
--Keybinds can be defined in the bottom of the script.
|
||||
|
||||
local device = nil --nil is for automatic device detection, or manually change to: 'windows' or 'mac' or 'linux'
|
||||
|
||||
local linux_copy = 'wl-copy' --copy command that will be used in Linux. OR write a different command
|
||||
local linux_paste = 'wl-paste' --paste command that will be used in Linux. OR write a different command
|
||||
|
||||
local mac_copy = 'pbcopy' --copy command that will be used in MAC. OR write a different command
|
||||
local mac_paste = 'pbpaste' --paste command that will be used in MAC. OR write a different command
|
||||
|
||||
local windows_copy = 'powershell' --'powershell' is for using windows powershell to copy. OR write the copy command, e.g: ' clip'
|
||||
local windows_paste = 'powershell' --'powershell' is for using windows powershell to paste. OR write the paste command
|
||||
|
||||
local offset = -0.65 --change to 0 so that pasting resumes from the exact position, or decrease the value so that it gives you a little preview before reaching the exact pasted position
|
||||
|
||||
local paste_anything = false --false is for specific paste based on the specified extensions and protocols. Change to true so paste accepts anything (not recommended to change this).
|
||||
|
||||
if not paste_anything then
|
||||
protocols = { --add below (after a comma) any protocol you want SmartCopyPaste to work with; e.g: ,'ftp://'
|
||||
'https?://' ,'magnet:'
|
||||
}
|
||||
extensions = { --add below (after a comma) any extension you want SmartCopyPaste to work with; e.g: ,'pdf'
|
||||
--video & audio
|
||||
'ac3', 'a52', 'eac3', 'mlp', 'dts', 'dts-hd', 'dtshd', 'true-hd', 'thd', 'truehd', 'thd+ac3', 'tta', 'pcm', 'wav', 'aiff', 'aif', 'aifc', 'amr', 'awb', 'au', 'snd', 'lpcm', 'yuv', 'y4m', 'ape', 'wv', 'shn', 'm2ts', 'm2t', 'mts', 'mtv', 'ts', 'tsv', 'tsa', 'tts', 'trp', 'adts', 'adt', 'mpa', 'm1a', 'm2a', 'mp1', 'mp2', 'mp3', 'mpeg', 'mpg', 'mpe', 'mpeg2', 'm1v', 'm2v', 'mp2v', 'mpv', 'mpv2', 'mod', 'tod', 'vob', 'vro', 'evob', 'evo', 'mpeg4', 'm4v', 'mp4', 'mp4v', 'mpg4', 'm4a', 'aac', 'h264', 'avc', 'x264', '264', 'hevc', 'h265', 'x265', '265', 'flac', 'oga', 'ogg', 'opus', 'spx', 'ogv', 'ogm', 'ogx', 'mkv', 'mk3d', 'mka', 'webm', 'weba', 'avi', 'vfw', 'divx', '3iv', 'xvid', 'nut', 'flic', 'fli', 'flc', 'nsv', 'gxf', 'mxf', 'wma', 'wm', 'wmv', 'asf', 'dvr-ms', 'dvr', 'wtv', 'dv', 'hdv', 'flv','f4v', 'f4a', 'qt', 'mov', 'hdmov', 'rm', 'rmvb', 'ra', 'ram', '3ga', '3ga2', '3gpp', '3gp', '3gp2', '3g2', 'ay', 'gbs', 'gym', 'hes', 'kss', 'nsf', 'nsfe', 'sap', 'spc', 'vgm', 'vgz', 'm3u', 'm3u8', 'pls', 'cue',
|
||||
--images
|
||||
"ase", "art", "bmp", "blp", "cd5", "cit", "cpt", "cr2", "cut", "dds", "dib", "djvu", "egt", "exif", "gif", "gpl", "grf", "icns", "ico", "iff", "jng", "jpeg", "jpg", "jfif", "jp2", "jps", "lbm", "max", "miff", "mng", "msp", "nitf", "ota", "pbm", "pc1", "pc2", "pc3", "pcf", "pcx", "pdn", "pgm", "PI1", "PI2", "PI3", "pict", "pct", "pnm", "pns", "ppm", "psb", "psd", "pdd", "psp", "px", "pxm", "pxr", "qfx", "raw", "rle", "sct", "sgi", "rgb", "int", "bw", "tga", "tiff", "tif", "vtf", "xbm", "xcf", "xpm", "3dv", "amf", "ai", "awg", "cgm", "cdr", "cmx", "dxf", "e2d", "egt", "eps", "fs", "gbr", "odg", "svg", "stl", "vrml", "x3d", "sxd", "v2d", "vnd", "wmf", "emf", "art", "xar", "png", "webp", "jxr", "hdp", "wdp", "cur", "ecw", "iff", "lbm", "liff", "nrrd", "pam", "pcx", "pgf", "sgi", "rgb", "rgba", "bw", "int", "inta", "sid", "ras", "sun", "tga",
|
||||
--other types
|
||||
'torrent'
|
||||
}
|
||||
---------------------------END OF USER CUSTOMIZATION SETTINGS------------------------
|
||||
else
|
||||
protocols = {''}
|
||||
extensions = {''}
|
||||
end
|
||||
|
||||
if not device then
|
||||
if os.getenv('windir') ~= nil then
|
||||
device = 'windows'
|
||||
elseif os.execute '[ -d "/Applications" ]' == 0 and os.execute '[ -d "/Library" ]' == 0 or os.execute '[ -d "/Applications" ]' == true and os.execute '[ -d "/Library" ]' == true then
|
||||
device = 'mac'
|
||||
else
|
||||
device = 'linux'
|
||||
end
|
||||
end
|
||||
|
||||
function handleres(res, args)
|
||||
if not res.error and res.status == 0 then
|
||||
return res.stdout
|
||||
else
|
||||
msg.error("There was an error getting "..device.." clipboard: ")
|
||||
msg.error(" Status: "..(res.status or ""))
|
||||
msg.error(" Error: "..(res.error or ""))
|
||||
msg.error(" stdout: "..(res.stdout or ""))
|
||||
msg.error("args: "..utils.to_string(args))
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
function os.capture(cmd, raw)
|
||||
local f = assert(io.popen(cmd, 'r'))
|
||||
local s = assert(f:read('*a'))
|
||||
f:close()
|
||||
if raw then return s end
|
||||
s = string.gsub(s, '^%s+', '')
|
||||
s = string.gsub(s, '%s+$', '')
|
||||
s = string.gsub(s, '[\n\r]+', ' ')
|
||||
return s
|
||||
end
|
||||
|
||||
local function get_extension(path)
|
||||
match = string.match(path, '%.([^%.]+)$' )
|
||||
if match == nil then
|
||||
return 'nomatch'
|
||||
else
|
||||
return match
|
||||
end
|
||||
end
|
||||
|
||||
local function get_extentionpath(path)
|
||||
match = string.match(path,'(.*)%.([^%.]+)$')
|
||||
if match == nil then
|
||||
return 'nomatch'
|
||||
else
|
||||
return match
|
||||
end
|
||||
end
|
||||
|
||||
local function has_extension (tab, val)
|
||||
for index, value in ipairs(tab) do
|
||||
if value == val then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
local function starts_protocol (tab, val)
|
||||
for index, value in ipairs(tab) do
|
||||
if (val:find(value) == 1) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
function get_clipboard()
|
||||
local clip
|
||||
if device == 'linux' then
|
||||
clip = os.capture(linux_paste, false)
|
||||
return clip
|
||||
elseif device == 'windows' then
|
||||
if windows_paste == 'powershell' then
|
||||
local args = {
|
||||
'powershell', '-NoProfile', '-Command', [[& {
|
||||
Trap {
|
||||
Write-Error -ErrorRecord $_
|
||||
Exit 1
|
||||
}
|
||||
$clip = Get-Clipboard -Raw -Format Text -TextFormatType UnicodeText
|
||||
if ($clip) {
|
||||
$clip = $clip
|
||||
}
|
||||
else {
|
||||
$clip = Get-Clipboard -Raw -Format FileDropList
|
||||
}
|
||||
$u8clip = [System.Text.Encoding]::UTF8.GetBytes($clip)
|
||||
[Console]::OpenStandardOutput().Write($u8clip, 0, $u8clip.Length)
|
||||
}]]
|
||||
}
|
||||
return handleres(utils.subprocess({ args = args, cancellable = false }), args)
|
||||
else
|
||||
clip = os.capture(windows_paste, false)
|
||||
return clip
|
||||
end
|
||||
elseif device == 'mac' then
|
||||
clip = os.capture(mac_paste, false)
|
||||
return clip
|
||||
end
|
||||
return ''
|
||||
end
|
||||
|
||||
|
||||
function set_clipboard(text)
|
||||
local pipe
|
||||
if device == 'linux' then
|
||||
pipe = io.popen(linux_copy, 'w')
|
||||
pipe:write(text)
|
||||
pipe:close()
|
||||
elseif device == 'windows' then
|
||||
if windows_copy == 'powershell' then
|
||||
local res = utils.subprocess({ args = {
|
||||
'powershell', '-NoProfile', '-Command', string.format([[& {
|
||||
Trap {
|
||||
Write-Error -ErrorRecord $_
|
||||
Exit 1
|
||||
}
|
||||
Add-Type -AssemblyName PresentationCore
|
||||
[System.Windows.Clipboard]::SetText('%s')
|
||||
}]], text)
|
||||
} })
|
||||
else
|
||||
pipe = io.popen(windows_copy,'w')
|
||||
pipe:write(text)
|
||||
pipe:close()
|
||||
end
|
||||
elseif device == 'mac' then
|
||||
pipe = io.popen(mac_copy,'w')
|
||||
pipe:write(text)
|
||||
pipe:close()
|
||||
end
|
||||
return ''
|
||||
end
|
||||
|
||||
|
||||
local function copy()
|
||||
local filePath = mp.get_property_native('path')
|
||||
if (filePath ~= nil) then
|
||||
local time = math.floor(mp.get_property_number('time-pos'))
|
||||
mp.osd_message("Copied:\n"..filePath..' |time='..tostring(time))
|
||||
set_clipboard(filePath..' |time='..tostring(time))
|
||||
else
|
||||
mp.osd_message('Failed to Copy\nNo Video Found')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
local function copy_path()
|
||||
local filePath = mp.get_property_native('path')
|
||||
if (filePath ~= nil) then
|
||||
mp.osd_message("Copied Video Only:\n"..filePath)
|
||||
set_clipboard(filePath)
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function paste()
|
||||
mp.osd_message("Pasting...")
|
||||
local clip = get_clipboard()
|
||||
clip = string.gsub(clip, "[\r\n]" , "")
|
||||
|
||||
local filePath = mp.get_property_native('path')
|
||||
local time
|
||||
|
||||
if string.match(clip, '(.*) |time=') then
|
||||
videoFile = string.match(clip, '(.*) |time=')
|
||||
time = string.match(clip, ' |time=(.*)')
|
||||
elseif string.match(clip, '^\"(.*)\"$') then
|
||||
videoFile = string.match(clip, '^\"(.*)\"$')
|
||||
else
|
||||
videoFile = clip
|
||||
end
|
||||
|
||||
local currentVideoExtension = string.lower(get_extension(videoFile))
|
||||
local currentVideoExtensionPath = (get_extentionpath(videoFile))
|
||||
|
||||
local seekTime
|
||||
|
||||
if (filePath == nil) and has_extension(extensions, currentVideoExtension) and (currentVideoExtensionPath~= '') then
|
||||
mp.osd_message("Pasted:\n"..videoFile)
|
||||
mp.commandv('loadfile', videoFile)
|
||||
elseif (filePath == nil) and (starts_protocol(protocols, videoFile)) then
|
||||
mp.osd_message("Pasted:\n"..videoFile)
|
||||
mp.commandv('loadfile', videoFile)
|
||||
elseif (filePath ~= nil) and (filePath ~= videoFile) and has_extension(extensions, currentVideoExtension) and (currentVideoExtensionPath~= '') or (starts_protocol(protocols, videoFile)) and (filePath ~= videoFile) then
|
||||
mp.osd_message('Pasted Into Playlist:\n'..videoFile)
|
||||
mp.commandv('loadfile', videoFile, 'append-play')
|
||||
elseif (filePath == videoFile) and (time == nil) then
|
||||
mp.osd_message('Same file is already running:\n'..clip)
|
||||
elseif (filePath == videoFile) and (time ~= nil) then
|
||||
mp.osd_message('Resumed to Copied Time')
|
||||
|
||||
seekTime = time + offset
|
||||
if (seekTime < 0) then
|
||||
seekTime = 0
|
||||
end
|
||||
|
||||
mp.commandv('seek', seekTime, 'absolute', 'exact')
|
||||
else
|
||||
mp.osd_message('Failed to Paste\nPasted Unsupported Item:\n'..clip)
|
||||
end
|
||||
|
||||
pasted = true
|
||||
end
|
||||
|
||||
|
||||
function paste_playlist()
|
||||
mp.osd_message("Pasting...")
|
||||
|
||||
local clip = get_clipboard()
|
||||
clip = string.gsub(clip, "[\r\n]" , "")
|
||||
|
||||
local filePath = mp.get_property_native('path')
|
||||
|
||||
if string.match(clip, '(.*) |time=') then
|
||||
videoFile = string.match(clip, '(.*) |time=')
|
||||
elseif string.match(clip, '^\"(.*)\"$') then
|
||||
videoFile = string.match(clip, '^\"(.*)\"$')
|
||||
else
|
||||
videoFile = clip
|
||||
end
|
||||
local currentVideoExtension = string.lower(get_extension(videoFile))
|
||||
local currentVideoExtensionPath = (get_extentionpath(videoFile))
|
||||
|
||||
if has_extension(extensions, currentVideoExtension) and (currentVideoExtensionPath~= '') or (starts_protocol(protocols, videoFile)) then
|
||||
mp.osd_message('Pasted Into Playlist:\n'..videoFile)
|
||||
mp.commandv('loadfile', videoFile, 'append-play')
|
||||
else
|
||||
mp.osd_message('Failed to Add Into Playlist\nPasted Unsupported Item:\n'..clip)
|
||||
end
|
||||
|
||||
pasted = true
|
||||
end
|
||||
|
||||
|
||||
mp.register_event('end-file', function()
|
||||
pasted = false
|
||||
end)
|
||||
|
||||
|
||||
mp.register_event('file-loaded', function()
|
||||
if (pasted == true) then
|
||||
local clip = get_clipboard()
|
||||
local time = string.match(clip, ' |time=(.*)')
|
||||
local videoFile = string.match(clip, '(.*) |time=')
|
||||
local filePath = mp.get_property_native('path')
|
||||
|
||||
local seekTime
|
||||
|
||||
if (filePath == videoFile) and (time ~= nil) then
|
||||
|
||||
seekTime = time + offset
|
||||
if (seekTime < 0) then
|
||||
seekTime = 0
|
||||
end
|
||||
|
||||
mp.commandv('seek', seekTime, 'absolute', 'exact')
|
||||
end
|
||||
else
|
||||
return false
|
||||
end
|
||||
end)
|
||||
|
||||
---------------------------KEYBINDS CUSTOMIZATION SETTINGS---------------------------------
|
||||
if device == 'mac' then --MAC OS Keybinds
|
||||
mp.add_key_binding('Meta+alt+c', 'copy-path', copy_path)
|
||||
mp.add_key_binding('Meta+alt+C', 'copy-pathCaps', copy_path)
|
||||
mp.add_key_binding('Meta+alt+v', 'paste-playlist', paste_playlist)
|
||||
mp.add_key_binding('Meta+alt+V', 'paste-playlistCaps', paste_playlist)
|
||||
else --Windows and Linux Keybinds
|
||||
mp.add_key_binding('ctrl+c', 'copy-path', copy_path)
|
||||
mp.add_key_binding('ctrl+v', 'paste-playlist', paste_playlist)
|
||||
end
|
||||
---------------------END OF KEYBINDS CUSTOMIZATION SETTINGS---------------------------------
|
||||
@@ -1,56 +0,0 @@
|
||||
---@class ClipshotOptions
|
||||
---@field name string
|
||||
---@field type string
|
||||
local o = {
|
||||
name = 'mpv-screenshot.jpeg',
|
||||
type = '' -- defaults to jpeg
|
||||
}
|
||||
require('mp.options').read_options(o, 'clipshot')
|
||||
|
||||
local file, cmd
|
||||
|
||||
local lib = package.cpath:match('%p[\\|/]?%p(%a+)')
|
||||
if lib == 'so' then -- Linux/BSD
|
||||
file = '/tmp/'..o.name
|
||||
if os.getenv('XDG_SESSION_TYPE') == 'wayland' then -- Wayland
|
||||
cmd = {'sh', '-c', ('wl-copy < %q'):format(image)}
|
||||
else -- Xorg
|
||||
local type = o.type ~= '' and o.type or 'image/jpeg'
|
||||
cmd = {'xclip', '-sel', 'c', '-t', type, '-i', file}
|
||||
end
|
||||
elseif lib == 'dll' then -- Windows
|
||||
file = os.getenv('TEMP')..'\\'..o.name
|
||||
cmd = {
|
||||
'powershell', '-NoProfile', '-Command', ([[& {
|
||||
Add-Type -Assembly System.Windows.Forms;
|
||||
Add-Type -Assembly System.Drawing;
|
||||
$shot = [Drawing.Image]::FromFile(%q);
|
||||
[Windows.Forms.Clipboard]::SetImage($shot);
|
||||
}]]):format(file)
|
||||
}
|
||||
else -- MacOS
|
||||
file = os.getenv('TMPDIR')..'/'..o.name
|
||||
-- png: «class PNGf»
|
||||
local type = o.type ~= '' and o.type or 'JPEG picture'
|
||||
cmd = {
|
||||
'osascript', '-e', ([[
|
||||
set the clipboard to ( ¬
|
||||
read (POSIX file %q) as %s)
|
||||
]]):format(file, type)
|
||||
}
|
||||
end
|
||||
|
||||
---@param arg string
|
||||
---@return fun()
|
||||
local function clipshot(arg)
|
||||
return function()
|
||||
mp.commandv('screenshot-to-file', file, arg)
|
||||
mp.command_native_async({'run', unpack(cmd)}, function(suc, _, err)
|
||||
mp.osd_message(suc and 'Copied screenshot to clipboard' or err, 1)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
mp.add_key_binding('c', 'clipshot-subs', clipshot('subtitles'))
|
||||
mp.add_key_binding('C', 'clipshot-video', clipshot('video'))
|
||||
mp.add_key_binding('Alt+c', 'clipshot-window', clipshot('window'))
|
||||
@@ -1,418 +0,0 @@
|
||||
-- reload.lua
|
||||
--
|
||||
-- When an online video is stuck buffering or got very slow CDN
|
||||
-- source, restarting often helps. This script provides automatic
|
||||
-- reloading of videos that doesn't have buffering progress for some
|
||||
-- time while keeping the current time position. It also adds `Ctrl+r`
|
||||
-- keybinding to reload video manually.
|
||||
--
|
||||
-- SETTINGS
|
||||
--
|
||||
-- To override default setting put the `lua-settings/reload.conf` file in
|
||||
-- mpv user folder, on linux it is `~/.config/mpv`. NOTE: config file
|
||||
-- name should match the name of the script.
|
||||
--
|
||||
-- Default `reload.conf` settings:
|
||||
--
|
||||
-- ```
|
||||
-- # enable automatic reload on timeout
|
||||
-- # when paused-for-cache event fired, we will wait
|
||||
-- # paused_for_cache_timer_timeout sedonds and then reload the video
|
||||
-- paused_for_cache_timer_enabled=yes
|
||||
--
|
||||
-- # checking paused_for_cache property interval in seconds,
|
||||
-- # can not be less than 0.05 (50 ms)
|
||||
-- paused_for_cache_timer_interval=1
|
||||
--
|
||||
-- # time in seconds to wait until reload
|
||||
-- paused_for_cache_timer_timeout=10
|
||||
--
|
||||
-- # enable automatic reload based on demuxer cache
|
||||
-- # if demuxer-cache-time property didn't change in demuxer_cache_timer_timeout
|
||||
-- # time interval, the video will be reloaded as soon as demuxer cache depleated
|
||||
-- demuxer_cache_timer_enabled=yes
|
||||
--
|
||||
-- # checking demuxer-cache-time property interval in seconds,
|
||||
-- # can not be less than 0.05 (50 ms)
|
||||
-- demuxer_cache_timer_interval=2
|
||||
--
|
||||
-- # if demuxer cache didn't receive any data during demuxer_cache_timer_timeout
|
||||
-- # we decide that it has no progress and will reload the stream when
|
||||
-- # paused_for_cache event happens
|
||||
-- demuxer_cache_timer_timeout=20
|
||||
--
|
||||
-- # when the end-of-file is reached, reload the stream to check
|
||||
-- # if there is more content available.
|
||||
-- reload_eof_enabled=no
|
||||
--
|
||||
-- # keybinding to reload stream from current time position
|
||||
-- # you can disable keybinding by setting it to empty value
|
||||
-- # reload_key_binding=
|
||||
-- reload_key_binding=Ctrl+r
|
||||
-- ```
|
||||
--
|
||||
-- DEBUGGING
|
||||
--
|
||||
-- Debug messages will be printed to stdout with mpv command line option
|
||||
-- `--msg-level='reload=debug'`. You may also need to add the `--no-msg-color`
|
||||
-- option to make the debug logs visible if you are using a dark colorscheme
|
||||
-- in terminal.
|
||||
|
||||
local msg = require 'mp.msg'
|
||||
local options = require 'mp.options'
|
||||
local utils = require 'mp.utils'
|
||||
|
||||
|
||||
local settings = {
|
||||
paused_for_cache_timer_enabled = true,
|
||||
paused_for_cache_timer_interval = 1,
|
||||
paused_for_cache_timer_timeout = 10,
|
||||
demuxer_cache_timer_enabled = true,
|
||||
demuxer_cache_timer_interval = 2,
|
||||
demuxer_cache_timer_timeout = 20,
|
||||
reload_eof_enabled = false,
|
||||
reload_key_binding = "Ctrl+r",
|
||||
}
|
||||
|
||||
-- global state stores properties between reloads
|
||||
local property_path = nil
|
||||
local property_time_pos = 0
|
||||
local property_keep_open = nil
|
||||
|
||||
-- FSM managing the demuxer cache.
|
||||
--
|
||||
-- States:
|
||||
--
|
||||
-- * fetch - fetching new data
|
||||
-- * stale - unable to fetch new data for time < 'demuxer_cache_timer_timeout'
|
||||
-- * stuck - unable to fetch new data for time >= 'demuxer_cache_timer_timeout'
|
||||
--
|
||||
-- State transitions:
|
||||
--
|
||||
-- +---------------------------+
|
||||
-- v |
|
||||
-- +-------+ +-------+ +-------+
|
||||
-- + fetch +<--->+ stale +---->+ stuck |
|
||||
-- +-------+ +-------+ +-------+
|
||||
-- | ^ | ^ | ^
|
||||
-- +---+ +---+ +---+
|
||||
local demuxer_cache = {
|
||||
timer = nil,
|
||||
|
||||
state = {
|
||||
name = 'uninitialized',
|
||||
demuxer_cache_time = 0,
|
||||
in_state_time = 0,
|
||||
},
|
||||
|
||||
events = {
|
||||
continue_fetch = { name = 'continue_fetch', from = 'fetch', to = 'fetch' },
|
||||
continue_stale = { name = 'continue_stale', from = 'stale', to = 'stale' },
|
||||
continue_stuck = { name = 'continue_stuck', from = 'stuck', to = 'stuck' },
|
||||
fetch_to_stale = { name = 'fetch_to_stale', from = 'fetch', to = 'stale' },
|
||||
stale_to_fetch = { name = 'stale_to_fetch', from = 'stale', to = 'fetch' },
|
||||
stale_to_stuck = { name = 'stale_to_stuck', from = 'stale', to = 'stuck' },
|
||||
stuck_to_fetch = { name = 'stuck_to_fetch', from = 'stuck', to = 'fetch' },
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
-- Always start with 'fetch' state
|
||||
function demuxer_cache.reset_state()
|
||||
demuxer_cache.state = {
|
||||
name = demuxer_cache.events.continue_fetch.to,
|
||||
demuxer_cache_time = 0,
|
||||
in_state_time = 0,
|
||||
}
|
||||
end
|
||||
|
||||
-- Has 'demuxer_cache_time' changed
|
||||
function demuxer_cache.has_progress_since(t)
|
||||
return demuxer_cache.state.demuxer_cache_time ~= t
|
||||
end
|
||||
|
||||
function demuxer_cache.is_state_fetch()
|
||||
return demuxer_cache.state.name == demuxer_cache.events.continue_fetch.to
|
||||
end
|
||||
|
||||
function demuxer_cache.is_state_stale()
|
||||
return demuxer_cache.state.name == demuxer_cache.events.continue_stale.to
|
||||
end
|
||||
|
||||
function demuxer_cache.is_state_stuck()
|
||||
return demuxer_cache.state.name == demuxer_cache.events.continue_stuck.to
|
||||
end
|
||||
|
||||
function demuxer_cache.transition(event)
|
||||
if demuxer_cache.state.name == event.from then
|
||||
|
||||
-- state setup
|
||||
demuxer_cache.state.demuxer_cache_time = event.demuxer_cache_time
|
||||
|
||||
if event.name == 'continue_fetch' then
|
||||
demuxer_cache.state.in_state_time = demuxer_cache.state.in_state_time + event.interval
|
||||
elseif event.name == 'continue_stale' then
|
||||
demuxer_cache.state.in_state_time = demuxer_cache.state.in_state_time + event.interval
|
||||
elseif event.name == 'continue_stuck' then
|
||||
demuxer_cache.state.in_state_time = demuxer_cache.state.in_state_time + event.interval
|
||||
elseif event.name == 'fetch_to_stale' then
|
||||
demuxer_cache.state.in_state_time = 0
|
||||
elseif event.name == 'stale_to_fetch' then
|
||||
demuxer_cache.state.in_state_time = 0
|
||||
elseif event.name == 'stale_to_stuck' then
|
||||
demuxer_cache.state.in_state_time = 0
|
||||
elseif event.name == 'stuck_to_fetch' then
|
||||
demuxer_cache.state.in_state_time = 0
|
||||
end
|
||||
|
||||
-- state transition
|
||||
demuxer_cache.state.name = event.to
|
||||
|
||||
msg.debug('demuxer_cache.transition', event.name, utils.to_string(demuxer_cache.state))
|
||||
else
|
||||
msg.error(
|
||||
'demuxer_cache.transition',
|
||||
'illegal transition', event.name,
|
||||
'from state', demuxer_cache.state.name)
|
||||
end
|
||||
end
|
||||
|
||||
function demuxer_cache.initialize(demuxer_cache_timer_interval)
|
||||
demuxer_cache.reset_state()
|
||||
demuxer_cache.timer = mp.add_periodic_timer(
|
||||
demuxer_cache_timer_interval,
|
||||
function()
|
||||
demuxer_cache.demuxer_cache_timer_tick(
|
||||
mp.get_property_native('demuxer-cache-time'),
|
||||
demuxer_cache_timer_interval)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
-- If there is no progress of demuxer_cache_time in
|
||||
-- settings.demuxer_cache_timer_timeout time interval switch state to
|
||||
-- 'stuck' and switch back to 'fetch' as soon as any progress is made
|
||||
function demuxer_cache.demuxer_cache_timer_tick(demuxer_cache_time, demuxer_cache_timer_interval)
|
||||
local event = nil
|
||||
local cache_has_progress = demuxer_cache.has_progress_since(demuxer_cache_time)
|
||||
|
||||
-- I miss pattern matching so much
|
||||
if demuxer_cache.is_state_fetch() then
|
||||
if cache_has_progress then
|
||||
event = demuxer_cache.events.continue_fetch
|
||||
else
|
||||
event = demuxer_cache.events.fetch_to_stale
|
||||
end
|
||||
elseif demuxer_cache.is_state_stale() then
|
||||
if cache_has_progress then
|
||||
event = demuxer_cache.events.stale_to_fetch
|
||||
elseif demuxer_cache.state.in_state_time < settings.demuxer_cache_timer_timeout then
|
||||
event = demuxer_cache.events.continue_stale
|
||||
else
|
||||
event = demuxer_cache.events.stale_to_stuck
|
||||
end
|
||||
elseif demuxer_cache.is_state_stuck() then
|
||||
if cache_has_progress then
|
||||
event = demuxer_cache.events.stuck_to_fetch
|
||||
else
|
||||
event = demuxer_cache.events.continue_stuck
|
||||
end
|
||||
end
|
||||
|
||||
event.demuxer_cache_time = demuxer_cache_time
|
||||
event.interval = demuxer_cache_timer_interval
|
||||
demuxer_cache.transition(event)
|
||||
end
|
||||
|
||||
|
||||
local paused_for_cache = {
|
||||
timer = nil,
|
||||
time = 0,
|
||||
}
|
||||
|
||||
function paused_for_cache.reset_timer()
|
||||
msg.debug('paused_for_cache.reset_timer', paused_for_cache.time)
|
||||
if paused_for_cache.timer then
|
||||
paused_for_cache.timer:kill()
|
||||
paused_for_cache.timer = nil
|
||||
paused_for_cache.time = 0
|
||||
end
|
||||
end
|
||||
|
||||
function paused_for_cache.start_timer(interval_seconds, timeout_seconds)
|
||||
msg.debug('paused_for_cache.start_timer', paused_for_cache.time)
|
||||
if not paused_for_cache.timer then
|
||||
paused_for_cache.timer = mp.add_periodic_timer(
|
||||
interval_seconds,
|
||||
function()
|
||||
paused_for_cache.time = paused_for_cache.time + interval_seconds
|
||||
if paused_for_cache.time >= timeout_seconds then
|
||||
paused_for_cache.reset_timer()
|
||||
reload_resume()
|
||||
end
|
||||
msg.debug('paused_for_cache', 'tick', paused_for_cache.time)
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
function paused_for_cache.handler(property, is_paused)
|
||||
if is_paused then
|
||||
|
||||
if demuxer_cache.is_state_stuck() then
|
||||
msg.info("demuxer cache has no progress")
|
||||
-- reset demuxer state to avoid immediate reload if
|
||||
-- paused_for_cache event triggered right after reload
|
||||
demuxer_cache.reset_state()
|
||||
reload_resume()
|
||||
end
|
||||
|
||||
paused_for_cache.start_timer(
|
||||
settings.paused_for_cache_timer_interval,
|
||||
settings.paused_for_cache_timer_timeout)
|
||||
else
|
||||
paused_for_cache.reset_timer()
|
||||
end
|
||||
end
|
||||
|
||||
function read_settings()
|
||||
options.read_options(settings, mp.get_script_name())
|
||||
msg.debug(utils.to_string(settings))
|
||||
end
|
||||
|
||||
function reload(path, time_pos)
|
||||
msg.debug("reload", path, time_pos)
|
||||
if time_pos == nil then
|
||||
mp.commandv("loadfile", path, "replace")
|
||||
else
|
||||
mp.commandv("loadfile", path, "replace", "start=+" .. time_pos)
|
||||
end
|
||||
end
|
||||
|
||||
function reload_resume()
|
||||
local path = mp.get_property("path", property_path)
|
||||
local time_pos = mp.get_property("time-pos")
|
||||
local reload_duration = mp.get_property_native("duration")
|
||||
|
||||
local playlist_count = mp.get_property_number("playlist/count")
|
||||
local playlist_pos = mp.get_property_number("playlist-pos")
|
||||
local playlist = {}
|
||||
for i = 0, playlist_count-1 do
|
||||
playlist[i] = mp.get_property("playlist/" .. i .. "/filename")
|
||||
end
|
||||
-- Tries to determine live stream vs. pre-recordered VOD. VOD has non-zero
|
||||
-- duration property. When reloading VOD, to keep the current time position
|
||||
-- we should provide offset from the start. Stream doesn't have fixed start.
|
||||
-- Decent choice would be to reload stream from it's current 'live' positon.
|
||||
-- That's the reason we don't pass the offset when reloading streams.
|
||||
if reload_duration and reload_duration > 0 then
|
||||
msg.info("reloading video from", time_pos, "second")
|
||||
reload(path, time_pos)
|
||||
-- VODs get stuck when reload is called without a time_pos
|
||||
-- this is most noticeable in youtube videos whenever download gets stuck in the first frames
|
||||
-- video would stay paused without being actually paused
|
||||
-- issue surfaced in mpv 0.33, afaik
|
||||
elseif reload_duration and reload_duration == 0 then
|
||||
msg.info("reloading video from", time_pos, "second")
|
||||
reload(path, time_pos)
|
||||
else
|
||||
msg.info("reloading stream")
|
||||
reload(path, nil)
|
||||
end
|
||||
msg.info("file ", playlist_pos+1, "of", playlist_count, "in playlist")
|
||||
for i = 0, playlist_pos-1 do
|
||||
mp.commandv("loadfile", playlist[i], "append")
|
||||
end
|
||||
mp.commandv("playlist-move", 0, playlist_pos+1)
|
||||
for i = playlist_pos+1, playlist_count-1 do
|
||||
mp.commandv("loadfile", playlist[i], "append")
|
||||
end
|
||||
end
|
||||
|
||||
function reload_eof(property, eof_reached)
|
||||
msg.debug("reload_eof", property, eof_reached)
|
||||
local time_pos = mp.get_property_number("time-pos")
|
||||
local duration = mp.get_property_number("duration")
|
||||
|
||||
if eof_reached and math.floor(time_pos) == math.floor(duration) then
|
||||
msg.debug("property_time_pos", property_time_pos, "time_pos", time_pos)
|
||||
|
||||
-- Check that playback time_pos made progress after the last reload. When
|
||||
-- eof is reached we try to reload video, in case there is more content
|
||||
-- available. If time_pos stayed the same after reload, it means that vidkk
|
||||
-- to avoid infinite reload loop when playback ended
|
||||
-- math.floor function rounds time_pos to a second, to avoid inane reloads
|
||||
if math.floor(property_time_pos) == math.floor(time_pos) then
|
||||
msg.info("eof reached, playback ended")
|
||||
mp.set_property("keep-open", property_keep_open)
|
||||
else
|
||||
msg.info("eof reached, checking if more content available")
|
||||
reload_resume()
|
||||
mp.set_property_bool("pause", false)
|
||||
property_time_pos = time_pos
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function on_file_loaded(event)
|
||||
local debug_info = {
|
||||
event = event,
|
||||
time_pos = mp.get_property("time-pos"),
|
||||
stream_pos = mp.get_property("stream-pos"),
|
||||
stream_end = mp.get_property("stream-end"),
|
||||
duration = mp.get_property("duration"),
|
||||
seekable = mp.get_property("seekable"),
|
||||
pause = mp.get_property("pause"),
|
||||
paused_for_cache = mp.get_property("paused-for-cache"),
|
||||
cache_buffering_state = mp.get_property("cache-buffering-state"),
|
||||
}
|
||||
msg.debug("debug_info", utils.to_string(debug_info))
|
||||
|
||||
-- When the video is reloaded after being paused for cache, it won't start
|
||||
-- playing again while all properties looks fine:
|
||||
-- `pause=no`, `paused-for-cache=no` and `cache-buffering-state=100`.
|
||||
-- As a workaround, we cycle through the paused state by sending two SPACE
|
||||
-- keypresses.
|
||||
-- What didn't work:
|
||||
-- - Cycling through the `pause` property.
|
||||
-- - Run the `playlist-play-index current` command.
|
||||
mp.commandv("keypress", 'SPACE')
|
||||
mp.commandv("keypress", 'SPACE')
|
||||
end
|
||||
|
||||
-- main
|
||||
|
||||
read_settings()
|
||||
|
||||
if settings.reload_key_binding ~= "" then
|
||||
mp.add_key_binding(settings.reload_key_binding, "reload_resume", reload_resume)
|
||||
end
|
||||
|
||||
if settings.paused_for_cache_timer_enabled then
|
||||
mp.observe_property("paused-for-cache", "bool", paused_for_cache.handler)
|
||||
end
|
||||
|
||||
if settings.demuxer_cache_timer_enabled then
|
||||
demuxer_cache.initialize(settings.demuxer_cache_timer_interval)
|
||||
end
|
||||
|
||||
if settings.reload_eof_enabled then
|
||||
-- vo-configured == video output created && its configuration went ok
|
||||
mp.observe_property(
|
||||
"vo-configured",
|
||||
"bool",
|
||||
function(name, vo_configured)
|
||||
msg.debug(name, vo_configured)
|
||||
if vo_configured then
|
||||
property_path = mp.get_property("path")
|
||||
property_keep_open = mp.get_property("keep-open")
|
||||
mp.set_property("keep-open", "yes")
|
||||
mp.set_property("keep-open-pause", "no")
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
mp.observe_property("eof-reached", "bool", reload_eof)
|
||||
end
|
||||
|
||||
mp.register_event("file-loaded", on_file_loaded)
|
||||
@@ -1,5 +0,0 @@
|
||||
if grep -q "Arch Linux" /etc/os-release
|
||||
function bat --wraps=glow --description 'alias bat glow'
|
||||
glow $argv
|
||||
end
|
||||
end
|
||||
@@ -1,9 +0,0 @@
|
||||
if grep -q "Arch Linux" /etc/os-release
|
||||
atuin init fish | source
|
||||
end
|
||||
|
||||
if grep -q "Arch Linux" /etc/os-release
|
||||
function cat --wraps=glow --description 'alias cat glow'
|
||||
glow $argv
|
||||
end
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
function deployments
|
||||
rpm-ostree status $argv
|
||||
end
|
||||
@@ -1,7 +0,0 @@
|
||||
function fish_greeting
|
||||
fastfetch -c ~/.config/fastfetch/startup.jsonc
|
||||
## atuin
|
||||
if grep -q "Arch Linux" /etc/os-release
|
||||
atuin init fish | source
|
||||
end
|
||||
end
|
||||
@@ -1,4 +0,0 @@
|
||||
function m4a --description 'alias m4a yt-dlp -x --audio-format m4a'
|
||||
yt-dlp -x --audio-format m4a $argv
|
||||
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
function pin-deployment
|
||||
sudo ostree admin pin $argv
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
function remove-deployment
|
||||
sudo ostree admin undeploy $argv
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
function unpin-deployment
|
||||
sudo ostree admin pin -u $argv
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
-N 5
|
||||
--embed-thumbnail
|
||||
--embed-metadata
|
||||
--cookies-from-browser firefox
|
||||
-o ~/Downloads/%(fulltitle)s.%(ext)s
|
||||
@@ -1,7 +0,0 @@
|
||||
--ozone-platform-hint=auto
|
||||
--enable-gpu-rasterization
|
||||
--ignore-gpu-blocklist
|
||||
--enable-zero-copy
|
||||
--use-gl=angle
|
||||
--use-angle=vulkan
|
||||
--enable-features=Vulkan,DefaultANGLEVulkan,VulkanFromANGLE,VaapiVideoDecodeLinuxGL,VaapiIgnoreDriverChecks,VaapiVideoEncoder,VaapiVideoDecoder
|
||||
@@ -1,221 +0,0 @@
|
||||
# Include any additional configuration file(s)
|
||||
# [include] sections are processed in the order you write them
|
||||
# Files in $CONFIG_DIR/topgrade.d/ are automatically included before this file
|
||||
[include]
|
||||
# paths = ["/etc/topgrade.toml"]
|
||||
|
||||
|
||||
[misc]
|
||||
# Run `sudo -v` to cache credentials at the start of the run
|
||||
# This avoids a blocking password prompt in the middle of an unattended run
|
||||
# (default: false)
|
||||
# pre_sudo = false
|
||||
# Sudo command to be used
|
||||
# sudo_command = "sudo"
|
||||
# Disable specific steps - same options as the command line flag
|
||||
disable = ["system", "containers"]
|
||||
# Ignore failures for these steps
|
||||
# ignore_failures = ["toolbx", "distrobox"]
|
||||
# List of remote machines with Topgrade installed on them
|
||||
# remote_topgrades = ["toothless", "pi", "parnas"]
|
||||
# Path to Topgrade executable on remote machines
|
||||
# remote_topgrade_path = ".cargo/bin/topgrade"
|
||||
# Arguments to pass to SSH when upgrading remote systems
|
||||
# ssh_arguments = "-o ConnectTimeout=2"
|
||||
# Arguments to pass tmux when pulling Repositories
|
||||
# tmux_arguments = "-S /var/tmux.sock"
|
||||
# Do not set the terminal title (default: true)
|
||||
# set_title = true
|
||||
# Display the time in step titles (default: true)
|
||||
# display_time = true
|
||||
# Don't ask for confirmations (no default value)
|
||||
assume_yes = true
|
||||
# Do not ask to retry failed steps (default: false)
|
||||
# no_retry = true
|
||||
# Run inside tmux (default: false)
|
||||
# run_in_tmux = true
|
||||
# Cleanup temporary or old files (default: false)
|
||||
cleanup = true
|
||||
# Send a notification for every step (default: false)
|
||||
# notify_each_step = false
|
||||
# Skip sending a notification at the end of a run (default: false)
|
||||
# skip_notify = true
|
||||
# The Bash-it branch to update (default: "stable")
|
||||
# bashit_branch = "stable"
|
||||
# Run specific steps - same options as the command line flag
|
||||
# only = ["system", "emacs"]
|
||||
|
||||
# Whether to self update
|
||||
#
|
||||
# this will be ignored if the binary is built without self update support
|
||||
#
|
||||
# available also via setting the environment variable TOPGRADE_NO_SELF_UPGRADE)
|
||||
# no_self_update = true
|
||||
|
||||
# Extra tracing filter directives
|
||||
# These are prepended to the `--log-filter` argument
|
||||
# See: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives
|
||||
# log_filters = ["topgrade::command=debug", "warn"]
|
||||
|
||||
# Commands to run before anything
|
||||
[pre_commands]
|
||||
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
|
||||
|
||||
# Commands to run after anything
|
||||
[post_commands]
|
||||
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
|
||||
|
||||
# Custom commands
|
||||
[commands]
|
||||
# "Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
|
||||
# "Custom command using interactive shell (unix)" = "-i vim_upgrade"
|
||||
|
||||
[python]
|
||||
# enable_pip_review = true ###disabled by default
|
||||
# enable_pip_review_local = true ###disabled by default
|
||||
# enable_pipupgrade = true ###disabled by default
|
||||
# pipupgrade_arguments = "-y -u --pip-path pip" ###disabled by default
|
||||
|
||||
[composer]
|
||||
# self_update = true
|
||||
|
||||
[brew]
|
||||
# For the BrewCask step
|
||||
# If `Repo Cask Upgrade` exists, then use the `-a` option.
|
||||
# Otherwise, use the `--greedy` option.
|
||||
# greedy_cask = true
|
||||
|
||||
# For the BrewCask step
|
||||
# If `Repo Cask Upgrade` does not exist, then use the `--greedy_latest` option.
|
||||
# NOTE: the above entry `greedy_cask` contains this entry, though you can enable
|
||||
# both of them, they won't clash with each other.
|
||||
# greedy_latest = true
|
||||
|
||||
# For the BrewCask step
|
||||
# If `Repo Cask Upgrade` does not exist, then use the `--greedy_latest` option.
|
||||
# NOTE: the above entry `greedy_cask` contains this entry, though you can enable
|
||||
# both of them, they won't clash with each other.
|
||||
# greedy_latest = true
|
||||
|
||||
# For the BrewFormula step
|
||||
# Execute `brew autoremove` after the step.
|
||||
# autoremove = true
|
||||
|
||||
# For the BrewFormula step
|
||||
# Upgrade formulae built from the HEAD branch; `brew upgrade --fetch-HEAD`
|
||||
# fetch_head = true
|
||||
|
||||
[linux]
|
||||
# Arch Package Manager to use.
|
||||
# Allowed values:
|
||||
# autodetect, aura, garuda_update, pacman, pamac, paru, pikaur, trizen, yay
|
||||
# arch_package_manager = "pacman"
|
||||
|
||||
# Arguments to pass yay (or paru) when updating packages
|
||||
# yay_arguments = "--nodevel"
|
||||
|
||||
# Arguments to pass dnf when updating packages
|
||||
# dnf_arguments = "--refresh"
|
||||
|
||||
# aura_aur_arguments = "-kx"
|
||||
|
||||
# aura_pacman_arguments = ""
|
||||
# garuda_update_arguments = ""
|
||||
|
||||
# show_arch_news = true
|
||||
|
||||
# trizen_arguments = "--devel"
|
||||
|
||||
# pikaur_arguments = ""
|
||||
|
||||
# pamac_arguments = "--no-devel"
|
||||
|
||||
# enable_tlmgr = true
|
||||
|
||||
# emerge_sync_flags = "-q"
|
||||
|
||||
# emerge_update_flags = "-uDNa --with-bdeps=y world"
|
||||
|
||||
# redhat_distro_sync = false
|
||||
|
||||
# suse_dup = false
|
||||
|
||||
# rpm_ostree = false
|
||||
|
||||
# nix_arguments = "--flake"
|
||||
|
||||
# nix_env_arguments = "--prebuilt-only"
|
||||
|
||||
# Extra Home Manager arguments
|
||||
|
||||
# home_manager_arguments = ["--flake", "file"]
|
||||
|
||||
|
||||
[git]
|
||||
# How many repos to pull at max in parallel
|
||||
# max_concurrency = 5
|
||||
|
||||
# Additional git repositories to pull
|
||||
repos = [
|
||||
"$HOME/*/",
|
||||
"$HOME/git/*/",
|
||||
]
|
||||
|
||||
# Don't pull the predefined git repos
|
||||
# pull_predefined = false
|
||||
# Arguments to pass Git when pulling Repositories
|
||||
# arguments = "--rebase --autostash"
|
||||
|
||||
[windows]
|
||||
# Manually select Windows updates
|
||||
# accept_all_updates = false
|
||||
# open_remotes_in_new_terminal = true
|
||||
# wsl_update_pre_release = true
|
||||
# wsl_update_use_web_download = true
|
||||
# Causes Topgrade to rename itself during the run to allow package managers
|
||||
# to upgrade it. Use this only if you installed Topgrade by using a package
|
||||
# manager such as Scoop or Cargo
|
||||
# self_rename = true
|
||||
|
||||
[npm]
|
||||
# Use sudo if the NPM directory isn't owned by the current user
|
||||
# use_sudo = true
|
||||
|
||||
[yarn]
|
||||
# Run `yarn global upgrade` with `sudo`
|
||||
# use_sudo = true
|
||||
|
||||
[vim]
|
||||
# For `vim-plug`, execute `PlugUpdate!` instead of `PlugUpdate`
|
||||
# force_plug_update = true
|
||||
|
||||
[firmware]
|
||||
# Offer to update firmware; if false just check for and display available updates
|
||||
upgrade = false
|
||||
|
||||
[vagrant]
|
||||
# Vagrant directories
|
||||
# directories = []
|
||||
# power on vagrant boxes if needed
|
||||
# power_on = true
|
||||
# Always suspend vagrant boxes instead of powering off
|
||||
# always_suspend = true
|
||||
|
||||
[flatpak]
|
||||
# Use sudo for updating the system-wide installation
|
||||
# use_sudo = true
|
||||
|
||||
[distrobox]
|
||||
use_root = false
|
||||
# containers = ["archlinux-latest"]
|
||||
|
||||
[containers]
|
||||
# Specify the containers to ignore while updating (Wildcard supported)
|
||||
# ignored_containers = ["ghcr.io/rancher-sandbox/rancher-desktop/rdx-proxy:latest", "docker.io*"]
|
||||
|
||||
[lensfun]
|
||||
# If disabled, Topgrade invokes `lensfun‑update‑data` without root priviledge,
|
||||
# then the update will be only available to you. Otherwise, `sudo` is required,
|
||||
# and the update will be installed system-wide, i.e., available to all users.
|
||||
# (default: false)
|
||||
# use_sudo = false
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
/usr/bin/just --justfile /usr/share/appends/00-master.just "${@}"
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if any arguments were passed to the script
|
||||
if [ "$#" -gt 0 ]; then
|
||||
# If arguments are passed, include them in the flatpak run command
|
||||
flatpak run net.kuribo64.melonDS "$@"
|
||||
else
|
||||
# If no arguments are passed, just run the flatpak without any file
|
||||
flatpak run net.kuribo64.melonDS
|
||||
fi
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
IGNORE_MANUAL="wheel|root|sudo|nobody"
|
||||
for manually_created_user in $(grep -E -e ".*:[1-3][[:digit:]]{3}:.*" "$1") ; do
|
||||
# `grep` matched on a group with GID [1-3]000 or so
|
||||
if [ ! -z "$(cut -f4 -d: <<< "${manually_created_user}")" ] ; then
|
||||
continue
|
||||
fi
|
||||
IGNORE_MANUAL="$(cut -f1,3 -d: --output-delimiter="|" <<< "${manually_created_user}")|${IGNORE_MANUAL:-}"
|
||||
for related_group in $(grep "$(cut -f1 -d: <<< ${manually_created_user})" "$1"); do
|
||||
# Deduplicates matches for the same group/user
|
||||
if [ "$(cut -f1 <<< "${related_group}")" == "$(cut -f1 <<< "${manually_created_user}")" ] ; then
|
||||
continue
|
||||
fi
|
||||
IGNORE_MANUAL="$(cut -f1 -d: <<< "${related_group}")|${IGNORE_MANUAL:-}"
|
||||
done
|
||||
done
|
||||
|
||||
grep --no-filename -e "^g" /usr/lib/sysusers.d/*.conf | grep -v -E -e "${IGNORE_MANUAL}" | tr -s " " | cut -d" " -f2 | uniq | xargs -I{} sed -i "/{}/d" "${1}"
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if any arguments were passed to the script
|
||||
if [ "$#" -gt 0 ]; then
|
||||
# If arguments are passed, include them in the flatpak run command
|
||||
flatpak run io.github.ryubing.Ryujinx "$@"
|
||||
else
|
||||
# If no arguments are passed, just run the flatpak without any file
|
||||
flatpak run io.github.ryubing.Ryujinx
|
||||
fi
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
export XDG_RUNTIME_DIR=/run/user/$(id -u)
|
||||
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
|
||||
eval $(dbus-launch --sh-syntax)
|
||||
fi
|
||||
|
||||
mutter --wayland &
|
||||
MUTTER_PID=$!
|
||||
sleep 5
|
||||
export DISPLAY=:1
|
||||
|
||||
# Start Waydroid in the background
|
||||
waydroid show-full-ui &
|
||||
WAYDROID_PID=$!
|
||||
|
||||
# Wait for Waydroid exit event in the log
|
||||
tail -f -n0 /var/lib/waydroid/waydroid.log | grep -m1 run_buffer
|
||||
|
||||
# Cleanup and logout
|
||||
kill $WAYDROID_PID
|
||||
kill $MUTTER_PID
|
||||
|
||||
# Use loginctl to end the session gracefully
|
||||
loginctl terminate-session "$XDG_SESSION_ID"
|
||||
|
||||
exit 0
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Define directory & target filename
|
||||
directory="$1"
|
||||
filename="$2"
|
||||
|
||||
# Check if the filename already has .tar.zst; if not, append it
|
||||
if [[ ! "$filename" =~ \.tar\.zst$ ]]; then
|
||||
archive="$filename.tar.zst"
|
||||
else
|
||||
archive="$filename"
|
||||
fi
|
||||
|
||||
# Make sure the directory exists
|
||||
if [[ ! -d "$directory" ]]; then
|
||||
echo "Directory '$directory' not found."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Create the archive with tar and pipe it to zstd
|
||||
tar -cvf - "$directory" | zstd -9 -T0 -o "$archive"
|
||||
|
||||
# Check for errors during compression
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "Error during compression."
|
||||
return 1
|
||||
fi
|
||||
@@ -1,27 +0,0 @@
|
||||
# We have this script so that people using images with `nss-altfiles` (`/usr/lib/g{roup,shadow}`)
|
||||
# do not break their systems when rebasing to an image without that
|
||||
# This usually happens when using https://github.com/hhd-dev/rechunk then rebasing to an image without it.
|
||||
# Please DO NOT remove this unless this is fully, completely obsolete.
|
||||
# This is exactly what is making it break: https://github.com/ublue-os/legacy-rechunk/blob/1d2b0c2e99afbdc2eb06788ae28e157a88b03d70/1_prune.sh#L41-L47
|
||||
# Users WILL experience black screens and systems will NOT boot if this script malfunctions. Please test this properly and always make sure this works
|
||||
# Relevant issues:
|
||||
# - https://github.com/bootc-dev/bootc/issues/1179#issuecomment-2708305926
|
||||
# - https://github.com/ublue-os/main/issues/759
|
||||
# - https://github.com/ublue-os/bluefin-lts/issues/918
|
||||
# - https://github.com/ublue-os/image-template/issues/177
|
||||
# - https://github.com/ublue-os/aurora/issues/1468
|
||||
# - https://github.com/ublue-os/bluefin/issues/3852
|
||||
# This got created on Tue, 16 Dec 2025 00:44:58 -0300
|
||||
[Unit]
|
||||
Description=Fix groups for Legacy rechunker
|
||||
Wants=local-fs.target
|
||||
After=local-fs.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=rechunker-group-fix /etc/group
|
||||
ExecStart=rechunker-group-fix /etc/gshadow
|
||||
ExecStart=systemd-sysusers
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target multi-user.target
|
||||
@@ -1,9 +0,0 @@
|
||||
[Unit]
|
||||
Description=Topgrade update service
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecCondition=/bin/bash -c '[[ "$(busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Metered | cut -c 3-)" == @(2|4) ]]'
|
||||
ExecStart=/usr/bin/topgrade --no-retry --cleanup --yes
|
||||
@@ -1,11 +0,0 @@
|
||||
[Unit]
|
||||
Description=Topgrade update service timer
|
||||
|
||||
[Timer]
|
||||
RandomizedDelaySec=5m
|
||||
OnBootSec=2m
|
||||
OnUnitActiveSec=12h
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -1 +0,0 @@
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user