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