initial
674
LICENSE
Normal 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>.
|
3
README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# NixOS dotfiles
|
||||||
|
|
||||||
|
My configuration for all my NixOS systems.
|
11
files/certs/freyanet.crt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIBnDCCAUKgAwIBAgIRAPVH+EAJd7BV1oocsZ1LQLEwCgYIKoZIzj0EAwIwLDEQ
|
||||||
|
MA4GA1UEChMHZnJleWFDQTEYMBYGA1UEAxMPZnJleWFDQSBSb290IENBMB4XDTIz
|
||||||
|
MTAyODEzNDAzNVoXDTMzMTAyNTEzNDAzNVowLDEQMA4GA1UEChMHZnJleWFDQTEY
|
||||||
|
MBYGA1UEAxMPZnJleWFDQSBSb290IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
|
||||||
|
QgAEvVC5H2UQZQxMJxKnWkNF7kKNXVDpY2N81yFXRb+K/MKw3aQTI1ukJ6A3AmZP
|
||||||
|
P9urbt/wOHI2zBuodGi4gaLBSaNFMEMwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB
|
||||||
|
/wQIMAYBAf8CAQEwHQYDVR0OBBYEFGYaattGlZxu5noFWxAnLtpMqJvJMAoGCCqG
|
||||||
|
SM49BAMCA0gAMEUCIQCCyubbf8AUq+PPrnBRQ/WFYKH3mwUXcDT7VZoLm+/q+gIg
|
||||||
|
YdSLl4AnWfDLlaTTZspft2fq5rEFCB5N+4p/67vSsmY=
|
||||||
|
-----END CERTIFICATE-----
|
158
files/config/iris/iris.lock
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
### IRIS - A locking plugin manager for vim
|
||||||
|
### Copyright © 2025 Freya Murphy <contact@freyacat.org>
|
||||||
|
###
|
||||||
|
### This file is part of IRIS
|
||||||
|
###
|
||||||
|
### IRIS 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.
|
||||||
|
###
|
||||||
|
### IRIS 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 IRIS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "vim-devicons"
|
||||||
|
url = "https://github.com/ryanoasis/vim-devicons"
|
||||||
|
commit = "71f239af28b7214eebb60d4ea5bd040291fb7e33"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "nvim-web-devicons"
|
||||||
|
url = "https://github.com/nvim-tree/nvim-web-devicons"
|
||||||
|
commit = "aafa5c187a15701a7299a392b907ec15d9a7075f"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "plenary"
|
||||||
|
url = "https://github.com/nvim-lua/plenary.nvim"
|
||||||
|
commit = "3707cdb1e43f5cea73afb6037e6494e7ce847a66"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "lualine"
|
||||||
|
url = "https://github.com/nvim-lualine/lualine.nvim"
|
||||||
|
commit = "2a5bae925481f999263d6f5ed8361baef8df4f83"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "bufferline"
|
||||||
|
url = "https://github.com/akinsho/bufferline.nvim"
|
||||||
|
commit = "17083c826a004bcb87d3a830c7710d0796a73bbf"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "nvim-tree"
|
||||||
|
url = "https://github.com/nvim-tree/nvim-tree.lua"
|
||||||
|
commit = "d529a99f88e0dff02e0aa275db2f595cd252a2c8"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "undotree"
|
||||||
|
url = "https://github.com/mbbill/undotree"
|
||||||
|
commit = "2556c6800b210b2096b55b66e74b4cc1d9ebbe4f"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "trouble"
|
||||||
|
url = "https://github.com/folke/trouble.nvim"
|
||||||
|
commit = "4d36b8979287f5facc03fd6d955ace67db667e1d"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "telescope"
|
||||||
|
url = "https://github.com/nvim-telescope/telescope.nvim"
|
||||||
|
commit = "415af52339215926d705cccc08145f3782c4d132"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "fugitive"
|
||||||
|
url = "https://github.com/tpope/vim-fugitive"
|
||||||
|
commit = "174230d6a7f2df94705a7ffd8d5413e27ec10a80"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "vsnip"
|
||||||
|
url = "https://github.com/hrsh7th/vim-vsnip"
|
||||||
|
commit = "02a8e79295c9733434aab4e0e2b8c4b7cea9f3a9"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "vsnip_integ"
|
||||||
|
url = "https://github.com/hrsh7th/vim-vsnip-integ"
|
||||||
|
commit = "90ae474e8b05ed41e36d6f58382a9fbfb4b672c4"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "friendly-snippets"
|
||||||
|
url = "https://github.com/rafamadriz/friendly-snippets"
|
||||||
|
commit = "efff286dd74c22f731cdec26a70b46e5b203c619"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "cmp"
|
||||||
|
url = "https://github.com/hrsh7th/nvim-cmp"
|
||||||
|
commit = "8c82d0bd31299dbff7f8e780f5e06d2283de9678"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "cmp_buffer"
|
||||||
|
url = "https://github.com/hrsh7th/cmp-buffer"
|
||||||
|
commit = "3022dbc9166796b644a841a02de8dd1cc1d311fa"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "cmp_nvim_lsp"
|
||||||
|
url = "https://github.com/hrsh7th/cmp-nvim-lsp"
|
||||||
|
commit = "99290b3ec1322070bcfb9e846450a46f6efa50f0"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "cmp_vsnip"
|
||||||
|
url = "https://github.com/hrsh7th/cmp-vsnip"
|
||||||
|
commit = "989a8a73c44e926199bfd05fa7a516d51f2d2752"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "nvim-surround"
|
||||||
|
url = "https://github.com/kylechui/nvim-surround"
|
||||||
|
commit = "9f0cb495f25bff32c936062d85046fbda0c43517"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "nerdcommenter"
|
||||||
|
url = "https://github.com/preservim/nerdcommenter"
|
||||||
|
commit = "66c07e4083ab02ed2540ac289cc602c70b858c13"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "nvim-treesitter"
|
||||||
|
url = "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||||
|
commit = "c7dc251cddf2cdef1fa279fa797799728a5bfd78"
|
||||||
|
run = "TSUpdate"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "illuminate"
|
||||||
|
url = "https://github.com/RRethy/vim-illuminate"
|
||||||
|
commit = "5eeb7951fc630682c322e88a9bbdae5c224ff0aa"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "todo"
|
||||||
|
url = "https://github.com/folke/todo-comments.nvim"
|
||||||
|
commit = "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "catppuccin"
|
||||||
|
url = "https://github.com/catppuccin/nvim"
|
||||||
|
commit = "f67b886d65a029f12ffa298701fb8f1efd89295d"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "lspconfig"
|
||||||
|
url = "https://github.com/neovim/nvim-lspconfig"
|
||||||
|
commit = "0913481440219390969ab56a3c33089679365ef7"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "fidget"
|
||||||
|
url = "https://github.com/j-hui/fidget.nvim"
|
||||||
|
commit = "a0abbf18084b77d28bc70e24752e4f4fd54aea17"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "ident-o-matic"
|
||||||
|
url = "https://github.com/Darazaki/indent-o-matic"
|
||||||
|
commit = "4d11e98f523d3c4500b1dc33f0d1a248a4f69719"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "hologram"
|
||||||
|
url = "https://github.com/edluffy/hologram.nvim"
|
||||||
|
commit = "f5194f71ec1578d91b2e3119ff08e574e2eab542"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
id = "virt-column"
|
||||||
|
url = "https://github.com/lukas-reineke/virt-column.nvim"
|
||||||
|
commit = "b87e3e0864211a32724a2ebf3be37e24e9e2fa99"
|
84
files/config/iris/iris.toml
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
|
||||||
|
# == Dependencies == #
|
||||||
|
|
||||||
|
# provides nerd font glyphs
|
||||||
|
vim-devicons = "ryanoasis/vim-devicons"
|
||||||
|
nvim-web-devicons = "nvim-tree/nvim-web-devicons"
|
||||||
|
|
||||||
|
# lua functions
|
||||||
|
plenary = "nvim-lua/plenary.nvim"
|
||||||
|
|
||||||
|
# == Lines == #
|
||||||
|
|
||||||
|
# mode line
|
||||||
|
lualine = "nvim-lualine/lualine.nvim"
|
||||||
|
|
||||||
|
# buffer line
|
||||||
|
bufferline = "akinsho/bufferline.nvim"
|
||||||
|
|
||||||
|
# == Menus == #
|
||||||
|
|
||||||
|
# file menu
|
||||||
|
nvim-tree = "nvim-tree/nvim-tree.lua"
|
||||||
|
|
||||||
|
# undo menu
|
||||||
|
undotree = "mbbill/undotree"
|
||||||
|
|
||||||
|
# error menu
|
||||||
|
trouble = "folke/trouble.nvim"
|
||||||
|
|
||||||
|
# grep and find menu
|
||||||
|
telescope = "nvim-telescope/telescope.nvim"
|
||||||
|
|
||||||
|
# == Integrations == #
|
||||||
|
|
||||||
|
# git
|
||||||
|
fugitive = "tpope/vim-fugitive"
|
||||||
|
|
||||||
|
# == Auto complete == #
|
||||||
|
|
||||||
|
# snippets
|
||||||
|
vsnip = "hrsh7th/vim-vsnip"
|
||||||
|
vsnip_integ = "hrsh7th/vim-vsnip-integ"
|
||||||
|
friendly-snippets = "rafamadriz/friendly-snippets"
|
||||||
|
|
||||||
|
# auto completion engine
|
||||||
|
cmp = "hrsh7th/nvim-cmp"
|
||||||
|
cmp_buffer = "hrsh7th/cmp-buffer"
|
||||||
|
cmp_nvim_lsp = "hrsh7th/cmp-nvim-lsp"
|
||||||
|
cmp_vsnip = "hrsh7th/cmp-vsnip"
|
||||||
|
|
||||||
|
# delimiter auto complete
|
||||||
|
nvim-surround = "kylechui/nvim-surround"
|
||||||
|
|
||||||
|
# == LSP == #
|
||||||
|
|
||||||
|
# comment functions
|
||||||
|
nerdcommenter = "preservim/nerdcommenter"
|
||||||
|
|
||||||
|
# hilighter
|
||||||
|
nvim-treesitter = { url = "nvim-treesitter/nvim-treesitter", run = "TSUpdate" }
|
||||||
|
illuminate = "RRethy/vim-illuminate"
|
||||||
|
|
||||||
|
# comment hilighter
|
||||||
|
todo = "folke/todo-comments.nvim"
|
||||||
|
|
||||||
|
# theme
|
||||||
|
catppuccin = "catppuccin/nvim"
|
||||||
|
|
||||||
|
# lsp auto configs
|
||||||
|
lspconfig = "neovim/nvim-lspconfig"
|
||||||
|
|
||||||
|
# LSP notifications
|
||||||
|
fidget = "j-hui/fidget.nvim"
|
||||||
|
|
||||||
|
# auto indent
|
||||||
|
ident-o-matic = "Darazaki/indent-o-matic"
|
||||||
|
|
||||||
|
# image viewer
|
||||||
|
hologram = "edluffy/hologram.nvim"
|
||||||
|
|
||||||
|
# 80 column bar
|
||||||
|
virt-column = "lukas-reineke/virt-column.nvim"
|
298
files/config/nvim/init.lua
Normal file
|
@ -0,0 +1,298 @@
|
||||||
|
--[[ CONFIG ]]--
|
||||||
|
|
||||||
|
-- global config for iris configuration
|
||||||
|
config = {
|
||||||
|
-- colorscheme for nvim
|
||||||
|
colorscheme = "catppuccin",
|
||||||
|
flavour = "mocha",
|
||||||
|
-- indentation
|
||||||
|
tab_width = 4,
|
||||||
|
expand_tab = false,
|
||||||
|
-- keybinds to be set to actions
|
||||||
|
keybinds = {
|
||||||
|
-- leader key
|
||||||
|
leader = ' ',
|
||||||
|
-- toggle menus
|
||||||
|
menus = {
|
||||||
|
-- file browser
|
||||||
|
browser = '<leader>e',
|
||||||
|
-- active buffers
|
||||||
|
buffers = '<leader>fb',
|
||||||
|
-- error list
|
||||||
|
error = '<leader>t',
|
||||||
|
-- find files
|
||||||
|
find = '<leader>ff',
|
||||||
|
-- grep files
|
||||||
|
grep = '<leader>fg',
|
||||||
|
-- help browser
|
||||||
|
help = '<leader>fh',
|
||||||
|
-- undo tree
|
||||||
|
undo = '<leader>u',
|
||||||
|
},
|
||||||
|
-- lsp actions
|
||||||
|
lsp = {
|
||||||
|
hover = 'K',
|
||||||
|
action = '<leader>la',
|
||||||
|
references = '<leader>lr',
|
||||||
|
rename = '<leader>ln',
|
||||||
|
},
|
||||||
|
-- completion
|
||||||
|
cmp = {
|
||||||
|
-- prev item
|
||||||
|
prev = '<C-p>',
|
||||||
|
-- next item
|
||||||
|
next = '<C-n>',
|
||||||
|
-- confirm
|
||||||
|
confirm = '<CR>',
|
||||||
|
-- complete
|
||||||
|
complete = '<C-Space>',
|
||||||
|
},
|
||||||
|
-- disable active selection
|
||||||
|
noh = '<leader>h',
|
||||||
|
},
|
||||||
|
-- treesitter languages
|
||||||
|
treesitter = {
|
||||||
|
"c",
|
||||||
|
"lua",
|
||||||
|
"rust",
|
||||||
|
"typescript",
|
||||||
|
"javascript",
|
||||||
|
"python",
|
||||||
|
"vim",
|
||||||
|
"vimdoc",
|
||||||
|
"query",
|
||||||
|
},
|
||||||
|
-- lsp servers
|
||||||
|
lsps = {
|
||||||
|
-- rust
|
||||||
|
rust_analyzer = {},
|
||||||
|
-- c / c++
|
||||||
|
clangd = {},
|
||||||
|
-- java
|
||||||
|
jdtls = {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
vim.call('iris#load')
|
||||||
|
|
||||||
|
--[[ IMPORTS ]]--
|
||||||
|
|
||||||
|
local catppuccin = require('catppuccin')
|
||||||
|
|
||||||
|
--[[ VIM ]]--
|
||||||
|
|
||||||
|
vim.opt.tabstop = config.tab_width
|
||||||
|
vim.opt.softtabstop = config.tab_width
|
||||||
|
vim.opt.shiftwidth = config.tab_width
|
||||||
|
vim.opt.expandtab = config.expand_tab
|
||||||
|
vim.opt.mouse = "a"
|
||||||
|
vim.opt.clipboard = "unnamedplus"
|
||||||
|
vim.opt.hlsearch = true
|
||||||
|
vim.opt.autoindent = true
|
||||||
|
vim.opt.ttyfast = true
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.rnu = true
|
||||||
|
vim.opt.swapfile = false
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
|
-- remove trailing whitespace on save
|
||||||
|
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
|
||||||
|
pattern = { "*" },
|
||||||
|
command = [[%s/\s\+$//e]],
|
||||||
|
})
|
||||||
|
|
||||||
|
--[[ THEME ]]--
|
||||||
|
|
||||||
|
catppuccin.setup({
|
||||||
|
flavour = config.flavour,
|
||||||
|
transparent_background = true,
|
||||||
|
integrations = {
|
||||||
|
cmp = true,
|
||||||
|
illuminate = {
|
||||||
|
enabled = true,
|
||||||
|
lsp = false
|
||||||
|
},
|
||||||
|
nvimtree = true,
|
||||||
|
nvim_surround = true,
|
||||||
|
lsp_trouble = true,
|
||||||
|
telescope = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
treesitter = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.cmd('colorscheme ' .. config.colorscheme)
|
||||||
|
vim.o.background = "dark"
|
||||||
|
vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
|
||||||
|
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
|
||||||
|
vim.api.nvim_set_hl(0, "NvimTreeNormal", { bg = "none" })
|
||||||
|
|
||||||
|
--[[ LINES ]]--
|
||||||
|
|
||||||
|
-- mode line
|
||||||
|
require('lualine').setup {
|
||||||
|
options = {
|
||||||
|
theme = config.colorscheme,
|
||||||
|
icons_enabled = true,
|
||||||
|
globalstatus = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- buffer line
|
||||||
|
require("bufferline").setup {}
|
||||||
|
|
||||||
|
--[[ MENUS ]]--
|
||||||
|
|
||||||
|
-- file browser
|
||||||
|
vim.g.loaded_netrw = 1
|
||||||
|
vim.g.loaded_netrwPlugin = 1
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
|
require("nvim-tree").setup {
|
||||||
|
sort = {
|
||||||
|
sorter = "case_sensitive",
|
||||||
|
},
|
||||||
|
view = {
|
||||||
|
width = 30,
|
||||||
|
},
|
||||||
|
renderer = {
|
||||||
|
group_empty = true,
|
||||||
|
},
|
||||||
|
actions = {
|
||||||
|
open_file = {
|
||||||
|
quit_on_open = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filters = {
|
||||||
|
dotfiles = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
--[[ COMPLETION ]]--
|
||||||
|
|
||||||
|
-- completion engine
|
||||||
|
--local cmp = require('cmp')
|
||||||
|
--
|
||||||
|
--local cmp_select = {behavior = cmp.SelectBehavior.Select}
|
||||||
|
--local cmp_mappings = cmp.mapping.preset.insert({
|
||||||
|
-- [config.keybinds.cmp.prev] = cmp.mapping.select_prev_item(cmp_select),
|
||||||
|
-- [config.keybinds.cmp.next] = cmp.mapping.select_next_item(cmp_select),
|
||||||
|
-- [config.keybinds.cmp.confirm] = cmp.mapping.confirm({ select = true }),
|
||||||
|
-- [config.keybinds.cmp.complete] = cmp.mapping.complete(),
|
||||||
|
--})
|
||||||
|
--
|
||||||
|
--cmp_mappings['<Tab>'] = nil
|
||||||
|
--cmp_mappings['<S-Tab>'] = nil
|
||||||
|
--
|
||||||
|
--cmp.setup {
|
||||||
|
-- snippet = {
|
||||||
|
-- expand = function(args)
|
||||||
|
-- vim.fn["vsnip#anonymous"](args.body)
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- sources = cmp.config.sources({
|
||||||
|
-- { name = 'nvim_lsp' },
|
||||||
|
-- { name = 'vsnip' },
|
||||||
|
-- { name = 'buffer' },
|
||||||
|
-- }),
|
||||||
|
-- mapping = cmp_mappings,
|
||||||
|
--}
|
||||||
|
--
|
||||||
|
-- delimiter completion
|
||||||
|
require'nvim-surround'.setup {}
|
||||||
|
|
||||||
|
--[[ LSP ]]--
|
||||||
|
|
||||||
|
local capabilities = require'cmp_nvim_lsp'.default_capabilities()
|
||||||
|
for lsp,config in pairs(config.lsps) do
|
||||||
|
config.capabilities = capabilities
|
||||||
|
require'lspconfig'[lsp].setup(config)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- treesitter
|
||||||
|
require'nvim-treesitter.configs'.setup {
|
||||||
|
ensure_installed = config.treesitter,
|
||||||
|
sync_install = false,
|
||||||
|
auto_install = true,
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
enable = true
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- illuminate
|
||||||
|
require'illuminate'.configure {
|
||||||
|
providers = {
|
||||||
|
'lsp',
|
||||||
|
'treesitter',
|
||||||
|
'regex',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- todo comments
|
||||||
|
require('todo-comments').setup()
|
||||||
|
|
||||||
|
-- auto indentation
|
||||||
|
require('indent-o-matic').setup {
|
||||||
|
max_lines = 2048,
|
||||||
|
standard_widths = { 2, 4, 8 },
|
||||||
|
skip_multiline = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- image viewer
|
||||||
|
--require'hologram'.setup {
|
||||||
|
-- auto_display = true
|
||||||
|
--}
|
||||||
|
|
||||||
|
-- 80 col bar
|
||||||
|
require'virt-column'.setup {
|
||||||
|
enabled = true,
|
||||||
|
virtcolumn = "80"
|
||||||
|
}
|
||||||
|
|
||||||
|
-- notifications
|
||||||
|
require("fidget").setup {
|
||||||
|
notification = {
|
||||||
|
window = {
|
||||||
|
winblend = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
--[[ KEYBINDS ]]--
|
||||||
|
|
||||||
|
vim.g.mapleader = config.keybinds.leader
|
||||||
|
vim.g.maplocalleader = config.keybinds.leader
|
||||||
|
vim.keymap.set('', '<leader>', '<Nop>', { noremap = true, silent = true })
|
||||||
|
|
||||||
|
local function bind(key, action, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
vim.keymap.set('n', key, action, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
bind(config.keybinds.noh, vim.cmd.noh)
|
||||||
|
bind(config.keybinds.menus.browser, vim.cmd.NvimTreeToggle)
|
||||||
|
bind(config.keybinds.menus.undo, vim.cmd.UndotreeToggle)
|
||||||
|
bind(config.keybinds.menus.error, function() require'trouble'.toggle() end)
|
||||||
|
|
||||||
|
local telescope = require'telescope.builtin'
|
||||||
|
bind(config.keybinds.menus.buffers, telescope.buffers)
|
||||||
|
bind(config.keybinds.menus.find, telescope.find_files)
|
||||||
|
bind(config.keybinds.menus.grep, telescope.live_grep)
|
||||||
|
bind(config.keybinds.menus.help, telescope.help_tags)
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
desc = 'LSP actions',
|
||||||
|
callback = function(event)
|
||||||
|
local opts = {buffer = event.buf}
|
||||||
|
bind(config.keybinds.lsp.hover, function() vim.lsp.buf.hover() end, opts)
|
||||||
|
bind(config.keybinds.lsp.action, function() vim.lsp.buf.code_action() end, opts)
|
||||||
|
bind(config.keybinds.lsp.references, function() vim.lsp.buf.references() end, opts)
|
||||||
|
bind(config.keybinds.lsp.rename, function() vim.lsp.buf.rename() end, opts)
|
||||||
|
end
|
||||||
|
})
|
12
files/config/ssh/config
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
Match Host * exec "gpg-connect-agent UPDATESTARTUPTTY /bye"
|
||||||
|
|
||||||
|
Host *.in.freya.cat
|
||||||
|
User root
|
||||||
|
|
||||||
|
Host *.cs.rit.edu
|
||||||
|
User tam2214
|
||||||
|
|
||||||
|
Host *
|
||||||
|
HostkeyAlgorithms +ssh-rsa
|
||||||
|
PubkeyAcceptedKeyTypes +ssh-rsa
|
||||||
|
KexAlgorithms -sntrup761x25519-sha512@openssh.com
|
25
files/config/xdg/mimeapps.list
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
[Default Applications]
|
||||||
|
text/html=firefox.desktop
|
||||||
|
image/png=imv.desktop
|
||||||
|
image/jpeg=imv.desktop
|
||||||
|
image/webp=imv.desktop
|
||||||
|
image/tga=imv.desktop
|
||||||
|
image/bmp=imv.desktop
|
||||||
|
image/gif=imv.desktop
|
||||||
|
video/mp4=mpv.desktop
|
||||||
|
video/x-msvideo=mpv.desktop
|
||||||
|
video/mkv=mpv.desktop
|
||||||
|
video/webm=mpv.desktop
|
||||||
|
audio/mp3=mpv.desktop
|
||||||
|
audio/wav=mpv.desktop
|
||||||
|
application/pdf=org.pwmt.zathura.desktop
|
||||||
|
application/x-shellscript=nvim.desktop
|
||||||
|
x-scheme-handler/http=firefox.desktop
|
||||||
|
x-scheme-handler/https=firefox.desktop
|
||||||
|
x-scheme-handler/about=firefox.desktop
|
||||||
|
x-scheme-handler/unknown=firefox.desktop
|
||||||
|
x-scheme-handler/mspa=unofficial-homestuck-collection.desktop
|
||||||
|
|
||||||
|
[Added Associations]
|
||||||
|
x-scheme-handler/discord=discord.desktop;
|
||||||
|
x-scheme-handler/slack=slack.desktop;
|
15
files/config/xdg/user-dirs.dirs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# This file is written by xdg-user-dirs-update
|
||||||
|
# If you want to change or add directories, just edit the line you're
|
||||||
|
# interested in. All local changes will be retained on the next run.
|
||||||
|
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||||
|
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||||
|
# absolute path. No other format is supported.
|
||||||
|
#
|
||||||
|
XDG_DESKTOP_DIR="$HOME/"
|
||||||
|
XDG_DOCUMENTS_DIR="$HOME/documents/"
|
||||||
|
XDG_DOWNLOAD_DIR="$HOME/downloads/"
|
||||||
|
XDG_MUSIC_DIR="$HOME/"
|
||||||
|
XDG_PICTURES_DIR="$HOME/"
|
||||||
|
XDG_PUBLICSHARE_DIR="$HOME/"
|
||||||
|
XDG_TEMPLATES_DIR="$HOME/"
|
||||||
|
XDG_VIDEOS_DIR="$HOME/"
|
11
files/config/zsh/zprofile
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# dont attempt to launch a graphical
|
||||||
|
# env in tmux
|
||||||
|
if [ -n "$TMUX" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# only launch hyprland on tty 1
|
||||||
|
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
|
||||||
|
export XDG_CURRENT_DESKTOP=Hyprland
|
||||||
|
exec dbus-run-session Hyprland
|
||||||
|
fi
|
73
files/config/zsh/zshrc
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
# zsh initalization file
|
||||||
|
|
||||||
|
# export 'SHELL' and 'EDITOR' to child processes
|
||||||
|
export SHELL
|
||||||
|
export EDITOR="nvim"
|
||||||
|
|
||||||
|
if [[ $- != *i* ]]
|
||||||
|
then
|
||||||
|
# We are being invoked from a non-interactive shell. If this
|
||||||
|
# is an SSH session (as in "ssh host command"), source
|
||||||
|
# /etc/profile so we get PATH and other essential variables.
|
||||||
|
[[ -n "$SSH_CLIENT" ]] && source /etc/profile
|
||||||
|
|
||||||
|
# Don't do anything else.
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# update PATH
|
||||||
|
PATH=$PATH:$HOME/.local/bin
|
||||||
|
PATH=$PATH:$HOME/.cargo/bin
|
||||||
|
|
||||||
|
# vim mode >:)
|
||||||
|
# no ryan i am not copying you
|
||||||
|
set -o vi
|
||||||
|
set show-mode-in-prompt on
|
||||||
|
|
||||||
|
# Set shell prompt using starship
|
||||||
|
if command -v "starship" > /dev/null; then
|
||||||
|
eval "$(starship init zsh)"
|
||||||
|
else
|
||||||
|
export PS1="$$USER: "
|
||||||
|
fi
|
||||||
|
|
||||||
|
# aliases
|
||||||
|
alias rf="rm -fr" # remove le french hon hon hon
|
||||||
|
alias ls="ls --color=auto"
|
||||||
|
alias ip="ip --color=auto"
|
||||||
|
alias grep="grep --color=auto"
|
||||||
|
alias diff="diff --color=auto"
|
||||||
|
alias vim="nvim"
|
||||||
|
alias ssh='TERM=xterm-256color ssh' # xterm-kitty bad
|
||||||
|
|
||||||
|
# nix rebuild
|
||||||
|
alias reconfigure="sudo nixos-rebuild switch --flake ~/.config/nix#$(hostname)"
|
||||||
|
|
||||||
|
# manpages
|
||||||
|
export LESS_TERMCAP_md=$'\e[1;36m'
|
||||||
|
export LESS_TERMCAP_me=$'\e[0m'
|
||||||
|
export LESS_TERMCAP_se=$'\e[0m'
|
||||||
|
export LESS_TERMCAP_so=$'\e[1;92m'
|
||||||
|
export LESS_TERMCAP_ue=$'\e[0m'
|
||||||
|
export LESS_TERMCAP_us=$'\e[1;35m'
|
||||||
|
export GROFF_NO_SGR=1
|
||||||
|
|
||||||
|
# compinit
|
||||||
|
autoload compinit && compinit
|
||||||
|
|
||||||
|
# keybinds
|
||||||
|
bindkey "\e[1;5D" backward-word
|
||||||
|
bindkey "\e[1;5C" forward-word
|
||||||
|
bindkey "\e[3;5~" kill-word
|
||||||
|
bindkey "\C-_" backward-kill-word
|
||||||
|
bindkey "\e[3~" delete-char
|
||||||
|
bindkey "\e[H" beginning-of-line
|
||||||
|
bindkey "\e[F" end-of-line
|
||||||
|
bindkey "\e\d" undo
|
||||||
|
|
||||||
|
# gpg
|
||||||
|
export GPG_TTY=$(tty)
|
||||||
|
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||||
|
|
||||||
|
# ricing
|
||||||
|
pfetch
|
BIN
files/fonts/font-awesome-6-pro.ttf
Executable file
28
files/keys/freya-gpg.pub
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mDMEZbQvBxYJKwYBBAHaRw8BAQdA5eYxL7ktSaA/mGdbx6zaVhWkLERUaG0HQ5zQ
|
||||||
|
7bpTDZG0IUZyZXlhIE11cnBoeSA8ZnJleWFAZnJleWFjYXQub3JnPoiTBBMWCgA7
|
||||||
|
FiEEtz9qPIOzjJAzl4DgXWf0mYN7HWAFAmW0LwcCGwEFCwkIBwICIgIGFQoJCAsC
|
||||||
|
BBYCAwECHgcCF4AACgkQXWf0mYN7HWDRmQEAjcQePcl5UQ1IcSg6tPCnezsIA23S
|
||||||
|
LH7e3UEVnpecagoA/jcsKimfz5td2PH86FNtCLtvMFq1ztzrw7UqCQBXiiUHmDME
|
||||||
|
ZxpY/BYJKwYBBAHaRw8BAQdAqxOoScBHGwsgHibO5NYxkl5f8QeIXsIFAM20KVM/
|
||||||
|
Uo+0IUZyZXlhIE11cnBoeSA8ZnJleWFAZnJleWFjYXQub3JnPoiQBBMWCAA4FiEE
|
||||||
|
2a8KQgm3wt4RqIS/rLxVNmDZmT0FAmcaWPwCGwEFCwkIBwIGFQoJCAsCBBYCAwEC
|
||||||
|
HgECF4AACgkQrLxVNmDZmT17+gEA2QbrA+SQmgAtEwgdlQSRsdK8tfboTBnjeW9T
|
||||||
|
2j3ArW4BAJetX+1Q6pPXP4FLfZOz0Vu46JCy4DDGS37B89bmgrMOuDMEZxpZzRYJ
|
||||||
|
KwYBBAHaRw8BAQdAWf1SdS6rK+hXbEcjb0jy+bO9cDhna1khYRbsKcSDqfiI9QQY
|
||||||
|
FggAJhYhBNmvCkIJt8LeEaiEv6y8VTZg2Zk9BQJnGlnNAhsCBQkFo5qAAIEJEKy8
|
||||||
|
VTZg2Zk9diAEGRYIAB0WIQQ802XwNzzrE4U69WifvG/9bS2/FwUCZxpZzQAKCRCf
|
||||||
|
vG/9bS2/F2DHAQD11yHJC5VlyNtgPyA9SYI0M8clQjldB7O29v8gRGzbIgD/U4Sm
|
||||||
|
GnuRk2js5ITMmBdG1RGzEmmD1dVNIGGM4FiWdg/fSgEAy6dq/LVYeFRkMJ+Vbb0E
|
||||||
|
gFD7SnB/PNfrgtR6VS2KWCYA/1v6bblMoT5rNjcSt0i88SPo9n8CXDui1TOoPwLg
|
||||||
|
21EEuDMEZxpZ5hYJKwYBBAHaRw8BAQdA9NmEhp63hLFv2ftb8sl7OpvleaABdbON
|
||||||
|
L3TutR166SqIfgQYFggAJhYhBNmvCkIJt8LeEaiEv6y8VTZg2Zk9BQJnGlnmAhsg
|
||||||
|
BQkFo5qAAAoJEKy8VTZg2Zk9iQkA/iUIRSGElTdKPALKQ9Laf3xgsreEYE25zdAJ
|
||||||
|
VtvDXd/MAP4/vjrNyFw6k7EPrIx+i9Stw6hPxChH9SwgjcgZdCjWB7g4BGcaWhcS
|
||||||
|
CisGAQQBl1UBBQEBB0B3JswDVPoc4B5BRt+XNZ4Y+2cT+mzJwBvEeqdkgrJHTgMB
|
||||||
|
CAeIfgQYFggAJhYhBNmvCkIJt8LeEaiEv6y8VTZg2Zk9BQJnGloXAhsMBQkFo5qA
|
||||||
|
AAoJEKy8VTZg2Zk9rCIBALM+gv1wcpOzK1AHj2Nx+40Yf3Y3en7Py93lDK/iyWOo
|
||||||
|
AQCP9rp0XHMqNjiPStbV+cX9dgJym0L6tpuw55sSpWyIDg==
|
||||||
|
=fQIe
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
BIN
files/pfps/75046.png
Normal file
After ![]() (image error) Size: 321 KiB |
BIN
files/pfps/aoba pfp.png
Normal file
After ![]() (image error) Size: 123 KiB |
BIN
files/pfps/aoba.jpg
Normal file
After ![]() (image error) Size: 358 KiB |
BIN
files/pfps/edward elric.jpg
Normal file
After ![]() (image error) Size: 36 KiB |
BIN
files/pfps/freya.png
Normal file
After ![]() (image error) Size: 680 KiB |
BIN
files/pfps/karkat.png
Normal file
After ![]() (image error) Size: 518 KiB |
BIN
files/pfps/kaworu.jpg
Normal file
After ![]() (image error) Size: 8.6 KiB |
BIN
files/pfps/len banner.gif
Normal file
After ![]() (image error) Size: 2.5 MiB |
BIN
files/pfps/len small.png
Normal file
After ![]() (image error) Size: 5.6 KiB |
BIN
files/pfps/len.png
Normal file
After ![]() (image error) Size: 272 KiB |
BIN
files/pfps/no6.png
Normal file
After ![]() (image error) Size: 223 KiB |
BIN
files/pfps/one Piece.gif
Normal file
After ![]() (image error) Size: 9.7 MiB |
BIN
files/pfps/sasakimiyano.png
Normal file
After ![]() (image error) Size: 404 KiB |
BIN
files/pfps/trans.png
Normal file
After ![]() (image error) Size: 162 KiB |
BIN
files/pfps/unnamed.jpg
Normal file
After ![]() (image error) Size: 34 KiB |
BIN
files/pfps/vriska.png
Normal file
After ![]() (image error) Size: 54 KiB |
BIN
files/pfps/vulkan.png
Normal file
After ![]() (image error) Size: 21 KiB |
BIN
files/wallpapers/aoba.jpg
Normal file
After ![]() (image error) Size: 80 KiB |
BIN
files/wallpapers/aoba_2.jpg
Normal file
After ![]() (image error) Size: 143 KiB |
BIN
files/wallpapers/araragi.png
Normal file
After ![]() (image error) Size: 3.8 MiB |
BIN
files/wallpapers/blue.jpg
Normal file
After ![]() (image error) Size: 1.5 MiB |
BIN
files/wallpapers/davekat.png
Normal file
After ![]() (image error) Size: 3.9 MiB |
BIN
files/wallpapers/dmmd mobile.jpg
Normal file
After ![]() (image error) Size: 80 KiB |
BIN
files/wallpapers/dmmd.jpg
Normal file
After ![]() (image error) Size: 2.5 MiB |
BIN
files/wallpapers/evangelion.jpg
Normal file
After ![]() (image error) Size: 2 MiB |
BIN
files/wallpapers/ff7.jpg
Normal file
After ![]() (image error) Size: 762 KiB |
BIN
files/wallpapers/gay.png
Normal file
After ![]() (image error) Size: 919 KiB |
BIN
files/wallpapers/gay2.png
Normal file
After ![]() (image error) Size: 382 KiB |
BIN
files/wallpapers/homestuck.png
Normal file
After ![]() (image error) Size: 2 MiB |
BIN
files/wallpapers/no6.jpg
Normal file
After ![]() (image error) Size: 321 KiB |
BIN
files/wallpapers/no6.png
Normal file
After ![]() (image error) Size: 645 KiB |
BIN
files/wallpapers/nya0.png
Normal file
After ![]() (image error) Size: 45 MiB |
BIN
files/wallpapers/purple.jpg
Normal file
After ![]() (image error) Size: 77 KiB |
BIN
files/wallpapers/remote controller new.jpg
Normal file
After ![]() (image error) Size: 272 KiB |
BIN
files/wallpapers/remote controller.jpg
Normal file
After ![]() (image error) Size: 217 KiB |
BIN
files/wallpapers/sasaki.png
Normal file
After ![]() (image error) Size: 3.2 MiB |
BIN
files/wallpapers/windows.jpg
Normal file
After ![]() (image error) Size: 120 KiB |
921
flake.lock
Normal file
|
@ -0,0 +1,921 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"aquamarine": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736102453,
|
||||||
|
"narHash": "sha256-5qb4kb7Xbt8jJFL/oDqOor9Z2+E+A+ql3PiyDvsfWZ0=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"rev": "4846091641f3be0ad7542086d52769bb7932bde6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737221749,
|
||||||
|
"narHash": "sha256-igllW0yG+UbetvhT11jnt9RppSHXYgMykYhZJeqfHs0=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "97d7946b5e107dd03cc82f21165251d4e0159655",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hy3": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland": [
|
||||||
|
"hyprland"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737196945,
|
||||||
|
"narHash": "sha256-6Tmky4lHFzEAZ1Uh5l3aLNlHzTQQmvvpzm+/3BO97nk=",
|
||||||
|
"owner": "outfoxxed",
|
||||||
|
"repo": "hy3",
|
||||||
|
"rev": "6870b14a25670a09307761facae99d5213ffca19",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "outfoxxed",
|
||||||
|
"repo": "hy3",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprcursor": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734906540,
|
||||||
|
"narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"rev": "69270ba8f057d55b0e6c2dca0e165d652856e613",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprgraphics": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736115290,
|
||||||
|
"narHash": "sha256-Jcn6yAzfUMcxy3tN/iZRbi/QgrYm7XLyVRl9g/nbUl4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"rev": "52202272d89da32a9f866c0d10305a5e3d954c50",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprgraphics_2": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprlock",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprlock",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprlock",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736115290,
|
||||||
|
"narHash": "sha256-Jcn6yAzfUMcxy3tN/iZRbi/QgrYm7XLyVRl9g/nbUl4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"rev": "52202272d89da32a9f866c0d10305a5e3d954c50",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprgraphics_3": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprpaper",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprpaper",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprpaper",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734906236,
|
||||||
|
"narHash": "sha256-vH/ysV2ONGQgYZPtcJKwc8jJivzyVxru2aaOxC20ZOE=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"rev": "6dea3fba08fd704dd624b6d4b261638fb4003c9c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hypridle": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": "hyprlang",
|
||||||
|
"hyprutils": "hyprutils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734384160,
|
||||||
|
"narHash": "sha256-zy2uzmlIORQV6VjIqSPhaoUKPLqfzpUQ5UTjmRfrkdg=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hypridle",
|
||||||
|
"rev": "413564cb986cfc67aeb7c4e750b42dc93ff9810f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hypridle",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": "aquamarine",
|
||||||
|
"hyprcursor": "hyprcursor",
|
||||||
|
"hyprgraphics": "hyprgraphics",
|
||||||
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
|
"hyprland-qtutils": "hyprland-qtutils",
|
||||||
|
"hyprlang": "hyprlang_2",
|
||||||
|
"hyprutils": "hyprutils_2",
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
|
"systems": "systems_2",
|
||||||
|
"xdph": "xdph"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737197318,
|
||||||
|
"narHash": "sha256-dzG7PTu2TvBhrVbx5ouFGclQBgfrLobiMH1LWGKSR+I=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"rev": "f56153a9c1b0a00fac0932a95e0cfa5a4f6c681f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-plugins": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland": [
|
||||||
|
"hyprland"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland-plugins",
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland-plugins",
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737138010,
|
||||||
|
"narHash": "sha256-BcuNt1KC2WsxdUg4Km5vnLNccu91fteiOwvKEHFJa/Y=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-plugins",
|
||||||
|
"rev": "d2dad5b434b338d18458bafa506f2993c13f24fc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-plugins",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-protocols": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735774328,
|
||||||
|
"narHash": "sha256-vIRwLS9w+N99EU1aJ+XNOU6mJTxrUBa31i1r82l0V7s=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"rev": "e3b6af97ddcfaafbda8e2828c719a5af84f662cb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-qtutils": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736114838,
|
||||||
|
"narHash": "sha256-FxbuGQExtN37ToWYnGmO6weOYN6WPHN/RAqbr7gNPek=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qtutils",
|
||||||
|
"rev": "6997fe382dcf396704227d2b98ffdd5066da6959",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qtutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hypridle",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hypridle",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hypridle",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734364628,
|
||||||
|
"narHash": "sha256-ii8fzJfI953n/EmIxVvq64ZAwhvwuuPHWfGd61/mJG8=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "16e59c1eb13d9fb6de066f54e7555eb5e8a4aba5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang_2": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735393019,
|
||||||
|
"narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "55608efdaa387af7bfdc0eddb404c409958efa43",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang_3": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprlock",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprlock",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprlock",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735393019,
|
||||||
|
"narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "55608efdaa387af7bfdc0eddb404c409958efa43",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang_4": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprpaper",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprpaper",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprpaper",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734906259,
|
||||||
|
"narHash": "sha256-P79t/7HbACO4/PuJBroGpTptvCWJtXTv+gWsF+sM6MI=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "0404833ea18d543df44df935ebf1b497310eb046",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlock": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprgraphics": "hyprgraphics_2",
|
||||||
|
"hyprlang": "hyprlang_3",
|
||||||
|
"hyprutils": "hyprutils_3",
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner_2",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736953751,
|
||||||
|
"narHash": "sha256-hoc21ZMxcabYWGz4nB/jd6TdFqDY4KZoPLs/qNn0g0Q=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlock",
|
||||||
|
"rev": "02639c27599b03c81dc1d0e031628224f5ad8d50",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlock",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprpaper": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprgraphics": "hyprgraphics_3",
|
||||||
|
"hyprlang": "hyprlang_4",
|
||||||
|
"hyprutils": "hyprutils_4",
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner_3",
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"systems": "systems_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736181224,
|
||||||
|
"narHash": "sha256-mOV9EZia1EKjGtoqwASZNo9gWVJt0GNwBdC5/iqkXws=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprpaper",
|
||||||
|
"rev": "251e8e2593cdd2ef0a015f4f6e211a7bab3a63ed",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprpaper",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprutils": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hypridle",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hypridle",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733502241,
|
||||||
|
"narHash": "sha256-KAUNC4Dgq8WQjYov5auBw/usaHixhacvb7cRDd0AG/k=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"rev": "104117aed6dd68561be38b50f218190aa47f2cd8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprutils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736164519,
|
||||||
|
"narHash": "sha256-1LimBKvDpBbeX+qW7T240WEyw+DBVpDotZB4JYm8Aps=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"rev": "3c895da64b0eb19870142196fa48c07090b441c4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprutils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprlock",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprlock",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736164519,
|
||||||
|
"narHash": "sha256-1LimBKvDpBbeX+qW7T240WEyw+DBVpDotZB4JYm8Aps=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"rev": "3c895da64b0eb19870142196fa48c07090b441c4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprutils_4": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprpaper",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprpaper",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734796073,
|
||||||
|
"narHash": "sha256-TnuKsa8OHrSJEmHm3TLGOWbPNA1gRjmZLsRzKrCqOsg=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"rev": "c3331116ebd0b71df5ae8c6efe9a7f94148b03bf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwayland-scanner": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735493474,
|
||||||
|
"narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwayland-scanner_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprlock",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprlock",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735493474,
|
||||||
|
"narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwayland-scanner_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprpaper",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprpaper",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734793513,
|
||||||
|
"narHash": "sha256-rrrHcXapXJvGFqX+L/Bb0182L25jofAZ0fm1FInvrTQ=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "4d7367b6eee87397e2dbca2e78078dd0a4ef4c61",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734119587,
|
||||||
|
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736012469,
|
||||||
|
"narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736012469,
|
||||||
|
"narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734649271,
|
||||||
|
"narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737062831,
|
||||||
|
"narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735882644,
|
||||||
|
"narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"hy3": "hy3",
|
||||||
|
"hypridle": "hypridle",
|
||||||
|
"hyprland": "hyprland",
|
||||||
|
"hyprland-plugins": "hyprland-plugins",
|
||||||
|
"hyprlock": "hyprlock",
|
||||||
|
"hyprpaper": "hyprpaper",
|
||||||
|
"nixpkgs": "nixpkgs_5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xdph": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-protocols": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-protocols"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734907020,
|
||||||
|
"narHash": "sha256-p6HxwpRKVl1KIiY5xrJdjcEeK3pbmc///UOyV6QER+w=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"rev": "d7f18dda5e511749fa1511185db3536208fb1a63",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
38
flake.nix
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
description = "NixOS configuration";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
# nixpkgs
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
# home manager
|
||||||
|
home-manager.url = "github:nix-community/home-manager/master";
|
||||||
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
# hyprland
|
||||||
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
# hyprlock
|
||||||
|
hyprlock.url = "github:hyprwm/hyprlock";
|
||||||
|
# hyprpaper
|
||||||
|
hyprpaper.url = "github:hyprwm/hyprpaper";
|
||||||
|
# hypridle
|
||||||
|
hypridle.url = "github:hyprwm/hypridle";
|
||||||
|
# hyprland plugins
|
||||||
|
hyprland-plugins.url = "github:hyprwm/hyprland-plugins";
|
||||||
|
hyprland-plugins.inputs.hyprland.follows = "hyprland";
|
||||||
|
# hyprland hy3
|
||||||
|
hy3.url = "github:outfoxxed/hy3";
|
||||||
|
hy3.inputs.hyprland.follows = "hyprland";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { nixpkgs, ... }@inputs:
|
||||||
|
let
|
||||||
|
options = import ./options.nix;
|
||||||
|
in rec {
|
||||||
|
nixosConfigurations = {
|
||||||
|
shinji = import ./hosts/shinji.nix { inherit inputs options; };
|
||||||
|
};
|
||||||
|
|
||||||
|
homeConfigurations = {
|
||||||
|
shinji = nixosConfigurations.shinji.config.home-manager.users.${options.user}.home;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
64
hosts/shinji.nix
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{ inputs, options, ... }:
|
||||||
|
|
||||||
|
inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
options
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
../modules
|
||||||
|
{
|
||||||
|
# options
|
||||||
|
desktop.enable = true;
|
||||||
|
system.enable = true;
|
||||||
|
monitor = {
|
||||||
|
name = "eDP-1";
|
||||||
|
scale = 1.25;
|
||||||
|
};
|
||||||
|
|
||||||
|
# bootloader
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# hostname
|
||||||
|
networking.hostName = "shinji";
|
||||||
|
|
||||||
|
# kernel modules
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# firmware
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
hardware.cpu.amd.updateMicrocode = true;
|
||||||
|
|
||||||
|
# luks device
|
||||||
|
boot.initrd.luks.devices."root".device = "/dev/disk/by-uuid/ad489bfa-4280-44ea-8ad2-60347b516d60";
|
||||||
|
|
||||||
|
# root
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/b43a7cf6-b9aa-44c2-ad29-da24ffa56901";
|
||||||
|
fsType = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# boot
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/6F93-6A0B";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# swap
|
||||||
|
swapDevices = [
|
||||||
|
{ device = "/dev/disk/by-uuid/57caa02d-8569-43e3-8bf9-09dd6f02b191"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
175
modules/default.nix
Normal file
|
@ -0,0 +1,175 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./programs
|
||||||
|
./home.nix
|
||||||
|
./system.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
# Primary user of the system
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Primary user of the system";
|
||||||
|
};
|
||||||
|
fullName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Human readable name of the user";
|
||||||
|
};
|
||||||
|
homePath = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Home directory path of the user";
|
||||||
|
default = "/home/${config.user}";
|
||||||
|
};
|
||||||
|
email = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Primary email of the user";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Toggable components
|
||||||
|
desktop = {
|
||||||
|
enable = lib.mkEnableOption {
|
||||||
|
description = "Enable the gui.";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
system = {
|
||||||
|
enable = lib.mkEnableOption {
|
||||||
|
description = "Enable system services.";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Monitor
|
||||||
|
monitor = {
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Name of the primary monitor.";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
scale = lib.mkOption {
|
||||||
|
type = lib.types.float;
|
||||||
|
description = "Scale of the primary monitor.";
|
||||||
|
default = 1.0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Theme of the system
|
||||||
|
theme = {
|
||||||
|
colors = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
description = "base16 color scheme";
|
||||||
|
default = (import ./themes).catppuccin.mocha;
|
||||||
|
};
|
||||||
|
|
||||||
|
accentColor = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Theme accent color.";
|
||||||
|
default = config.theme.colors.base0D;
|
||||||
|
};
|
||||||
|
|
||||||
|
opacity = lib.mkOption {
|
||||||
|
type = lib.types.float;
|
||||||
|
description = "Window opacity.";
|
||||||
|
default = 1.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
font = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Theme primary font.";
|
||||||
|
default = "JetBrains Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
fontSize = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
description = "Theme primary font size.";
|
||||||
|
default = 14;
|
||||||
|
};
|
||||||
|
|
||||||
|
headerFont = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Theme header font.";
|
||||||
|
default = "JetBrains Mono ExtraBold";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospaceFont = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Theme monospace font.";
|
||||||
|
default = "monospace";
|
||||||
|
};
|
||||||
|
|
||||||
|
iconFont = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Theme icon font.";
|
||||||
|
default = "Font Awesome 6 Pro";
|
||||||
|
};
|
||||||
|
|
||||||
|
borderWidth = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
description = "Theme border width";
|
||||||
|
default = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
outerRadius = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
description = "Theme outer border radius.";
|
||||||
|
default = 5;
|
||||||
|
};
|
||||||
|
|
||||||
|
innerRadius = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
description = "Theme inner border radius.";
|
||||||
|
default = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
outerGap = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
description = "Theme outer gap/spacing.";
|
||||||
|
default = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
innerGap = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
description = "Theme inner gap/spacing.";
|
||||||
|
default = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wallpaper = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Path to wallpaper image";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
avatar = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Path to avatar image";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
|
||||||
|
# use system packages in home manager
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
|
||||||
|
# install user packages to /etc/profiles and not home directory
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
|
||||||
|
# allow flakes
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
# allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# set state version
|
||||||
|
home-manager.users.${config.user}.home.stateVersion = "25.05";
|
||||||
|
home-manager.users.root.home.stateVersion = "25.05";
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
83
modules/home.nix
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
|
||||||
|
home.username = config.user;
|
||||||
|
home.homeDirectory = config.homePath;
|
||||||
|
|
||||||
|
news.display = "silent";
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# c / c++
|
||||||
|
gcc
|
||||||
|
nasm
|
||||||
|
pkg-config
|
||||||
|
# rust
|
||||||
|
rustc
|
||||||
|
rustfmt
|
||||||
|
rust-analyzer
|
||||||
|
cargo
|
||||||
|
clippy
|
||||||
|
# programs
|
||||||
|
cage
|
||||||
|
easyeffects
|
||||||
|
discord
|
||||||
|
element-desktop
|
||||||
|
fd
|
||||||
|
gamescope
|
||||||
|
gajim
|
||||||
|
gimp
|
||||||
|
imagemagick
|
||||||
|
libnotify
|
||||||
|
mpv
|
||||||
|
pavucontrol
|
||||||
|
pfetch-rs
|
||||||
|
rsync
|
||||||
|
starship
|
||||||
|
steam
|
||||||
|
thunderbird
|
||||||
|
wine
|
||||||
|
wl-clip-persist
|
||||||
|
yt-dlp
|
||||||
|
zathura
|
||||||
|
# gtk
|
||||||
|
orchis-theme
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".ssh/config".source = ../files/config/ssh/config;
|
||||||
|
".zshrc".source = ../files/config/zsh/zshrc;
|
||||||
|
".zprofile".source = ../files/config/zsh/zprofile;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
iris = {
|
||||||
|
source = ../files/config/iris;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
nvim = {
|
||||||
|
source = ../files/config/nvim;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.dataFile = {
|
||||||
|
fonts = {
|
||||||
|
source = ../files/fonts;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
16
modules/programs/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./firefox
|
||||||
|
./git
|
||||||
|
./gnupg
|
||||||
|
./hypr
|
||||||
|
./kitty
|
||||||
|
./mako
|
||||||
|
./starship
|
||||||
|
./waybar
|
||||||
|
./wofi
|
||||||
|
./zsh
|
||||||
|
];
|
||||||
|
}
|
88
modules/programs/firefox/default.nix
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
extraPrefs = ''//
|
||||||
|
|
||||||
|
// Automatically click cookiebanners although uBlock Origin might block them
|
||||||
|
lockPref("cookiebanners.bannerClicking.enabled", true);
|
||||||
|
lockPref("cookiebanners.service.mode", 2);
|
||||||
|
lockPref("cookiebanners.service.mode.privateBrowsing", 2);
|
||||||
|
|
||||||
|
// DNT although PrivacyBadger from policy handles this
|
||||||
|
lockPref("privacy.donottrackheader.enabled", true);
|
||||||
|
lockPref("privacy.donottrackheader.value", 1);
|
||||||
|
|
||||||
|
// New sidebar
|
||||||
|
lockPref("sidebar.revamp", true);
|
||||||
|
lockPref("sidebar.verticalTabs", true);
|
||||||
|
lockPref("sidebar.visibility", "always-show");
|
||||||
|
lockPref("sidebar.main.tools", "history,bookmarks");
|
||||||
|
|
||||||
|
//'';
|
||||||
|
|
||||||
|
userChrome = ''
|
||||||
|
/* sidebar hack to flip contents the way i want them (arrows on the left) */
|
||||||
|
#nav-bar-customization-target {
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove broken padding from sidebar hack */
|
||||||
|
#unified-extensions-button {
|
||||||
|
padding-left: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove padding beside search bar */
|
||||||
|
toolbarspring {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove overflow menu and everything in it */
|
||||||
|
#nav-bar-overflow-button,
|
||||||
|
#firefox-view-button,
|
||||||
|
#alltabs-button {
|
||||||
|
visibility: collapse;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
my-firefox = (pkgs.firefox.override {
|
||||||
|
extraPrefs = extraPrefs;
|
||||||
|
});
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.firefox = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
package = my-firefox;
|
||||||
|
|
||||||
|
# import configuration
|
||||||
|
policies = import ./policies.nix;
|
||||||
|
|
||||||
|
# create profile for me :3
|
||||||
|
profiles.${config.user} = {
|
||||||
|
search = {
|
||||||
|
force = true;
|
||||||
|
default = "DuckDuckGo";
|
||||||
|
engines = {
|
||||||
|
"Google".metaData.hidden = true;
|
||||||
|
"Bing".metaData.hidden = true;
|
||||||
|
"Amazon.com".metaData.hidden = true;
|
||||||
|
"eBay".metaData.hidden = true;
|
||||||
|
"Twitter".metaData.hidden = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# firefox doesnt make styling the toolbar easy using about:config
|
||||||
|
# since its just a massive json string. so i did it here in css.
|
||||||
|
userChrome = userChrome;
|
||||||
|
}; # end profile
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
58
modules/programs/firefox/extensions.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
# extensions to be auto downloaded into
|
||||||
|
# firefox
|
||||||
|
|
||||||
|
# dont allow extensions to be installed though
|
||||||
|
# firefox, they must be described here!
|
||||||
|
"*".installation_mode = "blocked";
|
||||||
|
|
||||||
|
# uBlock Origin
|
||||||
|
"uBlock0@raymondhill.net" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Bitwarden
|
||||||
|
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
# User Agent Switcher
|
||||||
|
"user-agent-switcher@ninetailed.ninja" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/uaswitcher/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
# SponsorBlock
|
||||||
|
"sponsorBlocker@ajay.app" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Privacy Badger
|
||||||
|
"jid1-MnnxcxisBPnSXQ@jetpack" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
# FoxyProxy
|
||||||
|
"foxyproxy@eric.h.jung" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/foxyproxy-standard/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Redirector
|
||||||
|
"redirector@einaregilsson.com" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/redirector/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
# linkding
|
||||||
|
"{61a05c39-ad45-4086-946f-32adb0a40a9d}" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/linkding-extension/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
142
modules/programs/firefox/policies.nix
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
# policies to be set in firefox
|
||||||
|
# see: https://mozilla.github.io/policy-templates/
|
||||||
|
|
||||||
|
ExtensionSettings = import ./extensions.nix;
|
||||||
|
Preferences = import ./preferences.nix;
|
||||||
|
|
||||||
|
EnableTrackingProtection = {
|
||||||
|
Value = true;
|
||||||
|
Locked = true;
|
||||||
|
Cryptomining = true;
|
||||||
|
Fingerprinting = true;
|
||||||
|
EmailTracking = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Certificates
|
||||||
|
Certificates = {
|
||||||
|
ImportEnterpriseRoots = true;
|
||||||
|
Install = [
|
||||||
|
"freya_ca.crt"
|
||||||
|
"tinternet.crt"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Cookies
|
||||||
|
Cookies = {
|
||||||
|
Behavior = "reject-foreign";
|
||||||
|
BehaviorPrivateBrowsing = "reject-foreign";
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# DNS
|
||||||
|
DNSOverHTTPS = {
|
||||||
|
Enabled = false;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Disable Bad
|
||||||
|
DisableAppUpdate = true;
|
||||||
|
DisableAccounts = true;
|
||||||
|
DisableFirefoxAccounts = true;
|
||||||
|
DisableFirefoxScreenshots = true;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
DisablePocket = true;
|
||||||
|
DisableTelemetry = true;
|
||||||
|
AutofillAddressEnabled = false;
|
||||||
|
AutofillCreditCardEnabled = false;
|
||||||
|
|
||||||
|
# Disable Certain Messages
|
||||||
|
UserMessaging = {
|
||||||
|
WhatsNew = false;
|
||||||
|
ExtensionRecommendations = false;
|
||||||
|
FeatureRecommendations = false;
|
||||||
|
UrlbarInterventions = false;
|
||||||
|
SkipOnboarding = true;
|
||||||
|
MoreFromMozilla = false;
|
||||||
|
Labs = false;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Disable Password Manager
|
||||||
|
DisableMasterPasswordCreation = true;
|
||||||
|
PasswordManagerEnabled = false;
|
||||||
|
PrimaryPassword = false;
|
||||||
|
OfferToSaveLogins = false;
|
||||||
|
|
||||||
|
# Remove Special Pages
|
||||||
|
OverrideFirstRunPage = "";
|
||||||
|
OverridePostUpdatePage = "";
|
||||||
|
|
||||||
|
# Start Page
|
||||||
|
Homepage = {
|
||||||
|
StartPage = "previous-session";
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Home Page
|
||||||
|
FirefoxHome = {
|
||||||
|
Search = true;
|
||||||
|
TopSites = false;
|
||||||
|
SponsoredTopSites = false;
|
||||||
|
Highlights = false;
|
||||||
|
Pocket = false;
|
||||||
|
SponsoredPocket = false;
|
||||||
|
Snippets = false;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Search Suggestions
|
||||||
|
SearchSuggestEnabled = true;
|
||||||
|
FirefoxSuggest = {
|
||||||
|
WebSuggestions = false;
|
||||||
|
SponsoredSuggestions = false;
|
||||||
|
ImproveSuggest = false;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Save All on Shutdown
|
||||||
|
SanitizeOnShutdown = {
|
||||||
|
Cache = false;
|
||||||
|
Cookies = false;
|
||||||
|
Downloads = false;
|
||||||
|
Histroy = false;
|
||||||
|
Sessions = false;
|
||||||
|
SiteSettings = false;
|
||||||
|
OfflineApps = false;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Popups
|
||||||
|
PopupBlocking = {
|
||||||
|
Default = true;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow Bypasses
|
||||||
|
DisableSecurityBypass = {
|
||||||
|
InvalidCertificate = false;
|
||||||
|
SafeBrowsing = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# PictureInPicure
|
||||||
|
PictureInPicture = {
|
||||||
|
Enabled = true;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Topbar
|
||||||
|
SearchBar = "unified";
|
||||||
|
DisplayMenuBar = "default-off";
|
||||||
|
DisplayBookmarksToolbar = "newtab";
|
||||||
|
NoDefaultBookmarks = true;
|
||||||
|
|
||||||
|
# Miscellaneous
|
||||||
|
HttpsOnlyMode = "force_enabled";
|
||||||
|
HardwareAcceleration = true;
|
||||||
|
DontCheckDefaultBrowser = true;
|
||||||
|
PromptForDownloadLocation = false;
|
||||||
|
PrivateBrowsingModeAvailability = 0;
|
||||||
|
|
||||||
|
}
|
131
modules/programs/firefox/preferences.nix
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
let
|
||||||
|
# quick variables to specify
|
||||||
|
# locked true/false
|
||||||
|
lock-false = {
|
||||||
|
Value = false;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
lock-true = {
|
||||||
|
Value = true;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
# about:config Preferences
|
||||||
|
# ... set policies that cannot be set using policies.json directly
|
||||||
|
|
||||||
|
# allow userChrom.css
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = lock-true;
|
||||||
|
|
||||||
|
# dark theme
|
||||||
|
"extensions.activeThemeID" = {
|
||||||
|
Value = "firefox-compact-dark@mozilla.org";
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
"layout.css.prefers-color-scheme.content-override" = {
|
||||||
|
Value = 0;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
|
||||||
|
# homepage
|
||||||
|
"browser.startup.homepage" = {
|
||||||
|
Value = "about:home";
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
"browser.newtabpage.enabed" = lock-true;
|
||||||
|
"browser.newtabpage.url" = {
|
||||||
|
Value = "about:home";
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
|
||||||
|
# autofill
|
||||||
|
"browser.autofill.enabled" = lock-false;
|
||||||
|
"browser.formfill.enable" = lock-false;
|
||||||
|
|
||||||
|
# search enable
|
||||||
|
"browser.urlbar.suggest.recentsearches" = lock-true;
|
||||||
|
"browser.urlbar.suggest.bookmark" = lock-true;
|
||||||
|
"browser.urlbar.suggest.clipboard" = lock-true;
|
||||||
|
"browser.urlbar.suggest.history" = lock-true;
|
||||||
|
|
||||||
|
# search disable
|
||||||
|
"browser.urlbar.suggest.addons" = lock-false;
|
||||||
|
"browser.urlbar.suggest.calculator" = lock-false;
|
||||||
|
"browser.urlbar.suggest.engines" = lock-false;
|
||||||
|
"browser.urlbar.suggest.fakespot" = lock-false;
|
||||||
|
"browser.urlbar.suggest.mdn" = lock-false;
|
||||||
|
"browser.urlbar.suggest.openpage" = lock-false;
|
||||||
|
"browser.urlbar.suggest.pocket" = lock-false;
|
||||||
|
"browser.urlbar.suggest.remotetab" = lock-false;
|
||||||
|
"browser.urlbar.suggest.topsites" = lock-false;
|
||||||
|
"browser.urlbar.suggest.trending" = lock-false;
|
||||||
|
"browser.urlbar.suggest.weather" = lock-false;
|
||||||
|
"browser.urlbar.suggest.yelp" = lock-false;
|
||||||
|
|
||||||
|
# privacy
|
||||||
|
"privacy.globalprivacycontrol.enabled" = lock-true;
|
||||||
|
|
||||||
|
# security
|
||||||
|
"security.OCSP.enabled" = {
|
||||||
|
Value = 0;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
"browser.contentblocking.category" = {
|
||||||
|
Value = "strict";
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
"xpinstall.whitelist.required" = lock-true;
|
||||||
|
"signon.management.page.breach-alerts.enabled" = lock-false;
|
||||||
|
|
||||||
|
# graphics
|
||||||
|
"dom.webgpu.enabled" = lock-true;
|
||||||
|
"media.eme.enabled" = lock-true;
|
||||||
|
|
||||||
|
# user messaging
|
||||||
|
# ... disable shit that is annoying
|
||||||
|
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.showWeather" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.newtabWallpapers.enabled" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled" = lock-false;
|
||||||
|
"browser.newtabpage.activity-stream.default.sites" = {
|
||||||
|
Value = "";
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
|
||||||
|
# safebrowsing
|
||||||
|
"browser.safebrowsing.malware.enabled" = lock-true;
|
||||||
|
"browser.safebrowsing.phishing.enabled" = lock-true;
|
||||||
|
"browser.safebrowsing.downloads.enabled" = lock-true;
|
||||||
|
"browser.safebrowsing.downloads.remote.block_uncommon" = lock-false;
|
||||||
|
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = lock-false;
|
||||||
|
|
||||||
|
# sidebar
|
||||||
|
"browser.tabs.inTitlebar" = {
|
||||||
|
Value = 0;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
"browser.tabs.warnOnClose" = lock-true;
|
||||||
|
"browser.tabs.firefox-view" = lock-false;
|
||||||
|
"browser.tabs.closeTabByDblclick" = lock-true;
|
||||||
|
"ui.key.menuAccessKeyFocuses" = lock-false;
|
||||||
|
|
||||||
|
# general settings
|
||||||
|
"general.autoScroll" = lock-false;
|
||||||
|
"general.smoothScroll" = lock-true;
|
||||||
|
"widget.gtk.overlay-scrollbars.enabled" = lock-false;
|
||||||
|
"accessibility.browsewithcaret" = lock-false;
|
||||||
|
"accessibility.typeaheadfind" = lock-false;
|
||||||
|
"media.hardwaremediakeys.enabled" = lock-true;
|
||||||
|
"browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false;
|
||||||
|
"browser.aboutConfig.showWarning" = lock-false;
|
||||||
|
|
||||||
|
}
|
24
modules/programs/git/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = config.user;
|
||||||
|
userEmail = config.fullName;
|
||||||
|
|
||||||
|
signing = {
|
||||||
|
key = "D9AF0A4209B7C2DE11A884BFACBC553660D9993D";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
25
modules/programs/gnupg/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
pinentryPackage = pkgs.pinentry-gtk2;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.gpg = {
|
||||||
|
enable = true;
|
||||||
|
publicKeys = [
|
||||||
|
{
|
||||||
|
source = ../../../files/keys/freya-gpg.pub;
|
||||||
|
trust = 5;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
10
modules/programs/hypr/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hypridle.nix
|
||||||
|
./hyprland.nix
|
||||||
|
./hyprlock.nix
|
||||||
|
./hyprpaper.nix
|
||||||
|
];
|
||||||
|
}
|
56
modules/programs/hypr/hypridle.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# inputs
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
hypridle = inputs.hypridle.packages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
services.hypridle = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
package = hypridle.hypridle;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
lock_cmd = "pidof hyprlock || hyprlock";
|
||||||
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
|
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||||
|
ignore_dbus_inhibit = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
# dim screen
|
||||||
|
{
|
||||||
|
timeout = 150;
|
||||||
|
on-timeout = "brightnessctl -s set 10";
|
||||||
|
on-resume = "brightnessctl -r";
|
||||||
|
}
|
||||||
|
# dim keyboard backlight
|
||||||
|
{
|
||||||
|
timeout = 150;
|
||||||
|
on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0";
|
||||||
|
on-resume = "brightnessctl -rd rgb:kbd_backlight";
|
||||||
|
}
|
||||||
|
# lock
|
||||||
|
{
|
||||||
|
timeout = 300;
|
||||||
|
on-timeout = "loginctl lock-session";
|
||||||
|
}
|
||||||
|
# turn off screen
|
||||||
|
{
|
||||||
|
timeout = 350;
|
||||||
|
on-timeout = "hyprctl dispatch dpms off";
|
||||||
|
on-resume = "hyprctl dispatch dpms on";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
302
modules/programs/hypr/hyprland.nix
Normal file
|
@ -0,0 +1,302 @@
|
||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# inputs
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
hyprland = inputs.hyprland.packages.${system};
|
||||||
|
hyprland-plugins = inputs.hyprland-plugins.packages.${system};
|
||||||
|
hy3 = inputs.hy3.packages.${system};
|
||||||
|
|
||||||
|
browser = "firefox";
|
||||||
|
launcher = "wofi --show drun --prompt \"Search Program\"";
|
||||||
|
lock_screen = "hyprlock";
|
||||||
|
terminal = "kitty";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
package = hyprland.hyprland;
|
||||||
|
|
||||||
|
# Plugins
|
||||||
|
plugins = [
|
||||||
|
hyprland-plugins.hyprexpo
|
||||||
|
hy3.hy3
|
||||||
|
];
|
||||||
|
|
||||||
|
# Config
|
||||||
|
settings = {
|
||||||
|
# Monitors
|
||||||
|
monitor = [
|
||||||
|
"${config.monitor.name}, highres, auto, ${toString config.monitor.scale}"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Autostart
|
||||||
|
exec-once = [
|
||||||
|
"waybar"
|
||||||
|
"thunderbird"
|
||||||
|
"discord --enable-features=UseOzonePlatform --ozone-platform=wayland"
|
||||||
|
"element-desktop --enable-features=UseOzonePlatform --ozone-platform=wayland"
|
||||||
|
];
|
||||||
|
|
||||||
|
# General
|
||||||
|
general = {
|
||||||
|
gaps_in = config.theme.innerGap;
|
||||||
|
gaps_out = config.theme.outerGap;
|
||||||
|
layout = "hy3";
|
||||||
|
resize_on_border = "yes";
|
||||||
|
extend_border_grab_area = 20;
|
||||||
|
border_size = config.theme.borderWidth;
|
||||||
|
"col.active_border" = "rgb(${config.theme.accentColor})";
|
||||||
|
"col.inactive_border" = "rgb(${config.theme.colors.base04})";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Gestures
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = true;
|
||||||
|
workspace_swipe_fingers = 3;
|
||||||
|
workspace_swipe_forever = true;
|
||||||
|
workspace_swipe_cancel_ratio = 0.15;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Decoration
|
||||||
|
decoration = {
|
||||||
|
rounding = config.theme.outerRadius;
|
||||||
|
shadow.enabled = false;
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 4;
|
||||||
|
passes = 2;
|
||||||
|
noise = 0.008;
|
||||||
|
contrast = 0.8916;
|
||||||
|
brightness = 0.8;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Animations
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
bezier = [
|
||||||
|
"windowIn, 0.06, 0.71, 0.25, 1"
|
||||||
|
"windowResize, 0.04, 0.67, 0.38, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windowsIn, 1, 3, windowIn, slide #popin 20%"
|
||||||
|
"windowsOut, 1, 3, windowIn, slide #popin 70%"
|
||||||
|
"windowsMove, 1, 2.5, windowResize"
|
||||||
|
"border, 1, 10, default"
|
||||||
|
"borderangle, 1, 8, default"
|
||||||
|
"fade, 1, 3, default"
|
||||||
|
"workspaces, 1, 6, default"
|
||||||
|
"layers, 1, 5, windowIn, slide"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
env = [
|
||||||
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||||
|
"XDG_SESSION_DESKTOP,Hyprland"
|
||||||
|
|
||||||
|
"XCURSOR_THEME,Adwaita"
|
||||||
|
"XCURSOR_SIZE,24"
|
||||||
|
|
||||||
|
"GTK_THEME,Orchis-Teal-Dark"
|
||||||
|
"GDK_SCALE,${toString config.monitor.scale}"
|
||||||
|
|
||||||
|
"MOZ_ENABLE_WAYLAND,1"
|
||||||
|
"MOZ_USE_XINPUT,1"
|
||||||
|
"_JAVA_AWT_WM_NONREPARENTING,1"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Input
|
||||||
|
input = {
|
||||||
|
kb_layout = "us";
|
||||||
|
kb_variant = "";
|
||||||
|
kb_model = "";
|
||||||
|
kb_options = "gtp:alt_shit_toggle, compose:ralt";
|
||||||
|
kb_rules = "";
|
||||||
|
follow_mouse = 1;
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = "yes";
|
||||||
|
};
|
||||||
|
sensitivity = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Keybinds
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
bind = [
|
||||||
|
# Launch programs
|
||||||
|
|
||||||
|
"$mod, W, exec, ${browser}"
|
||||||
|
"$mod, D, exec, ${launcher}"
|
||||||
|
"$mod, L, exec, ${lock_screen}"
|
||||||
|
"$mod, Return, exec, ${terminal}"
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
|
||||||
|
"$mod SHIFT, L, exit"
|
||||||
|
"$mod, tab, hyprexpo:expo, toggle"
|
||||||
|
|
||||||
|
# Window operations
|
||||||
|
|
||||||
|
"$mod SHIFT, Q, killactive"
|
||||||
|
"$mod SHIFT, SPACE, togglefloating"
|
||||||
|
"$mod, F, fullscreen"
|
||||||
|
"$mod, J, togglesplit"
|
||||||
|
|
||||||
|
# Move focus with mod + arrow keys
|
||||||
|
|
||||||
|
"$mod, left, movefocus, l"
|
||||||
|
"$mod, right, movefocus, r"
|
||||||
|
"$mod, up, movefocus, u"
|
||||||
|
"$mod, down, movefocus, d"
|
||||||
|
|
||||||
|
# Move window across workspace with mod + arrow keys
|
||||||
|
|
||||||
|
"$mod SHIFT, left, hy3:movewindow, l"
|
||||||
|
"$mod SHIFT, right, hy3:movewindow, r"
|
||||||
|
"$mod SHIFT, up, hy3:movewindow, u"
|
||||||
|
"$mod SHIFT, down, hy3:movewindow, d"
|
||||||
|
|
||||||
|
# Switch workspaces with mod + [0-9]
|
||||||
|
|
||||||
|
"$mod, 1, workspace, 1"
|
||||||
|
"$mod, 2, workspace, 2"
|
||||||
|
"$mod, 3, workspace, 3"
|
||||||
|
"$mod, 4, workspace, 4"
|
||||||
|
"$mod, 5, workspace, 5"
|
||||||
|
"$mod, 6, workspace, 6"
|
||||||
|
"$mod, 7, workspace, 7"
|
||||||
|
"$mod, 8, workspace, 8"
|
||||||
|
"$mod, 9, workspace, 9"
|
||||||
|
|
||||||
|
# Move active window to a workspace with mod + SHIFT + [0-9]
|
||||||
|
|
||||||
|
"$mod SHIFT, 1, movetoworkspacesilent, 1"
|
||||||
|
"$mod SHIFT, 2, movetoworkspacesilent, 2"
|
||||||
|
"$mod SHIFT, 3, movetoworkspacesilent, 3"
|
||||||
|
"$mod SHIFT, 4, movetoworkspacesilent, 4"
|
||||||
|
"$mod SHIFT, 5, movetoworkspacesilent, 5"
|
||||||
|
"$mod SHIFT, 6, movetoworkspacesilent, 6"
|
||||||
|
"$mod SHIFT, 7, movetoworkspacesilent, 7"
|
||||||
|
"$mod SHIFT, 8, movetoworkspacesilent, 8"
|
||||||
|
"$mod SHIFT, 9, movetoworkspacesilent, 9"
|
||||||
|
"$mod SHIFT, 0, movetoworkspacesilent, 10"
|
||||||
|
|
||||||
|
# Move to tab
|
||||||
|
|
||||||
|
"LALT, 1, hy3:focustab, index, 01"
|
||||||
|
"LALT, 2, hy3:focustab, index, 02"
|
||||||
|
"LALT, 3, hy3:focustab, index, 03"
|
||||||
|
"LALT, 4, hy3:focustab, index, 04"
|
||||||
|
"LALT, 5, hy3:focustab, index, 05"
|
||||||
|
"LALT, 6, hy3:focustab, index, 06"
|
||||||
|
"LALT, 7, hy3:focustab, index, 07"
|
||||||
|
"LALT, 8, hy3:focustab, index, 08"
|
||||||
|
"LALT, 9, hy3:focustab, index, 09"
|
||||||
|
"LALT, 0, hy3:focustab, index, 10"
|
||||||
|
|
||||||
|
"$mod SHIFT, B, hy3:makegroup, h"
|
||||||
|
"$mod SHIFT, V, hy3:makegroup, v"
|
||||||
|
"$mod SHIFT, C, hy3:changegroup, toggletab"
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mod + scroll
|
||||||
|
|
||||||
|
"$mod, mouse_down, workspace, e+1"
|
||||||
|
"$mod, mouse_up, workspace, e-1"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindn = [
|
||||||
|
# Focus windows with scroll wheel or middle click
|
||||||
|
|
||||||
|
", mouse:272, hy3:focustab, mouse"
|
||||||
|
", mouse_down, hy3:focustab, l, require_hovered"
|
||||||
|
", mouse_up, hy3:focustab, r, require_hovered"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
# Move/resize windows with mod + LMB/RMB and dragging
|
||||||
|
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
# Audio
|
||||||
|
|
||||||
|
# raise volume
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
# lower volume
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
# mute speaker
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
# mute mic
|
||||||
|
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||||
|
|
||||||
|
# Media
|
||||||
|
|
||||||
|
# play
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
# next
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
# prev
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
|
||||||
|
# Backlight
|
||||||
|
|
||||||
|
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
|
||||||
|
", XF86MonBrightnessUp, exec, brightnessctl set 5%+"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Plugin configuration
|
||||||
|
plugin = {
|
||||||
|
# hy3
|
||||||
|
hy3 = {
|
||||||
|
tabs = {
|
||||||
|
height = 24;
|
||||||
|
text_height = 9;
|
||||||
|
text_padding = 10;
|
||||||
|
padding = 2;
|
||||||
|
render_text = true;
|
||||||
|
text_font = "monospace";
|
||||||
|
radius = config.theme.outerRadius;
|
||||||
|
|
||||||
|
"col.active" = "rgb(${config.theme.colors.base00})";
|
||||||
|
"col.inactive" = "rgb(${config.theme.colors.base00})";
|
||||||
|
"col.text.active" = "rgb(${config.theme.colors.base05})";
|
||||||
|
"col.text.inactive" = "rgb(${config.theme.colors.base05})";
|
||||||
|
"col.border.active" = "rgb(${config.theme.accentColor})";
|
||||||
|
"col.border.inactive" = "rgb(${config.theme.colors.base04})";
|
||||||
|
};
|
||||||
|
|
||||||
|
autotile = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# XWayland
|
||||||
|
xwayland = {
|
||||||
|
force_zero_scaling = "true";
|
||||||
|
use_nearest_neighbor = "false";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
key_press_enables_dpms = true;
|
||||||
|
mouse_move_enables_dpms = true;
|
||||||
|
vrr = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
96
modules/programs/hypr/hyprlock.nix
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# inputs
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
hyprlock = inputs.hyprlock.packages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.hyprlock = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
package = hyprlock.hyprlock;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
|
||||||
|
background = {
|
||||||
|
monitor = "";
|
||||||
|
path = config.wallpaper;
|
||||||
|
blur_passes = 3;
|
||||||
|
contrast = 0.8916;
|
||||||
|
brightness = 0.8172;
|
||||||
|
vibrancy = 0.1696;
|
||||||
|
vibrancy_darkness = 0.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
general = {
|
||||||
|
no_fade_in = false;
|
||||||
|
grace = 0;
|
||||||
|
disable_loading_bar = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
input-field = {
|
||||||
|
monitor = "";
|
||||||
|
size = "250, 60";
|
||||||
|
outline_thickness = 2;
|
||||||
|
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
||||||
|
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
||||||
|
dots_center = true;
|
||||||
|
outer_color = "rgba(0, 0, 0, 0)";
|
||||||
|
inner_color = "rgba(0, 0, 0, 0.5)";
|
||||||
|
font_color = "rgb(${config.theme.colors.base05})";
|
||||||
|
font_family = config.theme.font;
|
||||||
|
fade_on_empty = false;
|
||||||
|
placeholder_text = "<i><span foreground=\"#${config.theme.colors.base05}\">Input Password...</span></i>";
|
||||||
|
hide_input = false;
|
||||||
|
position = "0, -120";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
};
|
||||||
|
|
||||||
|
label = [
|
||||||
|
# Clock
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "cmd[update:1000] echo \"$(date +\"%-H:%M:%S\")\"";
|
||||||
|
font_size = 80;
|
||||||
|
font_color = "rgb(${config.theme.colors.base05})";
|
||||||
|
font_family = config.theme.headerFont;
|
||||||
|
position = "0, 500";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Name
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = config.fullName;
|
||||||
|
font_color = "rgb(${config.theme.colors.base05})";
|
||||||
|
font_family = config.theme.headerFont;
|
||||||
|
font_size = 25;
|
||||||
|
position = "0, 50";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Profile image
|
||||||
|
image = {
|
||||||
|
monitor = "";
|
||||||
|
path = config.avatar;
|
||||||
|
size = 300;
|
||||||
|
rounding = -1;
|
||||||
|
border_size = 0;
|
||||||
|
position = "0, 250";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
28
modules/programs/hypr/hyprpaper.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# inputs
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
hyprpaper = inputs.hyprpaper.packages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
services.hyprpaper = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
package = hyprpaper.hyprpaper;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
preload = config.wallpaper;
|
||||||
|
wallpaper = ",${config.wallpaper}";
|
||||||
|
splash = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
88
modules/programs/kitty/default.nix
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.kitty = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
environment = { };
|
||||||
|
extraConfig = "";
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
# Font
|
||||||
|
font_family = config.theme.monospaceFont;
|
||||||
|
font_size = 11;
|
||||||
|
bold_font = "auto";
|
||||||
|
italic_font = "auto";
|
||||||
|
bold_italic_font = "auto";
|
||||||
|
|
||||||
|
# Scrollback
|
||||||
|
scrollback_lines = 10000;
|
||||||
|
scrollback_pager_history_size = 300; # MB
|
||||||
|
|
||||||
|
# Urls
|
||||||
|
detect_urls = true;
|
||||||
|
show_hyperlink_targets = false;
|
||||||
|
|
||||||
|
# Window
|
||||||
|
window_padding_width = config.theme.outerGap;
|
||||||
|
window_border_width = 0;
|
||||||
|
draw_minimal_borders = true;
|
||||||
|
background_opacity = config.theme.opacity;
|
||||||
|
|
||||||
|
# Disable audio
|
||||||
|
enable_audio_bell = false;
|
||||||
|
|
||||||
|
# Disable close prompt
|
||||||
|
confirm_os_window_close = 0;
|
||||||
|
|
||||||
|
# colors
|
||||||
|
background = "#${config.theme.colors.base00}";
|
||||||
|
foreground = "#${config.theme.colors.base05}";
|
||||||
|
selection_background = "#${config.theme.colors.base05}";
|
||||||
|
selection_foreground = "#${config.theme.colors.base00}";
|
||||||
|
url_color = "#${config.theme.colors.base04}";
|
||||||
|
cursor = "#${config.theme.colors.base05}";
|
||||||
|
active_border_color = "#${config.theme.colors.base03}";
|
||||||
|
inactive_border_color = "#${config.theme.colors.base01}";
|
||||||
|
active_tab_background = "#${config.theme.colors.base00}";
|
||||||
|
active_tab_foreground = "#${config.theme.colors.base05}";
|
||||||
|
inactive_tab_background = "#${config.theme.colors.base01}";
|
||||||
|
inactive_tab_foreground = "#${config.theme.colors.base04}";
|
||||||
|
tab_bar_background = "#${config.theme.colors.base01}";
|
||||||
|
|
||||||
|
# normal
|
||||||
|
color0 = "#${config.theme.colors.base00}";
|
||||||
|
color1 = "#${config.theme.colors.base08}";
|
||||||
|
color2 = "#${config.theme.colors.base0B}";
|
||||||
|
color3 = "#${config.theme.colors.base0A}";
|
||||||
|
color4 = "#${config.theme.colors.base0D}";
|
||||||
|
color5 = "#${config.theme.colors.base0E}";
|
||||||
|
color6 = "#${config.theme.colors.base0C}";
|
||||||
|
color7 = "#${config.theme.colors.base05}";
|
||||||
|
|
||||||
|
# bright
|
||||||
|
color8 = "#${config.theme.colors.base03}";
|
||||||
|
color9 = "#${config.theme.colors.base08}";
|
||||||
|
color10 = "#${config.theme.colors.base0B}";
|
||||||
|
color11 = "#${config.theme.colors.base0A}";
|
||||||
|
color12 = "#${config.theme.colors.base0D}";
|
||||||
|
color13 = "#${config.theme.colors.base0E}";
|
||||||
|
color14 = "#${config.theme.colors.base0C}";
|
||||||
|
color15 = "#${config.theme.colors.base07}";
|
||||||
|
|
||||||
|
# extended base16 colors
|
||||||
|
color16 = "#${config.theme.colors.base09}";
|
||||||
|
color17 = "#${config.theme.colors.base0F}";
|
||||||
|
color18 = "#${config.theme.colors.base01}";
|
||||||
|
color19 = "#${config.theme.colors.base02}";
|
||||||
|
color20 = "#${config.theme.colors.base04}";
|
||||||
|
color21 = "#${config.theme.colors.base06}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
32
modules/programs/mako/default.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
services.mako = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
font = "${config.theme.font} 11";
|
||||||
|
|
||||||
|
margin = toString config.theme.outerGap;
|
||||||
|
padding = toString config.theme.innerGap;
|
||||||
|
|
||||||
|
backgroundColor = "#${config.theme.colors.base00}";
|
||||||
|
progressColor = "#${config.theme.colors.base00}";
|
||||||
|
textColor = "#${config.theme.colors.base05}";
|
||||||
|
|
||||||
|
borderColor = "#${config.theme.accentColor}";
|
||||||
|
borderSize = config.theme.borderWidth;
|
||||||
|
borderRadius = 0;
|
||||||
|
|
||||||
|
defaultTimeout = 5000;
|
||||||
|
layer = "overlay";
|
||||||
|
icons = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
52
modules/programs/starship/default.nix
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.starship = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
format = lib.concatStrings [
|
||||||
|
"╭─ "
|
||||||
|
"$username"
|
||||||
|
"$hostname"
|
||||||
|
"$git_branch"
|
||||||
|
"$directory"
|
||||||
|
"$line_break"
|
||||||
|
"╰─ "
|
||||||
|
];
|
||||||
|
|
||||||
|
username = {
|
||||||
|
style_user = "bold purple";
|
||||||
|
style_root = "bold purple";
|
||||||
|
format = "[$user]($style) ";
|
||||||
|
disabled = false;
|
||||||
|
show_always = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hostname = {
|
||||||
|
ssh_only = false;
|
||||||
|
format = "on [$hostname](bold blue) ";
|
||||||
|
disabled = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
directory = {
|
||||||
|
format = "[$path]($style)[$read_only]($read_only_style) ";
|
||||||
|
truncation_length = -1;
|
||||||
|
truncate_to_repo = false;
|
||||||
|
truncation_symbol = "…/";
|
||||||
|
};
|
||||||
|
|
||||||
|
git_branch = {
|
||||||
|
style = "bold fg:97";
|
||||||
|
format = "at [$symbol$branch(:$remote_branch)]($style) ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
212
modules/programs/waybar/default.nix
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.waybar = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = [{
|
||||||
|
height = 24;
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
spacing = 4;
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
"hyprland/window"
|
||||||
|
];
|
||||||
|
modules-center = [
|
||||||
|
];
|
||||||
|
modules-right = [
|
||||||
|
"battery"
|
||||||
|
"wireplumber"
|
||||||
|
"network"
|
||||||
|
"clock"
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
disable-scroll = true;
|
||||||
|
all-outputs = true;
|
||||||
|
format = "{name}";
|
||||||
|
};
|
||||||
|
|
||||||
|
battery = {
|
||||||
|
interval = 1;
|
||||||
|
states = {
|
||||||
|
warning = 30;
|
||||||
|
critical = 15;
|
||||||
|
};
|
||||||
|
forma = " {capacity}%";
|
||||||
|
format-charging = " {capacity}%";
|
||||||
|
format-plugged = " {capacity}%";
|
||||||
|
format-full = " {capacity}%";
|
||||||
|
format-warning = " {capacity}%";
|
||||||
|
format-critical = " {capacity}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
wireplumber = {
|
||||||
|
format = " {volume}%";
|
||||||
|
format-bluetooth = " {volume}%";
|
||||||
|
format-muted = " muted";
|
||||||
|
scroll-step = 1;
|
||||||
|
on-click = "pavucontrol";
|
||||||
|
ignored-sinks = ["Easy Effects Sink"];
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
format = " disconnected";
|
||||||
|
format-wifi = " {essid}";
|
||||||
|
format-ethernet = " {ipaddr}/{cidr}";
|
||||||
|
format-disconnected = " disconnected";
|
||||||
|
max-length = 50;
|
||||||
|
on-click = "nm-connection-editor";
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
interval = 1;
|
||||||
|
format = "{:%Y-%m-%d %a %H:%M:%S}";
|
||||||
|
};
|
||||||
|
|
||||||
|
tray = {
|
||||||
|
spacing = config.theme.outerGap;
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
|
||||||
|
style =
|
||||||
|
let
|
||||||
|
accentColor = "#${config.theme.accentColor}";
|
||||||
|
textColor = "#${config.theme.colors.base05}";
|
||||||
|
baseColor = "#${config.theme.colors.base00}";
|
||||||
|
surfaceColor = "#${config.theme.colors.base02}";
|
||||||
|
greenColor = "#${config.theme.colors.base0B}";
|
||||||
|
yellowColor = "#${config.theme.colors.base0A}";
|
||||||
|
redColor = "#${config.theme.colors.base08}";
|
||||||
|
fontSize = "${toString config.theme.fontSize}px";
|
||||||
|
outerGap = "${toString config.theme.outerGap}px";
|
||||||
|
innerGap = "${toString config.theme.innerGap}px";
|
||||||
|
outerRadius = "${toString config.theme.outerRadius}px";
|
||||||
|
innerRadius = "${toString config.theme.innerRadius}px";
|
||||||
|
borderWidth = "${toString config.theme.borderWidth}px";
|
||||||
|
in ''
|
||||||
|
|
||||||
|
/** Base */
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
font-family: "${config.theme.font}", "${config.theme.iconFont}", "${config.theme.monospaceFont}";
|
||||||
|
font-size: ${fontSize};
|
||||||
|
color: ${textColor};
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar > box {
|
||||||
|
margin: ${outerGap};
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left,
|
||||||
|
.modules-right {
|
||||||
|
padding: ${innerGap} 0px;
|
||||||
|
border-radius: ${outerRadius};
|
||||||
|
background-color: @base;
|
||||||
|
border: ${borderWidth} solid ${accentColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Workspaces */
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
margin-left: ${innerGap};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
all: initial;
|
||||||
|
color: ${textColor};
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: ${innerRadius};
|
||||||
|
padding: ${innerGap} ${outerGap};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused,
|
||||||
|
#workspaces button.active {
|
||||||
|
background-color: ${accentColor};
|
||||||
|
color: ${baseColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: ${redColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Window */
|
||||||
|
|
||||||
|
window#waybar:not(.empty) #window {
|
||||||
|
padding: 0 ${outerGap};
|
||||||
|
border-left: ${borderWidth} solid ${surfaceColor};
|
||||||
|
margin: 0 ${innerGap};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Tray */
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
border: none;
|
||||||
|
margin-right: ${outerGap};
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .passive {
|
||||||
|
-gtk-icon-effect: dim;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .needs-attention {
|
||||||
|
-gtk-icon-effect: highlight;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Right modules */
|
||||||
|
|
||||||
|
#battery,
|
||||||
|
#wireplumber,
|
||||||
|
#network,
|
||||||
|
#clock {
|
||||||
|
padding: 0 ${outerGap};
|
||||||
|
border-right: ${borderWidth} solid ${surfaceColor};
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Battery */
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: ${greenColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: ${yellowColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
color: ${redColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Wireplumber */
|
||||||
|
|
||||||
|
#wireplumber.muted {
|
||||||
|
color: ${redColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Network */
|
||||||
|
|
||||||
|
#network.wifi,
|
||||||
|
#network.ethernet {
|
||||||
|
color: ${greenColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected {
|
||||||
|
color: ${redColor};
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
98
modules/programs/wofi/default.nix
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.desktop.enable {
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = {
|
||||||
|
programs.wofi = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
key_expand = "Tab";
|
||||||
|
term = "kitty";
|
||||||
|
matching = "multi-contains";
|
||||||
|
insensitive = true;
|
||||||
|
gtk_dark = true;
|
||||||
|
hide_scroll = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
style =
|
||||||
|
let
|
||||||
|
accentColor = "#${config.theme.accentColor}";
|
||||||
|
textColor = "#${config.theme.colors.base05}";
|
||||||
|
baseColor = "#${config.theme.colors.base00}";
|
||||||
|
surfaceColor = "#${config.theme.colors.base02}";
|
||||||
|
fontSize = "${toString config.theme.fontSize}px";
|
||||||
|
outerGap = "${toString config.theme.outerGap}px";
|
||||||
|
innerGap = "${toString config.theme.innerGap}px";
|
||||||
|
outerRadius = "${toString config.theme.outerRadius}px";
|
||||||
|
innerRadius = "${toString config.theme.innerRadius}px";
|
||||||
|
borderWidth = "${toString config.theme.borderWidth}px";
|
||||||
|
in ''
|
||||||
|
* {
|
||||||
|
font-family: ${config.theme.monospaceFont};
|
||||||
|
font-size: ${fontSize};
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Window */
|
||||||
|
window {
|
||||||
|
margin: 0px;
|
||||||
|
border: ${borderWidth} solid ${accentColor};
|
||||||
|
border-radius: ${outerRadius};
|
||||||
|
background-color: ${baseColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Outer Box */
|
||||||
|
#outer-box {
|
||||||
|
padding: ${outerGap};
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scroll */
|
||||||
|
#scroll {
|
||||||
|
margin: 0px;
|
||||||
|
padding: ${innerGap};
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Input */
|
||||||
|
#input {
|
||||||
|
margin: ${innerGap};
|
||||||
|
padding: ${innerGap};
|
||||||
|
border: none;
|
||||||
|
color: ${textColor};
|
||||||
|
background-color: ${surfaceColor};
|
||||||
|
border-radius: ${outerRadius};
|
||||||
|
}
|
||||||
|
|
||||||
|
#input:focus,
|
||||||
|
#input:active {
|
||||||
|
border: ${borderWidth} solid ${accentColor};
|
||||||
|
box-shadow: none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text */
|
||||||
|
#text {
|
||||||
|
margin: ${innerGap};
|
||||||
|
padding: ${innerGap};
|
||||||
|
border: none;
|
||||||
|
color: ${textColor};
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Selected Entry */
|
||||||
|
#entry:selected {
|
||||||
|
background-color: ${accentColor};
|
||||||
|
border-radius: ${outerRadius};
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected #text {
|
||||||
|
color: ${baseColor};
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
13
modules/programs/zsh/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
enableGlobalCompInit = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
101
modules/system.nix
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
# common system packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# editor
|
||||||
|
neovim
|
||||||
|
vim
|
||||||
|
# lib
|
||||||
|
libz
|
||||||
|
openssl
|
||||||
|
# shell
|
||||||
|
bash
|
||||||
|
zsh
|
||||||
|
# utility
|
||||||
|
acpi
|
||||||
|
curl
|
||||||
|
htop
|
||||||
|
openssh
|
||||||
|
p7zip
|
||||||
|
ripgrep
|
||||||
|
tree
|
||||||
|
unzip
|
||||||
|
wget
|
||||||
|
];
|
||||||
|
|
||||||
|
# timezone
|
||||||
|
time.timeZone = "Americia/New_York";
|
||||||
|
|
||||||
|
# locale
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
# system component
|
||||||
|
networking.networkmanager.enable = config.system.enable;
|
||||||
|
services.fwupd.enable = config.system.enable;
|
||||||
|
services.pcscd.enable = config.system.enable;
|
||||||
|
services.printing.enable = config.system.enable;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = config.system.enable;
|
||||||
|
alsa.enable = config.system.enable;
|
||||||
|
pulse.enable = config.system.enable;
|
||||||
|
jack.enable = config.system.enable;
|
||||||
|
};
|
||||||
|
|
||||||
|
# gui component
|
||||||
|
services.libinput.enable = config.desktop.enable;
|
||||||
|
|
||||||
|
# create user account
|
||||||
|
users.users.${config.user} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = config.fullName;
|
||||||
|
extraGroups = if config.system.enable then [ "networkmanager" "wheel" "sys" "video" "audio" ] else [ "wheel" ];
|
||||||
|
home = config.homePath;
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
|
||||||
|
# certs
|
||||||
|
security.pki.certificateFiles = [
|
||||||
|
../files/certs/freyanet.crt
|
||||||
|
];
|
||||||
|
|
||||||
|
# fonts
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
dejavu_fonts
|
||||||
|
fira-code
|
||||||
|
fira-code-symbols
|
||||||
|
jetbrains-mono
|
||||||
|
material-icons
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-emoji
|
||||||
|
twemoji-color-font
|
||||||
|
];
|
||||||
|
|
||||||
|
fonts.fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
defaultFonts = {
|
||||||
|
serif = [
|
||||||
|
"Twemoji"
|
||||||
|
"DejaVu Serif"
|
||||||
|
];
|
||||||
|
sansSerif = [
|
||||||
|
"Twemoji"
|
||||||
|
"DejaVu Sans"
|
||||||
|
];
|
||||||
|
monospace = [
|
||||||
|
"Fira Code"
|
||||||
|
"FiraCode Nerd Font Mono"
|
||||||
|
"Font Awesome 6 Pro Regular"
|
||||||
|
"Twemoji"
|
||||||
|
"DejaVu Sans Mono"
|
||||||
|
];
|
||||||
|
emoji = [
|
||||||
|
"Twemoji"
|
||||||
|
"Noto Color Emoji"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
6
modules/themes/catppuccin/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
frappe = import ./frappe.nix;
|
||||||
|
latte = import ./latte.nix;
|
||||||
|
macchiato = import ./macchiato.nix;
|
||||||
|
mocha = import ./mocha.nix;
|
||||||
|
}
|
21
modules/themes/catppuccin/frappe.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
name = "Catppuccin Frappe";
|
||||||
|
author = "https://github.com/catppuccin/catppuccin";
|
||||||
|
|
||||||
|
base00 = "303446"; # base
|
||||||
|
base01 = "292c3c"; # mantle
|
||||||
|
base02 = "414559"; # surface0
|
||||||
|
base03 = "51576d"; # surface1
|
||||||
|
base04 = "626880"; # surface2
|
||||||
|
base05 = "c6d0f5"; # text
|
||||||
|
base06 = "f2d5cf"; # rosewater
|
||||||
|
base07 = "babbf1"; # lavender
|
||||||
|
base08 = "e78284"; # red
|
||||||
|
base09 = "ef9f76"; # peach
|
||||||
|
base0A = "e5c890"; # yellow
|
||||||
|
base0B = "a6d189"; # green
|
||||||
|
base0C = "81c8be"; # teal
|
||||||
|
base0D = "8caaee"; # blue
|
||||||
|
base0E = "ca9ee6"; # mauve
|
||||||
|
base0F = "eebebe"; # flamingo
|
||||||
|
}
|
21
modules/themes/catppuccin/latte.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
name = "Catppuccin Latte";
|
||||||
|
author = "https://github.com/catppuccin/catppuccin";
|
||||||
|
|
||||||
|
base00 = "eff1f5"; # base
|
||||||
|
base01 = "e6e9ef"; # mantle
|
||||||
|
base02 = "ccd0da"; # surface0
|
||||||
|
base03 = "bcc0cc"; # surface1
|
||||||
|
base04 = "acb0be"; # surface2
|
||||||
|
base05 = "4c4f69"; # text
|
||||||
|
base06 = "dc8a78"; # rosewater
|
||||||
|
base07 = "7287fd"; # lavender
|
||||||
|
base08 = "d20f39"; # red
|
||||||
|
base09 = "fe640b"; # peach
|
||||||
|
base0A = "df8e1d"; # yellow
|
||||||
|
base0B = "40a02b"; # green
|
||||||
|
base0C = "179299"; # teal
|
||||||
|
base0D = "1e66f5"; # blue
|
||||||
|
base0E = "8839ef"; # mauve
|
||||||
|
base0F = "dd7878"; # flamingo
|
||||||
|
}
|
21
modules/themes/catppuccin/macchiato.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
name = "Catppuccin Macchiato";
|
||||||
|
author = "https://github.com/catppuccin/catppuccin";
|
||||||
|
|
||||||
|
base00 = "24273a"; # base
|
||||||
|
base01 = "1e2030"; # mantle
|
||||||
|
base02 = "363a4f"; # surface0
|
||||||
|
base03 = "494d64"; # surface1
|
||||||
|
base04 = "5b6078"; # surface2
|
||||||
|
base05 = "cad3f5"; # text
|
||||||
|
base06 = "f4dbd6"; # rosewater
|
||||||
|
base07 = "b7bdf8"; # lavender
|
||||||
|
base08 = "ed8796"; # red
|
||||||
|
base09 = "f5a97f"; # peach
|
||||||
|
base0A = "eed49f"; # yellow
|
||||||
|
base0B = "a6da95"; # green
|
||||||
|
base0C = "8bd5ca"; # teal
|
||||||
|
base0D = "8aadf4"; # blue
|
||||||
|
base0E = "c6a0f6"; # mauve
|
||||||
|
base0F = "f0c6c6"; # flamingo
|
||||||
|
}
|
21
modules/themes/catppuccin/mocha.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
name = "Catppuccin Mocha";
|
||||||
|
author = "https://github.com/catppuccin/catppuccin";
|
||||||
|
|
||||||
|
base00 = "1e1e2e"; # base
|
||||||
|
base01 = "181825"; # mantle
|
||||||
|
base02 = "313244"; # surface0
|
||||||
|
base03 = "45475a"; # surface1
|
||||||
|
base04 = "585b70"; # surface2
|
||||||
|
base05 = "cdd6f4"; # text
|
||||||
|
base06 = "f5e0dc"; # rosewater
|
||||||
|
base07 = "b4befe"; # lavender
|
||||||
|
base08 = "f38ba8"; # red
|
||||||
|
base09 = "fab387"; # peach
|
||||||
|
base0A = "f9e2af"; # yellow
|
||||||
|
base0B = "a6e3a1"; # green
|
||||||
|
base0C = "94e2d5"; # teal
|
||||||
|
base0D = "89b4fa"; # blue
|
||||||
|
base0E = "f5c2e7"; # pink
|
||||||
|
base0F = "f2cdcd"; # flamingo
|
||||||
|
}
|
3
modules/themes/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
catppuccin = import ./catppuccin;
|
||||||
|
}
|
19
options.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
user = "freya";
|
||||||
|
fullName = "Freya Murphy";
|
||||||
|
email = "freya@freyacat.org";
|
||||||
|
|
||||||
|
theme = rec {
|
||||||
|
colors = (import ./modules/themes).catppuccin.mocha;
|
||||||
|
accentColor = colors.base0D;
|
||||||
|
|
||||||
|
opacity = 0.75;
|
||||||
|
outerRadius = 5;
|
||||||
|
innerRadius = 2;
|
||||||
|
outerGap = 10;
|
||||||
|
innerGap = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
wallpaper = "~/.config/nix/files/wallpapers/gay.png";
|
||||||
|
avatar = "~/.config/nix/files/pfps/freya.png";
|
||||||
|
}
|