Upload files to "/"

This commit is contained in:
Martin Dvořák 2026-04-28 23:32:38 +02:00
commit d6a47370d7
151 changed files with 10154 additions and 0 deletions

674
LICENSE Normal file
View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, 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 contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

48
README.md Normal file
View file

@ -0,0 +1,48 @@
# 4rch-linux
4RCH linux is an Arch based linux distribution focused on minimalism while including Calamares installer.
# ISO PASSWORD
The ISO password is: 4rch
(Theres an password due to ezarch using password for some reason by default, this will change in the future)
# BINARY ISO available here
# BUILD THE ISO
```
git clone --recurse-submodules https://github.com/M4RT1NDEV/4rch-linux
sudo pacman -Syu
sudo pacman -S --noconfirm archlinux-keyring
sudo pacman -S archiso mkinitcpio-archiso
sudo pacman -S --needed boost cmake extra-cmake-modules libpwquality qt5ct qt5-location qt5-svg qt5-webengine yaml-cpp hwinfo plasma-framework qt5-translations upower kcoreaddons kconfig kpmcore kservice kwidgetsaddons dmidecode doxygen kparts polkit-qt5 python qt5-tools qt5-xmlpatterns solid
cd 4rch-linux
sudo bash steps.sh
```
And you should be able to find the iso in the out directory!
# EZARCH livegui template
4RCH linux live gui uses EZARCH lxqt template
template could be found here: https://www.mediafire.com/file/83yvkypwrviueq7/4rch-lxqt-Alpha-0_2-x86_64.iso/file
# Calamares Installer
4RCH linux uses calamares installer
https://calamares.io/
EPIC ANIME SLIDESHOW
<img src="https://cdn.discordapp.com/attachments/989526772989177898/989576071282303077/unknown.png" width="75%" height="75%">

View file

@ -0,0 +1,6 @@
title 4rch Linux (x86_64, UEFI)
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% cow_spacesize=4G

View file

@ -0,0 +1,6 @@
title 4rch Linux (x86_64, UEFI) with speech
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% accessibility=on cow_spacesize=4G

View file

@ -0,0 +1,2 @@
timeout 15
default 01-archiso-x86_64-linux.conf

View file

@ -0,0 +1,2 @@
[main]
dns=systemd-resolved

View file

@ -0,0 +1,222 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Product branding information. This influences some global
# user-visible aspects of Calamares, such as the product
# name, window behavior, and the slideshow during installation.
#
# Additional styling can be done using the stylesheet.qss
# file, also in the branding directory.
---
componentName: ezarcher
### WELCOME / OVERALL WORDING
#
# These settings affect some overall phrasing and looks,
# which are most visible in the welcome page.
# This selects between different welcome texts. When false, uses
# the traditional "Welcome to the %1 installer.", and when true,
# uses "Welcome to the Calamares installer for %1." This allows
# to distinguish this installer from other installers for the
# same distribution.
welcomeStyleCalamares: false
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size? If false, the image does not grow
# with the window but remains the same size throughout (this
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
### WINDOW CONFIGURATION
#
# The settings here affect the placement of the Calamares
# window through hints to the window manager and initial
# sizing of the Calamares window.
# Size and expansion policy for Calamares.
# - "normal" or unset, expand as needed, use *windowSize*
# - "fullscreen", start as large as possible, ignore *windowSize*
# - "noexpand", don't expand automatically, use *windowSize*
windowExpanding: normal
# Size of Calamares window, expressed as w,h. Both w and h
# may be either pixels (suffix px) or font-units (suffix em).
# e.g. "800px,600px"
# "60em,480px"
# This setting is ignored if "fullscreen" is selected for
# *windowExpanding*, above. If not set, use constants defined
# in CalamaresUtilsGui, 800x520.
windowSize: 800px,520px
# Placement of Calamares window. Either "center" or "free".
# Whether "center" actually works does depend on the window
# manager in use (and only makes sense if you're not using
# *windowExpanding* set to "fullscreen").
windowPlacement: center
### PANELS CONFIGURATION
#
# Calamares has a main content area, and two panels (navigation
# and progress / sidebar). The panels can be controlled individually,
# or switched off. If both panels are switched off, the layout of
# the main content area loses its margins, on the assumption that
# you're doing something special.
# Kind of sidebar (panel on the left, showing progress).
# - "widget" or unset, use traditional sidebar (logo, items)
# - "none", hide it entirely
# - "qml", use calamares-sidebar.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. Valid sides are:
# - "left" (if not specified, uses this)
# - "right"
# - "top"
# - "bottom"
# For instance, "widget,right" is valid; so is "qml", which defaults
# to putting the sidebar on the left. Also valid is "qml,top".
# While "widget,top" is valid, the widgets code is **not** flexible
# and results will be terrible.
sidebar: widget
# Kind of navigation (button panel on the bottom).
# - "widget" or unset, use traditional navigation
# - "none", hide it entirely
# - "qml", use calamares-navigation.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. The same sides are valid as for *sidebar*,
# except the default is *bottom*.
navigation: widget
### STRINGS, IMAGES AND COLORS
#
# This section contains the "branding proper" of names
# and images, rather than global-look settings.
# These are strings shown to the user in the user interface.
# There is no provision for translating them -- since they
# are names, the string is included as-is.
#
# The four Url strings are the Urls used by the buttons in
# the welcome screen, and are not shown to the user. Clicking
# on the "Support" button, for instance, opens the link supportUrl.
# If a Url is empty, the corresponding button is not shown.
#
# bootloaderEntryName is how this installation / distro is named
# in the boot loader (e.g. in the GRUB menu).
#
# These strings support substitution from /etc/os-release
# if KDE Frameworks 5.58 are available at build-time. When
# enabled, @{var-name} is replaced by the equivalent value
# from os-release. All the supported var-names are in all-caps,
# and are listed on the FreeDesktop.org site,
# https://www.freedesktop.org/software/systemd/man/os-release.html
# Note that ANSI_COLOR and CPE_NAME don't make sense here, and
# are not supported (the rest are). Remember to quote the string
# if it contains substitutions, or you'll get YAML exceptions.
#
# The *Url* entries are used on the welcome page, and they
# are visible as buttons there if the corresponding *show* keys
# are set to "true" (they can also be overridden).
strings:
productName: "@{NAME}"
shortProductName: 4RCH
version: 2021
shortVersion: 2021
versionedName: 4RCH Linux
shortVersionedName: 4RCH Linux
bootloaderEntryName: 4RCH Linux
productUrl: https://sourceforge.net/projects/ezarch/
# supportUrl: https://sourceforge.net/projects/ezarch/
# knownIssuesUrl: https://sourceforge.net/projects/ezarch/
# releaseNotesUrl: https://sourceforge.net/projects/ezarch/
# donateUrl: https://sourceforge.net/projects/ezarch/
# These images are loaded from the branding module directory.
#
# productBanner is an optional image, which if present, will be shown
# on the welcome page of the application, above the welcome text.
# It is intended to have a width much greater than height.
# It is displayed at 64px height (also on HiDPI).
# Recommended size is 64px tall, and up to 460px wide.
# productIcon is used as the window icon, and will (usually) be used
# by the window manager to represent the application. This image
# should be square, and may be displayed by the window manager
# as small as 16x16 (but possibly larger).
# productLogo is used as the logo at the top of the left-hand column
# which shows the steps to be taken. The image should be square,
# and is displayed at 80x80 pixels (also on HiDPI).
# productWallpaper is an optional image, which if present, will replace
# the normal solid background on every page of the application.
# It can be any size and proportion,
# and will be tiled to fit the entire window.
# For a non-tiled wallpaper, the size should be the same as
# the overall window, see *windowSize* above (800x520).
# productWelcome is shown on the welcome page of the application in
# the middle of the window, below the welcome text. It can be
# any size and proportion, and will be scaled to fit inside
# the window. Use `welcomeExpandingLogo` to make it non-scaled.
# Recommended size is 320x150.
#
# These filenames can also use substitutions from os-release (see above).
images:
# productBanner: "banner.png"
productIcon: "squid.png"
productLogo: "logo.png"
productWallpaper: "wallpaper.png"
productWelcome: "languages.png"
# Colors for text and background components.
#
# - sidebarBackground is the background of the sidebar
# - sidebarText is the (foreground) text color
# - sidebarTextHighlight sets the background of the selected (current) step.
# Optional, and defaults to the application palette.
# - sidebarSelect is the text color of the selected step.
#
# These colors can **also** be set through the stylesheet, if the
# branding component also ships a stylesheet.qss. Then they are
# the corresponding CSS attributes of #sidebarApp.
style:
sidebarBackground: "#292F34"
sidebarText: "#FFFFFF"
sidebarTextSelect: "#292F34"
sidebarTextHighlight: "#D35400"
### SLIDESHOW
#
# The slideshow is displayed during execution steps (e.g. when the
# installer is actually writing to disk and doing other slow things).
# The slideshow can be a QML file (recommended) which can display
# arbitrary things -- text, images, animations, or even play a game --
# during the execution step. The QML **is** abruptly stopped when the
# execution step is done, though, so maybe a game isn't a great idea.
#
# The slideshow can also be a sequence of images (not recommended unless
# you don't want QML at all in your Calamares). The images are displayed
# at a rate of 1 every 2 seconds during the execution step.
#
# To configure a QML file, list a single filename:
# slideshow: "show.qml"
# To configure images, like the filenames (here, as an inline list):
# slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ]
slideshow: "show.qml"
# There are two available APIs for a QML slideshow:
# - 1 (the default) loads the entire slideshow when the installation-
# slideshow page is shown and starts the QML then. The QML
# is never stopped (after installation is done, times etc.
# continue to fire).
# - 2 loads the slideshow on startup and calls onActivate() and
# onLeave() in the root object. After the installation is done,
# the show is stopped (first by calling onLeave(), then destroying
# the QML components).
#
# An image slideshow does not need to have the API defined.
slideshowAPI: 2

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
SPDX-License-Identifier: GPL-3.0-or-later

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -0,0 +1,121 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*
* 4RCH custom settings
*/
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
Timer {
id: advanceTimer
interval: 30000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
anchors.fill: parent
anchors.verticalCenterOffset: 0
Image {
id: background1
source: "slide1.png"
width: parent.width; height: parent.height
horizontalAlignment: Image.AlignCenter
verticalAlignment: Image.AlignTop
anchors.fill: parent
Text {
anchors.centerIn: parent
anchors.verticalCenterOffset: 165
anchors.horizontalCenterOffset: 0
font.pixelSize: parent.width *.020
color: 'white'
text: qsTr("<b>Welcome to 4RCH Linux, an Arch based Linux<br/>")
wrapMode: Text.WordWrap
width: parent.width / 1.4
horizontalAlignment: Text.AlignHCenter
}
}
}
Slide {
anchors.fill: parent
anchors.verticalCenterOffset: 0
Image {
id: background2
source: "slide1.png"
width: parent.width; height: parent.height
horizontalAlignment: Image.AlignCenter
verticalAlignment: Image.AlignTop
anchors.fill: parent
Text {
anchors.centerIn: parent
anchors.verticalCenterOffset: 163
anchors.horizontalCenterOffset: 0
font.pixelSize: parent.width *.020
color: 'white'
text: qsTr("<b>4RCH aims to be minimal but simple arch based distribution<br/>")
wrapMode: Text.WordWrap
width: parent.width / 1.4
horizontalAlignment: Text.AlignHCenter
}
}
}
Slide {
anchors.fill: parent
anchors.verticalCenterOffset: 0
Image {
id: background4
source: "slide1.png"
width: parent.width; height: parent.height
horizontalAlignment: Image.AlignCenter
verticalAlignment: Image.AlignTop
anchors.fill: parent
Text {
anchors.centerIn: parent
anchors.verticalCenterOffset: 165
anchors.horizontalCenterOffset: 0
font.pixelSize: parent.width *.020
color: 'white'
text: qsTr("")
wrapMode: Text.WordWrap
width: parent.width / 1.4
horizontalAlignment: Text.AlignHCenter
}
}
}
Component.onCompleted: advanceTimer.running = true
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -0,0 +1,92 @@
/*
A branding component can ship a stylesheet (like this one)
which is applied to parts of the Calamares user-interface.
In principle, all parts can be styled through CSS.
Missing parts should be filed as issues.
The IDs are based on the object names in the C++ code.
You can use the Debug Dialog to find out object names:
- Open the debug dialog
- Choose tab *Tools*
- Click *Widget Tree* button
The list of object names is printed in the log.
Documentation for styling Qt Widgets through a stylesheet
can be found at
https://doc.qt.io/qt-5/stylesheet-examples.html
https://doc.qt.io/qt-5/stylesheet-reference.html
In Calamares, styling widget classes is supported (e.g.
using `QComboBox` as a selector).
This example stylesheet has all the actual styling commented out.
The examples are not exhaustive.
*/
/*** Generic Widgets.
*
* You can style **all** widgets of a given class by selecting
* the class name. Some widgets have specialized sub-selectors.
*/
/*
QPushButton { background-color: green; }
*/
/*** Main application window.
*
* The main application window has the sidebar, which in turn
* contains a logo and a list of items -- note that the list
* can **not** be styled, since it has its own custom C++
* delegate code.
*/
/*
#mainApp { }
#sidebarApp { }
#logoApp { }
*/
/*** Welcome module.
*
* There are plenty of parts, but the buttons are the most interesting
* ones (donate, release notes, ...). The little icon image can be
* styled through *qproperty-icon*, which is a little obscure.
* URLs can reference the QRC paths of the Calamares application
* or loaded via plugins or within the filesystem. There is no
* comprehensive list of available icons, though.
*/
/*
QPushButton#aboutButton { qproperty-icon: url(:/data/images/release.svg); }
#donateButton,
#supportButton,
#releaseNotesButton,
#knownIssuesButton { qproperty-icon: url(:/data/images/help.svg); }
*/
/*** Partitioning module.
*
* Many moving parts, which you will need to experiment with.
*/
/*
#bootInfoIcon { }
#bootInfoLable { }
#deviceInfoIcon { }
#defineInfoLabel { }
#scrollAreaWidgetContents { }
#partitionBarView { }
*/
/*** Licensing module.
*
* The licensing module paints individual widgets for each of
* the licenses. The item can be collapsed or expanded.
*/
/*
#licenseItem { }
#licenseItemFullText { }
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,013 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,015 KiB

View file

@ -0,0 +1,22 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the bootloader module.
#
---
efiBootLoader: "grub"
kernel: "/vmlinuz-linux"
img: "/initramfs-linux.img"
fallback: "/initramfs-linux-fallback.img"
timeout: "10"
grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg"
grubProbe: "grub-probe"
efiBootMgr: "efibootmgr"
installEFIFallback: true

View file

@ -0,0 +1,15 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the displaymanager module.
#
---
displaymanagers:
- sddm
- lightdm
basicSetup: false
sysconfigSetup: false

View file

@ -0,0 +1,20 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the fstab module.
#
---
mountOptions:
default: defaults,noatime
btrfs: defaults,noatime,noautodefrag
btrfs_swap: defaults
efiMountOptions: umask=0077
ssdExtraMountOptions:
btrfs: ssd
crypttabOptions: luks

View file

@ -0,0 +1,20 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the grugcfg module.
#
---
overwrite: false
prefer_grub_d: false
keepDistributor: false
defaults:
GRUB_TIMEOUT: 5
GRUB_DEFAULT: "saved"
GRUB_DISABLE_SUBMENU: true
GRUB_TERMINAL_OUTPUT: "console"
GRUB_DISABLE_RECOVERY: true

View file

@ -0,0 +1,11 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the initcpio module.
#
---
kernel: linux
be_unsafe: false

View file

@ -0,0 +1,11 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the keyboard module.
#
---
xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf"
convertedKeymapPath: "/lib/kbd/keymaps/xkb"

View file

@ -0,0 +1,15 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the locale module.
#
---
region: ""
zone: ""
geoip:
style: "json"
url: "https://geoip.kde.org/v1/calamares"
selector: "" # leave blank for the default

View file

@ -0,0 +1,19 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Machine-ID and other random data on the target system.
#
---
systemd: true
dbus: true
dbus-symlink: true
entropy-copy: false
entropy-files:
- /var/lib/urandom/random-seed
- /var/lib/systemd/random-seed

View file

@ -0,0 +1,39 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the mount module.
#
---
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: /dev
mountPoint: /dev
options: bind
- device: tmpfs
fs: tmpfs
mountPoint: /run
- device: /run/udev
mountPoint: /run/udev
options: bind
extraMountsEfi:
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars
btrfsSubvolumes:
- mountPoint: /
subvolume: /@
- mountPoint: /home
subvolume: /@home
- mountPoint: /var/cache
subvolume: /@cache
- mountPoint: /var/log
subvolume: /@log

View file

@ -0,0 +1,18 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# The configuration for the packages module.
#
---
backend: pacman
skip_if_no_internet: false
update_db: false
update_system: false
operations:
- remove:
- calamares
- ckbcomp

View file

@ -0,0 +1,36 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the partition module.
#
---
efiSystemPartition: "/boot/efi"
efiSystemPartitionSize: 550M
efiSystemPartitionName: EFI
userSwapChoices:
- none # Create no swap, use no swap
- small # Up to 4GB
- suspend # At least main memory size
# - reuse # Re-use existing swap, but don't create any (unsupported right now)
- file # To swap file instead of partition
swapPartitionName: SWAP
drawNestedPartitions: false
alwaysShowPartitionLabels: true
allowManualPartitioning: true
initialPartitioningChoice: none
initialSwapChoice: none
defaultFileSystemType: "btrfs"
availableFileSystemTypes: ["ext4","btrfs","xfs"]

View file

@ -0,0 +1,9 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the removeuser module.
#
---
username: 4rch

View file

@ -0,0 +1,17 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Systemd services manipulation.
#
---
services:
- name: "avahi-daemon"
mandatory: false
timers:
- name: "fstrim"
mandatory: false
- name: "plocate-updatedb"
mandatory: false

View file

@ -0,0 +1,18 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the ezfinish.conf shell process job.
#
---
i18n:
name: "Remove misc files"
dontChroot: false
timeout: 999
script:
- "-mv @@ROOT@@/etc/systemd/system/ez-pacman-init @@ROOT@@/etc/systemd/system/pacman-init.service"
- "-rm @@ROOT@@/etc/systemd/system/etc-pacman.d-gnupg.mount"
- "-rm @@ROOT@@/root/.automated_script.sh"
- "-rm @@ROOT@@/root/.zlogin"

View file

@ -0,0 +1,16 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the mvezmkinit.conf files shell process job.
#
---
i18n:
name: "Fix mkinitcpio stuff"
dontChroot: false
timeout: 999
script:
- "-mv @@ROOT@@/etc/mkinitcpio.d/ezmkinit @@ROOT@@/etc/mkinitcpio.d/linux.preset"
- "-mv @@ROOT@@/etc/ezmkinitcpio.conf @@ROOT@@/etc/mkinitcpio.conf"

View file

@ -0,0 +1,15 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the unpackfs module.
#
---
unpack:
- source: "/run/archiso/bootmnt/arch/x86_64/airootfs.sfs"
sourcefs: "squashfs"
destination: "/"
- source: "/run/archiso/bootmnt/arch/boot/x86_64/vmlinuz-linux"
sourcefs: "file"
destination: "/boot/vmlinuz-linux"

View file

@ -0,0 +1,57 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the users module.
#
---
defaultGroups:
- name: users
must_exist: true
system: true
- adm
- lp
- power
- video
- network
- storage
- name: wheel
must_exist: false
system: true
- audio
- sys
- optical
- scanner
- rfkill
- uucp
- sambashare
autologinGroup: autologin
doAutologin: false
sudoersGroup: wheel
setRootPassword: true
doReusePassword: true
passwordRequirements:
nonempty: true
minLength: -1 # Password at least this many characters
maxLength: -1 # Password at most this many characters
libpwquality:
- minlen=0
- minclass=0
allowWeakPasswords: true
allowWeakPasswordsDefault: true
userShell: /bin/bash
setHostname: EtcFile
writeHostsFile: true

View file

@ -0,0 +1,37 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the welcome module.
#
---
showSupportUrl: false
showKnownIssuesUrl: false
showReleaseNotesUrl: false
showDonateUrl: false
requirements:
requiredStorage: 8.0
requiredRam: 1.0
internetCheckUrl: http://www.freebsd.org
check:
- storage
- ram
- power
- internet
- root
- screen
required:
# - storage
- ram
# - root
geoip:
style: "xml"
url: "https://geoip.kde.org/v1/ubiquity" # extended XML format
selector: "CountryCode" # blank uses default, which is wrong

View file

@ -0,0 +1,15 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
NavButton {
id: backButton
anchors.left: parent.left
visible: parent.currentSlide > 0
isForward: false
}

View file

@ -0,0 +1,14 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
NavButton {
id: forwardButton
anchors.right: parent.right
visible: parent.currentSlide + 1 < parent.slides.length;
}

View file

@ -0,0 +1,59 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
/* This is a navigation (arrow) button that fades in on hover, and
* which calls forward / backward navigation on the presentation it
* is in. It should be a child item of the presentation (not of a
* single slide). Use the ForwardButton or BackButton for a pre-
* configured instance that interacts with the presentation.
*/
import QtQuick 2.5;
Image {
id: fade
property bool isForward : true
width: 100
height: 100
anchors.verticalCenter: parent.verticalCenter
opacity: 0.3
OpacityAnimator {
id: fadeIn
target: fade
from: fade.opacity
to: 1.0
duration: 500
running: false
}
OpacityAnimator {
id: fadeOut
target: fade
from: fade.opacity
to: 0.3
duration: 250
running: false
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onEntered: { fadeOut.running = false; fadeIn.running = true }
onExited: { fadeIn.running = false ; fadeOut.running = true }
onClicked: {
if (isForward)
fade.parent.goToNextSlide()
else
fade.parent.goToPreviousSlide()
}
}
}

View file

@ -0,0 +1,243 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
* SPDX-FileCopyrightText: 2016 The Qt Company Ltd.
* SPDX-License-Identifier: LGPL-2.1-only
*
* 2017, Adriaan de Groot <groot@kde.org>
* - added looping, keys-instead-of-shortcut
* 2018, Adriaan de Groot <groot@kde.org>
* - make looping a property, drop the 'c' fade-key
* - drop navigation through entering a slide number
* (this and the 'c' key make sense in a *presentation*
* slideshow, not in a passive slideshow like Calamares)
* - remove quit key
* 2019, Adriaan de Groot <groot@kde.org>
* - Support "V2" loading
* - Disable shortcuts until the content is visible in Calamares
* 2020, Adriaan de Groot <groot@kde.org>
* - Updated to SPDX headers
*/
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QML Presentation System.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
import QtQuick.Window 2.0
Item {
id: root
property variant slides: []
property int currentSlide: 0
property bool loopSlides: true
property bool showNotes: false;
property bool allowDelay: true;
property alias mouseNavigation: mouseArea.enabled
property bool arrowNavigation: true
property bool keyShortcutsEnabled: true
property color titleColor: textColor;
property color textColor: "black"
property string fontFamily: "Helvetica"
property string codeFontFamily: "Courier New"
// This is set by the C++ part of Calamares when the slideshow
// becomes visible. You can connect it to a timer, or whatever
// else needs to start only when the slideshow becomes visible.
//
// It is used in this example also to keep the keyboard shortcuts
// enabled only while the slideshow is active.
property bool activatedInCalamares: false
// Private API
property int _lastShownSlide: 0
Component.onCompleted: {
var slideCount = 0;
var slides = [];
for (var i=0; i<root.children.length; ++i) {
var r = root.children[i];
if (r.isSlide) {
slides.push(r);
}
}
root.slides = slides;
// Make first slide visible...
if (root.slides.length > 0)
root.slides[root.currentSlide].visible = true;
}
function switchSlides(from, to, forward) {
from.visible = false
to.visible = true
return true
}
onCurrentSlideChanged: {
switchSlides(root.slides[_lastShownSlide], root.slides[currentSlide], currentSlide > _lastShownSlide)
_lastShownSlide = currentSlide
// Always keep focus on the slideshow
root.focus = true
}
function goToNextSlide() {
if (root.slides[currentSlide].delayPoints) {
if (root.slides[currentSlide]._advance())
return;
}
if (currentSlide + 1 < root.slides.length)
++currentSlide;
else if (loopSlides)
currentSlide = 0; // Loop at the end
}
function goToPreviousSlide() {
if (currentSlide - 1 >= 0)
--currentSlide;
else if (loopSlides)
currentSlide = root.slides.length - 1
}
focus: true // Keep focus
// Navigation through key events, too
Keys.onSpacePressed: goToNextSlide()
Keys.onRightPressed: goToNextSlide()
Keys.onLeftPressed: goToPreviousSlide()
// navigate with arrow keys
Shortcut { sequence: StandardKey.MoveToNextLine; enabled: root.activatedInCalamares && root .arrowNavigation; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousLine; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() }
Shortcut { sequence: StandardKey.MoveToNextChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() }
// presentation-specific single-key shortcuts (which interfere with normal typing)
Shortcut { sequence: " "; enabled: root.activatedInCalamares && root.keyShortcutsEnabled; onActivated: goToNextSlide() }
// standard shortcuts
Shortcut { sequence: StandardKey.MoveToNextPage; enabled: root.activatedInCalamares; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousPage; enabled: root.activatedInCalamares; onActivated: goToPreviousSlide() }
MouseArea {
id: mouseArea
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button == Qt.RightButton)
goToPreviousSlide()
else
goToNextSlide()
}
onPressAndHold: goToPreviousSlide(); //A back mechanism for touch only devices
}
Window {
id: notesWindow;
width: 400
height: 300
title: "QML Presentation: Notes"
visible: root.showNotes
Flickable {
anchors.fill: parent
contentWidth: parent.width
contentHeight: textContainer.height
Item {
id: textContainer
width: parent.width
height: notesText.height + 2 * notesText.padding
Text {
id: notesText
property real padding: 16;
x: padding
y: padding
width: parent.width - 2 * padding
font.pixelSize: 16
wrapMode: Text.WordWrap
property string notes: root.slides[root.currentSlide].notes;
onNotesChanged: {
var result = "";
var lines = notes.split("\n");
var beginNewLine = false
for (var i=0; i<lines.length; ++i) {
var line = lines[i].trim();
if (line.length == 0) {
beginNewLine = true;
} else {
if (beginNewLine && result.length) {
result += "\n\n"
beginNewLine = false
}
if (result.length > 0)
result += " ";
result += line;
}
}
if (result.length == 0) {
font.italic = true;
text = "no notes.."
} else {
font.italic = false;
text = result;
}
}
}
}
}
}
}

View file

@ -0,0 +1,206 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2012 Digia Plc and/or its subsidiary(-ies).
* SPDX-License-Identifier: LGPL-2.1-only
*/
/****************************************************************************
**
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QML Presentation System.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
Item {
/*
Slides can only be instantiated as a direct child of a Presentation {} as they rely on
several properties there.
*/
id: slide
property bool isSlide: true;
property bool delayPoints: false;
property int _pointCounter: 0;
function _advance() {
if (!parent.allowDelay)
return false;
_pointCounter = _pointCounter + 1;
if (_pointCounter < content.length)
return true;
_pointCounter = 0;
return false;
}
property string title;
property variant content: []
property string centeredText
property string writeInText;
property string notes;
property real fontSize: parent.height * 0.05
property real fontScale: 1
property real baseFontSize: fontSize * fontScale
property real titleFontSize: fontSize * 1.2 * fontScale
property real bulletSpacing: 1
property real contentWidth: width
// Define the slide to be the "content area"
x: parent.width * 0.05
y: parent.height * 0.2
width: parent.width * 0.9
height: parent.height * 0.7
property real masterWidth: parent.width
property real masterHeight: parent.height
property color titleColor: parent.titleColor;
property color textColor: parent.textColor;
property string fontFamily: parent.fontFamily;
property int textFormat: Text.PlainText
visible: false
Text {
id: titleText
font.pixelSize: titleFontSize
text: title;
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.top
anchors.bottomMargin: parent.fontSize * 1.5
font.bold: true;
font.family: slide.fontFamily
color: slide.titleColor
horizontalAlignment: Text.Center
z: 1
}
Text {
id: centeredId
width: parent.width
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3
text: centeredText
horizontalAlignment: Text.Center
font.pixelSize: baseFontSize
font.family: slide.fontFamily
color: slide.textColor
wrapMode: Text.Wrap
}
Text {
id: writeInTextId
property int length;
font.family: slide.fontFamily
font.pixelSize: baseFontSize
color: slide.textColor
anchors.fill: parent;
wrapMode: Text.Wrap
text: slide.writeInText.substring(0, length);
NumberAnimation on length {
from: 0;
to: slide.writeInText.length;
duration: slide.writeInText.length * 30;
running: slide.visible && parent.visible && slide.writeInText.length > 0
}
visible: slide.writeInText != undefined;
}
Column {
id: contentId
anchors.fill: parent
Repeater {
model: content.length
Row {
id: row
function decideIndentLevel(s) { return s.charAt(0) == " " ? 1 + decideIndentLevel(s.substring(1)) : 0 }
property int indentLevel: decideIndentLevel(content[index])
property int nextIndentLevel: index < content.length - 1 ? decideIndentLevel(content[index+1]) : 0
property real indentFactor: (10 - row.indentLevel * 2) / 10;
height: text.height + (nextIndentLevel == 0 ? 1 : 0.3) * slide.baseFontSize * slide.bulletSpacing
x: slide.baseFontSize * indentLevel
visible: (!slide.parent.allowDelay || !delayPoints) || index <= _pointCounter
Rectangle {
id: dot
anchors.baseline: text.baseline
anchors.baselineOffset: -text.font.pixelSize / 2
width: text.font.pixelSize / 3
height: text.font.pixelSize / 3
color: slide.textColor
radius: width / 2
opacity: text.text.length == 0 ? 0 : 1
}
Item {
id: space
width: dot.width * 1.5
height: 1
}
Text {
id: text
width: slide.contentWidth - parent.x - dot.width - space.width
font.pixelSize: baseFontSize * row.indentFactor
text: content[index]
textFormat: slide.textFormat
wrapMode: Text.WordWrap
color: slide.textColor
horizontalAlignment: Text.AlignLeft
font.family: slide.fontFamily
}
}
}
}
}

View file

@ -0,0 +1,29 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
/* This control just shows a (non-translated) count of the slides
* in the slideshow in the format "n / total".
*/
import QtQuick 2.5;
Rectangle {
id: slideCounter
anchors.right: parent.right
anchors.bottom: parent.bottom
width: 100
height: 50
Text {
id: slideCounterText
anchors.centerIn: parent
//: slide counter, %1 of %2 (numeric)
text: qsTr("%L1 / %L2").arg(parent.parent.currentSlide + 1).arg(parent.parent.slides.length)
}
}

View file

@ -0,0 +1,10 @@
module calamares.slideshow
Presentation 1.0 Presentation.qml
Slide 1.0 Slide.qml
NavButton 1.0 NavButton.qml
ForwardButton 1.0 ForwardButton.qml
BackButton 1.0 BackButton.qml
SlideCounter 1.0 SlideCounter.qml

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: no
SPDX-License-Identifier: CC0-1.0

View file

@ -0,0 +1,69 @@
# 4rch custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration file for Calamares
#
---
modules-search: [ local ]
instances:
- id: mvezmkinit
module: shellprocess
config: shellprocess-mvezmkinit.conf
- id: ezfinish
module: shellprocess
config: shellprocess-ezfinish.conf
sequence:
- show:
- welcome
- locale
- keyboard
- partition
- users
- summary
- exec:
- partition
- mount
- unpackfs
- machineid
- fstab
- locale
- keyboard
- localecfg
- luksbootkeyfile
- luksopenswaphookcfg
- removeuser
- users
- networkcfg
- hwclock
- services-systemd
- packages
- displaymanager
- shellprocess@mvezmkinit
- initcpiocfg
- initcpio
- grubcfg
- bootloader
- shellprocess@ezfinish
- umount
- show:
- finished
branding: ezarcher
prompt-install: true
dont-chroot: false
oem-setup: false
disable-cancel: false
disable-cancel-during-exec: false
hide-back-and-next-during-exec: false
quit-at-end: false

60
etc/default/grub Normal file
View file

@ -0,0 +1,60 @@
# GRUB boot loader configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX=""
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y
# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT=true
# Uncomment to disable submenus in boot menu
#GRUB_DISABLE_SUBMENU=y
# Enable os-prober
GRUB_DISABLE_OS_PROBER=false

67
etc/ezmkinitcpio.conf Normal file
View file

@ -0,0 +1,67 @@
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(piix ide_disk reiserfs)
MODULES=()
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No raid, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect block filesystems)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev block filesystems)
#
## This setup assembles a pata mdadm array with an encrypted root FS.
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
# HOOKS=(base udev block mdadm encrypt filesystems)
#
## This setup loads an lvm2 volume group on a usb device.
# HOOKS=(base udev block lvm2 filesystems)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr, fsck and shutdown hooks.
HOOKS=(base udev autodetect modconf block keyboard resume filesystems fsck)
# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used. Use 'cat' to create an uncompressed image.
COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()

511
etc/locale.gen Normal file
View file

@ -0,0 +1,511 @@
# Configuration file for locale-gen
#
# lists of locales that are to be generated by the locale-gen command.
#
# Each line is of the form:
#
# <locale> <charset>
#
# where <locale> is one of the locales given in /usr/share/i18n/locales
# and <charset> is one of the character sets listed in /usr/share/i18n/charmaps
#
# Examples:
# en_US ISO-8859-1
# en_US.UTF-8 UTF-8
# de_DE ISO-8859-1
# de_DE@euro ISO-8859-15
#
# The locale-gen command will generate all the locales,
# placing them in /usr/lib/locale.
#
# A list of supported locales is included in this file.
# Uncomment the ones you need.
#
#aa_DJ.UTF-8 UTF-8
#aa_DJ ISO-8859-1
#aa_ER UTF-8
#aa_ER@saaho UTF-8
#aa_ET UTF-8
#af_ZA.UTF-8 UTF-8
#af_ZA ISO-8859-1
#agr_PE UTF-8
#ak_GH UTF-8
#am_ET UTF-8
#an_ES.UTF-8 UTF-8
#an_ES ISO-8859-15
#anp_IN UTF-8
#ar_AE.UTF-8 UTF-8
#ar_AE ISO-8859-6
#ar_BH.UTF-8 UTF-8
#ar_BH ISO-8859-6
#ar_DZ.UTF-8 UTF-8
#ar_DZ ISO-8859-6
#ar_EG.UTF-8 UTF-8
#ar_EG ISO-8859-6
#ar_IN UTF-8
#ar_IQ.UTF-8 UTF-8
#ar_IQ ISO-8859-6
#ar_JO.UTF-8 UTF-8
#ar_JO ISO-8859-6
#ar_KW.UTF-8 UTF-8
#ar_KW ISO-8859-6
#ar_LB.UTF-8 UTF-8
#ar_LB ISO-8859-6
#ar_LY.UTF-8 UTF-8
#ar_LY ISO-8859-6
#ar_MA.UTF-8 UTF-8
#ar_MA ISO-8859-6
#ar_OM.UTF-8 UTF-8
#ar_OM ISO-8859-6
#ar_QA.UTF-8 UTF-8
#ar_QA ISO-8859-6
#ar_SA.UTF-8 UTF-8
#ar_SA ISO-8859-6
#ar_SD.UTF-8 UTF-8
#ar_SD ISO-8859-6
#ar_SS UTF-8
#ar_SY.UTF-8 UTF-8
#ar_SY ISO-8859-6
#ar_TN.UTF-8 UTF-8
#ar_TN ISO-8859-6
#ar_YE.UTF-8 UTF-8
#ar_YE ISO-8859-6
#ayc_PE UTF-8
#az_AZ UTF-8
#az_IR UTF-8
#as_IN UTF-8
#ast_ES.UTF-8 UTF-8
#ast_ES ISO-8859-15
#be_BY.UTF-8 UTF-8
#be_BY CP1251
#be_BY@latin UTF-8
#bem_ZM UTF-8
#ber_DZ UTF-8
#ber_MA UTF-8
#bg_BG.UTF-8 UTF-8
#bg_BG CP1251
#bhb_IN.UTF-8 UTF-8
#bho_IN UTF-8
#bho_NP UTF-8
#bi_VU UTF-8
#bn_BD UTF-8
#bn_IN UTF-8
#bo_CN UTF-8
#bo_IN UTF-8
#br_FR.UTF-8 UTF-8
#br_FR ISO-8859-1
#br_FR@euro ISO-8859-15
#brx_IN UTF-8
#bs_BA.UTF-8 UTF-8
#bs_BA ISO-8859-2
#byn_ER UTF-8
#ca_AD.UTF-8 UTF-8
#ca_AD ISO-8859-15
#ca_ES.UTF-8 UTF-8
#ca_ES ISO-8859-1
#ca_ES@euro ISO-8859-15
#ca_ES@valencia UTF-8
#ca_FR.UTF-8 UTF-8
#ca_FR ISO-8859-15
#ca_IT.UTF-8 UTF-8
#ca_IT ISO-8859-15
#ce_RU UTF-8
#chr_US UTF-8
#ckb_IQ UTF-8
#cmn_TW UTF-8
#crh_UA UTF-8
#cs_CZ.UTF-8 UTF-8
#cs_CZ ISO-8859-2
#csb_PL UTF-8
#cv_RU UTF-8
#cy_GB.UTF-8 UTF-8
#cy_GB ISO-8859-14
#da_DK.UTF-8 UTF-8
#da_DK ISO-8859-1
#de_AT.UTF-8 UTF-8
#de_AT ISO-8859-1
#de_AT@euro ISO-8859-15
#de_BE.UTF-8 UTF-8
#de_BE ISO-8859-1
#de_BE@euro ISO-8859-15
#de_CH.UTF-8 UTF-8
#de_CH ISO-8859-1
#de_DE.UTF-8 UTF-8
#de_DE ISO-8859-1
#de_DE@euro ISO-8859-15
#de_IT.UTF-8 UTF-8
#de_IT ISO-8859-1
#de_LI.UTF-8 UTF-8
#de_LU.UTF-8 UTF-8
#de_LU ISO-8859-1
#de_LU@euro ISO-8859-15
#doi_IN UTF-8
#dsb_DE UTF-8
#dv_MV UTF-8
#dz_BT UTF-8
#el_GR.UTF-8 UTF-8
#el_GR ISO-8859-7
#el_GR@euro ISO-8859-7
#el_CY.UTF-8 UTF-8
#el_CY ISO-8859-7
#en_AG UTF-8
#en_AU.UTF-8 UTF-8
#en_AU ISO-8859-1
#en_BW.UTF-8 UTF-8
#en_BW ISO-8859-1
#en_CA.UTF-8 UTF-8
#en_CA ISO-8859-1
#en_DK.UTF-8 UTF-8
#en_DK ISO-8859-1
#en_GB.UTF-8 UTF-8
#en_GB ISO-8859-1
#en_HK.UTF-8 UTF-8
#en_HK ISO-8859-1
#en_IE.UTF-8 UTF-8
#en_IE ISO-8859-1
#en_IE@euro ISO-8859-15
#en_IL UTF-8
#en_IN UTF-8
#en_NG UTF-8
#en_NZ.UTF-8 UTF-8
#en_NZ ISO-8859-1
#en_PH.UTF-8 UTF-8
#en_PH ISO-8859-1
#en_SC.UTF-8 UTF-8
#en_SG.UTF-8 UTF-8
#en_SG ISO-8859-1
#en_US.UTF-8 UTF-8
#en_US ISO-8859-1
#en_ZA.UTF-8 UTF-8
#en_ZA ISO-8859-1
#en_ZM UTF-8
#en_ZW.UTF-8 UTF-8
#en_ZW ISO-8859-1
#eo UTF-8
#es_AR.UTF-8 UTF-8
#es_AR ISO-8859-1
#es_BO.UTF-8 UTF-8
#es_BO ISO-8859-1
#es_CL.UTF-8 UTF-8
#es_CL ISO-8859-1
#es_CO.UTF-8 UTF-8
#es_CO ISO-8859-1
#es_CR.UTF-8 UTF-8
#es_CR ISO-8859-1
#es_CU UTF-8
#es_DO.UTF-8 UTF-8
#es_DO ISO-8859-1
#es_EC.UTF-8 UTF-8
#es_EC ISO-8859-1
#es_ES.UTF-8 UTF-8
#es_ES ISO-8859-1
#es_ES@euro ISO-8859-15
#es_GT.UTF-8 UTF-8
#es_GT ISO-8859-1
#es_HN.UTF-8 UTF-8
#es_HN ISO-8859-1
#es_MX.UTF-8 UTF-8
#es_MX ISO-8859-1
#es_NI.UTF-8 UTF-8
#es_NI ISO-8859-1
#es_PA.UTF-8 UTF-8
#es_PA ISO-8859-1
#es_PE.UTF-8 UTF-8
#es_PE ISO-8859-1
#es_PR.UTF-8 UTF-8
#es_PR ISO-8859-1
#es_PY.UTF-8 UTF-8
#es_PY ISO-8859-1
#es_SV.UTF-8 UTF-8
#es_SV ISO-8859-1
#es_US.UTF-8 UTF-8
#es_US ISO-8859-1
#es_UY.UTF-8 UTF-8
#es_UY ISO-8859-1
#es_VE.UTF-8 UTF-8
#es_VE ISO-8859-1
#et_EE.UTF-8 UTF-8
#et_EE ISO-8859-1
#et_EE.ISO-8859-15 ISO-8859-15
#eu_ES.UTF-8 UTF-8
#eu_ES ISO-8859-1
#eu_ES@euro ISO-8859-15
#fa_IR UTF-8
#ff_SN UTF-8
#fi_FI.UTF-8 UTF-8
#fi_FI ISO-8859-1
#fi_FI@euro ISO-8859-15
#fil_PH UTF-8
#fo_FO.UTF-8 UTF-8
#fo_FO ISO-8859-1
#fr_BE.UTF-8 UTF-8
#fr_BE ISO-8859-1
#fr_BE@euro ISO-8859-15
#fr_CA.UTF-8 UTF-8
#fr_CA ISO-8859-1
#fr_CH.UTF-8 UTF-8
#fr_CH ISO-8859-1
#fr_FR.UTF-8 UTF-8
#fr_FR ISO-8859-1
#fr_FR@euro ISO-8859-15
#fr_LU.UTF-8 UTF-8
#fr_LU ISO-8859-1
#fr_LU@euro ISO-8859-15
#fur_IT UTF-8
#fy_NL UTF-8
#fy_DE UTF-8
#ga_IE.UTF-8 UTF-8
#ga_IE ISO-8859-1
#ga_IE@euro ISO-8859-15
#gd_GB.UTF-8 UTF-8
#gd_GB ISO-8859-15
#gez_ER UTF-8
#gez_ER@abegede UTF-8
#gez_ET UTF-8
#gez_ET@abegede UTF-8
#gl_ES.UTF-8 UTF-8
#gl_ES ISO-8859-1
#gl_ES@euro ISO-8859-15
#gu_IN UTF-8
#gv_GB.UTF-8 UTF-8
#gv_GB ISO-8859-1
#ha_NG UTF-8
#hak_TW UTF-8
#he_IL.UTF-8 UTF-8
#he_IL ISO-8859-8
#hi_IN UTF-8
#hif_FJ UTF-8
#hne_IN UTF-8
#hr_HR.UTF-8 UTF-8
#hr_HR ISO-8859-2
#hsb_DE ISO-8859-2
#hsb_DE.UTF-8 UTF-8
#ht_HT UTF-8
#hu_HU.UTF-8 UTF-8
#hu_HU ISO-8859-2
#hy_AM UTF-8
#hy_AM.ARMSCII-8 ARMSCII-8
#ia_FR UTF-8
#id_ID.UTF-8 UTF-8
#id_ID ISO-8859-1
#ig_NG UTF-8
#ik_CA UTF-8
#is_IS.UTF-8 UTF-8
#is_IS ISO-8859-1
#it_CH.UTF-8 UTF-8
#it_CH ISO-8859-1
#it_IT.UTF-8 UTF-8
#it_IT ISO-8859-1
#it_IT@euro ISO-8859-15
#iu_CA UTF-8
#ja_JP.EUC-JP EUC-JP
#ja_JP.UTF-8 UTF-8
#ka_GE.UTF-8 UTF-8
#ka_GE GEORGIAN-PS
#kab_DZ UTF-8
#kk_KZ.UTF-8 UTF-8
#kk_KZ PT154
#kl_GL.UTF-8 UTF-8
#kl_GL ISO-8859-1
#km_KH UTF-8
#kn_IN UTF-8
#ko_KR.EUC-KR EUC-KR
#ko_KR.UTF-8 UTF-8
#kok_IN UTF-8
#ks_IN UTF-8
#ks_IN@devanagari UTF-8
#ku_TR.UTF-8 UTF-8
#ku_TR ISO-8859-9
#kw_GB.UTF-8 UTF-8
#kw_GB ISO-8859-1
#ky_KG UTF-8
#lb_LU UTF-8
#lg_UG.UTF-8 UTF-8
#lg_UG ISO-8859-10
#li_BE UTF-8
#li_NL UTF-8
#lij_IT UTF-8
#ln_CD UTF-8
#lo_LA UTF-8
#lt_LT.UTF-8 UTF-8
#lt_LT ISO-8859-13
#lv_LV.UTF-8 UTF-8
#lv_LV ISO-8859-13
#lzh_TW UTF-8
#mag_IN UTF-8
#mai_IN UTF-8
#mai_NP UTF-8
#mfe_MU UTF-8
#mg_MG.UTF-8 UTF-8
#mg_MG ISO-8859-15
#mhr_RU UTF-8
#mi_NZ.UTF-8 UTF-8
#mi_NZ ISO-8859-13
#miq_NI UTF-8
#mjw_IN UTF-8
#mk_MK.UTF-8 UTF-8
#mk_MK ISO-8859-5
#ml_IN UTF-8
#mn_MN UTF-8
#mni_IN UTF-8
#mnw_MM UTF-8
#mr_IN UTF-8
#ms_MY.UTF-8 UTF-8
#ms_MY ISO-8859-1
#mt_MT.UTF-8 UTF-8
#mt_MT ISO-8859-3
#my_MM UTF-8
#nan_TW UTF-8
#nan_TW@latin UTF-8
#nb_NO.UTF-8 UTF-8
#nb_NO ISO-8859-1
#nds_DE UTF-8
#nds_NL UTF-8
#ne_NP UTF-8
#nhn_MX UTF-8
#niu_NU UTF-8
#niu_NZ UTF-8
#nl_AW UTF-8
#nl_BE.UTF-8 UTF-8
#nl_BE ISO-8859-1
#nl_BE@euro ISO-8859-15
#nl_NL.UTF-8 UTF-8
#nl_NL ISO-8859-1
#nl_NL@euro ISO-8859-15
#nn_NO.UTF-8 UTF-8
#nn_NO ISO-8859-1
#nr_ZA UTF-8
#nso_ZA UTF-8
#oc_FR.UTF-8 UTF-8
#oc_FR ISO-8859-1
#om_ET UTF-8
#om_KE.UTF-8 UTF-8
#om_KE ISO-8859-1
#or_IN UTF-8
#os_RU UTF-8
#pa_IN UTF-8
#pa_PK UTF-8
#pap_AW UTF-8
#pap_CW UTF-8
#pl_PL.UTF-8 UTF-8
#pl_PL ISO-8859-2
#ps_AF UTF-8
#pt_BR.UTF-8 UTF-8
#pt_BR ISO-8859-1
#pt_PT.UTF-8 UTF-8
#pt_PT ISO-8859-1
#pt_PT@euro ISO-8859-15
#quz_PE UTF-8
#raj_IN UTF-8
#ro_RO.UTF-8 UTF-8
#ro_RO ISO-8859-2
#ru_RU.KOI8-R KOI8-R
#ru_RU.UTF-8 UTF-8
#ru_RU ISO-8859-5
#ru_UA.UTF-8 UTF-8
#ru_UA KOI8-U
#rw_RW UTF-8
#sa_IN UTF-8
#sah_RU UTF-8
#sat_IN UTF-8
#sc_IT UTF-8
#sd_IN UTF-8
#sd_IN@devanagari UTF-8
#se_NO UTF-8
#sgs_LT UTF-8
#shn_MM UTF-8
#shs_CA UTF-8
#si_LK UTF-8
#sid_ET UTF-8
#sk_SK.UTF-8 UTF-8
#sk_SK ISO-8859-2
#sl_SI.UTF-8 UTF-8
#sl_SI ISO-8859-2
#sm_WS UTF-8
#so_DJ.UTF-8 UTF-8
#so_DJ ISO-8859-1
#so_ET UTF-8
#so_KE.UTF-8 UTF-8
#so_KE ISO-8859-1
#so_SO.UTF-8 UTF-8
#so_SO ISO-8859-1
#sq_AL.UTF-8 UTF-8
#sq_AL ISO-8859-1
#sq_MK UTF-8
#sr_ME UTF-8
#sr_RS UTF-8
#sr_RS@latin UTF-8
#ss_ZA UTF-8
#st_ZA.UTF-8 UTF-8
#st_ZA ISO-8859-1
#sv_FI.UTF-8 UTF-8
#sv_FI ISO-8859-1
#sv_FI@euro ISO-8859-15
#sv_SE.UTF-8 UTF-8
#sv_SE ISO-8859-1
#sw_KE UTF-8
#sw_TZ UTF-8
#szl_PL UTF-8
#ta_IN UTF-8
#ta_LK UTF-8
#tcy_IN.UTF-8 UTF-8
#te_IN UTF-8
#tg_TJ.UTF-8 UTF-8
#tg_TJ KOI8-T
#th_TH.UTF-8 UTF-8
#th_TH TIS-620
#the_NP UTF-8
#ti_ER UTF-8
#ti_ET UTF-8
#tig_ER UTF-8
#tk_TM UTF-8
#tl_PH.UTF-8 UTF-8
#tl_PH ISO-8859-1
#tn_ZA UTF-8
#to_TO UTF-8
#tpi_PG UTF-8
#tr_CY.UTF-8 UTF-8
#tr_CY ISO-8859-9
#tr_TR.UTF-8 UTF-8
#tr_TR ISO-8859-9
#ts_ZA UTF-8
#tt_RU UTF-8
#tt_RU@iqtelif UTF-8
#ug_CN UTF-8
#uk_UA.UTF-8 UTF-8
#uk_UA KOI8-U
#unm_US UTF-8
#ur_IN UTF-8
#ur_PK UTF-8
#uz_UZ.UTF-8 UTF-8
#uz_UZ ISO-8859-1
#uz_UZ@cyrillic UTF-8
#ve_ZA UTF-8
#vi_VN UTF-8
#wa_BE ISO-8859-1
#wa_BE@euro ISO-8859-15
#wa_BE.UTF-8 UTF-8
#wae_CH UTF-8
#wal_ET UTF-8
#wo_SN UTF-8
#xh_ZA.UTF-8 UTF-8
#xh_ZA ISO-8859-1
#yi_US.UTF-8 UTF-8
#yi_US CP1255
#yo_NG UTF-8
#yue_HK UTF-8
#yuw_PG UTF-8
#zh_CN.GB18030 GB18030
#zh_CN.GBK GBK
#zh_CN.UTF-8 UTF-8
#zh_CN GB2312
#zh_HK.UTF-8 UTF-8
#zh_HK BIG5-HKSCS
#zh_SG.UTF-8 UTF-8
#zh_SG.GBK GBK
#zh_SG GB2312
#zh_TW.EUC-TW EUC-TW
#zh_TW.UTF-8 UTF-8
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1

67
etc/mkinitcpio.conf Normal file
View file

@ -0,0 +1,67 @@
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(piix ide_disk reiserfs)
MODULES=()
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No raid, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect block filesystems)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev block filesystems)
#
## This setup assembles a pata mdadm array with an encrypted root FS.
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
# HOOKS=(base udev block mdadm encrypt filesystems)
#
## This setup loads an lvm2 volume group on a usb device.
# HOOKS=(base udev block lvm2 filesystems)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr, fsck and shutdown hooks.
HOOKS=(base udev modconf memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block filesystems keyboard)
# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
COMPRESSION="zstd"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()

14
etc/mkinitcpio.d/ezmkinit Normal file
View file

@ -0,0 +1,14 @@
# mkinitcpio preset file for the 'linux' package
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux"
PRESETS=('default' 'fallback')
#default_config="/etc/mkinitcpio.conf"
default_image="/boot/initramfs-linux.img"
#default_options=""
#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/initramfs-linux-fallback.img"
fallback_options="-S autodetect"

103
etc/pacman.conf Normal file
View file

@ -0,0 +1,103 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#Color
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
ParallelDownloads = 3
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[ezrepo]
#SigLevel = Optional TrustAll
#Server = file:///opt/ezrepo

96
etc/sudoers Normal file
View file

@ -0,0 +1,96 @@
## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##
##
## Host alias specification
##
## Groups of machines. These may include host names (optionally with wildcards),
## IP addresses, network numbers or netgroups.
# Host_Alias WEBSERVERS = www1, www2, www3
##
## User alias specification
##
## Groups of users. These may consist of user names, uids, Unix groups,
## or netgroups.
# User_Alias ADMINS = millert, dowdy, mikef
##
## Cmnd alias specification
##
## Groups of commands. Often used to group related commands together.
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
# /usr/bin/pkill, /usr/bin/top
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff
##
## Defaults specification
##
## You may wish to keep some of the following environment variables
## when running commands via sudo.
##
## Locale settings
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
##
## Run X applications through sudo; HOME is used to find the
## .Xauthority file. Note that other programs use HOME to find
## configuration files and this may lead to privilege escalation!
# Defaults env_keep += "HOME"
##
## X11 resource path settings
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
##
## Desktop path settings
# Defaults env_keep += "QTDIR KDEDIR"
##
## Allow sudo-run commands to inherit the callers' ConsoleKit session
# Defaults env_keep += "XDG_SESSION_COOKIE"
##
## Uncomment to enable special input methods. Care should be taken as
## this may allow users to subvert the command being run via sudo.
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
##
## Uncomment to use a hard-coded PATH instead of the user's to find commands
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
##
## Uncomment to send mail if the user does not enter the correct password.
# Defaults mail_badpass
##
## Uncomment to enable logging of a command's output, except for
## sudoreplay and reboot. Use sudoreplay to play back logged sessions.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!/usr/local/bin/sudoreplay !log_output
# Defaults!REBOOT !log_output
##
## Runas alias specification
##
##
## User privilege specification
##
root ALL=(ALL) ALL
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Uncomment to allow members of group sudo to execute any command
# %sudo ALL=(ALL) ALL
## Uncomment to allow any user to run sudo if they know the password
## of the user they are running the command as (root by default).
# Defaults targetpw # Ask for the password of the target user
# ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw'
## Read drop-in files from /etc/sudoers.d
@includedir /etc/sudoers.d

View file

@ -0,0 +1,11 @@
[Unit]
Description=Initializes Pacman keyring
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/pacman-key --init
ExecStart=/usr/bin/pacman-key --populate
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,6 @@
# Reflector configuration file for the systemd service.
--save /etc/pacman.d/mirrorlist
--protocol https
--latest 10
--sort rate

Binary file not shown.

Binary file not shown.

BIN
opt/ezrepo/ezrepo.db Normal file

Binary file not shown.

BIN
opt/ezrepo/ezrepo.db.tar.gz Normal file

Binary file not shown.

BIN
opt/ezrepo/ezrepo.files Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

400
packages.x86_64 Normal file
View file

@ -0,0 +1,400 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
alsa-utils
amd-ucode
arch-install-scripts
b43-fwcutter
base
bind-tools
brltty
broadcom-wl-dkms
btrfs-progs
cryptsetup
darkhttpd
ddrescue
dhclient
dhcpcd
diffutils
dmraid
dnsmasq
dosfstools
e2fsprogs
edk2-shell
efibootmgr
espeakup
ethtool
exfatprogs
f2fs-tools
fatresize
fsarchiver
gnu-netcat
gpart
gpm
gptfdisk
grml-zsh-config
grub
hdparm
intel-ucode
ipw2100-fw
ipw2200-fw
irssi
iw
iwd
jfsutils
kitty-terminfo
less
libfido2
libusb-compat
linux
linux-atm
linux-firmware
linux-firmware-bnx2x
linux-firmware-marvell
linux-firmware-qcom
linux-firmware-qlogic
linux-firmware-whence
livecd-sounds
lsscsi
lvm2
lynx
man-db
man-pages
mc
mdadm
memtest86+
mkinitcpio
mkinitcpio-archiso
mkinitcpio-nfs-utils
modemmanager
mtools
nano
nbd
ndisc6
nfs-utils
nilfs-utils
nmap
ntfs-3g
nvme-cli
openconnect
openssh
openvpn
partclone
parted
partimage
pcsclite
ppp
pptpclient
pv
qemu-guest-agent
refind
reflector
reiserfsprogs
rp-pppoe
rsync
rxvt-unicode-terminfo
screen
sdparm
sg3_utils
smartmontools
sof-firmware
squashfs-tools
sudo
syslinux
systemd-resolvconf
tcpdump
terminus-font
testdisk
tmux
tpm2-tss
udftools
usb_modeswitch
usbmuxd
usbutils
vim
virtualbox-guest-utils
vpnc
wireless-regdb
wireless_tools
wpa_supplicant
wvdial
xfsprogs
xl2tpd
zsh
# System
archiso
archlinux-appstream-data
base-devel
bash-completion
bluez
bluez-utils
cdrtools
cmake
cryfs
devtools
dkms
dvd+rw-tools
efitools
encfs
fuse3
fwupd
git
gnome-disk-utility
gnome-keyring
gocryptfs
gparted
grsync
haveged
htop
hwdata
hwdetect
hwinfo
libburn
libisofs
libisoburn
linux-headers
logrotate
lsb-release
os-prober
p7zip
packagekit
pacman-contrib
pacutils
pahole
perl
perl-data-dump
perl-json
perl-lwp-protocol-https
perl-term-readline-gnu
perl-term-ui
pkgfile
plocate
python-setuptools
python-sphinx
tlp
udftools
udisks2
unace
unrar
unzip
xdg-user-dirs
xz
zstd
# Filesystem
gvfs
gvfs-afc
gvfs-goa
gvfs-gphoto2
gvfs-mtp
gvfs-nfs
gvfs-smb
# Multimedia
alsa-lib
alsa-plugins
alsa-firmware
alsa-utils
audacious
audacious-plugins
cdrdao
dvdauthor
faac
faad2
ffmpeg
ffmpegthumbnailer
flac
frei0r-plugins
gstreamer
gst-libav
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
gstreamer-vaapi
imagemagick
lame
libdvdcss
libopenraw
mencoder
mjpegtools
mpv
poppler-glib
# Pipewire - comment pulseaudio packages if using pipewire
# pipewire
# pipewire-alsa
# pipewire-docs
# pipewire-jack
# pipewire-media-session
# pipewire-pulse
# alsa-card-profiles
# gst-plugin-pipewire
# Pulseaudio - comment pipewire packages if using pulseaudio
pulseaudio
pulseaudio-alsa
pulseaudio-bluetooth
pulseaudio-equalizer
pulseaudio-jack
simplescreenrecorder
sox
transcode
smplayer
x265
x264
xvidcore
# XORG
mesa
xorg
xorg-server
xorg-apps
xorg-drivers
xorg-xkill
xorg-xinit
xterm
# Networking
avahi
curl
dnsutils
ethtool
filezilla
firefox
firewalld
gnome-nettool
iptables-nft
modemmanager
net-tools
netctl
networkmanager
networkmanager-openvpn
network-manager-applet
nftables
nm-connection-editor
nss-mdns
openresolv
r8168
wget
whois
# Fonts
ttf-dejavu
ttf-liberation
ttf-bitstream-vera
ttf-ubuntu-font-family
cantarell-fonts
ttf-croscore
ttf-carlito
ttf-caladea
noto-fonts
opendesktop-fonts
ttf-opensans
freetype2
# Printing Support
cups
cups-pdf
cups-filters
cups-pk-helper
foomatic-db
foomatic-db-engine
ghostscript
gsfonts
gutenprint
python-pillow
python-pip
python-pyqt5
python-reportlab
simple-scan
system-config-printer
# LXQT
accountsservice
aisleriot
appstream-qt
bluez-qt
brightnessctl
breeze-icons
discover
featherpad
geany
guvcview
k3b
kwin
liblxqt
libstatgrab
libsysstat
lximage-qt
lxqt-about
lxqt-admin
lxqt-archiver
lxqt-build-tools
lxqt-config
lxqt-globalkeys
lxqt-notificationd
lxqt-openssh-askpass
lxqt-panel
lxqt-policykit
lxqt-powermanagement
lxqt-qtplugin
lxqt-runner
lxqt-session
lxqt-sudo
lxqt-themes
meld
neofetch
networkmanager-qt
packagekit-qt5
pcmanfm-qt
papirus-icon-theme
pavucontrol-qt
print-manager
qbittorrent
qterminal
screengrab
xdg-desktop-portal-lxqt
xpdf
xscreensaver
# Display Manager
sddm
sddm-kcm
# Calamares dependencies (not listed elsewhere)
boost
boost-libs
dmidecode
extra-cmake-modules
gtk-update-icon-cache
icu
kconfig
kcoreaddons
kdbusaddons
kiconthemes
ki18n
kio
kparts
kpmcore
kservice
kwidgetsaddons
libpwquality
plasma-framework
polkit-qt5
qt5-location
qt5-svg
qt5-tools
qt5-translations
qt5-webengine
qt5-xmlpatterns
qt5ct
solid
upower
yaml-cpp
# Calamares
calamares
ckbcomp
mkinitcpio-openswap
# AUR
trizen

103
pacman.conf Normal file
View file

@ -0,0 +1,103 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#Color
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
ParallelDownloads = 3
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
#[multilib]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
[ezrepo]
SigLevel = Optional TrustAll
Server = file:///opt/ezrepo

28
profiledef.sh Normal file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
# shellcheck disable=SC2034
iso_name="4rch-lxqt"
iso_label="4RCH-LXQT_$(date +%Y%m)"
iso_publisher="4RCH Linux <https://github.com/M4RT1NDEV/4rch-linux/>"
iso_application="4rch DVD"
iso_version="Alpha-0_2"
install_dir="arch"
buildmodes=('iso')
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' 'uefi-x64.systemd-boot.esp' 'uefi-x64.systemd-boot.eltorito')
arch="x86_64"
pacman_conf="./pacman.conf"
airootfs_image_tool_options=('-comp' 'zstd' '-b' '1M')
file_permissions=(
["/etc/shadow"]="0:0:0400"
["/etc/gshadow"]="0:0:0400"
["/etc/sudoers"]="0:0:0440"
["/root"]="0:0:750"
["/root/.automated_script.sh"]="0:0:755"
["/usr/local/bin/choose-mirror"]="0:0:755"
["/usr/local/bin/Installation_guide"]="0:0:755"
["/usr/local/bin/livecd-sound"]="0:0:755"
["/usr/local/bin/ezmaint"]="0:0:755"
["/usr/local/bin/ezarch.bios"]="0:0:755"
["/usr/local/bin/ezarch.uefi"]="0:0:755"
["/usr/local/bin/ezmaint"]="0:0:755"
)

244
steps.sh Normal file
View file

@ -0,0 +1,244 @@
#!/bin/bash
# Template Version: 5.0 -- by eznix (https://sourceforge.net/projects/ezarch/)
# Release Alpha 0.2
# ----------------------------------------
# Define Variables
# ----------------------------------------
LCLST="en_US"
# Format is language_COUNTRY where language is lower case two letter code
# and country is upper case two letter code, separated with an underscore
KEYMP="us"
# Use lower case two letter country code
KEYMOD="pc105"
# pc105 and pc104 are modern standards, all others need to be researched
MYUSERNM="4rch"
# use all lowercase letters only
MYUSRPASSWD="4rch"
# Pick a password of your choice
RTPASSWD="4rch"
# Pick a root password
MYHOSTNM="4RCH_LIVE"
# Pick a hostname for the machine
# ----------------------------------------
# Functions
# ----------------------------------------
# Test for root user
rootuser () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
# Display line error
handlerror () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
}
# Clean up working directories
cleanup () {
[[ -d ./ezreleng ]] && rm -r ./ezreleng
[[ -d ./work ]] && rm -r ./work
[[ -d ./out ]] && mv ./out ../
sleep 2
}
# Requirements and preparation
prepreqs () {
pacman -S --noconfirm archlinux-keyring
pacman -S --needed --noconfirm archiso mkinitcpio-archiso
}
# Copy ezreleng to working directory
cpezreleng () {
cp -r /usr/share/archiso/configs/releng/ ./ezreleng
rm -r ./ezreleng/efiboot
rm -r ./ezreleng/syslinux
}
# Copy ezrepo to opt
cpezrepo () {
cp -r ./opt/ezrepo /opt/
}
# Remove ezrepo from opt
rmezrepo () {
rm -r /opt/ezrepo
}
# Delete automatic login
nalogin () {
[[ -d ./ezreleng/airootfs/etc/systemd/system/getty@tty1.service.d ]] && rm -r ./ezreleng/airootfs/etc/systemd/system/getty@tty1.service.d
}
# Remove cloud-init and other stuff
rmunitsd () {
[[ -d ./ezreleng/airootfs/etc/systemd/system/cloud-init.target.wants ]] && rm -r ./ezreleng/airootfs/etc/systemd/system/cloud-init.target.wants
[[ -f ./ezreleng/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service ]] && rm ./ezreleng/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service
[[ -f ./ezreleng/airootfs/etc/xdg/reflector/reflector.conf ]] && rm ./ezreleng/airootfs/etc/xdg/reflector/reflector.conf
}
# Add Bluetooth, cups, haveged, NetworkManager, & sddm systemd links
addnmlinks () {
[[ ! -d ./ezreleng/airootfs/etc/systemd/system/network-online.target.wants ]] && mkdir -p ./ezreleng/airootfs/etc/systemd/system/network-online.target.wants
[[ ! -d ./ezreleng/airootfs/etc/systemd/system/multi-user.target.wants ]] && mkdir -p ./ezreleng/airootfs/etc/systemd/system/multi-user.target.wants
[[ ! -d ./ezreleng/airootfs/etc/systemd/system/bluetooth.target.wants ]] && mkdir -p ./ezreleng/airootfs/etc/systemd/system/bluetooth.target.wants
[[ ! -d ./ezreleng/airootfs/etc/systemd/system/printer.target.wants ]] && mkdir -p ./ezreleng/airootfs/etc/systemd/system/printer.target.wants
[[ ! -d ./ezreleng/airootfs/etc/systemd/system/sockets.target.wants ]] && mkdir -p ./ezreleng/airootfs/etc/systemd/system/sockets.target.wants
[[ ! -d ./ezreleng/airootfs/etc/systemd/system/timers.target.wants ]] && mkdir -p ./ezreleng/airootfs/etc/systemd/system/timers.target.wants
[[ ! -d ./ezreleng/airootfs/etc/systemd/system/sysinit.target.wants ]] && mkdir -p ./ezreleng/airootfs/etc/systemd/system/sysinit.target.wants
ln -sf /usr/lib/systemd/system/NetworkManager-wait-online.service ./ezreleng/airootfs/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
ln -sf /usr/lib/systemd/system/NetworkManager-dispatcher.service ./ezreleng/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
ln -sf /usr/lib/systemd/system/NetworkManager.service ./ezreleng/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service
ln -sf /usr/lib/systemd/system/bluetooth.service ./ezreleng/airootfs/etc/systemd/system/bluetooth.target.wants/bluetooth.service
ln -sf /usr/lib/systemd/system/haveged.service ./ezreleng/airootfs/etc/systemd/system/sysinit.target.wants/haveged.service
ln -sf /usr/lib/systemd/system/cups.service ./ezreleng/airootfs/etc/systemd/system/printer.target.wants/cups.service
ln -sf /usr/lib/systemd/system/cups.socket ./ezreleng/airootfs/etc/systemd/system/sockets.target.wants/cups.socket
ln -sf /usr/lib/systemd/system/cups.path ./ezreleng/airootfs/etc/systemd/system/multi-user.target.wants/cups.path
ln -sf /usr/lib/systemd/system/bluetooth.service ./ezreleng/airootfs/etc/systemd/system/dbus-org.bluez.service
ln -sf /usr/lib/systemd/system/sddm.service ./ezreleng/airootfs/etc/systemd/system/display-manager.service
}
# Copy files to customize the ISO
cpmyfiles () {
cp packages.x86_64 ./ezreleng/
cp pacman.conf ./ezreleng/
cp profiledef.sh ./ezreleng/
cp -r efiboot ./ezreleng/
cp -r syslinux ./ezreleng/
cp -r usr ./ezreleng/airootfs/
cp -r etc ./ezreleng/airootfs/
cp -r opt ./ezreleng/airootfs/
ln -sf /usr/share/ezarcher ./ezreleng/airootfs/etc/skel/ezarcher
}
# Set hostname
sethostname () {
echo "${MYHOSTNM}" > ./ezreleng/airootfs/etc/hostname
}
# Create passwd file
crtpasswd () {
echo "root:x:0:0:root:/root:/usr/bin/bash
"${MYUSERNM}":x:1010:1010::/home/"${MYUSERNM}":/bin/bash" > ./ezreleng/airootfs/etc/passwd
}
# Create group file
crtgroup () {
echo "root:x:0:root
sys:x:3:"${MYUSERNM}"
adm:x:4:"${MYUSERNM}"
wheel:x:10:"${MYUSERNM}"
log:x:19:"${MYUSERNM}"
network:x:90:"${MYUSERNM}"
floppy:x:94:"${MYUSERNM}"
scanner:x:96:"${MYUSERNM}"
power:x:98:"${MYUSERNM}"
rfkill:x:850:"${MYUSERNM}"
users:x:985:"${MYUSERNM}"
video:x:860:"${MYUSERNM}"
storage:x:870:"${MYUSERNM}"
optical:x:880:"${MYUSERNM}"
lp:x:840:"${MYUSERNM}"
audio:x:890:"${MYUSERNM}"
"${MYUSERNM}":x:1010:" > ./ezreleng/airootfs/etc/group
}
# Create shadow file
crtshadow () {
usr_hash=$(openssl passwd -6 "${MYUSRPASSWD}")
root_hash=$(openssl passwd -6 "${RTPASSWD}")
echo "root:"${root_hash}":14871::::::
"${MYUSERNM}":"${usr_hash}":14871::::::" > ./ezreleng/airootfs/etc/shadow
}
# create gshadow file
crtgshadow () {
echo "root:!*::root
"${MYUSERNM}":!*::" > ./ezreleng/airootfs/etc/gshadow
}
# Set the keyboard layout
setkeylayout () {
echo "KEYMAP="${KEYMP}"" > ./ezreleng/airootfs/etc/vconsole.conf
}
# Create 00-keyboard.conf file
crtkeyboard () {
mkdir -p ./ezreleng/airootfs/etc/X11/xorg.conf.d
echo "Section \"InputClass\"
Identifier \"system-keyboard\"
MatchIsKeyboard \"on\"
Option \"XkbLayout\" \""${KEYMP}"\"
Option \"XkbModel\" \""${KEYMOD}"\"
EndSection" > ./ezreleng/airootfs/etc/X11/xorg.conf.d/00-keyboard.conf
}
# Fix 40-locale-gen.hook and create locale.conf
crtlocalec () {
sed -i "s/en_US/"${LCLST}"/g" ./ezreleng/airootfs/etc/pacman.d/hooks/40-locale-gen.hook
echo "LANG="${LCLST}".UTF-8" > ./ezreleng/airootfs/etc/locale.conf
}
# Start mkarchiso
runmkarchiso () {
mkarchiso -v -w ./work -o ./out ./ezreleng
}
# ----------------------------------------
# Run Functions
# ----------------------------------------
rootuser
handlerror
prepreqs
cleanup
cpezreleng
addnmlinks
cpezrepo
nalogin
rmunitsd
cpmyfiles
sethostname
crtpasswd
crtgroup
crtshadow
crtgshadow
setkeylayout
crtkeyboard
crtlocalec
runmkarchiso
rmezrepo
# Disclaimer:
#
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# END
#

28
syslinux/archiso_head.cfg Normal file
View file

@ -0,0 +1,28 @@
SERIAL 0 115200
UI vesamenu.c32
MENU TITLE 4RCH Linux
MENU BACKGROUND splash.png
MENU WIDTH 78
MENU MARGIN 4
MENU ROWS 7
MENU VSHIFT 10
MENU TABMSGROW 14
MENU CMDLINEROW 14
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29
# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
MENU COLOR border 30;44 #40ffffff #a0000000 std
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
MENU COLOR help 37;40 #c0ffffff #a0000000 std
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
MENU CLEAR
MENU IMMEDIATE

View file

@ -0,0 +1,32 @@
LABEL arch64_nbd
TEXT HELP
Boot the 4RCH Linux using NBD.
It allows you to install 4RCH Linux or perform system maintenance.
ENDTEXT
MENU LABEL 4RCH Linux (x86_64, NBD)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} checksum verify cow_spacesize=4G
SYSAPPEND 3
LABEL arch64_nfs
TEXT HELP
Boot the 4RCH Linux using NFS.
It allows you to install 4RCH Linux or perform system maintenance.
ENDTEXT
MENU LABEL 4RCH Linux (x86_64, NFS)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt checksum verify cow_spacesize=4G
SYSAPPEND 3
LABEL arch64_http
TEXT HELP
Boot the 4RCH Linux using HTTP.
It allows you to install 4RCH Linux or perform system maintenance.
ENDTEXT
MENU LABEL 4RCH Linux (x86_64, HTTP)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ checksum verify cow_spacesize=4G
SYSAPPEND 3

5
syslinux/archiso_pxe.cfg Normal file
View file

@ -0,0 +1,5 @@
INCLUDE archiso_head.cfg
INCLUDE archiso_pxe-linux.cfg
INCLUDE archiso_tail.cfg

View file

@ -0,0 +1,31 @@
LABEL arch64
TEXT HELP
Boot the 4RCH Linux install medium on BIOS.
It allows you to install 4RCH Linux or perform system maintenance.
ENDTEXT
MENU LABEL 4RCH Linux (x86_64, BIOS)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% cow_spacesize=4G
# Accessibility boot option
LABEL arch64speech
TEXT HELP
Boot the 4RCH Linux install medium on BIOS with speakup screen reader.
It allows you to install 4RCH Linux or perform system maintenance with speech feedback.
ENDTEXT
MENU LABEL 4RCH Linux (x86_64, BIOS) with ^speech
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% accessibility=on cow_spacesize=4G
# Copy to RAM boot option
#LABEL arch64ram
#TEXT HELP
#Boot the 4RCH Linux on BIOS with Copy-to-RAM option
#It allows you to install 4RCH Linux or perform system maintenance.
#ENDTEXT
#MENU LABEL Arch Linux install medium (x86_64, BIOS, Copy to RAM)
#LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
#INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
#APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram cow_spacesize=4G

8
syslinux/archiso_sys.cfg Normal file
View file

@ -0,0 +1,8 @@
INCLUDE archiso_head.cfg
DEFAULT arch64
TIMEOUT 150
INCLUDE archiso_sys-linux.cfg
INCLUDE archiso_tail.cfg

35
syslinux/archiso_tail.cfg Normal file
View file

@ -0,0 +1,35 @@
LABEL existing
TEXT HELP
Boot an existing operating system.
Press TAB to edit the disk and partition number to boot.
ENDTEXT
MENU LABEL Boot existing OS
COM32 chain.c32
APPEND hd0 0
# http://www.memtest.org/
LABEL memtest
MENU LABEL Run Memtest86+ (RAM test)
LINUX /%INSTALL_DIR%/boot/memtest
# http://hdt-project.org/
LABEL hdt
MENU LABEL Hardware Information (HDT)
COM32 hdt.c32
APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz
LABEL reboot
TEXT HELP
Reboot computer.
The computer's firmware must support APM.
ENDTEXT
MENU LABEL Reboot
COM32 reboot.c32
LABEL poweroff
TEXT HELP
Power off computer.
The computer's firmware must support APM.
ENDTEXT
MENU LABEL Power Off
COM32 poweroff.c32

BIN
syslinux/splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
syslinux/splash.png~ Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

11
syslinux/syslinux.cfg Normal file
View file

@ -0,0 +1,11 @@
DEFAULT select
LABEL select
COM32 whichsys.c32
APPEND -pxe- pxe -sys- sys -iso- sys
LABEL pxe
CONFIG archiso_pxe.cfg
LABEL sys
CONFIG archiso_sys.cfg

731
usr/local/bin/ezarch.bios Normal file
View file

@ -0,0 +1,731 @@
#!/bin/bash
# EZ Arch Installer - BIOS
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/4RCH/)
# (GNU/General Public License version 3.0)
# ----------------------------------------
# Define Variables
# ----------------------------------------
MYTMZ="America/Phoenix"
# List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
# Format is language_COUNTRY where language is lower case two letter code
# and country is upper case two letter code, separated with an underscore
KEYMP="us"
# Use lower case two letter country code
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerr () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
}
welcome () {
clear
echo "==================================================="
echo "= ="
echo "= Welcome to the 4RCH Installer Script ="
echo "= ="
echo "= BIOS Edition ="
echo "= Version 6.5 (Release) ="
echo "= ="
echo "= Brought to you by M4DEV ="
echo "= https://github.com/M4RT1NDEV/4rch-linux ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
hrdclck () {
clear
timedatectl set-ntp true
}
usrname () {
clear
echo -e "\n"
read -p "Type your user name, be exact, and press Enter: " USRNAME
[[ -z "$USRNAME" ]] && usrname
clear
echo -e "\n"
echo "User name set to "${USRNAME}"..."
sleep 2
clear
}
usrpwd () {
clear
echo -e "\n"
read -p "Type your user password, be exact, and press Enter: " USRPWD
[[ -z "$USRPWD" ]] && usrpwd
clear
echo -e "\n"
echo "User password set to "${USRPWD}"..."
sleep 2
clear
}
rtpwd () {
clear
echo -e "\n"
read -p "Type your root password, be exact, and press Enter: " RTPWD
[[ -z "$RTPWD" ]] && rtpwd
clear
echo -e "\n"
echo "Root password set to "${RTPWD}"..."
sleep 2
clear
}
hstname () {
clear
echo -e "\n"
read -p "Type your hostname, be exact, and press Enter: " HSTNAME
[[ -z "$HSTNAME" ]] && hstname
clear
echo -e "\n"
echo "Hostname set to "${HSTNAME}"..."
sleep 2
clear
}
swapsize () {
clear
echo -e "\n"
read -p "Pick Swap Partition Size (2G, 4G, or 8G): " SWPSIZE
case $SWPSIZE in
2|2G|2g)
SWPSIZE=2GiB
;;
4|4G|4g)
SWPSIZE=4GiB
;;
8|8G|8g)
SWPSIZE=8Gib
;;
*)
echo "Invalid input..."
sleep 2
unset SWPSIZE
swapsize
;;
esac
clear
echo -e "\n"
echo "SWAP Partition Set To "${SWPSIZE}""
sleep 2
clear
}
rootsize () {
clear
echo -e "\n"
read -p "Pick Root Partition Size (20G, 40G, or 60G): " RTSIZE
case $RTSIZE in
20|20G|20g)
RTSIZE=20GiB
;;
40|40G|40g)
RTSIZE=40GiB
;;
60|60G|60g)
RTSIZE=60Gib
;;
*)
echo "Invalid input..."
sleep 2
unset RTSIZE
rootsize
;;
esac
clear
echo -e "\n"
echo "Root Partition Set To "${RTSIZE}""
sleep 2
clear
}
trgtdrvsd () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. sda), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvsd
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
trgtdrvnv () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. nvme0n1), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvnv
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
mkpartsd () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+8MiB -t 0:ef02 -c 0:grub /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartsd () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\2
mkfs.ext4 -L root /dev/"${TRGTDRV}"\3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartsd () {
clear
mount /dev/"${TRGTDRV}"\3 /mnt
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\4 /mnt/home
swapon /dev/"${TRGTDRV}"\2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
mkpartnv () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+8MiB -t 0:ef02 -c 0:grub /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartnv () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\p2
mkfs.ext4 -L root /dev/"${TRGTDRV}"\p3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\p4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartnv () {
clear
mount /dev/"${TRGTDRV}"\p3 /mnt
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\p4 /mnt/home
swapon /dev/"${TRGTDRV}"\p2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
psbase () {
clear
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
clear
echo -e "\n"
echo "Pacstrap base system complete..."
sleep 2
clear
}
mkfstab () {
clear
genfstab -U /mnt >> /mnt/etc/fstab
clear
}
syshstnm () {
clear
echo ""${HSTNAME}"" > /mnt/etc/hostname
echo "127.0.0.1 localhost" >> /mnt/etc/hosts
echo "::1 localhost" >> /mnt/etc/hosts
echo "127.0.1.1 "${HSTNAME}".localdomain "${HSTNAME}"" >> /mnt/etc/hosts
clear
}
syslocale () {
clear
echo ""${LCLST}".UTF-8 UTF-8" >> /mnt/etc/locale.gen
echo "LANG="${LCLST}".UTF-8" > /mnt/etc/locale.conf
echo "KEYMAP="${KEYMP}"" > /mnt/etc/vconsole.conf
arch-chroot /mnt locale-gen
arch-chroot /mnt localectl set-locale LANG="${LCLST}".UTF-8
arch-chroot /mnt localectl set-keymap "${KEYMP}"
clear
}
sysusrpwd () {
clear
arch-chroot /mnt useradd -mU -s /bin/bash -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm "${USRNAME}"
arch-chroot /mnt chpasswd <<< ""${USRNAME}":"${USRPWD}""
arch-chroot /mnt chpasswd <<< "root:"${RTPWD}""
clear
}
systmzone () {
clear
arch-chroot /mnt hwclock --systohc --utc
arch-chroot /mnt timedatectl set-ntp true
arch-chroot /mnt rm -rf /etc/localtime
arch-chroot /mnt ln -sf /usr/share/zoneinfo/"${MYTMZ}" /etc/localtime
clear
}
sysconfig () {
clear
echo -e "\n"
echo "Basic system config completed..."
sleep 2
clear
}
instgrub () {
clear
echo -e "\n"
arch-chroot /mnt grub-install --target=i386-pc /dev/"${TRGTDRV}"
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
arch-chroot /mnt mkinitcpio -p linux-lts
clear
echo -e "\n"
echo "Grub installed & mkinicpio run..."
sleep 2
clear
}
instxorg () {
clear
pacstrap /mnt xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
clear
echo -e "\n"
echo "Xorg installed installed..."
sleep 2
clear
}
instgen () {
clear
pacstrap /mnt amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
sleep 2
arch-chroot /mnt systemctl enable bluetooth.service
arch-chroot /mnt systemctl enable fstrim.timer
arch-chroot /mnt systemctl enable haveged.service
arch-chroot /mnt systemctl enable plocate-updatedb.timer
clear
echo -e "\n"
echo "General packages installed..."
sleep 2
clear
}
instcalamdep () {
clear
pacstrap /mnt boost boost-libs dmidecode extra-cmake-modules gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality plasma-framework polkit-qt5 qt5-location qt5-svg qt5-tools qt5-translations qt5-webengine qt5-xmlpatterns qt5ct solid upower yaml-cpp
clear
echo -e "\n"
echo "Calamares dependencies installed..."
sleep 2
clear
}
instmedia () {
clear
pacstrap /mnt alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
clear
echo -e "\n"
echo "Multimedia packages installed..."
sleep 2
clear
}
instnet () {
clear
pacstrap /mnt avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nftables nm-connection-editor nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
sleep 2
arch-chroot /mnt systemctl enable NetworkManager.service
clear
echo -e "\n"
echo "Networking packages installed..."
sleep 2
clear
}
instfonts () {
clear
pacstrap /mnt ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
clear
echo -e "\n"
echo "Fonts packages installed..."
sleep 2
clear
}
instprint () {
clear
pacstrap /mnt cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
sleep 2
arch-chroot /mnt systemctl enable cups.service
clear
echo -e "\n"
echo "Printing packages installed..."
sleep 2
clear
}
instlxqt () {
clear
pacstrap /mnt accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "LXQt desktop installed..."
sleep 2
clear
}
instkde () {
clear
pacstrap /mnt accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "KDE Plasma desktop installed..."
sleep 2
clear
}
instxfce () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "XFCE desktop installed..."
sleep 2
clear
}
instmate () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Mate desktop installed..."
sleep 2
clear
}
instcinn () {
clear
pacstrap /mnt accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Cinnamon desktop installed..."
sleep 2
clear
}
instgnome () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable gdm.service
clear
echo -e "\n"
echo "Gnome desktop installed..."
sleep 2
clear
}
invalid () {
echo -e "\n"
echo "Invalid answer, Please try again"
sleep 2
}
make_upht () { while true
do
clear
echo "----------------------------------"
echo " User, Passwords, & Hostname"
echo "----------------------------------"
echo ""
echo " 1) Create user name"
echo " 2) Make user password"
echo " 3) Make root password"
echo " 4) Make hostname"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice2
case $choice2 in
1 ) usrname ;;
2 ) usrpwd ;;
3 ) rtpwd ;;
4 ) hstname ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
sata_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.sda)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice3
case $choice3 in
1 ) trgtdrvsd ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartsd ;;
5 ) frmtpartsd ;;
6 ) mntpartsd ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
nvme_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.nvme0n1)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice4
case $choice4 in
1 ) trgtdrvnv ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartnv ;;
5 ) frmtpartnv ;;
6 ) mntpartnv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
chdrvtype () { while true
do
clear
echo "-----------------------------------"
echo " Choose SATA or NVME Disk"
echo "-----------------------------------"
echo ""
echo " 1) SATA Disk"
echo " 2) NVME Disk"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice5
case $choice5 in
1 ) sata_drv ;;
2 ) nvme_drv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_soft () { while true
do
clear
echo "--------------------------------"
echo " Install Software Categories"
echo "--------------------------------"
echo ""
echo " 1) Xorg"
echo " 2) General"
echo " 3) Multimedia"
echo " 4) Networking"
echo " 5) Fonts"
echo " 6) Printing support"
echo " 7) Calamares dependencies"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice6
case $choice6 in
1 ) instxorg ;;
2 ) instgen ;;
3 ) instmedia ;;
4 ) instnet ;;
5 ) instfonts ;;
6 ) instprint ;;
7 ) instcalamdep ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_desk () { while true
do
clear
echo "--------------------------------"
echo " Choose A Desktop"
echo "--------------------------------"
echo ""
echo " 1) LXQt"
echo " 2) Plasma"
echo " 3) XFCE"
echo " 4) Mate"
echo " 5) Cinnamon"
echo " 6) Gnome"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice7
case $choice7 in
1 ) instlxqt ;;
2 ) instkde ;;
3 ) instxfce ;;
4 ) instmate ;;
5 ) instcinn ;;
6 ) instgnome ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
main_menu () { while true
do
clear
echo "-------------------------------------"
echo " EZ Arch Installer - BIOS Systems"
echo "-------------------------------------"
echo ""
echo " 1) Username, Passwords, & Hostname"
echo " 2) Choose Device Type & Partition Drive"
echo " 3) Install Base System (pacstrap)"
echo " 4) Configure System Settings"
echo " 5) Install Broad Categories of Software"
echo " 6) Choose Desktop"
echo " 7) Install GRUB"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " choice1
case $choice1 in
1 ) make_upht ;;
2 ) chdrvtype ;;
3 ) psbase ;;
4 ) mkfstab; syshstnm; syslocale; sysusrpwd; systmzone; sysconfig ;;
5 ) inst_soft ;;
6 ) inst_desk ;;
7 ) instgrub ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerr
welcome
hrdclck
main_menu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

738
usr/local/bin/ezarch.uefi Normal file
View file

@ -0,0 +1,738 @@
#!/bin/bash
# EZ Arch Installer - UEFI
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
# ----------------------------------------
# Define Variables
# ----------------------------------------
MYTMZ="America/Phoenix"
# List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
# Format is language_COUNTRY where language is lower case two letter code
# and country is upper case two letter code, separated with an underscore
KEYMP="us"
# Use lower case two letter country code
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerr () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
clear
}
welcome () {
clear
echo "==================================================="
echo "= ="
echo "= Welcome to the 4RCH Installer Script ="
echo "= ="
echo "= UEFI Edition ="
echo "= Version 6.5 (Release) ="
echo "= ="
echo "= Brought to you by M4DEV ="
echo "= https://github.com/M4RT1NDEV/4rch-linux ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
hrdclck () {
clear
timedatectl set-ntp true
}
usrname () {
clear
echo -e "\n"
read -p "Type your user name, be exact, and press Enter: " USRNAME
[[ -z "$USRNAME" ]] && usrname
clear
echo -e "\n"
echo "User name set to "${USRNAME}"..."
sleep 2
clear
}
usrpwd () {
clear
echo -e "\n"
read -p "Type your user password, be exact, and press Enter: " USRPWD
[[ -z "$USRPWD" ]] && usrpwd
clear
echo -e "\n"
echo "User password set to "${USRPWD}"..."
sleep 2
clear
}
rtpwd () {
clear
echo -e "\n"
read -p "Type your root password, be exact, and press Enter: " RTPWD
[[ -z "$RTPWD" ]] && rtpwd
clear
echo -e "\n"
echo "Root password set to "${RTPWD}"..."
sleep 2
clear
}
hstname () {
clear
echo -e "\n"
read -p "Type your hostname, be exact, and press Enter: " HSTNAME
[[ -z "$HSTNAME" ]] && hstname
clear
echo -e "\n"
echo "Hostname set to "${HSTNAME}"..."
sleep 2
clear
}
swapsize () {
clear
echo -e "\n"
read -p "Pick Swap Partition Size (2G, 4G, or 8G): " SWPSIZE
case $SWPSIZE in
2|2G|2g)
SWPSIZE=2GiB
;;
4|4G|4g)
SWPSIZE=4GiB
;;
8|8G|8g)
SWPSIZE=8Gib
;;
*)
echo "Invalid input..."
sleep 2
unset SWPSIZE
swapsize
;;
esac
clear
echo -e "\n"
echo "SWAP Partition Set To "${SWPSIZE}""
sleep 2
clear
}
rootsize () {
clear
echo -e "\n"
read -p "Pick Root Partition Size (20G, 40G, or 60G): " RTSIZE
case $RTSIZE in
20|20G|20g)
RTSIZE=20GiB
;;
40|40G|40g)
RTSIZE=40GiB
;;
60|60G|60g)
RTSIZE=60Gib
;;
*)
echo "Invalid input..."
sleep 2
unset RTSIZE
rootsize
;;
esac
clear
echo -e "\n"
echo "Root Partition Set To "${RTSIZE}""
sleep 2
clear
}
trgtdrvsd () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. sda), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvsd
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
trgtdrvnv () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. nvme0n1), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvnv
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
mkpartsd () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+650MiB -t 0:ef00 -c 0:efi /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartsd () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\2
mkfs.fat -F32 /dev/"${TRGTDRV}"\1
mkfs.ext4 -L root /dev/"${TRGTDRV}"\3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartsd () {
clear
mount /dev/"${TRGTDRV}"\3 /mnt
mkdir /mnt/efi
mount /dev/"${TRGTDRV}"\1 /mnt/efi
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\4 /mnt/home
swapon /dev/"${TRGTDRV}"\2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
mkpartnv () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+650MiB -t 0:ef00 -c 0:efi /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartnv () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\p2
mkfs.fat -F32 /dev/"${TRGTDRV}"\p1
mkfs.ext4 -L root /dev/"${TRGTDRV}"\p3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\p4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartnv () {
clear
mount /dev/"${TRGTDRV}"\p3 /mnt
mkdir /mnt/efi
mount /dev/"${TRGTDRV}"\p1 /mnt/efi
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\p4 /mnt/home
swapon /dev/"${TRGTDRV}"\p2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
psbase () {
clear
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
clear
echo -e "\n"
echo "Pacstrap base system complete..."
sleep 2
clear
}
mkfstab () {
clear
genfstab -U /mnt >> /mnt/etc/fstab
clear
}
syshstnm () {
clear
echo ""${HSTNAME}"" > /mnt/etc/hostname
echo "127.0.0.1 localhost" >> /mnt/etc/hosts
echo "::1 localhost" >> /mnt/etc/hosts
echo "127.0.1.1 "${HSTNAME}".localdomain "${HSTNAME}"" >> /mnt/etc/hosts
clear
}
syslocale () {
clear
echo ""${LCLST}".UTF-8 UTF-8" >> /mnt/etc/locale.gen
echo "LANG="${LCLST}".UTF-8" > /mnt/etc/locale.conf
echo "KEYMAP="${KEYMP}"" > /mnt/etc/vconsole.conf
arch-chroot /mnt locale-gen
arch-chroot /mnt localectl set-locale LANG="${LCLST}".UTF-8
arch-chroot /mnt localectl set-keymap "${KEYMP}"
clear
}
sysusrpwd () {
clear
arch-chroot /mnt useradd -mU -s /bin/bash -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm "${USRNAME}"
arch-chroot /mnt chpasswd <<< ""${USRNAME}":"${USRPWD}""
arch-chroot /mnt chpasswd <<< "root:"${RTPWD}""
clear
}
systmzone () {
clear
arch-chroot /mnt hwclock --systohc --utc
arch-chroot /mnt timedatectl set-ntp true
arch-chroot /mnt rm -rf /etc/localtime
arch-chroot /mnt ln -sf /usr/share/zoneinfo/"${MYTMZ}" /etc/localtime
clear
}
sysconfig () {
clear
echo -e "\n"
echo "Basic system config completed..."
sleep 2
clear
}
instgrub () {
clear
echo -e "\n"
arch-chroot /mnt grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --recheck
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
arch-chroot /mnt mkinitcpio -p linux-lts
clear
echo -e "\n"
echo "Grub installed & mkinicpio run..."
sleep 2
clear
}
instxorg () {
clear
pacstrap /mnt xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
clear
echo -e "\n"
echo "Xorg installed installed..."
sleep 2
clear
}
instgen () {
clear
pacstrap /mnt amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
sleep 2
arch-chroot /mnt systemctl enable bluetooth.service
arch-chroot /mnt systemctl enable fstrim.timer
arch-chroot /mnt systemctl enable haveged.service
arch-chroot /mnt systemctl enable plocate-updatedb.timer
clear
echo -e "\n"
echo "General packages installed..."
sleep 2
clear
}
instcalamdep () {
clear
pacstrap /mnt boost boost-libs dmidecode extra-cmake-modules gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality plasma-framework polkit-qt5 qt5-location qt5-svg qt5-tools qt5-translations qt5-webengine qt5-xmlpatterns qt5ct solid upower yaml-cpp
clear
echo -e "\n"
echo "Calamares dependencies installed..."
sleep 2
clear
}
instmedia () {
clear
pacstrap /mnt alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
clear
echo -e "\n"
echo "Multimedia packages installed..."
sleep 2
clear
}
instnet () {
clear
pacstrap /mnt avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nftables nm-connection-editor nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
sleep 2
arch-chroot /mnt systemctl enable NetworkManager.service
clear
echo -e "\n"
echo "Networking packages installed..."
sleep 2
clear
}
instfonts () {
clear
pacstrap /mnt ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
clear
echo -e "\n"
echo "Fonts packages installed..."
sleep 2
clear
}
instprint () {
clear
pacstrap /mnt cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
sleep 2
arch-chroot /mnt systemctl enable cups.service
clear
echo -e "\n"
echo "Printing packages installed..."
sleep 2
clear
}
instlxqt () {
clear
pacstrap /mnt accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "LXQt desktop installed..."
sleep 2
clear
}
instkde () {
clear
pacstrap /mnt accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "KDE Plasma desktop installed..."
sleep 2
clear
}
instxfce () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "XFCE desktop installed..."
sleep 2
clear
}
instmate () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Mate desktop installed..."
sleep 2
clear
}
instcinn () {
clear
pacstrap /mnt accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Cinnamon desktop installed..."
sleep 2
clear
}
instgnome () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable gdm.service
clear
echo -e "\n"
echo "Gnome desktop installed..."
sleep 2
clear
}
invalid () {
echo -e "\n"
echo "Invalid answer, Please try again"
sleep 2
}
make_upht () { while true
do
clear
echo "----------------------------------"
echo " User, Passwords, & Hostname"
echo "----------------------------------"
echo ""
echo " 1) Create user name"
echo " 2) Make user password"
echo " 3) Make root password"
echo " 4) Make hostname"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice2
case $choice2 in
1 ) usrname ;;
2 ) usrpwd ;;
3 ) rtpwd ;;
4 ) hstname ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
sata_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.sda)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice3
case $choice3 in
1 ) trgtdrvsd ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartsd ;;
5 ) frmtpartsd ;;
6 ) mntpartsd ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
nvme_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.nvme0n1)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice4
case $choice4 in
1 ) trgtdrvnv ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartnv ;;
5 ) frmtpartnv ;;
6 ) mntpartnv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
chdrvtype () { while true
do
clear
echo "-----------------------------------"
echo " Choose SATA or NVME Disk"
echo "-----------------------------------"
echo ""
echo " 1) SATA Disk"
echo " 2) NVME Disk"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice5
case $choice5 in
1 ) sata_drv ;;
2 ) nvme_drv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_soft () { while true
do
clear
echo "--------------------------------"
echo " Install Software Categories"
echo "--------------------------------"
echo ""
echo " 1) Xorg"
echo " 2) General"
echo " 3) Multimedia"
echo " 4) Networking"
echo " 5) Fonts"
echo " 6) Printing support"
echo " 7) Calamares dependencies"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice6
case $choice6 in
1 ) instxorg ;;
2 ) instgen ;;
3 ) instmedia ;;
4 ) instnet ;;
5 ) instfonts ;;
6 ) instprint ;;
7 ) instcalamdep ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_desk () { while true
do
clear
echo "--------------------------------"
echo " Choose A Desktop"
echo "--------------------------------"
echo ""
echo " 1) LXQt"
echo " 2) Plasma"
echo " 3) XFCE"
echo " 4) Mate"
echo " 5) Cinnamon"
echo " 6) Gnome"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice7
case $choice7 in
1 ) instlxqt ;;
2 ) instkde ;;
3 ) instxfce ;;
4 ) instmate ;;
5 ) instcinn ;;
6 ) instgnome ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
main_menu () { while true
do
clear
echo "-------------------------------------"
echo " EZ Arch Installer - UEFI Systems"
echo "-------------------------------------"
echo ""
echo " 1) Username, Passwords, & Hostname"
echo " 2) Choose Device Type & Partition Drive"
echo " 3) Install Base System (pacstrap)"
echo " 4) Configure System Settings"
echo " 5) Install Broad Categories of Software"
echo " 6) Choose Desktop"
echo " 7) Install GRUB"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " choice1
case $choice1 in
1 ) make_upht ;;
2 ) chdrvtype ;;
3 ) psbase ;;
4 ) mkfstab; syshstnm; syslocale; sysusrpwd; systmzone; sysconfig ;;
5 ) inst_soft ;;
6 ) inst_desk ;;
7 ) instgrub ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerr
welcome
hrdclck
main_menu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

206
usr/local/bin/ezmaint Normal file
View file

@ -0,0 +1,206 @@
#!/bin/bash
# 4RCH maintenance
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerror () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
}
welcomer () {
clear
echo "==================================================="
echo "= ="
echo "= 4RCH Maintenance Script ="
echo "= ="
echo "= ="
echo "= Version 2.3 (Release) ="
echo "= ="
echo "= Brought to you by M3DEV ="
echo "= https://github.com/M4RT1NDEV/4rch-linux ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
failedsrvs () {
clear
systemctl --failed > /tmp/failedsrvs
nano /tmp/failedsrvs
clear
echo -e "\n"
rm /tmp/failedsrvs
clear
}
journalchk () {
clear
journalctl -p 3 -xb > /tmp/journalchk
nano /tmp/journalchk
clear
echo -e "\n"
rm /tmp/journalchk
clear
}
journalcln () {
clear
journalctl --vacuum-time=2weeks
clear
echo -e "\n"
echo "Journal directory cleaned"
sleep 2
clear
}
sysupdate () {
clear
pacman -Syu
clear
echo -e "\n"
echo "Full system upgrade finished"
sleep 2
clear
}
pkgsccache () {
clear
pacman -Scc
clear
echo -e "\n"
echo "Package cache cleaned"
sleep 2
clear
}
keysreset () {
clear
rm /var/lib/pacman/sync/*
rm -rf /etc/pacman.d/gnupg/*
pacman-key --init
pacman-key --populate
pacman -S --noconfirm archlinux-keyring
clear
echo -e "\n"
echo "All pacman keys are reset"
sleep 2
clear
}
usercachecln () {
clear
echo "[Unit]
Description=Clean primary user cache on boot.
[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/clnusercache.sh
[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/clnusercache.service
echo "#!/bin/bash
rm -r /home/*/.cache/*
rm /etc/systemd/system/multi-user.target.wants/clnusercache.service" > /usr/local/bin/clnusercache.sh
chmod +x /usr/local/bin/clnusercache.sh
ln -sf /usr/lib/systemd/system/clnusercache.service /etc/systemd/system/multi-user.target.wants/clnusercache.service
clear
echo -e "\n"
echo "User's cache directory cleaned on next boot"
sleep 3
clear
}
runreflector () {
clear
reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
clear
echo -e "\n"
echo "Mirrorlist regenerated"
sleep 2
clear
}
enfirewall () {
clear
systemctl enable firewalld.service
systemctl start firewalld.service
clear
echo "Firewalld Service is enabled"
sleep 2
clear
}
mainmenu () { while true
do
clear
echo "-------------------------------------"
echo " 4RCH Maintenance Script"
echo "-------------------------------------"
echo ""
echo " 1) Failed systemd services"
echo " 2) Check journal logs"
echo " 3) Cleanup journal space"
echo " 4) Run system update"
echo " 5) Clean package cache"
echo " 6) Reset all pacman keys"
echo " 7) Clean user cache on next boot"
echo " 8) Regenerate mirrorlist"
echo " 9) Enable Firewalld Service"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " optionA
case $optionA in
1 ) failedsrvs ;;
2 ) journalchk ;;
3 ) journalcln ;;
4 ) sysupdate ;;
5 ) pkgsccache ;;
6 ) keysreset ;;
7 ) usercachecln ;;
8 ) runreflector ;;
9 ) enfirewall ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerror
welcomer
mainmenu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

View file

@ -0,0 +1,13 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=4RCH Maint Tool
Comment=4rch tool
Categories=System;
Keywords=System;
Exec=pkexec /usr/local/bin/ezmaint
Icon=/usr/share/icons/default/lava-lamp.png
Path=/usr/local/bin
Terminal=true
StartupNotify=false
Name=4rch

View file

@ -0,0 +1,37 @@
Managing the package cache
check how many cached packages are available in my cache folder.
$ sudo ls /var/cache/pacman/pkg/ | wc -l
check the total disk space used by the cache folder.
$ du -sh /var/cache/pacman/pkg/
Automatically clean the package cache using pacman hooks.
To do so, create a file /etc/pacman.d/hooks/clean_package_cache.hook:
$ sudo mkdir /etc/pacman.d/hooks
$ sudo nano /etc/pacman.d/hooks/clean_package_cache.hook
Add the following lines:
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *
[Action]
Description = Cleaning pacman cache...
When = PostTransaction
Exec = /usr/bin/paccache -rk 1
Save and close the file.
From now on, the package cache will be cleaned automatically after every pacman transactions (like upgrade, install, remove).
You don’t have to run paccache command manually every time.
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,188 @@
ezarch Installation HowTo
The ezarch installation scripts are simple, menu driven, Arch installation scripts written in BASH. It does require root privilege to run. Both ezarch.bios and ezarch.uefi operate in nearly identical fashion, the only difference being the type of system you wish to install to, namely legacy BIOS or UEFI. For the purposes of this HowTo, the ezarch.uefi script will be used in the examples. All the interactive steps in both scripts are the same.
Before starting the installation script, there are some variables to set to determine the time zone, locale, and keyboard layout. The defaults are:
MYTMZ="America/Phoenix"
List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
Format is language_COUNTRY where language is lower case two letter code and country is upper case two letter code, separated with an underscore.
KEYMP="us"
Use lower case two letter country code.
If you want to specify other, copy the script to the home folder so it is writable and edit the script in your favorite editor. You can change the time zone, locale, and keyboard layout to whatever you require. Save the script and run the copy you have saved. Otherwise, if you are fine with the defaults, run the unedited copy of the script.
Open a terminal in the /home/live/ezarcher/Scripts folder and type the following:
Use su to get a root login ( password is: toor ) and then type:
a. bash ezarch.uefi
b. ./ezarch.uefi
Once the script launches, you will see the splash screen for 3 seconds and then this menu:
-------------------------------------
EZ Arch Installer - UEFI Systems
-------------------------------------
1) Username, Passwords, & Hostname
2) Choose Device Type & Partition Drive
3) Install Base System (pacstrap)
4) Configure System Settings
5) Install Broad Categories of Software
6) Choose Desktop
7) Install GRUB
X) Exit
Enter your choice:
Step 1) Username, Passwords, & Hostname allows you to set those options. All items MUST be set for the script to function correctly. The script will ask you to type your answers and press [Enter]. The script will echo what you type to the screen so you can verify it is what you intend. Be precise when typing your responses. Username must be all in lowercase with no spaces or special characters.
Step 2) Choose Device Type & Partition Drive will walk you through selecting the desired drive (SATA or NVMe is your first choice). This is a destructive step as the drive you select will be wiped and formatted during this process. Please proceed with caution and know what you are doing. Please make backups of all important data BEFORE you begin your installation. If you need to do so, exit the script at this point and do your backups. You can always start the script from the beginning again. Do not attempt to resume the installation script from the place you left off as none of the selections you made during the first run of the installation script will be retained. You have been warned!
The drive partitioning steps perform a predetermined partition layout. The drive you select will be converted to the GPT partitioning scheme. The drive will be partitioned to contain an ESP partition, a root partition, a home partition, and, a swap partition. You will be presented a choice in size options for your root and swap partitions. The remaining space will be assigned to the home partition. All data partitions are formatted EXT4.
If you do not like this partitioning layout, you have a couple options. First, is to edit the ezach.uefi script beforehand and change the relevant sections of code. This is very much discouraged, but entirely possible (and your choice). Second, you can create, format, and, mount the partition yourself BEFORE you start the installation.
There are several partitioning tools available on the system: gdisk, cgdisk, cfdisk, parted, gparted. You can use whichever tool you prefer to partition your dive and partition your drive exactly how you wish. Once the partitioning is complete, you will need to format the partitions you created. After formatting the partitions, you will need to mount them beginning with the partition to contain the root of the filesystem.
As an example, I will show the steps to format and mount a simple partition layout. Assuming you have created an ESP partition on /dev/sda1 and a root partition on /dev/sda2 and a swap partition on /dev/sda3 - the formatting will go like this:
# mkfs.fat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkswap /dev/sda3
Then you will need to mount the partitions:
# mount /dev/sda2 /mnt
# mkdir /mnt/efi
# mount /dev/sda1 /mnt/efi
# swapon /dev/sda3
Always mount your the device which is intended to be your root filesystem FIRST! Then create your mount points for any additional partitions. In this case we have our ESP partition on /dev/sda1 and that gets mounted after the mount point is created. The GRUB will assume the mount point for the ESP is /efi - so make sure to use that mount point when mounting your ESP partition. Last, we can turn the swap device on. If you wish to use a swap file, then please look up how to do that. The live system has Firefox, so any information is at your disposal during installation.
After your partitions are created, formatted, and mounted, you can start the ezarch.uefi installation script. It is important to remember to use the Option 3) to tell the installation script which device to use during the installation. When you select Option 3) choose the type of disk you are working with and get to this menu:
--------------------------------
Partition Drive
--------------------------------
1) Enter device name (e.g.sda)
2) Choose Swap partition size
3) Choose Root partition size
** Remaining space will be /home **
4) Create partitions
5) Format partitions (ext4)
6) Mount partitions
R) Return to menu
Please enter your choice:
At this menu, select Option 1) Enter device name (e.g. sda) and type the device's name without any partition numbers. Valid choices for SATA disks would be sda, sdb, sdc, etc. Valid choices for NVMe disks would be nvme0n1, nvme0n2, nvme1n1, nvme1n2, etc. As soon as you have typed the device name and pressed [Enter], you should be back at this menu, press Option R) to return to the Main Menu and continue with Option 3) Install Base System (pacstrap).
-------------------------------------
EZ Arch Installer - UEFI Systems
-------------------------------------
1) Username, Passwords, & Hostname
2) Choose Device Type & Partition Drive
3) Install Base System (pacstrap)
4) Configure System Settings
5) Install Broad Categories of Software
6) Choose Desktop
7) Install GRUB
X) Exit
Steps 3) and 4) are not interactive, you simply select them to run and perform the required installation steps. Whether you have used the ezarch.uefi script to perform the partitioning, or did those steps yourself before starting the ezarch.uefi script, the remainder of the script will function as intended.
Step 5) Install Broad Categories of Software will present several categories of pre-selected software. If you open the ezarch.uefi install script in a text editor, you can examine the software listed in each category and desktop section in the install script. You can edit the software package lists in the categories and desktop sections to suit your needs. Here is the menu:
--------------------------------
Install Software Categories
--------------------------------
1) Xorg
2) General
3) Multimedia
4) Networking
5) Fonts
6) Printing support
7) Calamares dependencies
R) Return to menu
Please enter your choice:
Option 1) Xorg: needed for a graphical interface and any of the desktop environments.
Option 2) General: necessary packages commonly used and applicable to any desktop environment.
Option 3) Multimedia: codecs, audio, video, sound system, etc.
Option 4) Networking: web browser, networkmanager, wifi drivers, samba, etc.
Option 5) Fonts: commonly used font packages.
Option 6) Printing support: cups, system configure printer, hplip, simple-scan, etc
Option 7) Calamares dependencies: needed to build Calamares
I have selected all the packages to work together as a whole. Please consider installing categories 1-5 as mandatory. Printing support is truly optional and its absence will not affect the system. All other categories work together. It is possible to skip categories, but the resulting desktop will be incomplete.
If you want a very basic system to configure just the way you wish, you can elect to choose none of these options and continue on directly to Step 8) Install GRUB - leaving you with a bare command line system to build up yourself.
Otherwise, if you have installed some or all of the categories, you can proceed to Step 6) Choose Desktop:
--------------------------------
Choose A Desktop
--------------------------------
1) LXQt
2) Plasma
3) XFCE
4) Mate
5) Cinnamon
6) Gnome
R) Return to menu
Please enter your choice:
The above six desktop environment options will install vanilla configurations. No theme or style choices have been applied beyond those set by the respective developers. It is up to you to style your desktop to your liking. Some of the packages included with the various desktop environment options will include packages like: arc-gtk-theme, adapta-gtk-theme, paprius-icon-theme, breeze-icon-theme, etc. So you will have a few basic options out of the box. Most desktops come with a few standard wallpapers as well. Anything beyond the default theme and icon choices will require you to install and configure what you wish.
The final, and mandatory last Step 7) Install GRUB:
-------------------------------------
EZ Arch Installer - UEFI Systems
-------------------------------------
1) Username, Passwords, & Hostname
2) Choose Device Type & Partition Drive
3) Install Base System (pacstrap)
4) Configure System Settings
5) Install Broad Categories of Software
6) Choose Desktop
7) Install GRUB
X) Exit
Enter your choice:
This step is needed to install a boot loader on your system and make the system bootable. After GRUB is installed, you should select X) and reboot your system. Enjoy. :-)
----------------------------
ezarch-install-howto.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,104 @@
The ezmaint script attempts to collect various common maintenance tasks that help keep an Arch based system healthy and lean. Below is the menu of the script and the individual functions that perform the actions.
-------------------------------------
EZArcher Maintenance Script
-------------------------------------
1) Failed systemd services
2) Check journal logs
3) Cleanup journal space
4) Run system update
5) Clean package cache
6) Reset all pacman keys
7) Cleanup user cache folder
8) Regenerate mirrorlist
9) Enable Firewalld Service
X) Exit
Enter your choice:
1. Failed systemd services:
systemctl --failed > /tmp/failedsrvs
nano /tmp/failedsrvs
These commands list any failed systemd services and pipe the output into a temporary file that is opened in the nano editor for your viewing. If all output looks OK, closing the nano editor with Ctl+X will return to the main menu. If there are issues, you can copy and paste the suspect lines into a search engine for further review and take appropriate action.
2. Check journal logs:
journalctl -p 3 -xb > /tmp/journalchk
nano /tmp/journalchk
These commands list any journal entries and pipe the output into a temporary file that is opened in the nano editor for your viewing. If all output looks OK, closing the nano editor with Ctl+X will return to the main menu. If there are issues, you can copy and paste the suspect lines into a search engine for further review and take appropriate action.
3. Cleanup journal space:
journalctl --vacuum-time=2weeks
This command will removed any journal logs older than two weeks and free up space.
4. Run system update:
pacman -Syu
This command will perform a full system upgrade.
5. Clean package cache:
pacman -Scc
This command will perform an aggressive cleaning of the package cache and ask to remove all package cache contents for poth installed and uninstalled packages. If you wish to roll-back packages, this option should not be used.
6. Reset all pacman keys:
rm /var/lib/pacman/sync/*
rm -rf /etc/pacman.d/gnupg/*
pacman-key --init
pacman-key --populate
pacman -S --noconfirm archlinux-keyring
Thes commands will clear the old GNUPG keyring files and will initialize, populate, and reinstall the archlinux keyring
7. Cleanup user cache folder:
echo "[Unit]
Description=Clean primary user cache on boot.
[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/clnusercache.sh
[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/clnusercache.service
echo "#!/bin/bash
rm -r /home/*/.cache/*
rm /etc/systemd/system/multi-user.target.wants/clnusercache.service" > /usr/local/bin/clnusercache.sh
chmod +x /usr/local/bin/clnusercache.sh
ln -sf /usr/lib/systemd/system/clnusercache.service /etc/systemd/system/multi-user.target.wants/clnusercache.service
This option will create a systemd unit to delete all contents of the user's .cache folder upon the next reboot and then remove the systemd. The .cache folder typically contains temporary working files of the desktop and user programs. The contents of the .cache folder can be examined by opening the file manager and viewing hidden files inside the user's home folder in the .cache folder. Please review the files to be deleted before using this option if you are concerned or just curious.
8. Regenerate mirrorlist:
reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
This command runs reflector and generates a new mirrorlist file based on the options specified in the command. My defaults are to select the recently updated within the last six hours that are hosted on https servers in the United States. Please look at the man page for reflector if you want to change the options.
9. Enable Firewalld Service:
systemctl enable firewalld.service
systemctl start firewalld.service
These commands enable and start the Firewalld service.
I hope these various functions come in handy. I must give credit to EF Tech Made Simple for his inspiration in the choice and implementation of these functions. Please view his video describing these maintenance tips here: https://youtu.be/wwSkFi3h2nI
ezmaint-howto.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,18 @@
Getting started building with ARCHISO:
Archiso dependencies:
archiso libburn libisofs libisoburn mkinitcpio-archiso squashfs-tools
Getting started building Calamares:
Runtime dependencies for Calamares:
boost-libs cmake dmidecode gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality parted plasma-framework polkit-qt5 qt5-location qt5-svg qt5-webengine qt5-xmlpatterns qt5ct solid squashfs-tools udisks2 upower yaml-cpp
Build time dependencies for Calamares:
extra-cmake-modules git boost qt5-tools qt5-translations
getting-started-archiso.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,56 @@
--------------------------------------------------
Ezarcher Linux - Live Desktop
ezarch CLI Install Scripts & Calamares Installer
--------------------------------------------------
Welcome to Ezarcher
The Ezarcher Linux ISO is a full featured Arch Linux desktop. The live system comes with many common desktop software packages and tools to install Arch Linux on your system. There are two installer methods, the Calamares Installer Framework and my own ezarch scripts. The Calamares installer is located in the System menu and titled Install System. Finally, there is also the choice to use the install guides to copy and paste commands that will install Arch, the Arch Way.
The live user's /home folder has an ezarcher folder with several folders containing all the project files for the Ezarcher system. The ~/ezarcher/Docs folder contains some introductory readme files and suggested steps to enhance the system. The ~/ezarcher/Guides folder has the original ezarch install guides with each step to install an Arch system from scratch. The ~/ezarcher/PkgBuilds folder contains the the PKGBUILD files for the Calamares and its two helper applications. The ~/ezarcher/Scripts folder contains the ezarch.bios and ezarch.uefi install scripts to perform an menu driven Arch installation. The ~/ezarcher/Templates folder contains tar files for each of the live ISOs with a desktop environment.
User password: live
Root password: toor
Have fun, stay safe. :-)
--------------------------------------
Templates to Build Your Own ISOs
--------------------------------------
Ezarcher Desktop Templates
https://sourceforge.net/projects/ezarch/files/Ezarcher/Templates/
The Ezarcher Desktop Templates project is a simple set of files and a steps.sh script to automate the building of a live desktop Arch Linux ISO that contains one of several desktops, and includes the ezarch install scripts in the ~/ezarcher/Scripts folder. The Calamares Installer is also available in each desktop template. I must express my sincere gratitude and give full credit to Matias Calabrese for his exemplary contribution of transforming the ezarcher templates to work with the new archiso program and process. This project would not be where it is today without his assistance and contributions. Thank you, Matias! :-)
The steps.sh file copies the necessary files into the build folder, in this case, "ezreleng" and runs the mkarchiso script to produce the Ezarcher GUI ISO image. In addition to the standard Arch Linux install media packages, I have added one of six desktop environments, a plethora of multimedia software, system maintenance and recovery tools, filesystem drivers, wifi drivers, and other assorted software in order to provide a full-featured desktop experience. The script creates a live user and assigns the password "live." The root user is given the password "toor" (root spelled backwards). Sddm is enabled, networkmanager and systemd-resolved are enabled, haveged is enabled, bluetooth is enabled, Cups is enabled, and the graphical runlevel target is set.
I have included the ezarch.bios and ezarch.uefi install scripts for you to install a fresh Arch Linux system using my preferred install method. The install scripts are located in the ~/ezarcher/Scripts folder and can be launched by using su to get a root terminal, open a terminal in the ~/ezarcher/Scripts and type: ./ezarch.bios or ./ezarch.uefi depending on the type of installation required. The ezmaint script has nine various maintenance functions that should be performed occasionally on any Arch based system. The menu gives easy access to these functions:
-------------------------------------
Ezarcher Maintenance Script
-------------------------------------
1) Failed systemd services
2) Check journal logs
3) Cleanup journal space
4) Run system update
5) Clean package cache
6) Reset all pacman keys
7) Cleanup user cache folder
8) Regenerate mirrorlist
9) Enable Firewalld Service
X) Exit
Enter your choice:
Being based on Arch Linux, Ezarcher Desktop Templates inherits the same rolling release nature and caveats. There may be times when the Arch repositories change and the installer scripts do not function as intended.
All of my scripts and documents are free for public use and adaptation, as per the terms as licensed under the GNU Public License 3.0. Please use and enjoy. Thank you. :-)
readme.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,25 @@
Automate mirrorlist generation with Pacman hook:
Create a file /etc/pacman.d/hooks/mirrorupgrade.hook
$ sudo mkdir /etc/pacman.d/hooks
$ sudo nano /etc/pacman.d/hooks/mirrorupgrade.hook
Add the following lines:
[Trigger]
Operation = Upgrade
Type = Package
Target = pacman-mirrorlist
[Action]
Description = Updating pacman-mirrorlist with reflector and removing pacnew...
When = PostTransaction
Depends = reflector
Exec = /bin/sh -c "reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist; rm -f /etc/pacman.d/mirrorlist.pacnew"
Save and close the file.
reflector-pacman-hook.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,165 @@
---------------------------------------------------
Arch Install - Legacy BIOS System & GPT Partition Layout
Multiple Choice Desktop Example
---------------------------------------------------
1. Set keyboard layout - default is US
** Available layouts can be listed with:
ls /usr/share/kbd/keymaps/i386/**/*.map.gz | less
** To modify the layout, append a corresponding file name to loadkeys, UK for example:
loadkeys uk.map.gz
2. Verify boot mode (UEFI or Legacy):
ls /sys/firmware/efi/efivars
** If the directory does not exist, the system may be booted in Legacy BIOS Mode
3. Check internet connection:
ping google.com
4. Update system clock
timedatectl set-ntp true
5. Sync repositories, Install Reflector and Create mirrorlist, & install latest keyring
pacman -Sy
pacman -S archlinux-keyring
pacman -S --needed reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
6. Run cfdisk - BIOS GPT
cfdisk /dev/sda
sda1: bios-boot, sda2: swap, sda3: root, sda4: home
bios-boot: type: bios-boot size: 8Mb
7. Format partitions
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4
mkswap /dev/sda2
swapon /dev/sda2
8. Mount partitions
mount /dev/sda3 /mnt
mkdir /mnt/home
mount /dev/sda4 /mnt/home
9. Install base packages
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
10. Create fstab
genfstab -U /mnt >> /mnt/etc/fstab
11. Chroot into system
arch-chroot /mnt
12. Configure timezone -- Example, choose your correct timezone
rm -rf /etc/localtime
to list geographic areas:
ls /usr/share/zoneinfo/
pick timezome and:
ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
hwclock --systohc --utc
13. Configure locale -- Example, choose your correct locale
nano /etc/locale.gen
uncomment lines:
en_US.UTF-8 UTF-8
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
14. Configure networking
A. Create hostname -- Example, choose your own hostname (computer name)
echo myhostname > /etc/hostname
B. Edit hosts file
nano /etc/hosts
Add lines:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
15. Create root password and user -- Example, choose your own username
passwd root
useradd -m -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm -s /bin/bash username
passwd username
export VISUAL=nano
export EDITOR=nano
visudo /etc/sudoers
uncomment line:
%wheel ALL=(ALL) ALL
16. Sync repositories, Install Reflector and Create mirrorlist
pacman -S reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
17. Install GRUB
pacman -S grub
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
18. Run mkinitcpio -- linux-lts for long term support kernel, linux for standard kernel
mkinitcpio -p linux-lts
19. Install software - still inside chroot!
Xorg
pacman -S xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
General
pacman -S --needed amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
Multimedia
pacman -S --needed alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
Networking
pacman -S --needed avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nm-connection-editor nftables nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
Fonts
pacman -S --needed ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
Printing
pacman -S --needed cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
LXQt Desktop
pacman -S --needed accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
Plasma Desktop
pacman -S --needed accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
Xfce Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
Mate Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
Cinnamon Desktop
pacman -S --needed accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
Gnome Desktop
pacman -S --needed accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
20. Systemd services
systemctl disable dhcpcd.service
systemctl enable haveged.service
systemctl enable bluetooth.service
systemctl enable cups.service
systemctl enable NetworkManager
systemctl enable firewalld.service
systemctl enable fstrim.timer
systemctl enable plocate-updatedb.timer
21. Display Manager
systemctl enable sddm.service (for all except Gnome)
systemctl enable gdm.service (only for Gnome)
22. Exit chroot
exit (arch-chroot)
umount -a
reboot
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,164 @@
-----------------------------------------------------
Arch Install - Legacy BIOS System & MBR Partition Layout
Multiple Choice Desktop Example
-----------------------------------------------------
1. Set keyboard layout - default is US
** Available layouts can be listed with:
ls /usr/share/kbd/keymaps/i386/**/*.map.gz | less
** To modify the layout, append a corresponding file name to loadkeys, UK for example:
loadkeys uk.map.gz
2. Verify boot mode (UEFI or Legacy):
ls /sys/firmware/efi/efivars
** If the directory does not exist, the system may be booted in Legacy BIOS Mode
3. Check internet connection:
ping google.com
4. Update system clock
timedatectl set-ntp true
5. Sync repositories, Install Reflector and Create mirrorlist, & install latest keyring
pacman -Sy
pacman -S archlinux-keyring
pacman -S --needed reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
6. Run cfdisk - BIOS MBR
cfdisk /dev/sda
sda1: swap, sda2: root, sda3: home
7. Format partitions
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkswap /dev/sda1
swapon /dev/sda1
8. Mount partitions
mount /dev/sda2 /mnt
mkdir /mnt/home
mount /dev/sda3 /mnt/home
9. Install base packages
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
10. Create fstab
genfstab -U /mnt >> /mnt/etc/fstab
11. Chroot into system
arch-chroot /mnt
12. Configure timezone -- Example, choose your correct timezone
rm -rf /etc/localtime
to list geographic areas:
ls /usr/share/zoneinfo/
pick timezome and:
ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
hwclock --systohc --utc
13. Configure locale -- Example, choose your correct locale
nano /etc/locale.gen
uncomment lines:
en_US.UTF-8 UTF-8
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
14. Configure networking
A. Create hostname -- Example, choose your own hostname (computer name)
echo myhostname > /etc/hostname
B. Edit hosts file
nano /etc/hosts
Add lines:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
15. Create root password and user -- Example, choose your own username
passwd root
useradd -m -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm -s /bin/bash username
passwd username
export VISUAL=nano
export EDITOR=nano
visudo /etc/sudoers
uncomment line:
%wheel ALL=(ALL) ALL
16. Sync repositories, Install Reflector and Create mirrorlist
pacman -S reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
17. Install GRUB
pacman -S grub
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
18. Run mkinitcpio -- linux-lts for long term support kernel, linux for standard kernel
mkinitcpio -p linux-lts
19. Install software - still inside chroot!
Xorg
pacman -S xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
General
pacman -S --needed amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
Multimedia
pacman -S --needed alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
Networking
pacman -S --needed avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nm-connection-editor nftables nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
Fonts
pacman -S --needed ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
Printing
pacman -S --needed cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
LXQt Desktop
pacman -S --needed accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
Plasma Desktop
pacman -S --needed accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
Xfce Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
Mate Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
Cinnamon Desktop
pacman -S --needed accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
Gnome Desktop
pacman -S --needed accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
20. Systemd services
systemctl disable dhcpcd.service
systemctl enable haveged.service
systemctl enable bluetooth.service
systemctl enable cups.service
systemctl enable NetworkManager
systemctl enable firewalld.service
systemctl enable fstrim.timer
systemctl enable plocate-updatedb.timer
21. Display Manager
systemctl enable sddm.service (for all except Gnome)
systemctl enable gdm.service (only for Gnome)
22. Exit chroot
exit (arch-chroot)
umount -a
reboot
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,168 @@
---------------------------------------------------
Arch Install - UEFI System & GPT Partition Layout
Multiple Choice Desktop Example
---------------------------------------------------
1. Set keyboard layout - default is US
** Available layouts can be listed with:
ls /usr/share/kbd/keymaps/i386/**/*.map.gz | less
** To modify the layout, append a corresponding file name to loadkeys, UK for example:
loadkeys uk.map.gz
2. Verify boot mode (UEFI or Legacy):
ls /sys/firmware/efi/efivars
** If the directory does not exist, the system may be booted in Legacy BIOS Mode
3. Check internet connection:
ping google.com
4. Update system clock
timedatectl set-ntp true
5. Sync repositories, Install Reflector and Create mirrorlist, & install latest keyring
pacman -Sy
pacman -S archlinux-keyring
pacman -S --needed reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
6. Run cfdisk - UEFI GPT
cfdisk /dev/sda
sda1: efi system, sda2: swap, sda3: root, sda4: home
efi system partition: type: EFI System, size: 512Mb, format: fat32
7. Format partitions
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4
mkswap /dev/sda2
swapon /dev/sda2
8. Mount partitions
mount /dev/sda3 /mnt
mkdir -p /mnt/efi
mount /dev/sda1 /mnt/efi
mkdir /mnt/home
mount /dev/sda4 /mnt/home
9. Install base packages
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
10. Create fstab
genfstab -U /mnt >> /mnt/etc/fstab
11. Chroot into system
arch-chroot /mnt
12. Configure timezone -- Example, choose your correct timezone
rm -rf /etc/localtime
to list geographic areas:
ls /usr/share/zoneinfo/
pick timezome and:
ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
hwclock --systohc --utc
13. Configure locale -- Example, choose your correct locale
nano /etc/locale.gen
uncomment lines:
en_US.UTF-8 UTF-8
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
14. Configure networking
A. Create hostname -- Example, choose your own hostname (computer name)
echo myhostname > /etc/hostname
B. Edit hosts file
nano /etc/hosts
Add lines:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
15. Create root password and user -- Example, choose your own username
passwd root
useradd -m -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm -s /bin/bash username
passwd username
export VISUAL=nano
export EDITOR=nano
visudo /etc/sudoers
uncomment line:
%wheel ALL=(ALL) ALL
16. Sync repositories, Install Reflector and Create mirrorlist
pacman -S reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
17. Install GRUB
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --recheck
grub-mkconfig -o /boot/grub/grub.cfg
18. Run mkinitcpio -- linux-lts for long term support kernel, linux for standard kernel
mkinitcpio -p linux-lts
19. Install software - still inside chroot!
Xorg
pacman -S xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
General
pacman -S --needed amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
Multimedia
pacman -S --needed alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
Networking
pacman -S --needed avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nm-connection-editor nftables nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
Fonts
pacman -S --needed ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
Printing
pacman -S --needed cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
LXQt Desktop
pacman -S --needed accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
Plasma Desktop
pacman -S --needed accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
Xfce Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
Mate Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
Cinnamon Desktop
pacman -S --needed accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
Gnome Desktop
pacman -S --needed accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
20. Enable services
systemctl disable dhcpcd.service
systemctl enable haveged.service
systemctl enable bluetooth.service
systemctl enable cups.service
systemctl enable NetworkManager
systemctl enable firewalld.service
systemctl enable fstrim.timer
systemctl enable plocate-updatedb.timer
21. Display Manager
systemctl enable sddm.service (for all except Gnome)
systemctl enable gdm.service (only for Gnome)
22. Exit chroot
exit (arch-chroot)
umount -a
reboot
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,56 @@
# Ezarcher Calamares Installer pkgbuild
pkgname=calamares
pkgver=3.2.56
_pkgver=3.2.56
pkgrel=1
pkgdesc='Distribution-independent installer framework'
arch=('x86_64')
license=(GPL)
url="https://github.com/calamares/calamares"
license=('LGPL')
depends=('cmake' 'kconfig' 'kcoreaddons' 'kiconthemes' 'ki18n' 'kio' 'solid' 'yaml-cpp' 'kpmcore' 'qt5-webengine' 'kwidgetsaddons'
'icu' 'qt5-location' 'boost-libs' 'qt5-svg' 'qt5ct' 'polkit-qt5' 'gtk-update-icon-cache' 'plasma-framework' 'parted'
'qt5-xmlpatterns' 'squashfs-tools' 'libpwquality' 'dmidecode' 'kparts' 'kdbusaddons' 'kservice' 'udisks2' 'upower')
makedepends=('extra-cmake-modules' 'qt5-tools' 'qt5-translations' 'git' 'boost')
source=("$pkgname-$pkgver.tar.gz::https://github.com/calamares/calamares/releases/download/v$pkgver/calamares-$pkgver.tar.gz")
sha256sums=('e1402d7693659b85c5e553481a7252d91350c3f33ffea413488d7712d3281e03')
prepare() {
cd ${srcdir}/calamares-${pkgver}
sed -i -e 's/"Install configuration files" OFF/"Install configuration files" ON/' CMakeLists.txt
# change version
sed -i -e "s|$pkgver|$_pkgver|g" CMakeLists.txt
_ver="$pkgver"
printf 'Version: %s-%s' "${_ver}" "${pkgrel}"
sed -i -e "s|\${CALAMARES_VERSION_MAJOR}.\${CALAMARES_VERSION_MINOR}.\${CALAMARES_VERSION_PATCH}|${_ver}-${pkgrel}|g" CMakeLists.txt
sed -i -e "s|CALAMARES_VERSION_RC 1|CALAMARES_VERSION_RC 0|g" CMakeLists.txt
}
build() {
cd ${srcdir}/calamares-${pkgver}
mkdir -p build
cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DWITH_PYTHONQT:BOOL=ON \
-DWITH_KF5DBus=OFF \
-DBoost_NO_BOOST_CMAKE=ON \
-DSKIP_MODULES="tracking webview interactiveterminal initramfs \
initramfscfg dracut dracutlukscfg finishedq summaryq \
dummyprocess dummypython dummycpp usersq oemid \
dummypythonqt services-openrc keyboardq zfs \
localeq plasmalnf welcomeq notesqml packagechooserq"
make
}
package() {
cd ${srcdir}/calamares-${pkgver}/build
make DESTDIR="$pkgdir" install
install -Dm644 "../calamares.desktop" "$pkgdir/usr/share/applications/calamares.desktop"
}

View file

@ -0,0 +1,12 @@
Getting started building Calamares:
Runtime dependencies for Calamares:
boost-libs cmake dmidecode gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality parted plasma-framework polkit-qt5 qt5-location qt5-svg qt5-webengine qt5-xmlpatterns qt5ct solid squashfs-tools udisks2 upower yaml-cpp
Build time dependencies for Calamares:
extra-cmake-modules git boost qt5-tools qt5-translations
calamares-dependencies.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,222 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Product branding information. This influences some global
# user-visible aspects of Calamares, such as the product
# name, window behavior, and the slideshow during installation.
#
# Additional styling can be done using the stylesheet.qss
# file, also in the branding directory.
---
componentName: ezarcher
### WELCOME / OVERALL WORDING
#
# These settings affect some overall phrasing and looks,
# which are most visible in the welcome page.
# This selects between different welcome texts. When false, uses
# the traditional "Welcome to the %1 installer.", and when true,
# uses "Welcome to the Calamares installer for %1." This allows
# to distinguish this installer from other installers for the
# same distribution.
welcomeStyleCalamares: false
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size? If false, the image does not grow
# with the window but remains the same size throughout (this
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
### WINDOW CONFIGURATION
#
# The settings here affect the placement of the Calamares
# window through hints to the window manager and initial
# sizing of the Calamares window.
# Size and expansion policy for Calamares.
# - "normal" or unset, expand as needed, use *windowSize*
# - "fullscreen", start as large as possible, ignore *windowSize*
# - "noexpand", don't expand automatically, use *windowSize*
windowExpanding: normal
# Size of Calamares window, expressed as w,h. Both w and h
# may be either pixels (suffix px) or font-units (suffix em).
# e.g. "800px,600px"
# "60em,480px"
# This setting is ignored if "fullscreen" is selected for
# *windowExpanding*, above. If not set, use constants defined
# in CalamaresUtilsGui, 800x520.
windowSize: 800px,520px
# Placement of Calamares window. Either "center" or "free".
# Whether "center" actually works does depend on the window
# manager in use (and only makes sense if you're not using
# *windowExpanding* set to "fullscreen").
windowPlacement: center
### PANELS CONFIGURATION
#
# Calamares has a main content area, and two panels (navigation
# and progress / sidebar). The panels can be controlled individually,
# or switched off. If both panels are switched off, the layout of
# the main content area loses its margins, on the assumption that
# you're doing something special.
# Kind of sidebar (panel on the left, showing progress).
# - "widget" or unset, use traditional sidebar (logo, items)
# - "none", hide it entirely
# - "qml", use calamares-sidebar.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. Valid sides are:
# - "left" (if not specified, uses this)
# - "right"
# - "top"
# - "bottom"
# For instance, "widget,right" is valid; so is "qml", which defaults
# to putting the sidebar on the left. Also valid is "qml,top".
# While "widget,top" is valid, the widgets code is **not** flexible
# and results will be terrible.
sidebar: widget
# Kind of navigation (button panel on the bottom).
# - "widget" or unset, use traditional navigation
# - "none", hide it entirely
# - "qml", use calamares-navigation.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. The same sides are valid as for *sidebar*,
# except the default is *bottom*.
navigation: widget
### STRINGS, IMAGES AND COLORS
#
# This section contains the "branding proper" of names
# and images, rather than global-look settings.
# These are strings shown to the user in the user interface.
# There is no provision for translating them -- since they
# are names, the string is included as-is.
#
# The four Url strings are the Urls used by the buttons in
# the welcome screen, and are not shown to the user. Clicking
# on the "Support" button, for instance, opens the link supportUrl.
# If a Url is empty, the corresponding button is not shown.
#
# bootloaderEntryName is how this installation / distro is named
# in the boot loader (e.g. in the GRUB menu).
#
# These strings support substitution from /etc/os-release
# if KDE Frameworks 5.58 are available at build-time. When
# enabled, @{var-name} is replaced by the equivalent value
# from os-release. All the supported var-names are in all-caps,
# and are listed on the FreeDesktop.org site,
# https://www.freedesktop.org/software/systemd/man/os-release.html
# Note that ANSI_COLOR and CPE_NAME don't make sense here, and
# are not supported (the rest are). Remember to quote the string
# if it contains substitutions, or you'll get YAML exceptions.
#
# The *Url* entries are used on the welcome page, and they
# are visible as buttons there if the corresponding *show* keys
# are set to "true" (they can also be overridden).
strings:
productName: "@{NAME}"
shortProductName: Ezarcher
version: 2021
shortVersion: 2021
versionedName: Ezarcher Linux
shortVersionedName: Ezarcher Linux
bootloaderEntryName: Ezarcher
productUrl: https://sourceforge.net/projects/ezarch/
# supportUrl: https://sourceforge.net/projects/ezarch/
# knownIssuesUrl: https://sourceforge.net/projects/ezarch/
# releaseNotesUrl: https://sourceforge.net/projects/ezarch/
# donateUrl: https://sourceforge.net/projects/ezarch/
# These images are loaded from the branding module directory.
#
# productBanner is an optional image, which if present, will be shown
# on the welcome page of the application, above the welcome text.
# It is intended to have a width much greater than height.
# It is displayed at 64px height (also on HiDPI).
# Recommended size is 64px tall, and up to 460px wide.
# productIcon is used as the window icon, and will (usually) be used
# by the window manager to represent the application. This image
# should be square, and may be displayed by the window manager
# as small as 16x16 (but possibly larger).
# productLogo is used as the logo at the top of the left-hand column
# which shows the steps to be taken. The image should be square,
# and is displayed at 80x80 pixels (also on HiDPI).
# productWallpaper is an optional image, which if present, will replace
# the normal solid background on every page of the application.
# It can be any size and proportion,
# and will be tiled to fit the entire window.
# For a non-tiled wallpaper, the size should be the same as
# the overall window, see *windowSize* above (800x520).
# productWelcome is shown on the welcome page of the application in
# the middle of the window, below the welcome text. It can be
# any size and proportion, and will be scaled to fit inside
# the window. Use `welcomeExpandingLogo` to make it non-scaled.
# Recommended size is 320x150.
#
# These filenames can also use substitutions from os-release (see above).
images:
# productBanner: "banner.png"
productIcon: "squid.png"
productLogo: "logo.png"
productWallpaper: "wallpaper.png"
productWelcome: "languages.png"
# Colors for text and background components.
#
# - sidebarBackground is the background of the sidebar
# - sidebarText is the (foreground) text color
# - sidebarTextHighlight sets the background of the selected (current) step.
# Optional, and defaults to the application palette.
# - sidebarSelect is the text color of the selected step.
#
# These colors can **also** be set through the stylesheet, if the
# branding component also ships a stylesheet.qss. Then they are
# the corresponding CSS attributes of #sidebarApp.
style:
sidebarBackground: "#292F34"
sidebarText: "#FFFFFF"
sidebarTextSelect: "#292F34"
sidebarTextHighlight: "#D35400"
### SLIDESHOW
#
# The slideshow is displayed during execution steps (e.g. when the
# installer is actually writing to disk and doing other slow things).
# The slideshow can be a QML file (recommended) which can display
# arbitrary things -- text, images, animations, or even play a game --
# during the execution step. The QML **is** abruptly stopped when the
# execution step is done, though, so maybe a game isn't a great idea.
#
# The slideshow can also be a sequence of images (not recommended unless
# you don't want QML at all in your Calamares). The images are displayed
# at a rate of 1 every 2 seconds during the execution step.
#
# To configure a QML file, list a single filename:
# slideshow: "show.qml"
# To configure images, like the filenames (here, as an inline list):
# slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ]
slideshow: "show.qml"
# There are two available APIs for a QML slideshow:
# - 1 (the default) loads the entire slideshow when the installation-
# slideshow page is shown and starts the QML then. The QML
# is never stopped (after installation is done, times etc.
# continue to fire).
# - 2 loads the slideshow on startup and calls onActivate() and
# onLeave() in the root object. After the installation is done,
# the show is stopped (first by calling onLeave(), then destroying
# the QML components).
#
# An image slideshow does not need to have the API defined.
slideshowAPI: 2

Some files were not shown because too many files have changed in this diff Show more