mirror of
https://github.com/tumillanino/miasma-os.git
synced 2026-06-15 13:49:33 +00:00
kernel still breaking. updated name which may have been issue
This commit is contained in:
1
docs/solarpowered-main/.github/CODEOWNERS
vendored
Normal file
1
docs/solarpowered-main/.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* @xynydev @fiftydinar
|
||||||
6
docs/solarpowered-main/.github/dependabot.yml
vendored
Normal file
6
docs/solarpowered-main/.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
58
docs/solarpowered-main/.github/workflows/build-solarpowered-ex.yml
vendored
Normal file
58
docs/solarpowered-main/.github/workflows/build-solarpowered-ex.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
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
|
||||||
58
docs/solarpowered-main/.github/workflows/build-solarpowered.yml
vendored
Normal file
58
docs/solarpowered-main/.github/workflows/build-solarpowered.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
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
|
||||||
23
docs/solarpowered-main/.github/workflows/cleanup.yml
vendored
Normal file
23
docs/solarpowered-main/.github/workflows/cleanup.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
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
|
||||||
49
docs/solarpowered-main/.github/workflows/release.yml
vendored
Normal file
49
docs/solarpowered-main/.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
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
Normal file
16
docs/solarpowered-main/.gitignore
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
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
|
||||||
92
docs/solarpowered-main/.justfile
Normal file
92
docs/solarpowered-main/.justfile
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
@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
|
||||||
201
docs/solarpowered-main/LICENSE
Normal file
201
docs/solarpowered-main/LICENSE
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
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.
|
||||||
86
docs/solarpowered-main/README.md
Normal file
86
docs/solarpowered-main/README.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# <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
|
||||||
|
```
|
||||||
43
docs/solarpowered-main/archives/.github/workflows/build-autosolarpowered.yml
vendored
Normal file
43
docs/solarpowered-main/archives/.github/workflows/build-autosolarpowered.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
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
|
||||||
37
docs/solarpowered-main/archives/.github/workflows/build-bootc.yml
vendored
Normal file
37
docs/solarpowered-main/archives/.github/workflows/build-bootc.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
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 }}
|
||||||
34
docs/solarpowered-main/archives/.github/workflows/build-raw.yml
vendored
Normal file
34
docs/solarpowered-main/archives/.github/workflows/build-raw.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
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 }}
|
||||||
43
docs/solarpowered-main/archives/.github/workflows/build-solarizzed.yml
vendored
Normal file
43
docs/solarpowered-main/archives/.github/workflows/build-solarizzed.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
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
|
||||||
43
docs/solarpowered-main/archives/.github/workflows/build-solarpowered-rawhide.yml
vendored
Normal file
43
docs/solarpowered-main/archives/.github/workflows/build-solarpowered-rawhide.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
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
|
||||||
3
docs/solarpowered-main/archives/README.md
Normal file
3
docs/solarpowered-main/archives/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# archives
|
||||||
|
|
||||||
|
This folder is for placing archived recipes/files. For reference only.
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
wget https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-porn/hosts -O /usr/etc/hosts
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#!/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."
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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.'
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#!/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!"
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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.'
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#!/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.'
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#!/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!"
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#!/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!"
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
---
|
||||||
|
# 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
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
---
|
||||||
|
# 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
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
# 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
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
---
|
||||||
|
# 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
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,240 @@
|
|||||||
|
---
|
||||||
|
# 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
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
---
|
||||||
|
# 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
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
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
|
||||||
64
docs/solarpowered-main/archives/recipes/packages/core.yml
Normal file
64
docs/solarpowered-main/archives/recipes/packages/core.yml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,204 @@
|
|||||||
|
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
|
||||||
4
docs/solarpowered-main/cosign.pub
Normal file
4
docs/solarpowered-main/cosign.pub
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnz+kko9HwCdM4RYio+lTmDzpzGkL
|
||||||
|
1GBz4Y92qGyn0eXUFwI7zxsO2u6C+Bs4FTn9bgmmyfrMjTrYYGgKJApq6Q==
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
24
docs/solarpowered-main/files/README.md
Normal file
24
docs/solarpowered-main/files/README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# 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`.
|
||||||
|
|
||||||
8
docs/solarpowered-main/files/dnf/vscodium.repo
Normal file
8
docs/solarpowered-main/files/dnf/vscodium.repo
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[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
|
||||||
3
docs/solarpowered-main/files/gschema-overrides/README.md
Normal file
3
docs/solarpowered-main/files/gschema-overrides/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# README.md
|
||||||
|
|
||||||
|
This folder contains gschema-overrides files.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[org.gnome.desktop.app-folders.folders.Waydroid]
|
||||||
|
apps=['Waydroid.desktop']
|
||||||
|
categories=['X-WayDroid-App']
|
||||||
|
name='Waydroid'
|
||||||
|
translate=false
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[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']
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[org.gnome.desktop.background]
|
||||||
|
color-shading-type='solid'
|
||||||
|
picture-options='zoom'
|
||||||
|
primary-color='#000000'
|
||||||
|
secondary-color='#000000'
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[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'
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[org.gnome.desktop.peripherals.touchpad]
|
||||||
|
tap-to-click=true
|
||||||
|
two-finger-scrolling-enabled=true
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[org.gnome.desktop.wm.preferences]
|
||||||
|
action-double-click-titlebar='toggle-maximize'
|
||||||
|
titlebar-uses-system-font=true
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[org.gnome.mutter]
|
||||||
|
center-new-windows=true
|
||||||
|
check-alive-timeout=30000
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[org.gnome.nautilus.preferences]
|
||||||
|
default-sort-order='type'
|
||||||
|
show-create-link=true
|
||||||
|
show-delete-permanently=true
|
||||||
15
docs/solarpowered-main/files/scripts/README.md
Normal file
15
docs/solarpowered-main/files/scripts/README.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# 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
|
||||||
10
docs/solarpowered-main/files/scripts/example.sh
Normal file
10
docs/solarpowered-main/files/scripts/example.sh
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/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'
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#!/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
|
||||||
50
docs/solarpowered-main/files/scripts/kernels/kernel-blu.sh
Normal file
50
docs/solarpowered-main/files/scripts/kernels/kernel-blu.sh
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/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
|
||||||
56
docs/solarpowered-main/files/scripts/kernels/kernel-cachy.sh
Normal file
56
docs/solarpowered-main/files/scripts/kernels/kernel-cachy.sh
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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.'
|
||||||
18
docs/solarpowered-main/files/scripts/shared/android-tools.sh
Normal file
18
docs/solarpowered-main/files/scripts/shared/android-tools.sh
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#!/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."
|
||||||
7
docs/solarpowered-main/files/scripts/shared/edid.sh
Normal file
7
docs/solarpowered-main/files/scripts/shared/edid.sh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#!/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.'
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#!/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.'
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#!/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."
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#!/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."
|
||||||
0
docs/solarpowered-main/files/shared/etc/.gitkeep
Normal file
0
docs/solarpowered-main/files/shared/etc/.gitkeep
Normal file
68
docs/solarpowered-main/files/shared/etc/distrobox.ini
Normal file
68
docs/solarpowered-main/files/shared/etc/distrobox.ini
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# 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
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
container_always_pull="1"
|
||||||
|
container_generate_entry=1
|
||||||
|
container_manager="podman"
|
||||||
|
non_interactive="1"
|
||||||
7
docs/solarpowered-main/files/shared/etc/rpm-ostreed.conf
Normal file
7
docs/solarpowered-main/files/shared/etc/rpm-ostreed.conf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 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
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
################### 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
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
## 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
|
||||||
@@ -0,0 +1,333 @@
|
|||||||
|
-- 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---------------------------------
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
---@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'))
|
||||||
@@ -0,0 +1,418 @@
|
|||||||
|
-- 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)
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
if grep -q "Arch Linux" /etc/os-release
|
||||||
|
function bat --wraps=glow --description 'alias bat glow'
|
||||||
|
glow $argv
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
function deployments
|
||||||
|
rpm-ostree status $argv
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
function fish_greeting
|
||||||
|
fastfetch -c ~/.config/fastfetch/startup.jsonc
|
||||||
|
## atuin
|
||||||
|
if grep -q "Arch Linux" /etc/os-release
|
||||||
|
atuin init fish | source
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
function m4a --description 'alias m4a yt-dlp -x --audio-format m4a'
|
||||||
|
yt-dlp -x --audio-format m4a $argv
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
function pin-deployment
|
||||||
|
sudo ostree admin pin $argv
|
||||||
|
end
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
function remove-deployment
|
||||||
|
sudo ostree admin undeploy $argv
|
||||||
|
end
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
function unpin-deployment
|
||||||
|
sudo ostree admin pin -u $argv
|
||||||
|
end
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
-N 5
|
||||||
|
--embed-thumbnail
|
||||||
|
--embed-metadata
|
||||||
|
--cookies-from-browser firefox
|
||||||
|
-o ~/Downloads/%(fulltitle)s.%(ext)s
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
--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
|
||||||
221
docs/solarpowered-main/files/shared/etc/topgrade.toml
Normal file
221
docs/solarpowered-main/files/shared/etc/topgrade.toml
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
# 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
|
||||||
3
docs/solarpowered-main/files/shared/usr/bin/append
Executable file
3
docs/solarpowered-main/files/shared/usr/bin/append
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
/usr/bin/just --justfile /usr/share/appends/00-master.just "${@}"
|
||||||
10
docs/solarpowered-main/files/shared/usr/bin/melonDS
Executable file
10
docs/solarpowered-main/files/shared/usr/bin/melonDS
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/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
|
||||||
19
docs/solarpowered-main/files/shared/usr/bin/rechunker-group-fix
Executable file
19
docs/solarpowered-main/files/shared/usr/bin/rechunker-group-fix
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/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}"
|
||||||
10
docs/solarpowered-main/files/shared/usr/bin/ryujinx
Executable file
10
docs/solarpowered-main/files/shared/usr/bin/ryujinx
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/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
|
||||||
27
docs/solarpowered-main/files/shared/usr/bin/waydroid-session
Executable file
27
docs/solarpowered-main/files/shared/usr/bin/waydroid-session
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/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
|
||||||
27
docs/solarpowered-main/files/shared/usr/bin/zstar
Executable file
27
docs/solarpowered-main/files/shared/usr/bin/zstar
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/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
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# 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
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[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
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Topgrade update service timer
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
RandomizedDelaySec=5m
|
||||||
|
OnBootSec=2m
|
||||||
|
OnUnitActiveSec=12h
|
||||||
|
Persistent=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
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