commit 1b05764ccfd3f3d3e39b76c01116781a8dfca3f0 Author: Jacob Hrbek Date: Wed Dec 9 13:34:38 2020 +0100 Initial commit Signed-off-by: Jacob Hrbek diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..393a216 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,6 @@ +pipeline: + ci-flow: + image: rust:latest + commands: + - cargo install --debug cargo-make + - cargo make build \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..f9c1e6c --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,7 @@ +# Reference to configuration - https://github.blog/2017-07-06-introducing-code-owners/ +# Relevant https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners + +# This file is used to set permission per team or user to allow auto-merging + +# Rights for the creator +* @kreyren \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..add0ccd --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,5 @@ +# Funding page for the original creator +github: kreyren + +# Referer link on github.com/kreyren +custom: https://my.fsf.org/join?referrer=3706032 \ No newline at end of file diff --git a/.github/README.md b/.github/README.md new file mode 100644 index 0000000..68d8d44 --- /dev/null +++ b/.github/README.md @@ -0,0 +1,13 @@ +FIXME-GFX(Krey): Header here + + +[![Built with cargo-make](https://sagiegurari.github.io/cargo-make/assets/badges/cargo-make.svg)](https://sagiegurari.github.io/cargo-make) + +Repository creating devuan templateVM package for various distributions providing domain-0 (dom0) on QubesOS with priority for the default fedora. + +### Goal +Get devuan templateVM on QubesOS + +### Abstract +1. Create the devuan userland with scripts to put it in TemplateVM of QubesOS +2. Package it \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..66dd3bd --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,33 @@ +# Template from https://github.com/sagiegurari/ci_info/blob/master/.github/workflows/ci.yml +name: CI +on: [push, pull_request] +env: + CLICOLOR_FORCE: 1 +jobs: + ci: + name: CI + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + rust: stable + os: [ ubuntu-latest, windows-latest, macOS-latest ] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install rust + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + profile: minimal + override: true + - name: Install cargo-make + uses: actions-rs/cargo@v1 + with: + command: install + args: --debug cargo-make + - name: Run CI + uses: actions-rs/cargo@v1 + with: + command: make + args: build \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..16b3c42 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Exclude the build target +build/ \ No newline at end of file diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..f25900b --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,2 @@ +# FIXME-GITPOD(Krey): Typefox kicked me from their org for bullshit reasons and gitpod by itself is limiting factor when it comes to development e.g. lack of root and access to /dev/kvm for virtualization. Provided as-is to comply with GNU phylosophy and patches accepted +image: gitpod/workspace-full:latest \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d012226 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "editor.tabSize": 2, + "editor.renderWhitespace": "all", + "editor.insertSpaces": false +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5e517e8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,30 @@ +FIXME-GFX(Krey): Add header image + +# Code indexing (tags) +Source code in this project is adapted for rolling release with versioned releases and as such the code requires to be indexed for continous improvements that were captured during a quality assurance. + +You are encouraged to search the source code and look for these tags to resolve them. + +## Resolving FIXME tags +Source code in this project has comments above an imperfect code that needs resolving which is sorted in follwing categories: +- FIXME = General fixme +- FIXME-QA = Fixme concerning Code quality +- FIXME-AUTO = Fixme concerning automatization such as Continuous integrationg +- FIXME-TRANSLATE = Codeblocks that return an output and need translating in different spoken language +- FIXME-CROSS = Codeblocks that needs implementation for cross-platform +- FIXME-GFX = Tags for graphics-releted concerns +- FIXME- = Tags concerning configuration of the development environment + +Example of FIXME tag: +```sh +# FIXME-QA(Krey): Complaining about things +echo something +``` + +## Resolving DNM (DoNotMerge) tags +This repository is manage on rolling-release with versioned releases, the main branch might contain `DNM` tags in the source code for things that needs to be resolved prior to merging that should be resolved with priority. These tags share categories with FIXME tags. + +These tags prevent versioned release. + +# Peer-Review +Any relevant information concerning the implementation is appreciated. \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..6473b73 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,187 @@ +# Kreyren's license + +Version 09/12/2020-EU | 12:42:30 CEST (DD/MM/YYYY-EU | HH:MM:SS TIMEZONE) + +Copyrighted by the creator Jacob Hrbek identified with an email kreyren@rixotstudio.cz and GPG signature key 0x765AED304211C28410D5C478FCBA0482B0AB9F10 assuming these identifications not hijacked (if hijacked the rights in this license are considered as suspended until access is restored) in 09/12/2020 12:42:30 CEST copyrighted as all rights reserved unless explicitly stated otherwise in this license/files/directories for countries, but not limited to territories, planets, galaxies and whatever is behind these, in front or in the middle of these that enforce copyright law (or it's equivalent) else the code is not allowed to be used under a sanction of waving fist at the general location of said jurisdiction area and screaming "Daaamn youu" while politely asking to respect the license as it is made to comply with four freedoms as defined by Free Software Foundation https://en.wikipedia.org/wiki/Four_Freedoms_(software) and made to make my life easier unless it is conflicting with the culture of the said location. + +Preamble + +This license is made to manage the legality of this software while allowing the contributors to propose changes and learn about the law in practice while giving me the option to use my preferred editor without babysitting the users and getting more features and code improvement passively. + +## 0. Terminology + +Section dedicated to explaining used terms to avoid confusion. + +### 0.1. FIXME flags + +FIXME flags are for internal purposes i.e to mark a relevant area for implementation or reimplementation and thus it is not expected to be considered a part of the license. + +FIXME flags are generally defined as: + +``` +FIXME: Something here +FIXME-LOCATOR: Something here +``` + +or as a comment which could be: + +``` + +``` + +### 0.2. Original repository + +Meaning repository where this license has been created, as of 22/08/2020 it is located at the hyperlink https://github.com/reymacs/reymacs + +### 0.3. Contributors + +Life forms capable of submitting relevant improvements and cooperation in this project and it's forks. + +### 0.4. Translators + +Life forms capable of translating the project in other languages. + +### 0.5. Maintainers + +Life forms capable of managing the project in order to allow it's updates and community management. + +### 0.6. End-users + +Life forms that are using this source code and it's binaries. + +FIXME-LEGAL: Needed more? + +END OF TERMINOLOGY + +## 1. Conditions + +Parties using or actively cooperating on this project are allowed to use the licensed content as provided in this license as long as they: + 1. Reference all authors of the software that you are using in case you decide to make a changes in the code. + 2. Keep the software open-source and allow your users to gain access to the source code on demand in clear, visible and intuitive way i.e using GitHub repository while providing help with the source code to the best of your ability limited by your resources and motivation. + 3. Their actions are not directly harmful to the original project or it's community unless it is an act of self-defense or preservation of a life forms and it's species. + 4. Their actions are not violating this license. + 5. This license is not conflicting with laws in their jurisdictional area. + 6. They are capable of reading and understanding this license. + 6.1. They have the option to file a new issue on hyperlink https://github.com/reymacs/reymacs/issues/new (requires a GitHub account) to request help and/or ask on hyperlink https://webchat.freenode.net/##law (requires Freenode account) which is community of volunteers willing to help you with law. + 7. In case of a conflict you are expected to attempt solution through the original project for out-of-court resolution + +END OF CONDITIONS + +## 2. Rights of relevant parties + +Life forms affiliated with this software usage and development have the following rights assuming conditions above not violated: + 1. Perform changes to the source code + 2. Redistribute the source code and it's binaries + 3. Politely request help with the source code assuming that your questions are in a language understandable by the party that you are requesting the help from and you are asking **short** and sensible questions while having the required knowledge to work with the source code + 4. Request more permission on demand in the issue tracker of the relevant project + 4.1. You are not allowed to directly perform changes in this license, but if you want to change something in this license you have the right to propose the change and implement it to the original repository once approved. + +## 3. Legality + +This license is provided to the best of project's ability to not conflict with legality of relevant jurisdictional area which is humanly and theoretically impossible to comfort in the real time for reasons of, but not limited to insufficient space exploration, regular changes of the law for relevant areas and resources needed for the implementation. + +As mentioned above you are not allowed to use the software if you are aware that it is conflicting with a law in your jurisdictional area. + +## 4. Your agreement + +You are not requested to accept this license as you did not sign it, but nothing other then this license grants you the permission to use the copyrighted material the way it is described here and thus by using the software and/or utilizing the rights granted by this license and/or contributing to the project you indicate your acceptance of this license. + +## 5. Maintenance of this license + +This license is versioned at it's header using date, time and timezone signed using a valid GPG signature of the copyright holder through software git which is designed to overwrite the previous version the day it has been merged in the original repository. +The copyright holder reserves the right to perform the update at any time for any reason. + +Each license update voids the previous license version. + +## 6. Your contributions + +Everyone is allowed to propose changes to the software as long as it complies with informations provided in `CONTRIBUTING.md` at the root of relevant directory (if it exists) and said life-form owns the copyright to the work that they are submitting to this project since submission of copyrighted material would make the project illegal in countries that enforce copyright law. + +### 6.1. Requirement for signature +Your contributions has to be signed with a valid GPG signature to prove your copyright claim and to prove your acceptance of this license. + +### 6.2. Right to revoke the contribution + +In case the contributor's jurisdictional area grants them the right to revoke their contribution then by using a valid GPG signature they revoke the right to revoke their contribution for that specific contribution. + +### 6.3. Right to be anonymous + +In case the contributor wants to stay anonymous they can state in the commit message using the following clause: + +``` +I the copyright holder identified by a valid GPG signature here by transfer the copyright ownership of all the material provided to the project to which i am submitting this contribution as I in a good faith believe that I am the rightful copyright holder of all the material provided. +``` + +### 6.4. Patents + +Contributors by using a valid GPG signature and submitting their material to this reymacs project grants the mentioned project a non-exclusive, space-wide, royalty-free patent license under the contributor's essential patent claims to make, use, sell, offer for sale, import and otherwise run, modify and propagate the provided material. + +## 7. Warranty + +This copyrighted material is provided by the copyright holder and other parties with no warranty unless explicitly stated otherwise. +Should the mentioned material prove defective you as the user of the said material assume the cost of all necessary servicing, repair or corrections as a result of your usage of said material while having the obligation to inform the original project about this unwanted behavior so that it can be resolved. + +If you are using said material and your party is not described in terminology or defined here then you assume a role of an end-user until your party can be appropriately defined. + +## 8. Resolving of conflicts + +In case you found a conflict in this license and/or in case the software is violating your rights then you are expected to attempt resolution of this through the original project using a new "ticket" in the issue tracker located (as of 22/08/2020) at hyperlink https://github.com/reymacs/reymacs/issues/new (requires a github account) or through an email to the copyright holder prior to filing a lawsuit as this project is made to resolve these kinds of conflicts out-of-court. + +## 9. Termination + +Original project reserves the explicit right to terminate the rights of it's affiliated parties (i.e. End-users, Contributors, etc..) to this license in case they are in a jurisdictional area that enforces copyright law (or it's equivalent) that gives us the option/right to enforce this license and they break any of the stated text in this license. +The termination starts at immediately after the conflicting party has been informed about it though delivering this written text that is expected to be signed with valid GPG of the copyright holder or privileged party: + +```md +## Kreyren's license termination + +Dear , + +We regret to inform you that your rights to our license has been terminated for the following reason(s): + + + +We demand that you resolve these issues as soon as possible so that your rights can be restored. + +We are informing you that you have been granted special rights for this termination process that might be of use to you in case this termination conflicts with your culture or similar situation. + +Sincerely, +- +``` + +In general project does it's best to avoid termination by providing a written warning so that the issues can be resolved appropriately which may be provided using a written text signed with a valid GPG signature of a copyright holder or privileged party: + +```md +# Kreyren's license violation warning + +Dear , your action is required, + +We are informing you about what we believe is a license violation on your part: + + + +Thus reymacs project demands that you resolve these issues within Hours otherwise we will be forced to terminate your rights to the copyrighted material provided by reymacs project. + +Thank you for your cooperation, +- +``` + +### 9.1. Rights in case of termination + +We want to make the license acceptable for everyone and thus we grant these rights to the terminating party that are expected to make the license better in that area. + +#### 9.1.1. Exceptions + +Terminating party have the right to request exception which will be considered appropriately, for example cultural reasons are a valid reason for an exception that is then expected to be implemented in the license. + +#### 9.1.2. Request for more time + +In case the terminated party stated that they don't have the resources to resolve the mentioned issues in a specified time then they have the right to request more time. + +#### 9.1.3. Request for help + +In case the terminated party stated that they are not qualified to resolve these issues nor they don't have the resources to resolve them then they have the right to request help from the reymacs project. \ No newline at end of file diff --git a/Makefile.toml b/Makefile.toml new file mode 100644 index 0000000..80c78a9 --- /dev/null +++ b/Makefile.toml @@ -0,0 +1,89 @@ +# This is a cargo-make file used to manage the repository + +# FIXME-VSCODIUM(Krey): Add configuration to install 'Even Better TOML' for this repository only + +[config] +default_task_name = "default" + +[env] +# FIXME-QA(Krey): Set this to the '$PWD/build' +# FIXME-QA(Krey): Duplicate code +BUILD = { value = "/home/user/Repositories/qubes-template-devuan/build", condition = { env_not_set = ["/home/user/Repositories/qubes-template-devuan/build"] } } +# DNM(Krey): Deduce why HOME is not available in tasks +HOME = "/home/user" + +# Codename handling +devuan-stable-codename = "beowulf" +devuan-testing-codename = "chimaera" + +# Command overrides +DEBOOTSTRAP = "debootstrap" + +[tasks.build] +description = "Build all targets" +# DNM(Krey): This doesn't work -> Figure out how to get it to execute tasks prefixed with `build` +dependencies = [ + "build-devuan-stable-minimal", + "build-devuan-testing-minimal" +] + +# FIXME-CROSS(Krey): How can we builds this on Windows? +# FIXME-CROSS(Krey): How can we builds this on Darwin? +# FIXME-CROSS(Krey): How can we builds this on Redox? +# FIXME-CROSS(Krey): How can we builds this on FreeBSD? +[tasks.build-devuan-stable-minimal] +description = "Creates a devuan stable userland in build directory" +category = "core" +# FIXME-QA(Krey): Implement handling for privileged execution (https://github.com/sagiegurari/cargo-make/issues/501) +command = "${DEBOOTSTRAP}" +args = [ + "--arch=amd64", + "--variant=minbase", + "--no-merged-usr", + # FIXME-QA(Krey): Expecting double-quottes that are not interpreted + "--cache-dir=${HOME}/.cache", + # DNM(Krey): On non-devuan systems we need devuan's GPG set, using no-check for testing + "--no-check-gpg", + "${devuan-stable-codename }", + "${BUILD}/devuan/${devuan-stable-codename }", + # FIXME-PRIVACY(Krey): Use tor here + "http://deb.devuan.org/merged" +] + +# FIXME-QA(Krey): Duplicate code +# FIXME-CROSS(Krey): How can we builds this on Windows? +# FIXME-CROSS(Krey): How can we builds this on Darwin? +# FIXME-CROSS(Krey): How can we builds this on Redox? +# FIXME-CROSS(Krey): How can we builds this on FreeBSD? +[tasks.build-devuan-testing-minimal] +description = "Creates a devuan stable userland in build directory" +category = "core" +# FIXME-QA(Krey): Implement handling for privileged execution (https://github.com/sagiegurari/cargo-make/issues/501) +command = "debootstrap" +args = [ + "--arch=amd64", + "--variant=minbase", + "--no-merged-usr", + # FIXME-QA(Krey): Expecting double-quottes that are not interpreted + "--cache-dir=${HOME}/.cache", + # DNM(Krey): On non-devuan systems we need devuan's GPG set, using no-check for testing + "--no-check-gpg", + "${devuan-stable-release}", + "${BUILD}/devuan/${devuan-stable-release}", + # FIXME-PRIVACY(Krey): Use The Onion Routing here + "http://deb.devuan.org/merged" +] + +# DNM(Krey): Package for fedora-32 GNU/Linux +# DNM(Krey): Package for devuan GNU/Linux +# DNM(Krey): Package for enoch-based e.g. Argent Linux GNU/Linux +# DNM(Krey): Package for Arch GNU/Linux + +# FIXME-CROSS(Krey): Translate in duckscript (https://github.com/sagiegurari/duckscript/issues/147) +[tasks.clean] +description = "Remove temporary directories" +script = ''' +#!/bin/sh +[ ! -d "${BUILD}" ] || rm -r "${BUILD}" +''' + diff --git a/img/header-image.png b/img/header-image.png new file mode 100644 index 0000000..ce9d5d1 Binary files /dev/null and b/img/header-image.png differ