Compare commits
6 commits
main
...
add-server
Author | SHA1 | Date | |
---|---|---|---|
b761f7218b | |||
c58816d17a | |||
006daa6ebc | |||
6c75a3644f | |||
d472424a4e | |||
43e754db72 |
79 changed files with 1232 additions and 2871 deletions
696
LICENSE
696
LICENSE
|
@ -1,675 +1,21 @@
|
|||
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>.
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Anthony Rodriguez
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# ❄️ flocon
|
||||
# ❄️ nix
|
||||
|
||||
My NixOS configurations, using flakes.
|
||||
|
||||
|
@ -20,7 +20,6 @@ Additionally using a lot of other software you can find in the configuration fil
|
|||
| [hosts](hosts/) | Host-specific |
|
||||
| [lib](lib/) | Helper functions |
|
||||
| [modules](modules/) | NixOS modules |
|
||||
| [pkgs](pkgs/) | Custom packages |
|
||||
| [system](system/) | NixOS configuration |
|
||||
|
||||
My configuration is structured based on the following principles:
|
||||
|
@ -38,6 +37,5 @@ People / repositories I have copied / learned from:
|
|||
|
||||
- [fufexan/dotfiles](https://github.com/fufexan/dotfiles) for the configuration structure
|
||||
- [jacekpoz/nixos](https://git.jacekpoz.pl/poz/niksos) for learning how NixOS modules work
|
||||
- [sodiboo](https://github.com/sodiboo) for helping me a whole lot with Niri-specific issues
|
||||
|
||||
Some bits have also been borrowed from within the configuration, and credit has been given where its due.
|
||||
|
|
437
flake.lock
437
flake.lock
|
@ -1,39 +1,16 @@
|
|||
{
|
||||
"nodes": {
|
||||
"agenix": {
|
||||
"ags": {
|
||||
"inputs": {
|
||||
"darwin": "darwin",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs": "nixpkgs",
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1723293904,
|
||||
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ags": {
|
||||
"inputs": {
|
||||
"astal": "astal",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1732307740,
|
||||
"narHash": "sha256-ZDsYdZOtg5qkK/wfLLB83B3SI+fE32S+/6Ey0ggHODM=",
|
||||
"lastModified": 1728326430,
|
||||
"narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=",
|
||||
"owner": "Aylur",
|
||||
"repo": "ags",
|
||||
"rev": "81159966eb8b39b66c3efc133982fd76920c9605",
|
||||
"rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -42,27 +19,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"astal": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"ags",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731952585,
|
||||
"narHash": "sha256-Sh1E7sJd8JJM3PCU1ZOei/QWz97OLCENIi2rTRoaniw=",
|
||||
"owner": "aylur",
|
||||
"repo": "astal",
|
||||
"rev": "664c7a4ddfcf48c6e8accd3c33bb94424b0e8609",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "aylur",
|
||||
"repo": "astal",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"basix": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
|
@ -70,11 +26,11 @@
|
|||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731727882,
|
||||
"narHash": "sha256-GLHrsoW8nrEGU7Oarwkyhtks5YqPvtcTqWl0+dtFqjM=",
|
||||
"lastModified": 1727493962,
|
||||
"narHash": "sha256-9eYh6s5ChKmm2uqsZijk6PCGoyZyEgZ0BJqt+ESDrqU=",
|
||||
"owner": "notashelf",
|
||||
"repo": "basix",
|
||||
"rev": "5cdb4c25956c93a192c37572236d0a12b068d7f8",
|
||||
"rev": "742cefc42e7fa7bb77f5bd1c3191ff8c8fa8d610",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -104,28 +60,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"agenix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1700795494,
|
||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"ref": "master",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"deploy-rs": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
|
@ -155,11 +89,11 @@
|
|||
},
|
||||
"locked": {
|
||||
"dir": "pkgs/firefox-addons",
|
||||
"lastModified": 1732680201,
|
||||
"narHash": "sha256-3PA+AlonG9xzJrT1NvnD0Id2dBvIVNrSijVwlIinzNo=",
|
||||
"lastModified": 1729491205,
|
||||
"narHash": "sha256-luvUK8ZTRTdsVao7VqnxvGEvA3rjEmfiwakDyHxQhx8=",
|
||||
"owner": "rycee",
|
||||
"repo": "nur-expressions",
|
||||
"rev": "77e347b8897e917e99bf2929a7178d8caa6fd473",
|
||||
"rev": "9764579885c84ba5d4bcd9d3061409a527ff805c",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
|
@ -260,6 +194,24 @@
|
|||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1727826117,
|
||||
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_4": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1715865404,
|
||||
"narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=",
|
||||
|
@ -330,11 +282,11 @@
|
|||
"systems": "systems_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726560853,
|
||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -402,36 +354,15 @@
|
|||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"agenix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1703113217,
|
||||
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||
"lastModified": 1729459288,
|
||||
"narHash": "sha256-gBOVJv+q6Mx8jGvwX7cE6J8+sZmi1uxpRVsO7WxvVuQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1732482255,
|
||||
"narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "a9953635d7f34e7358d5189751110f87e3ac17da",
|
||||
"rev": "1e27f213d77fc842603628bcf2df6681d7d08f7e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -502,7 +433,6 @@
|
|||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"neovim-flake",
|
||||
"nvf",
|
||||
"rnix-lsp",
|
||||
"nixpkgs"
|
||||
|
@ -522,36 +452,13 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"neovim-flake": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nvf": "nvf"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731867828,
|
||||
"narHash": "sha256-7OSiuI0Jgc5rLXkBuKzj7mNxKkkESqO2rwD+PDQHoqw=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "5bbc441313c556a4dbc9f27a369e1bcfe5ccce65",
|
||||
"revCount": 1,
|
||||
"type": "git",
|
||||
"url": "https://git.nezia.dev/nezia/neovim-flake"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.nezia.dev/nezia/neovim-flake"
|
||||
}
|
||||
},
|
||||
"nil": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"neovim-flake",
|
||||
"nvf",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"neovim-flake",
|
||||
"nvf",
|
||||
"nixpkgs"
|
||||
],
|
||||
|
@ -573,19 +480,20 @@
|
|||
},
|
||||
"niri": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_3",
|
||||
"niri-stable": "niri-stable",
|
||||
"niri-unstable": "niri-unstable",
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1732659819,
|
||||
"narHash": "sha256-Z1KdUhm4IQAVEodkl19XvPdZyWbU36bBKnregIffxsw=",
|
||||
"lastModified": 1729499378,
|
||||
"narHash": "sha256-gslhStBw58+LAbcver/2/Q6zjPq9xNZQ/IcoIh7OBck=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "b1ccd1e910af3f72ba02d64f61121b42b4c3184e",
|
||||
"rev": "2e46e95f0e5be7cea740163d87edf628e755cc3e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -597,16 +505,16 @@
|
|||
"niri-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1731483594,
|
||||
"narHash": "sha256-Qjf7alRbPPERfiZsM9EMKX+HwjESky1tieh5PJIkLwE=",
|
||||
"lastModified": 1726304152,
|
||||
"narHash": "sha256-4YDrKMwXGVOBkeaISbxqf24rLuHvO98TnqxWYfgiSeg=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "75c79116a7e40cbc0e110ce0cdd500e896458679",
|
||||
"rev": "6a48728ffb1e638839b07f9ab2f06b2adb41dc61",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"ref": "v0.1.10.1",
|
||||
"ref": "v0.1.9",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -614,11 +522,11 @@
|
|||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1732647766,
|
||||
"narHash": "sha256-ZUcQN/2bqL4BK+ifHX9Om4HJOZQAMefK7iziO/ZeEDo=",
|
||||
"lastModified": 1729444736,
|
||||
"narHash": "sha256-/Q1yf6f9nUBFVqI/t89xfTPmQipaug63LP8TeENg4CA=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "4c480a1ea3280733bc428d9cb38150bfc1a7c36c",
|
||||
"rev": "289ae3604d705cebc82cbcd23ee4534ded16d3af",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -634,11 +542,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1732519917,
|
||||
"narHash": "sha256-AGXhwHdJV0q/WNgqwrR2zriubLr785b02FphaBtyt1Q=",
|
||||
"lastModified": 1729394935,
|
||||
"narHash": "sha256-2ntUG+NJKdfhlrh/tF+jOU0fOesO7lm5ZZVSYitsvH8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-index-database",
|
||||
"rev": "f4a5ca5771ba9ca31ad24a62c8d511a405303436",
|
||||
"rev": "04f8a11f247ba00263b060fbcdc95484fd046104",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -649,11 +557,11 @@
|
|||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1732483221,
|
||||
"narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=",
|
||||
"lastModified": 1729509737,
|
||||
"narHash": "sha256-8OHgqz+tFo21h3hg4/GHizFPws+MMzpEru/+62Z0E8c=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405",
|
||||
"rev": "cc2d3c0e060f981905d52337340ee6ec8b8eb037",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -664,15 +572,15 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1731676054,
|
||||
"narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
|
||||
"owner": "nixos",
|
||||
"lastModified": 1725634671,
|
||||
"narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
|
||||
"rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
|
@ -691,6 +599,18 @@
|
|||
}
|
||||
},
|
||||
"nixpkgs-lib_2": {
|
||||
"locked": {
|
||||
"lastModified": 1727825735,
|
||||
"narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib_3": {
|
||||
"locked": {
|
||||
"lastModified": 1714640452,
|
||||
"narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=",
|
||||
|
@ -720,11 +640,11 @@
|
|||
},
|
||||
"nixpkgs-stable_2": {
|
||||
"locked": {
|
||||
"lastModified": 1731797254,
|
||||
"narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=",
|
||||
"lastModified": 1729307008,
|
||||
"narHash": "sha256-QUvb6epgKi9pCu9CttRQW4y5NqJ+snKr1FZpG/x3Wtc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59",
|
||||
"rev": "a9b86fc2290b69375c5542b622088eb6eca2a7c3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -767,6 +687,38 @@
|
|||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1729256560,
|
||||
"narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1729256560,
|
||||
"narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1726871744,
|
||||
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=",
|
||||
|
@ -782,7 +734,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1656753965,
|
||||
"narHash": "sha256-BCrB3l0qpJokOnIVc3g2lHiGhnjUi0MoXiw6t1o8H1E=",
|
||||
|
@ -798,60 +750,13 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1732521221,
|
||||
"narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1732521221,
|
||||
"narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-unstable",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_8": {
|
||||
"locked": {
|
||||
"lastModified": 1731531548,
|
||||
"narHash": "sha256-sz8/v17enkYmfpgeeuyzniGJU0QQBfmAjlemAUYhfy8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "24f0d4acd634792badd6470134c387a3b039dace",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_9": {
|
||||
"locked": {
|
||||
"lastModified": 1731890469,
|
||||
"narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
|
||||
"lastModified": 1726871744,
|
||||
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5083ec887760adfe12af64830a66807423a859a7",
|
||||
"rev": "a1d92660c6b3b7c26fb883500a80ea9d33321be2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -879,11 +784,11 @@
|
|||
},
|
||||
"nvf": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_3",
|
||||
"flake-parts": "flake-parts_4",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"mnw": "mnw",
|
||||
"nil": "nil",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"nmd": "nmd",
|
||||
"plugin-alpha-nvim": "plugin-alpha-nvim",
|
||||
"plugin-bufdelete-nvim": "plugin-bufdelete-nvim",
|
||||
|
@ -964,7 +869,6 @@
|
|||
"plugin-otter-nvim": "plugin-otter-nvim",
|
||||
"plugin-oxocarbon": "plugin-oxocarbon",
|
||||
"plugin-plenary-nvim": "plugin-plenary-nvim",
|
||||
"plugin-precognition-nvim": "plugin-precognition-nvim",
|
||||
"plugin-project-nvim": "plugin-project-nvim",
|
||||
"plugin-registers": "plugin-registers",
|
||||
"plugin-rose-pine": "plugin-rose-pine",
|
||||
|
@ -991,11 +895,11 @@
|
|||
"systems": "systems_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731058322,
|
||||
"narHash": "sha256-PCR/lHTzZDD7R9HtkSoC24yHbOwqX0VCf4rqWXJLh9I=",
|
||||
"lastModified": 1728378979,
|
||||
"narHash": "sha256-CW/5Cs9m8HupL+6iRMpdHE88OmK9MXH2h3BcXCQw440=",
|
||||
"owner": "notashelf",
|
||||
"repo": "nvf",
|
||||
"rev": "8997e62b3b00ece6d51685b23949e3062a19dd06",
|
||||
"rev": "0947ab38c0bc79780eec599161306157b8de74a3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1014,11 +918,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1732639391,
|
||||
"narHash": "sha256-kFtXjoCIqx9xe0ZryPXpqS6l/HVg71aNcuL8Y5e8+pI=",
|
||||
"lastModified": 1729372184,
|
||||
"narHash": "sha256-Tb2/jJ74pt0nmfprkOW1g5zZphJTNbzLnyDENM+c5+I=",
|
||||
"owner": "nix-community",
|
||||
"repo": "plasma-manager",
|
||||
"rev": "06e3209d11797d9c741e25df06ab61048746bf93",
|
||||
"rev": "9390dadadc58ffda8e494b31ef66a4ae041f6dd1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -2292,22 +2196,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugin-precognition-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1730325090,
|
||||
"narHash": "sha256-onY1Aa+dwLR1wRua52hpSXj6zZOZXjkUlDjDa0xEEcE=",
|
||||
"owner": "tris203",
|
||||
"repo": "precognition.nvim",
|
||||
"rev": "0189e8d6f96275a079b2805d68d49414871885cd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tris203",
|
||||
"repo": "precognition.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugin-project-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -2660,25 +2548,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"portfolio": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_8",
|
||||
"sam-zola": "sam-zola"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731578190,
|
||||
"narHash": "sha256-9T5+xa1Qz4iJn31oq3q4T5JLr4bx3KHolwtPx1EBvlk=",
|
||||
"owner": "nezia1",
|
||||
"repo": "portfolio",
|
||||
"rev": "34130f9c530d0f009865a443bef40531ef9b3dbe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nezia1",
|
||||
"repo": "portfolio",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks-nix": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
|
@ -2709,7 +2578,7 @@
|
|||
"rnix-lsp": {
|
||||
"inputs": {
|
||||
"naersk": "naersk",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs": "nixpkgs_7",
|
||||
"utils": "utils_2"
|
||||
},
|
||||
"locked": {
|
||||
|
@ -2728,20 +2597,18 @@
|
|||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"ags": "ags",
|
||||
"basix": "basix",
|
||||
"deploy-rs": "deploy-rs",
|
||||
"firefox-addons": "firefox-addons",
|
||||
"home-manager": "home-manager_2",
|
||||
"home-manager": "home-manager",
|
||||
"lanzaboote": "lanzaboote",
|
||||
"neovim-flake": "neovim-flake",
|
||||
"niri": "niri",
|
||||
"nix-index-db": "nix-index-db",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_7",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nvf": "nvf",
|
||||
"plasma-manager": "plasma-manager",
|
||||
"portfolio": "portfolio",
|
||||
"systems": "systems_6",
|
||||
"treefmt-nix": "treefmt-nix",
|
||||
"wezterm": "wezterm"
|
||||
|
@ -2775,13 +2642,11 @@
|
|||
"rust-overlay_2": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"neovim-flake",
|
||||
"nvf",
|
||||
"nil",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"neovim-flake",
|
||||
"nvf",
|
||||
"nil",
|
||||
"nixpkgs"
|
||||
|
@ -2809,11 +2674,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729477859,
|
||||
"narHash": "sha256-r0VyeJxy4O4CgTB/PNtfQft9fPfN1VuGvnZiCxDArvg=",
|
||||
"lastModified": 1726280639,
|
||||
"narHash": "sha256-YfLRPlFZWrT2oRLNAoqf7G3+NnUTDdlIJk6tmBU7kXM=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "ada8266712449c4c0e6ee6fcbc442b3c217c79e1",
|
||||
"rev": "e9f8641c92f26fd1e076e705edb12147c384171d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -2822,34 +2687,18 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"sam-zola": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1612976548,
|
||||
"narHash": "sha256-ut1NiSM0GooRrHFikvuTCLU2XhpplhFQejFSbTa9ZdU=",
|
||||
"owner": "janbaudisch",
|
||||
"repo": "zola-sam",
|
||||
"rev": "890b51b4105fd2e63f5e417e5cb63b8e25d5721f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "janbaudisch",
|
||||
"repo": "zola-sam",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
@ -2945,14 +2794,14 @@
|
|||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_9"
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1732643199,
|
||||
"narHash": "sha256-uI7TXEb231o8dkwB5AUCecx3AQtosRmL6hKgnckvjps=",
|
||||
"lastModified": 1729242555,
|
||||
"narHash": "sha256-6jWSWxv2crIXmYSEb3LEVsFkCkyVHNllk61X4uhqfCs=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "84637a7ab04179bdc42aa8fd0af1909fba76ad0c",
|
||||
"rev": "d986489c1c757f6921a48c1439f19bfb9b8ecab5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -3008,11 +2857,11 @@
|
|||
},
|
||||
"locked": {
|
||||
"dir": "nix",
|
||||
"lastModified": 1732036472,
|
||||
"narHash": "sha256-8lv1bc7Lw5S7UFOduShwSHfBzB4Vl0ex22Cb+q/qLi0=",
|
||||
"lastModified": 1729006311,
|
||||
"narHash": "sha256-1xtKJHu6CFnOhp4snof+WSTwcdPgwIaD6mBODP/cv3w=",
|
||||
"owner": "wez",
|
||||
"repo": "wezterm",
|
||||
"rev": "4050072da21cc3106d0985281d75978c07e22abc",
|
||||
"rev": "9ddca7bde92090792dbcdc65c1e9897c362196d7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -3026,16 +2875,16 @@
|
|||
"xwayland-satellite-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1730166465,
|
||||
"narHash": "sha256-nq7bouXQXaaPPo/E+Jbq+wNHnatD4dY8OxSrRqzvy6s=",
|
||||
"lastModified": 1718165778,
|
||||
"narHash": "sha256-dwF9nI54a6Fo9XU5s4qmvMXSgCid3YQVGxch00qEMvI=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "a713cf46cb7db84a0d1b57c3a397c610cad3cf98",
|
||||
"rev": "b6d281967cb0b7bf1dfdb8d0f597b517dc4aa5c5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"ref": "v0.5",
|
||||
"ref": "v0.4",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -3043,11 +2892,11 @@
|
|||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1732233710,
|
||||
"narHash": "sha256-gWf9dX6DVx0ssK2G3yrFG9yMT9UU0mDwyD51z/Q6FTA=",
|
||||
"lastModified": 1729139001,
|
||||
"narHash": "sha256-BADKw4fQma8tUNBRfmS9YLXTRXK4nYyXIxQdhGuEV0s=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "02f30546264ff8407cbb39528b3a3cc3045e53c1",
|
||||
"rev": "ab2d09962c425670a4a7ca6ef5d92a0f06632499",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
25
flake.nix
25
flake.nix
|
@ -5,8 +5,6 @@
|
|||
self,
|
||||
nixpkgs,
|
||||
systems,
|
||||
agenix,
|
||||
deploy-rs,
|
||||
treefmt-nix,
|
||||
...
|
||||
} @ inputs: let
|
||||
|
@ -18,20 +16,17 @@
|
|||
packages = [
|
||||
pkgs.alejandra
|
||||
pkgs.git
|
||||
deploy-rs.packages.${pkgs.system}.default
|
||||
agenix.packages.${pkgs.system}.default
|
||||
];
|
||||
};
|
||||
});
|
||||
formatter = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
|
||||
nixosConfigurations = import ./hosts {inherit inputs;};
|
||||
packages = eachSystem (pkgs: import ./pkgs {inherit inputs pkgs;});
|
||||
deploy.nodes = import ./nodes {inherit inputs;};
|
||||
checks = builtins.mapAttrs (_: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
||||
nixosModules = import ./modules;
|
||||
nixosConfigurations = import ./hosts {inherit self inputs;};
|
||||
deploy.nodes = import ./nodes {inherit self inputs;};
|
||||
};
|
||||
inputs = {
|
||||
# nix related
|
||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
systems.url = "github:nix-systems/default-linux";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||
lanzaboote = {
|
||||
|
@ -48,10 +43,6 @@
|
|||
};
|
||||
|
||||
# other
|
||||
agenix = {
|
||||
url = "github:ryantm/agenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
ags.url = "github:Aylur/ags";
|
||||
basix.url = "github:notashelf/basix";
|
||||
deploy-rs.url = "github:serokell/deploy-rs";
|
||||
|
@ -59,12 +50,8 @@
|
|||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
niri.url = "github:sodiboo/niri-flake";
|
||||
neovim-flake = {
|
||||
url = "git+https://git.nezia.dev/nezia/neovim-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
portfolio.url = "github:nezia1/portfolio";
|
||||
niri = {url = "github:sodiboo/niri-flake";};
|
||||
nvf.url = "github:notashelf/nvf";
|
||||
plasma-manager = {
|
||||
url = "github:nix-community/plasma-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
|
156
home/programs/ags/config.js
Normal file
156
home/programs/ags/config.js
Normal file
|
@ -0,0 +1,156 @@
|
|||
const mpris = await Service.import("mpris");
|
||||
const audio = await Service.import("audio");
|
||||
const battery = await Service.import("battery");
|
||||
const systemtray = await Service.import("systemtray");
|
||||
import { NotificationPopups } from "./notificationPopups.js";
|
||||
const date = Variable("", {
|
||||
poll: [1000, 'date "+%H:%M %b %e."'],
|
||||
});
|
||||
|
||||
// widgets can be only assigned as a child in one container
|
||||
// so to make a reuseable widget, make it a function
|
||||
// then you can simply instantiate one by calling it
|
||||
|
||||
function Clock() {
|
||||
return Widget.Label({
|
||||
class_name: "clock",
|
||||
label: date.bind(),
|
||||
});
|
||||
}
|
||||
|
||||
function Media() {
|
||||
const label = Utils.watch("", mpris, "player-changed", () => {
|
||||
if (mpris.players[0]) {
|
||||
const { track_artists, track_title } = mpris.players[0];
|
||||
return `${track_artists.join(", ")} - ${track_title}`;
|
||||
} else {
|
||||
return "Nothing is playing";
|
||||
}
|
||||
});
|
||||
|
||||
return Widget.Button({
|
||||
class_name: "media",
|
||||
on_primary_click: () => mpris.getPlayer("")?.playPause(),
|
||||
on_scroll_up: () => mpris.getPlayer("")?.next(),
|
||||
on_scroll_down: () => mpris.getPlayer("")?.previous(),
|
||||
child: Widget.Label({ label }),
|
||||
});
|
||||
}
|
||||
|
||||
function Volume() {
|
||||
const icons = {
|
||||
101: "overamplified",
|
||||
67: "high",
|
||||
34: "medium",
|
||||
1: "low",
|
||||
0: "muted",
|
||||
};
|
||||
|
||||
function getIcon() {
|
||||
const icon = audio.speaker.is_muted
|
||||
? 0
|
||||
: [101, 67, 34, 1, 0].find(
|
||||
(threshold) => threshold <= audio.speaker.volume * 100,
|
||||
);
|
||||
|
||||
return `audio-volume-${icons[icon]}-symbolic`;
|
||||
}
|
||||
|
||||
const icon = Widget.Icon({
|
||||
icon: Utils.watch(getIcon(), audio.speaker, getIcon),
|
||||
});
|
||||
|
||||
const slider = Widget.Slider({
|
||||
hexpand: true,
|
||||
draw_value: false,
|
||||
on_change: ({ value }) => (audio.speaker.volume = value),
|
||||
setup: (self) =>
|
||||
self.hook(audio.speaker, () => {
|
||||
self.value = audio.speaker.volume || 0;
|
||||
}),
|
||||
});
|
||||
|
||||
return Widget.Box({
|
||||
class_name: "volume",
|
||||
css: "min-width: 180px",
|
||||
children: [icon, slider],
|
||||
});
|
||||
}
|
||||
|
||||
function BatteryLabel() {
|
||||
const value = battery.bind("percent").as((p) => (p > 0 ? p / 100 : 0));
|
||||
const icon = battery
|
||||
.bind("percent")
|
||||
.as((p) => `battery-level-${Math.floor(p / 10) * 10}-symbolic`);
|
||||
|
||||
return Widget.Box({
|
||||
class_name: "battery",
|
||||
visible: battery.bind("available"),
|
||||
children: [
|
||||
Widget.Icon({ icon }),
|
||||
Widget.LevelBar({
|
||||
widthRequest: 140,
|
||||
vpack: "center",
|
||||
value,
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
function SysTray() {
|
||||
const items = systemtray.bind("items").as((items) =>
|
||||
items.map((item) =>
|
||||
Widget.Button({
|
||||
child: Widget.Icon({ icon: item.bind("icon") }),
|
||||
on_primary_click: (_, event) => item.activate(event),
|
||||
on_secondary_click: (_, event) => item.openMenu(event),
|
||||
tooltip_markup: item.bind("tooltip_markup"),
|
||||
}),
|
||||
),
|
||||
);
|
||||
|
||||
return Widget.Box({
|
||||
children: items,
|
||||
});
|
||||
}
|
||||
|
||||
// layout of the bar
|
||||
function Left() {
|
||||
return Widget.Box({});
|
||||
}
|
||||
|
||||
function Center() {
|
||||
return Widget.Box({
|
||||
spacing: 8,
|
||||
children: [Media()],
|
||||
});
|
||||
}
|
||||
|
||||
function Right() {
|
||||
return Widget.Box({
|
||||
hpack: "end",
|
||||
spacing: 8,
|
||||
children: [Volume(), BatteryLabel(), Clock(), SysTray()],
|
||||
});
|
||||
}
|
||||
|
||||
function Bar() {
|
||||
return Widget.Window({
|
||||
name: "bar", // name has to be unique
|
||||
class_name: "bar",
|
||||
anchor: ["top", "left", "right"],
|
||||
exclusivity: "exclusive",
|
||||
child: Widget.CenterBox({
|
||||
start_widget: Left(),
|
||||
center_widget: Center(),
|
||||
end_widget: Right(),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
App.config({
|
||||
style: "./style.css",
|
||||
windows: [Bar(), NotificationPopups()],
|
||||
});
|
||||
|
||||
export {};
|
42
home/programs/ags/default.nix
Normal file
42
home/programs/ags/default.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
cfg = config.programs.ags;
|
||||
in {
|
||||
imports = [inputs.ags.homeManagerModules.default];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
libdbusmenu-gtk3
|
||||
dart-sass
|
||||
];
|
||||
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
|
||||
# null or path, leave as null if you don't want hm to manage the config
|
||||
configDir = ./.;
|
||||
|
||||
# additional packages to add to gjs's runtime
|
||||
extraPackages = with pkgs; [
|
||||
gtksourceview
|
||||
webkitgtk
|
||||
accountsservice
|
||||
];
|
||||
};
|
||||
systemd.user.services.ags = {
|
||||
Unit = {
|
||||
Description = "Aylur's Gtk Shell";
|
||||
PartOf = [
|
||||
"graphical-session.target"
|
||||
];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${cfg.package}/bin/ags";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
Install.WantedBy = ["graphical-session.target"];
|
||||
};
|
||||
}
|
124
home/programs/ags/notificationPopups.js
Normal file
124
home/programs/ags/notificationPopups.js
Normal file
|
@ -0,0 +1,124 @@
|
|||
const notifications = await Service.import("notifications");
|
||||
|
||||
/** @param {import('resource:///com/github/Aylur/ags/service/notifications.js').Notification} n */
|
||||
function NotificationIcon({ app_entry, app_icon, image }) {
|
||||
if (image) {
|
||||
return Widget.Box({
|
||||
css:
|
||||
`background-image: url("${image}");` +
|
||||
"background-size: contain;" +
|
||||
"background-repeat: no-repeat;" +
|
||||
"background-position: center;",
|
||||
});
|
||||
}
|
||||
|
||||
let icon = "dialog-information-symbolic";
|
||||
if (Utils.lookUpIcon(app_icon)) icon = app_icon;
|
||||
|
||||
if (app_entry && Utils.lookUpIcon(app_entry)) icon = app_entry;
|
||||
|
||||
return Widget.Box({
|
||||
child: Widget.Icon(icon),
|
||||
});
|
||||
}
|
||||
|
||||
/** @param {import('resource:///com/github/Aylur/ags/service/notifications.js').Notification} n */
|
||||
function Notification(n) {
|
||||
const icon = Widget.Box({
|
||||
vpack: "start",
|
||||
class_name: "icon",
|
||||
child: NotificationIcon(n),
|
||||
});
|
||||
|
||||
const title = Widget.Label({
|
||||
class_name: "title",
|
||||
xalign: 0,
|
||||
justification: "left",
|
||||
hexpand: true,
|
||||
max_width_chars: 24,
|
||||
truncate: "end",
|
||||
wrap: true,
|
||||
label: n.summary,
|
||||
use_markup: true,
|
||||
});
|
||||
|
||||
const body = Widget.Label({
|
||||
class_name: "body",
|
||||
hexpand: true,
|
||||
use_markup: true,
|
||||
xalign: 0,
|
||||
justification: "left",
|
||||
label: n.body,
|
||||
wrap: true,
|
||||
});
|
||||
|
||||
const actions = Widget.Box({
|
||||
class_name: "actions",
|
||||
children: n.actions.map(({ id, label }) =>
|
||||
Widget.Button({
|
||||
class_name: "action-button",
|
||||
on_clicked: () => {
|
||||
n.invoke(id);
|
||||
n.dismiss();
|
||||
},
|
||||
hexpand: true,
|
||||
child: Widget.Label(label),
|
||||
}),
|
||||
),
|
||||
});
|
||||
|
||||
return Widget.EventBox(
|
||||
{
|
||||
attribute: { id: n.id },
|
||||
on_primary_click: n.dismiss,
|
||||
},
|
||||
Widget.Box(
|
||||
{
|
||||
class_name: `notification ${n.urgency}`,
|
||||
vertical: true,
|
||||
},
|
||||
Widget.Box([icon, Widget.Box({ vertical: true }, title, body)]),
|
||||
actions,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
export function NotificationPopups(monitor = 0) {
|
||||
const list = Widget.Box({
|
||||
vertical: true,
|
||||
children: notifications.popups.map(Notification),
|
||||
});
|
||||
|
||||
function onNotified(_, /** @type {number} */ id) {
|
||||
const n = notifications.getNotification(id);
|
||||
if (n) list.children = [Notification(n), ...list.children];
|
||||
}
|
||||
|
||||
function onDismissed(_, /** @type {number} */ id) {
|
||||
list.children.find((n) => n.attribute.id === id)?.destroy();
|
||||
}
|
||||
|
||||
list
|
||||
.hook(notifications, onNotified, "notified")
|
||||
.hook(notifications, onDismissed, "dismissed");
|
||||
|
||||
return Widget.Window({
|
||||
monitor,
|
||||
name: `notifications${monitor}`,
|
||||
class_name: "notification-popups",
|
||||
anchor: ["top", "right"],
|
||||
child: Widget.Box({
|
||||
css: "min-width: 2px; min-height: 2px;",
|
||||
class_name: "notifications",
|
||||
vertical: true,
|
||||
child: list,
|
||||
|
||||
/** this is a simple one liner that could be used instead of
|
||||
hooking into the 'notified' and 'dismissed' signals.
|
||||
but its not very optimized becuase it will recreate
|
||||
the whole list everytime a notification is added or dismissed */
|
||||
// children: notifications.bind('popups')
|
||||
// .as(popups => popups.map(Notification))
|
||||
}),
|
||||
});
|
||||
}
|
15
home/programs/ags/src/README.md
Normal file
15
home/programs/ags/src/README.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
|
||||
# Starter Config
|
||||
|
||||
if suggestions don't work, first make sure
|
||||
you have TypeScript LSP working in your editor
|
||||
|
||||
if you do not want typechecking only suggestions
|
||||
|
||||
```json
|
||||
// tsconfig.json
|
||||
"checkJs": false
|
||||
```
|
||||
|
||||
types are symlinked to:
|
||||
/home/nezia/.local/share/com.github.Aylur.ags/types
|
57
home/programs/ags/style.css
Normal file
57
home/programs/ags/style.css
Normal file
|
@ -0,0 +1,57 @@
|
|||
window.notification-popups box.notifications {
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.icon {
|
||||
min-width: 68px;
|
||||
min-height: 68px;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.icon image {
|
||||
font-size: 58px;
|
||||
/* to center the icon */
|
||||
margin: 5px;
|
||||
color: @theme_fg_color;
|
||||
}
|
||||
|
||||
.icon box {
|
||||
min-width: 68px;
|
||||
min-height: 68px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.notification {
|
||||
min-width: 350px;
|
||||
border-radius: 11px;
|
||||
padding: 1em;
|
||||
margin: 0.5em;
|
||||
border: 1px solid @wm_borders_edge;
|
||||
background-color: @theme_bg_color;
|
||||
}
|
||||
|
||||
.notification.critical {
|
||||
border: 1px solid lightcoral;
|
||||
}
|
||||
|
||||
.title {
|
||||
color: @theme_fg_color;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
.body {
|
||||
color: @theme_unfocused_fg_color;
|
||||
}
|
||||
|
||||
.actions .action-button {
|
||||
margin: 0 0.4em;
|
||||
margin-top: 0.8em;
|
||||
}
|
||||
|
||||
.actions .action-button:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.actions .action-button:last-child {
|
||||
margin-right: 0;
|
||||
}
|
18
home/programs/ags/tsconfig.json
Normal file
18
home/programs/ags/tsconfig.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"module": "ES2022",
|
||||
"lib": [
|
||||
"ES2022"
|
||||
],
|
||||
"allowJs": true,
|
||||
"checkJs": true,
|
||||
"strict": true,
|
||||
"noImplicitAny": false,
|
||||
"baseUrl": ".",
|
||||
"typeRoots": [
|
||||
"./types"
|
||||
],
|
||||
"skipLibCheck": true
|
||||
}
|
||||
}
|
|
@ -12,81 +12,46 @@
|
|||
in {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
|
||||
extraPolicies = {
|
||||
DisableTelemetry = true;
|
||||
DisablePocket = true;
|
||||
DisableFeedbackCommands = true;
|
||||
DisableFirefoxStudies = true;
|
||||
OfferToSaveLogins = false;
|
||||
OffertosaveloginsDefault = false;
|
||||
PasswordManagerEnabled = false;
|
||||
SearchSuggestEnabled = true;
|
||||
policies = {
|
||||
DisableTelemetry = true;
|
||||
DisablePocket = true;
|
||||
DisableFeedbackCommands = true;
|
||||
DisableFirefoxStudies = true;
|
||||
OfferToSaveLogins = false;
|
||||
OffertosaveloginsDefault = false;
|
||||
PasswordManagerEnabled = false;
|
||||
|
||||
# https://github.com/Sly-Harvey/NixOS/blob/f9da2691ea46565256ad757959cfc26ec6cee10d/modules/programs/browser/firefox/default.nix#L58-L163
|
||||
"3rdparty".Extensions = {
|
||||
"addon@darkreader.org" = {
|
||||
permissions = ["internal:privateBrowsingAllowed"];
|
||||
# https://github.com/Sly-Harvey/NixOS/blob/f9da2691ea46565256ad757959cfc26ec6cee10d/modules/programs/browser/firefox/default.nix#L58-L163
|
||||
# TODO: declare which block lists are needed
|
||||
"3rdparty".Extensions = {
|
||||
"addon@darkreader.org" = {
|
||||
permissions = ["internal:privateBrowsingAllowed"];
|
||||
enabled = true;
|
||||
automation = {
|
||||
enabled = true;
|
||||
automation = {
|
||||
enabled = true;
|
||||
behavior = "OnOff";
|
||||
mode = "system";
|
||||
};
|
||||
detectDarkTheme = true;
|
||||
enabledByDefault = true;
|
||||
changeBrowserTheme = false;
|
||||
enableForProtectedPages = true;
|
||||
fetchNews = false;
|
||||
previewNewDesign = true;
|
||||
behavior = "OnOff";
|
||||
mode = "system";
|
||||
};
|
||||
"uBlock0@raymondhill.net" = {
|
||||
permissions = ["internal:privateBrowsingAllowed"];
|
||||
advancedSettings = [
|
||||
[
|
||||
"userResourcesLocation"
|
||||
"https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/video-swap-new/video-swap-new-ublock-origin.js"
|
||||
]
|
||||
];
|
||||
adminSettings = {
|
||||
userSettings = {
|
||||
uiTheme = "dark";
|
||||
advancedUserEnabled = true;
|
||||
userFiltersTrusted = true;
|
||||
importedLists = [
|
||||
"https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt"
|
||||
];
|
||||
selectedFilterLists = [
|
||||
"FRA-0"
|
||||
"adguard-cookies"
|
||||
"adguard-mobile-app-banners"
|
||||
"adguard-other-annoyances"
|
||||
"adguard-popup-overlays"
|
||||
"adguard-social"
|
||||
"adguard-spyware-url"
|
||||
"adguard-widgets"
|
||||
"easylist"
|
||||
"easylist-annoyances"
|
||||
"easylist-chat"
|
||||
"easylist-newsletters"
|
||||
"easylist-notifications"
|
||||
"easyprivacy"
|
||||
"fanboy-cookiemonster"
|
||||
"https://filters.adtidy.org/extension/ublock/filters/3.txt"
|
||||
"https://github.com/DandelionSprout/adfilt/raw/master/LegitimateURLShortener.txt"
|
||||
"plowe-0"
|
||||
"ublock-annoyances"
|
||||
"ublock-badware"
|
||||
"ublock-cookies-adguard"
|
||||
"ublock-cookies-easylist"
|
||||
"ublock-filters"
|
||||
"ublock-privacy"
|
||||
"ublock-quick-fixes"
|
||||
"ublock-unbreak"
|
||||
"urlhaus-1"
|
||||
"https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt"
|
||||
];
|
||||
};
|
||||
detectDarkTheme = true;
|
||||
enabledByDefault = true;
|
||||
changeBrowserTheme = false;
|
||||
enableForProtectedPages = true;
|
||||
fetchNews = false;
|
||||
previewNewDesign = true;
|
||||
};
|
||||
"uBlock0@raymondhill.net" = {
|
||||
permissions = ["internal:privateBrowsingAllowed"];
|
||||
advancedSettings = [
|
||||
[
|
||||
"userResourcesLocation"
|
||||
"https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/video-swap-new/video-swap-new-ublock-origin.js"
|
||||
]
|
||||
];
|
||||
adminSettings = {
|
||||
userSettings = {
|
||||
uiTheme = "dark";
|
||||
advancedUserEnabled = true;
|
||||
userFiltersTrusted = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -107,6 +72,7 @@ in {
|
|||
ublock-origin
|
||||
violentmonkey
|
||||
];
|
||||
|
||||
# https://git.jacekpoz.pl/poz/niksos/src/commit/a48647a1c5bc6877a1100a65f4dc169b2fc11ed7/hosts/hape/firefox.nix
|
||||
search = {
|
||||
default = "SearxNG";
|
||||
|
@ -135,24 +101,49 @@ in {
|
|||
"type" = "application/x-suggestions+json";
|
||||
}
|
||||
];
|
||||
};
|
||||
"MyNixOS" = {
|
||||
urls = [{template = "https://mynixos.com/search?q={searchTerms}";}];
|
||||
iconUpdateURL = "https://mynixos.com/favicon.ico";
|
||||
iconUpdateURL = "https://search.nezia.dev/favicon.ico";
|
||||
updateInterval = 24 * 60 * 60 * 1000;
|
||||
definedAliases = ["@nx"];
|
||||
definedAliases = ["@s"];
|
||||
};
|
||||
"Nix Packages" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://search.nixos.org/packages";
|
||||
params = [
|
||||
{
|
||||
name = "type";
|
||||
value = "packages";
|
||||
}
|
||||
{
|
||||
name = "query";
|
||||
value = "{searchTerms}";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@np"];
|
||||
};
|
||||
"NixOS Wiki" = {
|
||||
urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}];
|
||||
iconUpdateURL = "https://wiki.nixos.org/favicon.ico";
|
||||
updateInterval = 24 * 60 * 60 * 1000;
|
||||
definedAliases = ["@nw"];
|
||||
};
|
||||
"NixOS Options" = {
|
||||
urls = [{template = "https://search.nixos.org/options?channel=unstable&type=packages&query={searchTerms}";}];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@no"];
|
||||
};
|
||||
"Noogle" = {
|
||||
urls = [{template = "https://noogle.dev/q?term={searchTerms}";}];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@ng"];
|
||||
};
|
||||
"GitHub Nix" = {
|
||||
# https://github.com/search?q=language%3Anix+NOT+is%3Afork+programs.neovim&type=code
|
||||
urls = [{template = "https://github.com/search?q=language:nix NOT is:fork {searchTerms}&type=code";}];
|
||||
iconUpdateURL = "https://github.com/favicon.ico";
|
||||
updateInterval = 24 * 60 * 60 * 1000;
|
||||
definedAliases = ["@ghn"];
|
||||
"Home Manager" = {
|
||||
urls = [{template = "https://home-manager-options.extranix.com/?release=master&query={searchTerms}";}];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@hm"];
|
||||
};
|
||||
"Google".metaData.alias = "@g"; # builtin engines only support specifying one additional alias
|
||||
};
|
||||
|
|
|
@ -1,49 +1,39 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./browsers
|
||||
./media
|
||||
./xdg.nix
|
||||
./gtk.nix
|
||||
./editors/neovim.nix
|
||||
./editors/helix.nix
|
||||
];
|
||||
|
||||
# idk where to put this
|
||||
programs = {
|
||||
fzf.enable = true;
|
||||
fastfetch.enable = true;
|
||||
hyfetch = {
|
||||
hyfetch.enable = true;
|
||||
yazi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
preset = "nonbinary";
|
||||
mode = "rgb";
|
||||
backend = "fastfetch";
|
||||
color_align.mode = "horizontal";
|
||||
};
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
};
|
||||
|
||||
# miscellaneous programs that do not need to be configured
|
||||
home.packages = with pkgs; [
|
||||
cinny-desktop
|
||||
entr
|
||||
fractal
|
||||
geary
|
||||
gnome-control-center
|
||||
imhex
|
||||
logisim-evolution
|
||||
mission-center
|
||||
nautilus
|
||||
obsidian
|
||||
playerctl
|
||||
proton-pass
|
||||
simple-scan
|
||||
vesktop
|
||||
wl-clipboard
|
||||
|
||||
inputs.neovim-flake.packages.${pkgs.system}.default
|
||||
fractal
|
||||
cinny-desktop
|
||||
gnome-control-center
|
||||
mission-center
|
||||
playerctl
|
||||
nautilus
|
||||
simple-scan
|
||||
entr
|
||||
];
|
||||
}
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
}: let
|
||||
inherit (lib) getExe;
|
||||
in {
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
121
home/programs/editors/neovim.nix
Normal file
121
home/programs/editors/neovim.nix
Normal file
|
@ -0,0 +1,121 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [inputs.nvf.homeManagerModules.default];
|
||||
|
||||
programs.nvf = {
|
||||
enable = true;
|
||||
settings.vim = {
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
enableLuaLoader = true;
|
||||
preventJunkFiles = true;
|
||||
tabWidth = 4;
|
||||
autoIndent = false;
|
||||
useSystemClipboard = true;
|
||||
|
||||
luaConfigPost = lib.concatStrings [
|
||||
''
|
||||
vim.opt.formatoptions:remove('c')
|
||||
vim.opt.formatoptions:remove('r')
|
||||
vim.opt.formatoptions:remove('o')
|
||||
''
|
||||
];
|
||||
|
||||
maps = {
|
||||
normal = {
|
||||
"<leader>m" = {
|
||||
silent = true;
|
||||
action = "<cmd>make<CR>";
|
||||
}; # Same as nnoremap <leader>m <silent> <cmd>make<CR>
|
||||
"<leader>t" = {
|
||||
silent = true;
|
||||
action = "<cmd>Neotree toggle<CR>";
|
||||
};
|
||||
};
|
||||
};
|
||||
theme = {
|
||||
enable = true;
|
||||
name = "catppuccin";
|
||||
style = "macchiato";
|
||||
};
|
||||
|
||||
visuals = {
|
||||
enable = true;
|
||||
nvimWebDevicons.enable = true;
|
||||
};
|
||||
|
||||
ui = {
|
||||
noice.enable = true;
|
||||
};
|
||||
notify.nvim-notify.enable = true;
|
||||
|
||||
statusline.lualine = {
|
||||
enable = true;
|
||||
theme = "auto";
|
||||
};
|
||||
|
||||
git.enable = true;
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
lspSignature.enable = true;
|
||||
lspconfig.enable = true;
|
||||
formatOnSave = true;
|
||||
mappings = {
|
||||
addWorkspaceFolder = "<leader>wa";
|
||||
codeAction = "<leader>a";
|
||||
goToDeclaration = "gD";
|
||||
goToDefinition = "gd";
|
||||
hover = "K";
|
||||
listImplementations = "gi";
|
||||
listReferences = "gr";
|
||||
listWorkspaceFolders = "<leader>wl";
|
||||
nextDiagnostic = "<leader>k";
|
||||
previousDiagnostic = "<leader>j";
|
||||
openDiagnosticFloat = "<leader>e";
|
||||
removeWorkspaceFolder = "<leader>wr";
|
||||
renameSymbol = "<leader>r";
|
||||
signatureHelp = "<C-k>";
|
||||
};
|
||||
};
|
||||
|
||||
autocomplete = {
|
||||
enable = true;
|
||||
alwaysComplete = true;
|
||||
};
|
||||
|
||||
autopairs.enable = true;
|
||||
languages = {
|
||||
enableExtraDiagnostics = true;
|
||||
enableFormat = true;
|
||||
enableLSP = true;
|
||||
enableTreesitter = true;
|
||||
|
||||
nix.enable = true;
|
||||
clang.enable = true;
|
||||
python.enable = true;
|
||||
ts.enable = true;
|
||||
};
|
||||
|
||||
treesitter = {
|
||||
enable = true;
|
||||
fold = true;
|
||||
context.enable = true;
|
||||
grammars = [
|
||||
pkgs.vimPlugins.nvim-treesitter.builtGrammars.nix
|
||||
pkgs.vimPlugins.nvim-treesitter.builtGrammars.c
|
||||
pkgs.vimPlugins.nvim-treesitter.builtGrammars.python
|
||||
];
|
||||
};
|
||||
|
||||
binds.whichKey.enable = true;
|
||||
filetree.neo-tree.enable = true;
|
||||
|
||||
telescope.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -14,6 +14,17 @@
|
|||
dpi-aware = "auto";
|
||||
font = "monospace:size=14";
|
||||
};
|
||||
colors = let
|
||||
inherit (inputs.basix.schemeData.base16.${osConfig.theme.scheme}) palette;
|
||||
in {
|
||||
background = "${palette.base00}ff";
|
||||
text = "${palette.base05}ff";
|
||||
input = "${palette.base05}ff";
|
||||
selection = "${palette.base02}ff";
|
||||
selection-text = "${palette.base07}ff";
|
||||
selection-match = "${palette.base0D}ff";
|
||||
border = "${palette.base0E}ff";
|
||||
};
|
||||
border.width = 5;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,21 +1,15 @@
|
|||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
home.packages = [
|
||||
pkgs.bottles
|
||||
pkgs.lutris
|
||||
pkgs.mangohud
|
||||
pkgs.path-of-building
|
||||
pkgs.protonplus
|
||||
pkgs.r2modman
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
bottles
|
||||
lutris
|
||||
mangohud
|
||||
path-of-building
|
||||
protonplus
|
||||
r2modman
|
||||
|
||||
# steamtinkerlaunch dependencies
|
||||
pkgs.xdotool
|
||||
pkgs.xorg.xwininfo
|
||||
pkgs.yad
|
||||
|
||||
inputs.self.packages.${pkgs.system}.bolt-launcher
|
||||
xdotool
|
||||
xorg.xwininfo
|
||||
yad
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
pkgs,
|
||||
osConfig,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
|
@ -26,7 +25,7 @@
|
|||
color-scheme = "prefer-dark";
|
||||
};
|
||||
"org/gnome/desktop/background" = {
|
||||
picture-uri-dark = "file://" + builtins.toString osConfig.theme.wallpaper;
|
||||
picture-uri-dark = "file://" + builtins.toString config.style.wallpaper;
|
||||
};
|
||||
|
||||
"org/gnome/desktop/search-providers" = {
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
}: let
|
||||
isDark = inputs.basix.schemeData.base16.${osConfig.theme.scheme}.variant == "dark";
|
||||
in {
|
||||
home.pointerCursor = {
|
||||
inherit (osConfig.theme.cursorTheme) name package size;
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
|
@ -14,6 +25,7 @@
|
|||
|
||||
gtk3.extraConfig = {
|
||||
gtk-decoration-layout = ":menu";
|
||||
gtk-application-prefer-dark-theme = isDark;
|
||||
};
|
||||
|
||||
gtk4.extraConfig = {
|
||||
|
@ -21,5 +33,21 @@
|
|||
};
|
||||
|
||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||
|
||||
iconTheme = {
|
||||
inherit (osConfig.theme.gtk.iconTheme) name package;
|
||||
};
|
||||
|
||||
theme = lib.mkIf (!osConfig.services.xserver.desktopManager.gnome.enable) {
|
||||
inherit (osConfig.theme.gtk.theme) name package;
|
||||
};
|
||||
};
|
||||
dconf.settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme =
|
||||
if isDark
|
||||
then "prefer-dark"
|
||||
else "default";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
_: {
|
||||
{pkgs, ...}: {
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
|
@ -13,5 +13,13 @@ _: {
|
|||
scroll-step = "100";
|
||||
zoom-min = "10";
|
||||
};
|
||||
|
||||
extraConfig = "include catppuccin-frappe";
|
||||
};
|
||||
xdg.configFile = {
|
||||
"zathura/catppuccin-frappe".source = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/catppuccin/zathura/main/src/catppuccin-frappe";
|
||||
hash = "sha256-xdWI/Ai3iE0zRF/9DCxILKmVaNWbfqHm7Xeh6eKM3MY=";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,19 +8,14 @@
|
|||
terminal = "foot";
|
||||
browser = "firefox";
|
||||
prefix = "Alt";
|
||||
guiFileManager = "nautilus";
|
||||
cliFileManager = "yazi";
|
||||
in {
|
||||
programs.niri.settings.binds = {
|
||||
"${prefix}+D".action.spawn = appLauncher;
|
||||
"${prefix}+Return".action.spawn = terminal;
|
||||
"${prefix}+W".action.spawn = browser;
|
||||
"${prefix}+E".action.spawn = guiFileManager;
|
||||
"${prefix}+Shift+E".action.spawn = [terminal "-e" cliFileManager];
|
||||
|
||||
"${prefix}+Shift+E".action.quit.skip-confirmation = true;
|
||||
"${prefix}+Shift+Slash".action = config.lib.niri.actions.show-hotkey-overlay;
|
||||
"${prefix}+Q".action = config.lib.niri.actions.close-window;
|
||||
"${prefix}+Shift+Q".action.quit.skip-confirmation = true;
|
||||
"${prefix}+F".action = config.lib.niri.actions.maximize-column;
|
||||
"${prefix}+Shift+F".action = config.lib.niri.actions.fullscreen-window;
|
||||
"${prefix}+C".action = config.lib.niri.actions.center-column;
|
||||
|
@ -162,7 +157,5 @@ in {
|
|||
"XF86AudioMedia" = {
|
||||
action.spawn = ["sh" "-c" "env XDG_CURRENT_DESKTOP=gnome gnome-control-center"];
|
||||
};
|
||||
|
||||
"XF86PowerOff".action.spawn = "wlogout";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
}: let
|
||||
colors = inputs.basix.schemeData.base16.${osConfig.theme.scheme}.palette;
|
||||
in {
|
||||
imports = [./binds.nix];
|
||||
|
||||
xdg.portal = {
|
||||
|
@ -21,12 +25,9 @@
|
|||
|
||||
programs.niri = {
|
||||
settings = {
|
||||
input = {
|
||||
power-key-handling.enable = false;
|
||||
keyboard.xkb = {
|
||||
layout = "us";
|
||||
options = "compose:ralt";
|
||||
};
|
||||
input.keyboard.xkb = {
|
||||
layout = "us";
|
||||
options = "compose:ralt";
|
||||
};
|
||||
|
||||
prefer-no-csd = true;
|
||||
|
@ -35,6 +36,7 @@
|
|||
layout = {
|
||||
focus-ring = {
|
||||
enable = true;
|
||||
active.color = "#${colors.base0E}";
|
||||
};
|
||||
always-center-single-column = true;
|
||||
};
|
||||
|
@ -110,64 +112,4 @@
|
|||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
|
||||
programs.wlogout = {
|
||||
enable = true;
|
||||
|
||||
layout = let
|
||||
systemd = let
|
||||
systemd = lib.getExe' pkgs.systemd;
|
||||
in {
|
||||
loginctl = systemd "loginctl";
|
||||
systemctl = systemd "systemctl";
|
||||
};
|
||||
in [
|
||||
{
|
||||
action = "${systemd.loginctl} lock-session";
|
||||
keybind = "l";
|
||||
label = "lock";
|
||||
text = "Lock";
|
||||
}
|
||||
|
||||
{
|
||||
action = "${systemd.systemctl} hibernate";
|
||||
keybind = "h";
|
||||
label = "hibernate";
|
||||
text = "Hibernate";
|
||||
}
|
||||
|
||||
{
|
||||
action = "${
|
||||
systemd.loginctl
|
||||
} terminate-user ${
|
||||
config.home.username
|
||||
}";
|
||||
|
||||
keybind = "q";
|
||||
label = "logout";
|
||||
text = "Logout";
|
||||
}
|
||||
|
||||
{
|
||||
action = "${systemd.systemctl} poweroff";
|
||||
keybind = "p";
|
||||
label = "shutdown";
|
||||
text = "Shutdown";
|
||||
}
|
||||
|
||||
{
|
||||
action = "${systemd.systemctl} suspend";
|
||||
keybind = "s";
|
||||
label = "suspend";
|
||||
text = "Suspend";
|
||||
}
|
||||
|
||||
{
|
||||
action = "${systemd.systemctl} reboot";
|
||||
keybind = "r";
|
||||
label = "reboot";
|
||||
text = "Reboot";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
37
home/programs/plasma/default.nix
Normal file
37
home/programs/plasma/default.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||
];
|
||||
rograms.plasma = {
|
||||
enable = true;
|
||||
workspace = {
|
||||
lookAndFeel = "org.kde.breezedark.desktop";
|
||||
inherit (config.theme) wallpaper;
|
||||
};
|
||||
|
||||
input = {
|
||||
touchpads = [
|
||||
{
|
||||
enable = true;
|
||||
naturalScroll = true;
|
||||
vendorId = "093a";
|
||||
productId = "0274";
|
||||
name = "PIXA3854:00 093A:0274 Touchpad";
|
||||
}
|
||||
];
|
||||
keyboard = {
|
||||
options = [
|
||||
"compose:ralt"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
qalculate-qt
|
||||
];
|
||||
}
|
|
@ -1,4 +1,11 @@
|
|||
{pkgs, ...}: {
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
osConfig,
|
||||
...
|
||||
}: let
|
||||
inherit (inputs.basix.schemeData.base16.${osConfig.theme.scheme}) palette;
|
||||
in {
|
||||
# requires `security.pam.services.swaylock = { };` at the system level or else
|
||||
# unlock will not work.
|
||||
programs.swaylock = {
|
||||
|
@ -19,6 +26,32 @@
|
|||
effect-pixelate = 5;
|
||||
|
||||
ignore-empty-password = false; # needed for PAM to work with fprintd / password
|
||||
|
||||
inside-color = palette.base01;
|
||||
inside-clear-color = palette.base0C;
|
||||
inside-caps-lock-color = palette.base09;
|
||||
inside-ver-color = palette.base0D;
|
||||
inside-wrong-color = palette.base08;
|
||||
key-hl-color = palette.base0B;
|
||||
layout-bg-color = palette.base00;
|
||||
layout-border-color = palette.base05;
|
||||
layout-text-color = palette.base07;
|
||||
line-color = palette.base00;
|
||||
line-clear-color = palette.base0C;
|
||||
line-caps-lock-color = palette.base09;
|
||||
line-ver-color = palette.base0D;
|
||||
line-wrong-color = palette.base08;
|
||||
ring-color = palette.base02;
|
||||
ring-clear-color = palette.base0C;
|
||||
ring-caps-lock-color = palette.base09;
|
||||
ring-ver-color = palette.base0D;
|
||||
ring-wrong-color = palette.base08;
|
||||
separator-color = palette.base02;
|
||||
text-color = palette.base07;
|
||||
text-clear-color = palette.base04;
|
||||
text-caps-lock-color = palette.base04;
|
||||
text-ver-color = palette.base04;
|
||||
text-wrong-color = palette.base04;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,178 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
osConfig,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) getExe mkMerge mkIf;
|
||||
inherit (builtins) readFile;
|
||||
in {
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
style = readFile ./style.css;
|
||||
settings = {
|
||||
mainBar = mkMerge [
|
||||
{
|
||||
layer = "top";
|
||||
position = "top";
|
||||
height = 30;
|
||||
|
||||
margin-top = 6;
|
||||
margin-left = 6;
|
||||
margin-right = 6;
|
||||
margin-bottom = 0;
|
||||
|
||||
modules-left = ["niri/workspaces" "niri/window"];
|
||||
modules-center = ["group/clock"];
|
||||
modules-right =
|
||||
["tray" "group/status" "group/power"]
|
||||
++ lib.optional config.services.swaync.enable "custom/notification";
|
||||
|
||||
battery = {
|
||||
interval = 10;
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-charging = " {capacity}% - {time}";
|
||||
format-full = " {capacity}% - Full";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
max-length = 25;
|
||||
};
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-bluetooth = "{icon} {volume}%";
|
||||
format-muted = " ";
|
||||
format-icons = {
|
||||
"alsa_output.pci-0000_00_1f.3.analog-stereo" = "";
|
||||
"alsa_output.pci-0000_00_1f.3.analog-stereo-muted" = "";
|
||||
headphone = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
phone-muted = "";
|
||||
portable = "";
|
||||
car = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
scroll-step = 1;
|
||||
on-click = "pavucontrol";
|
||||
ignored-sinks = [
|
||||
"Easy Effects Sink"
|
||||
];
|
||||
};
|
||||
|
||||
"power-profiles-daemon" = {
|
||||
format-icons = {
|
||||
default = "";
|
||||
performance = "";
|
||||
balanced = "";
|
||||
power-saver = "";
|
||||
};
|
||||
};
|
||||
|
||||
"group/status" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"pulseaudio"
|
||||
"power-profiles-daemon"
|
||||
"network"
|
||||
"battery"
|
||||
];
|
||||
};
|
||||
|
||||
"group/power" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"custom/power"
|
||||
];
|
||||
};
|
||||
|
||||
"group/clock" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
"clock#time"
|
||||
"clock#date"
|
||||
];
|
||||
};
|
||||
|
||||
"custom/power" = {
|
||||
format = "";
|
||||
tooltip = false;
|
||||
on-click = getExe pkgs.wlogout;
|
||||
};
|
||||
|
||||
"clock#date" = {
|
||||
format = "{:%D}";
|
||||
tooltip-format = "<tt><big>{calendar}</big></tt>";
|
||||
};
|
||||
|
||||
"clock#time" = {
|
||||
format = "{:%H:%M}";
|
||||
tooltip-format = "{tz_list}";
|
||||
timezones = [
|
||||
osConfig.time.timeZone
|
||||
"US/Eastern"
|
||||
];
|
||||
};
|
||||
|
||||
network = {
|
||||
interface = "wlp1s0";
|
||||
format = "{ifname}";
|
||||
format-wifi = "{icon}";
|
||||
format-ethernet = "{ipaddr}/{cidr} ";
|
||||
format-disconnected = "";
|
||||
tooltip-format = "{ifname} via {gwaddr} ";
|
||||
tooltip-format-wifi = "{essid} ({signalStrength}%)";
|
||||
tooltip-format-ethernet = "{ifname} ";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
max-length = 50;
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
}
|
||||
(mkIf osConfig.programs.niri.enable {
|
||||
"niri/window" = {
|
||||
icon = true;
|
||||
};
|
||||
})
|
||||
(mkIf config.services.swaync.enable {
|
||||
"custom/notification" = {
|
||||
tooltip = false;
|
||||
format = "{icon} ";
|
||||
format-icons = {
|
||||
notification = "";
|
||||
none = "";
|
||||
dnd-notification = "";
|
||||
dnd-none = "";
|
||||
};
|
||||
return-type = "json";
|
||||
exec = "swaync-client -swb";
|
||||
on-click = "swaync-client -t -sw";
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
pkgs.pavucontrol
|
||||
];
|
||||
}
|
|
@ -1,91 +0,0 @@
|
|||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
border: none;
|
||||
border-radius: 0px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
border-radius: 2em;
|
||||
font-family: "Symbols Nerd Font", Inter, sans-serif;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
background: alpha(
|
||||
@base00,
|
||||
0.9999999
|
||||
); /* niri issue workaround, thanks https://github.com/oatmealine/nix-config/blob/bfdddd2cb36ef659bcddc28e0dbb542b6db8b3bc/modules/desktop/themes/catppuccin/waybar.css#L14 */
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
.modules-right box {
|
||||
background: @base02;
|
||||
padding: 0.15em 0.25em;
|
||||
border-radius: 1em;
|
||||
margin: 0 0.25em;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0;
|
||||
background: @base02;
|
||||
}
|
||||
|
||||
#workspaces button:nth-child(1) {
|
||||
border-top-left-radius: 1em;
|
||||
border-bottom-left-radius: 1em;
|
||||
}
|
||||
#workspaces button:nth-last-child(1) {
|
||||
border-top-right-radius: 1em;
|
||||
border-bottom-right-radius: 1em;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 0.5em;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background: @base0E;
|
||||
color: @base02;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background: @base08;
|
||||
}
|
||||
|
||||
#window {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right {
|
||||
margin: 0.4em 0.5em;
|
||||
}
|
||||
|
||||
#battery,
|
||||
#clock,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#tray,
|
||||
#power-profiles-daemon {
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right {
|
||||
margin: 0.4em 0.5em;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
padding: 0 1.2em;
|
||||
color: @base08;
|
||||
}
|
||||
|
||||
#custom-notification {
|
||||
padding: 0 1.2em;
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
{
|
||||
osConfig,
|
||||
lib,
|
||||
lib',
|
||||
...
|
||||
}: let
|
||||
inherit (lib) optionalString;
|
||||
inherit (builtins) readFile;
|
||||
in {
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
style = readFile ./style.css;
|
||||
settings = {
|
||||
positionX = "right";
|
||||
positionY = "top";
|
||||
layer = "overlay";
|
||||
control-center-layer = "top";
|
||||
layer-shell = true;
|
||||
cssPriority = "application";
|
||||
control-center-margin-top = 0;
|
||||
control-center-margin-bottom = 0;
|
||||
control-center-margin-right = 0;
|
||||
control-center-margin-left = 0;
|
||||
notification-2fa-action = true;
|
||||
notification-inline-replies = false;
|
||||
notification-icon-size = 64;
|
||||
notification-body-image-height = 100;
|
||||
notification-body-image-width = 200;
|
||||
};
|
||||
};
|
||||
# systemd.user.services.swaync.Service.Environment = "WAYLAND_DISPLAY=wayland-1";
|
||||
systemd.user.services.swaync.Unit.ConditionEnvironment = lib.mkForce "";
|
||||
}
|
|
@ -1,450 +0,0 @@
|
|||
* {
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "Ubuntu Nerd Font";
|
||||
transition:
|
||||
background 200ms,
|
||||
border-radius 200ms; /* exclude color from transition so it looks more natural */
|
||||
}
|
||||
|
||||
trough highlight {
|
||||
background: @base05;
|
||||
}
|
||||
|
||||
scale trough {
|
||||
margin: 0rem 1rem;
|
||||
background-color: @base02;
|
||||
min-height: 8px;
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
slider {
|
||||
background-color: @base0D;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background {
|
||||
box-shadow:
|
||||
0 0 8px 0 rgba(0, 0, 0, 0.8),
|
||||
inset 0 0 0 1px @base02;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: @base00;
|
||||
color: @base05;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification {
|
||||
padding: 7px;
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 @base08;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.summary {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.time {
|
||||
color: @base03;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.body {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base02;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base02;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: @base00;
|
||||
background-color: @base08;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button:hover {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button:active {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
box-shadow:
|
||||
0 0 8px 0 rgba(0, 0, 0, 0.8),
|
||||
inset 0 0 0 1px @base02;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: @base00;
|
||||
color: @base05;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.control-center .widget-title > label {
|
||||
color: @base05;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.control-center .widget-title button {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base02;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base04;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base02;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 @base08;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.summary {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.time {
|
||||
color: @base03;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.body {
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action {
|
||||
border-radius: 7px;
|
||||
color: @base05;
|
||||
background-color: @base00;
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base02;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
> *:last-child
|
||||
> *
|
||||
.notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: @base00;
|
||||
background-color: @base08;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:hover {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.close-button:active {
|
||||
background-color: @base08;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:hover {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base04;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:active {
|
||||
box-shadow: inset 0 0 0 1px @base03;
|
||||
background-color: @base0C;
|
||||
color: @base05;
|
||||
}
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: @base08;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: @base0D;
|
||||
}
|
||||
|
||||
.control-center-dnd {
|
||||
margin-top: 5px;
|
||||
border-radius: 8px;
|
||||
background: @base02;
|
||||
border: 1px solid @base03;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.control-center-dnd:checked {
|
||||
background: @base0C;
|
||||
}
|
||||
|
||||
.control-center-dnd slider {
|
||||
background: @base0C;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
margin: 0px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
background: @base02;
|
||||
border: 1px solid @base03;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: @base0C;
|
||||
color: @base00;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: @base03;
|
||||
border-radius: 8px;
|
||||
border: 1px solid @base03;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-player {
|
||||
background: @base02;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-title {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.widget-mpris .widget-mpris-subtitle {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > button > label {
|
||||
font-size: 3rem;
|
||||
padding: 0.5rem 2rem;
|
||||
}
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > :last-child {
|
||||
color: @base08;
|
||||
}
|
||||
|
||||
.power-buttons button:hover,
|
||||
.powermode-buttons button:hover,
|
||||
.screenshot-buttons button:hover {
|
||||
background: @base02;
|
||||
}
|
||||
|
||||
.control-center .widget-label > label {
|
||||
color: @base05;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button label {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
.widget-volume {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.widget-volume label {
|
||||
font-size: 1.5rem;
|
||||
color: @base0C;
|
||||
}
|
||||
|
||||
.widget-volume trough highlight {
|
||||
background: @base0C;
|
||||
}
|
||||
|
||||
.widget-backlight trough highlight {
|
||||
background: @base0A;
|
||||
}
|
||||
|
||||
.widget-backlight label {
|
||||
font-size: 1.5rem;
|
||||
color: @base0A;
|
||||
}
|
||||
|
||||
.widget-backlight .KB {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.image {
|
||||
padding-right: 0.5rem;
|
||||
}
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
_: {
|
||||
services.udiskie.enable = true;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
_: {
|
||||
{
|
||||
imports = [
|
||||
./programs
|
||||
./shell
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
inputs,
|
||||
osConfig,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
in {
|
||||
}: {
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
@ -13,6 +13,30 @@ in {
|
|||
font = "monospace:size=14";
|
||||
shell = "${lib.getExe config.programs.fish.package}";
|
||||
};
|
||||
colors = let
|
||||
schemeData = inputs.basix.schemeData.base16.${osConfig.theme.scheme};
|
||||
in {
|
||||
background = schemeData.palette.base00;
|
||||
foreground = schemeData.palette.base05;
|
||||
|
||||
regular0 = schemeData.palette.base01;
|
||||
regular1 = schemeData.palette.base08;
|
||||
regular2 = schemeData.palette.base0B;
|
||||
regular3 = schemeData.palette.base0A;
|
||||
regular4 = schemeData.palette.base0D;
|
||||
regular5 = schemeData.palette.base0E;
|
||||
regular6 = schemeData.palette.base0C;
|
||||
regular7 = schemeData.palette.base06;
|
||||
|
||||
bright0 = schemeData.palette.base02;
|
||||
bright1 = schemeData.palette.base08;
|
||||
bright2 = schemeData.palette.base0B;
|
||||
bright3 = schemeData.palette.base0A;
|
||||
bright4 = schemeData.palette.base0D;
|
||||
bright5 = schemeData.palette.base0E;
|
||||
bright6 = schemeData.palette.base0C;
|
||||
bright7 = schemeData.palette.base07;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
_: {
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
programs.gnome-terminal = {
|
||||
enable = true;
|
||||
showMenubar = true;
|
||||
|
@ -10,6 +14,14 @@ _: {
|
|||
boldIsBright = true;
|
||||
visibleName = "default";
|
||||
font = "Intel One Mono 14";
|
||||
colors = let
|
||||
inherit (inputs.basix.schemeData.base16.${config.theme.scheme}) palette;
|
||||
in {
|
||||
backgroundColor = "#${palette.base00}";
|
||||
foregroundColor = builtins.trace "#${palette.base05}" "#${palette.base05}";
|
||||
|
||||
palette = builtins.attrValues (builtins.mapAttrs (_: color: "#${color}") palette);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
38
home/terminal/emulators/konsole.nix
Normal file
38
home/terminal/emulators/konsole.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.konsole = let
|
||||
inherit (config.theme) scheme;
|
||||
schemeData = inputs.basix.schemeData.base16.${scheme};
|
||||
in {
|
||||
enable = true;
|
||||
defaultProfile = "default";
|
||||
profiles = {
|
||||
default = {
|
||||
font = {
|
||||
name = "monospace";
|
||||
size = 14;
|
||||
};
|
||||
colorScheme = schemeData.name;
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
"MainWindow" = {
|
||||
"MenuBar" = "Disabled";
|
||||
"ToolBarsMovable" = "Disabled";
|
||||
};
|
||||
"KonsoleWindow" = {
|
||||
"ShowMenuBarByDefault" = "false";
|
||||
};
|
||||
};
|
||||
|
||||
customColorSchemes = {
|
||||
"${schemeData.name}" = pkgs.lib.mkKonsoleColorScheme schemeData;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
_: {
|
||||
programs.wezterm = {
|
||||
enable = true;
|
||||
# package = inputs.wezterm.packages.${pkgs.system}.default;
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
_: {
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
config.theme = "ansi";
|
||||
};
|
||||
home.sessionVariables = {
|
||||
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
|
||||
};
|
||||
}
|
|
@ -1,12 +1,11 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./bat.nix
|
||||
./git.nix
|
||||
./gnupg.nix
|
||||
./tmux.nix
|
||||
./direnv.nix
|
||||
./zellij.nix
|
||||
./nix-index.nix
|
||||
./yazi.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
_: {
|
||||
programs = {
|
||||
direnv = {
|
||||
enable = true;
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
{pkgs, ...}: {
|
||||
programs.yazi = let
|
||||
# https://github.com/iynaix/dotfiles/blob/8bb1568019ea26f034ac1af9c499b3ff102391a5/home-manager/shell/yazi.nix#L9-L11
|
||||
mkYaziPlugin = name: text: {
|
||||
"${name}" = toString (pkgs.writeTextDir "${name}.yazi/init.lua" text) + "/${name}.yazi";
|
||||
};
|
||||
in {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
plugins = mkYaziPlugin "smart-enter" ''
|
||||
return {
|
||||
entry = function()
|
||||
local h = cx.active.current.hovered
|
||||
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
|
||||
end,
|
||||
}
|
||||
'';
|
||||
keymap.manager.prepend_keymap = [
|
||||
{
|
||||
on = "l";
|
||||
run = "plugin --sync smart-enter";
|
||||
desc = "Enter the child directory, or open the file";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
8
home/terminal/programs/zellij.nix
Normal file
8
home/terminal/programs/zellij.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
_: {
|
||||
programs.zellij = {
|
||||
enable = true;
|
||||
settings = {
|
||||
pane_frames = false;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -14,10 +14,6 @@
|
|||
name = "fzf";
|
||||
inherit (pkgs.fishPlugins.fzf) src;
|
||||
}
|
||||
{
|
||||
name = "autopair";
|
||||
inherit (pkgs.fishPlugins.autopair) src;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
_: {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableTransience = true;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
_: {
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableBashIntegration = false;
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
{inputs, ...}: let
|
||||
system = "${inputs.self}/system";
|
||||
{self, ...}: let
|
||||
mod = "${self}/system";
|
||||
in {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
./networking.nix # generated at runtime by nixos-infect
|
||||
|
||||
inputs.agenix.nixosModules.default
|
||||
|
||||
"${system}/services/forgejo.nix"
|
||||
"${system}/services/searx.nix"
|
||||
"${system}/services/portfolio.nix"
|
||||
"${mod}/services/forgejo.nix"
|
||||
"${mod}/services/searx.nix"
|
||||
];
|
||||
|
||||
boot.tmp.cleanOnBoot = true;
|
||||
|
@ -17,9 +14,6 @@ in {
|
|||
networking.hostName = "anastacia";
|
||||
networking.domain = "";
|
||||
services.openssh.enable = true;
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEzs7SQH0Vjt9JHoXXmWy9fPU1I3rrRWV5magZFrI5al"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHKEPlN/GU9nJZPleA77HH5NA+6vyhhM84fTSjEwnEgq"
|
||||
];
|
||||
users.users.root.openssh.authorizedKeys.keys = [''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEzs7SQH0Vjt9JHoXXmWy9fPU1I3rrRWV5magZFrI5al''];
|
||||
system.stateVersion = "23.11";
|
||||
}
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
{modulesPath, ...}: {
|
||||
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
|
||||
boot = {
|
||||
loader.grub.device = "/dev/sda";
|
||||
initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
|
||||
initrd.kernelModules = ["nvme"];
|
||||
};
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
|
||||
boot.initrd.kernelModules = ["nvme"];
|
||||
fileSystems."/" = {
|
||||
device = "/dev/sda1";
|
||||
fsType = "ext4";
|
||||
|
|
|
@ -1,27 +1,37 @@
|
|||
{inputs, ...}: let
|
||||
lib' = import ../lib;
|
||||
mkSystem = args:
|
||||
inputs.nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {inherit inputs lib';};
|
||||
modules = args.modules or [];
|
||||
};
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
inherit (inputs.nixpkgs.lib) nixosSystem;
|
||||
specialArgs = {
|
||||
inherit inputs self;
|
||||
};
|
||||
in {
|
||||
vamos = mkSystem {
|
||||
vamos = nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
inherit specialArgs;
|
||||
modules = [
|
||||
./vamos
|
||||
../modules
|
||||
|
||||
self.nixosModules.theme
|
||||
|
||||
inputs.nixos-hardware.nixosModules.framework-13-7040-amd
|
||||
];
|
||||
};
|
||||
|
||||
solaire = mkSystem {
|
||||
solaire = nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
inherit specialArgs;
|
||||
modules = [
|
||||
./solaire
|
||||
../modules
|
||||
self.nixosModules.theme
|
||||
];
|
||||
};
|
||||
|
||||
anastacia = mkSystem {
|
||||
anastacia = nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
inherit specialArgs;
|
||||
modules = [
|
||||
./anastacia
|
||||
];
|
||||
|
|
|
@ -1,44 +1,28 @@
|
|||
{
|
||||
inputs,
|
||||
self,
|
||||
specialArgs,
|
||||
...
|
||||
}: let
|
||||
system = "${inputs.self}/system";
|
||||
home = "${inputs.self}/home";
|
||||
mod = "${self}/system";
|
||||
in {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
./modules
|
||||
|
||||
system
|
||||
"${system}/hardware/uni-sync.nix"
|
||||
"${mod}"
|
||||
"${mod}/hardware/uni-sync.nix"
|
||||
|
||||
"${system}/programs/games.nix"
|
||||
"${system}/hardware/nvidia.nix"
|
||||
|
||||
"${system}/services/logind.nix"
|
||||
"${system}/services/greetd.nix"
|
||||
|
||||
"${system}/programs/niri"
|
||||
|
||||
"${system}/services/documentation.nix"
|
||||
"${mod}/programs/gnome.nix"
|
||||
"${mod}/programs/games.nix"
|
||||
"${mod}/hardware/nvidia.nix"
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
users.nezia.imports = [
|
||||
"${home}"
|
||||
"${home}/services/udiskie.nix"
|
||||
"${home}/programs/games"
|
||||
"${self}/home"
|
||||
"${self}/home/programs/games"
|
||||
|
||||
"${home}/programs/niri"
|
||||
"${home}/programs/waybar"
|
||||
"${home}/services/swaync"
|
||||
"${home}/programs/fuzzel.nix"
|
||||
"${home}/programs/swaybg.nix"
|
||||
"${home}/programs/swaylock.nix"
|
||||
"${home}/programs/swayidle.nix"
|
||||
|
||||
"${home}/terminal/emulators/foot.nix"
|
||||
"${self}/home/terminal/emulators/foot.nix"
|
||||
];
|
||||
extraSpecialArgs = specialArgs;
|
||||
};
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
{
|
||||
theme = {
|
||||
wallpaper = ../../../wallpapers/lucy-edgerunners-wallpaper.jpg;
|
||||
schemeName = "catppuccin-macchiato";
|
||||
enable = true;
|
||||
gtk.enable = false;
|
||||
};
|
||||
theme.wallpaper = ../../wallpapers/lucy-edgerunners-wallpaper.jpg;
|
||||
}
|
||||
|
|
|
@ -1,47 +1,43 @@
|
|||
{
|
||||
inputs,
|
||||
self,
|
||||
specialArgs,
|
||||
...
|
||||
}: let
|
||||
system = "${inputs.self}/system";
|
||||
home = "${inputs.self}/home";
|
||||
mod = "${self}/system";
|
||||
in {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
./modules
|
||||
|
||||
"${system}"
|
||||
"${system}/core/lanzaboote.nix"
|
||||
"${mod}"
|
||||
"${mod}/core/lanzaboote.nix"
|
||||
|
||||
"${system}/hardware/fprintd.nix"
|
||||
"${system}/services/power.nix"
|
||||
"${system}/services/brightness.nix"
|
||||
"${mod}/hardware/fprintd.nix"
|
||||
"${mod}/services/power.nix"
|
||||
"${mod}/services/brightness.nix"
|
||||
"${mod}/services/keyd.nix"
|
||||
|
||||
"${system}/services/logind.nix"
|
||||
"${system}/services/greetd.nix"
|
||||
"${system}/services/kanata.nix"
|
||||
"${mod}/services/logind.nix"
|
||||
"${mod}/services/greetd.nix"
|
||||
|
||||
"${system}/programs/niri"
|
||||
"${system}/services/gnome.nix"
|
||||
"${system}/services/mail.nix"
|
||||
|
||||
"${system}/services/syncthing.nix"
|
||||
"${mod}/programs/niri"
|
||||
"${mod}/services/gnome.nix"
|
||||
"${mod}/services/mail.nix"
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
users.nezia.imports = [
|
||||
"${home}"
|
||||
"${home}/services/udiskie.nix"
|
||||
"${self}/home"
|
||||
"${self}/home/services/udiskie.nix"
|
||||
|
||||
"${home}/programs/niri"
|
||||
"${home}/programs/waybar"
|
||||
"${home}/services/swaync"
|
||||
"${home}/programs/fuzzel.nix"
|
||||
"${home}/programs/swaybg.nix"
|
||||
"${home}/programs/swaylock.nix"
|
||||
"${home}/programs/swayidle.nix"
|
||||
"${self}/home/programs/niri"
|
||||
"${self}/home/programs/ags"
|
||||
"${self}/home/programs/fuzzel.nix"
|
||||
"${self}/home/programs/swaybg.nix"
|
||||
"${self}/home/programs/swaylock.nix"
|
||||
"${self}/home/programs/swayidle.nix"
|
||||
|
||||
"${home}/terminal/emulators/foot.nix"
|
||||
"${self}/home/terminal/emulators/foot.nix"
|
||||
];
|
||||
extraSpecialArgs = specialArgs;
|
||||
};
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{pkgs, ...}: {
|
||||
theme = {
|
||||
enable = true;
|
||||
wallpaper = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/e0cf0eb237dc5baba86661a3572b20a6183c1876/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png?raw=true";
|
||||
hash = "sha256-/HAtpGwLxjNfJvX5/4YZfM8jPNStaM3gisK8+ImRmQ4=";
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
# convert rrggbb hex to rgba(r, g, b, a)
|
||||
rgba = lib: color: opacity: let
|
||||
r = toString (hexToDec lib (builtins.substring 0 2 color));
|
||||
g = toString (hexToDec lib (builtins.substring 2 2 color));
|
||||
b = toString (hexToDec lib (builtins.substring 4 2 color));
|
||||
in "rgba(${r}, ${g}, ${b}, ${opacity})";
|
||||
rgba = c: let
|
||||
r = toString (hexToDec (builtins.substring 0 2 c));
|
||||
g = toString (hexToDec (builtins.substring 2 2 c));
|
||||
b = toString (hexToDec (builtins.substring 4 2 c));
|
||||
in "rgba(${r}, ${g}, ${b}, .5)";
|
||||
|
||||
hexToDec = lib: v: let
|
||||
# Map of hex characters to their decimal values
|
||||
# Helper function to convert hex color to decimal RGB values
|
||||
hexToDec = v: let
|
||||
hexToInt = {
|
||||
"0" = 0;
|
||||
"1" = 1;
|
||||
|
@ -32,29 +36,58 @@ let
|
|||
"E" = 14;
|
||||
"F" = 15;
|
||||
};
|
||||
# Remove any leading `#` from the input
|
||||
cleanHex =
|
||||
if lib.strings.substring 0 1 v == "#"
|
||||
then lib.strings.substring 1 (builtins.stringLength v - 1) v
|
||||
else v;
|
||||
# Convert the cleaned string into characters
|
||||
chars = lib.strings.stringToCharacters cleanHex;
|
||||
chars = lib.strings.stringToCharacters v;
|
||||
in
|
||||
# Fold over the characters to calculate the decimal value
|
||||
builtins.foldl' (acc: char: acc * 16 + hexToInt."${char}") 0 chars;
|
||||
lib.foldl' (a: v: a + v) 0
|
||||
(lib.imap (k: v: hexToInt."${v}" * (pow 16 (builtins.length chars - k - 1))) chars);
|
||||
|
||||
blurImage = pkgs: path:
|
||||
pkgs.runCommand "${builtins.baseNameOf path}-blurred" {
|
||||
buildInputs = [pkgs.imagemagick];
|
||||
}
|
||||
''
|
||||
magick ${path} -gaussian-blur 0x12 "$out"
|
||||
'';
|
||||
# Power function for exponentiation
|
||||
pow = base: exponent: lib.foldl' (acc: _: acc * base) 1 (lib.range 1 exponent);
|
||||
|
||||
generateGtkColors = lib: palette: (lib.concatLines
|
||||
(lib.mapAttrsToList
|
||||
(name: color: "@define-color ${name} ${color};")
|
||||
palette));
|
||||
# Converts hex color to KDE color format
|
||||
colorToKde = name: hexColor: let
|
||||
r = hexToDec (builtins.substring 0 2 hexColor);
|
||||
g = hexToDec (builtins.substring 2 2 hexColor);
|
||||
b = hexToDec (builtins.substring 4 2 hexColor);
|
||||
in "[${name}]\nColor=${toString r},${toString g},${toString b}\n";
|
||||
|
||||
# Mapping base16 colors to KDE color scheme sections
|
||||
schemeToKonsole = scheme: let
|
||||
inherit (scheme) palette;
|
||||
|
||||
colorMap = {
|
||||
base00 = ["Background" "BackgroundFaint" "BackgroundIntense"];
|
||||
base01 = ["Color0"];
|
||||
base02 = ["Color0Intense"];
|
||||
base04 = ["Color4"];
|
||||
base05 = ["Foreground" "ForegroundFaint" "ForegroundIntense"];
|
||||
base06 = ["Color7"];
|
||||
base07 = ["Color7Intense"];
|
||||
base08 = ["Color1" "Color1Intense"];
|
||||
base09 = ["Color1Intense"];
|
||||
base0A = ["Color3" "Color3Intense"];
|
||||
base0B = ["Color2" "Color2Intense"];
|
||||
base0C = ["Color6" "Color6Intense"];
|
||||
base0D = ["Color4" "Color4Intense"];
|
||||
base0E = ["Color5" "Color5Intense"];
|
||||
};
|
||||
|
||||
colorSections = lib.concatStringsSep "\n" (lib.attrsets.mapAttrsToList
|
||||
(name: value:
|
||||
lib.concatMapStrings (slot: colorToKde slot value) (colorMap.${name} or []))
|
||||
palette);
|
||||
in
|
||||
lib.concatStringsSep "\n" [
|
||||
"[General]"
|
||||
"Description=${scheme.name}"
|
||||
"Opacity=1"
|
||||
"Wallpaper="
|
||||
colorSections
|
||||
];
|
||||
|
||||
# Create a KDE konsole color scheme from base16 colors
|
||||
mkKonsoleColorScheme = scheme:
|
||||
pkgs.writeText "${scheme.name}.colorscheme" (schemeToKonsole scheme);
|
||||
in {
|
||||
inherit blurImage generateGtkColors rgba;
|
||||
inherit mkKonsoleColorScheme rgba;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
imports = [./theme];
|
||||
theme = import ./theme;
|
||||
}
|
||||
|
|
|
@ -1,28 +1,21 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
lib',
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkEnableOption mkOption mkIf attrNames;
|
||||
inherit (lib.types) path package enum;
|
||||
inherit (lib') generateGtkColors;
|
||||
cfg = config.theme;
|
||||
inherit (lib) mkOption;
|
||||
inherit (lib.types) string path package;
|
||||
in {
|
||||
imports = [./gtk.nix];
|
||||
options.theme = {
|
||||
enable = mkEnableOption "theme";
|
||||
schemeName = mkOption {
|
||||
scheme = mkOption {
|
||||
description = ''
|
||||
Name of the tinted-theming color scheme to use.
|
||||
Name of the tinted-scheming color scheme to use.
|
||||
'';
|
||||
type = enum (attrNames inputs.basix.schemeData.base16);
|
||||
example = "catppuccin-macchiato";
|
||||
type = string;
|
||||
example = lib.literalExpression "catppuccin-macchiato";
|
||||
default = "catppuccin-macchiato";
|
||||
};
|
||||
|
||||
wallpaper = mkOption {
|
||||
description = ''
|
||||
Location of the wallpaper that will be used throughout the system.
|
||||
|
@ -57,154 +50,4 @@ in {
|
|||
};
|
||||
};
|
||||
};
|
||||
config = let
|
||||
scheme = inputs.basix.schemeData.base16.${config.theme.schemeName};
|
||||
in
|
||||
mkIf cfg.enable
|
||||
{
|
||||
home-manager.users.nezia = {
|
||||
home.pointerCursor = {
|
||||
inherit (config.theme.cursorTheme) name package size;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
iconTheme = {
|
||||
inherit (config.theme.gtk.iconTheme) name package;
|
||||
};
|
||||
|
||||
theme = lib.mkIf (!config.services.xserver.desktopManager.gnome.enable) {
|
||||
inherit (config.theme.gtk.theme) name package;
|
||||
};
|
||||
|
||||
gtk3.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = scheme.variant == "dark";
|
||||
};
|
||||
};
|
||||
|
||||
services.swaync.style =
|
||||
generateGtkColors lib scheme.palette;
|
||||
|
||||
programs = {
|
||||
niri = {
|
||||
settings.layout.focus-ring.active.color = scheme.palette.base0E;
|
||||
};
|
||||
|
||||
foot.settings.colors = let
|
||||
inherit (lib.strings) removePrefix;
|
||||
# because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b
|
||||
palette = builtins.mapAttrs (_: color: removePrefix "#" color) scheme.palette;
|
||||
in {
|
||||
background = palette.base00;
|
||||
foreground = palette.base05;
|
||||
|
||||
regular0 = palette.base01;
|
||||
regular1 = palette.base08;
|
||||
regular2 = palette.base0B;
|
||||
regular3 = palette.base0A;
|
||||
regular4 = palette.base0D;
|
||||
regular5 = palette.base0E;
|
||||
regular6 = palette.base0C;
|
||||
regular7 = palette.base06;
|
||||
|
||||
bright0 = palette.base02;
|
||||
bright1 = palette.base08;
|
||||
bright2 = palette.base0B;
|
||||
bright3 = palette.base0A;
|
||||
bright4 = palette.base0D;
|
||||
bright5 = palette.base0E;
|
||||
bright6 = palette.base0C;
|
||||
bright7 = palette.base07;
|
||||
};
|
||||
|
||||
waybar.style =
|
||||
generateGtkColors lib scheme.palette;
|
||||
fuzzel.settings.colors = {
|
||||
background = "${scheme.palette.base00}ff";
|
||||
text = "${scheme.palette.base05}ff";
|
||||
input = "${scheme.palette.base05}ff";
|
||||
selection = "${scheme.palette.base02}ff";
|
||||
selection-text = "${scheme.palette.base07}ff";
|
||||
selection-match = "${scheme.palette.base0D}ff";
|
||||
border = "${scheme.palette.base0E}ff";
|
||||
};
|
||||
|
||||
swaylock.settings = {
|
||||
inside-color = scheme.palette.base01;
|
||||
inside-clear-color = scheme.palette.base0C;
|
||||
inside-caps-lock-color = scheme.palette.base09;
|
||||
inside-ver-color = scheme.palette.base0D;
|
||||
inside-wrong-color = scheme.palette.base08;
|
||||
key-hl-color = scheme.palette.base0B;
|
||||
layout-bg-color = scheme.palette.base00;
|
||||
layout-border-color = scheme.palette.base05;
|
||||
layout-text-color = scheme.palette.base07;
|
||||
line-color = scheme.palette.base00;
|
||||
line-clear-color = scheme.palette.base0C;
|
||||
line-caps-lock-color = scheme.palette.base09;
|
||||
line-ver-color = scheme.palette.base0D;
|
||||
line-wrong-color = scheme.palette.base08;
|
||||
ring-color = scheme.palette.base02;
|
||||
ring-clear-color = scheme.palette.base0C;
|
||||
ring-caps-lock-color = scheme.palette.base09;
|
||||
ring-ver-color = scheme.palette.base0D;
|
||||
ring-wrong-color = scheme.palette.base08;
|
||||
separator-color = scheme.palette.base02;
|
||||
text-color = scheme.palette.base07;
|
||||
text-clear-color = scheme.palette.base04;
|
||||
text-caps-lock-color = scheme.palette.base04;
|
||||
text-ver-color = scheme.palette.base04;
|
||||
text-wrong-color = scheme.palette.base04;
|
||||
};
|
||||
|
||||
zathura.options = {
|
||||
default-fg = scheme.palette.base05;
|
||||
default-bg = scheme.palette.base00;
|
||||
|
||||
completion-bg = scheme.palette.base02;
|
||||
completion-fg = scheme.palette.base05;
|
||||
completion-highlight-bg = scheme.palette.base03;
|
||||
completion-highlight-fg = scheme.palette.base05;
|
||||
completion-group-bg = scheme.palette.base02;
|
||||
completion-group-fg = scheme.palette.base0D;
|
||||
|
||||
statusbar-fg = scheme.palette.base05;
|
||||
statusbar-bg = scheme.palette.base02;
|
||||
|
||||
notification-bg = scheme.palette.base02;
|
||||
notification-fg = scheme.palette.base05;
|
||||
notification-error-bg = scheme.palette.base02;
|
||||
notification-error-fg = scheme.palette.base08;
|
||||
notification-warning-bg = scheme.palette.base02;
|
||||
notification-warning-fg = scheme.palette.base0A;
|
||||
|
||||
inputbar-fg = scheme.palette.base05;
|
||||
inputbar-bg = scheme.palette.base02;
|
||||
|
||||
recolor = true;
|
||||
recolor-lightcolor = scheme.palette.base00;
|
||||
recolor-darkcolor = scheme.palette.base05;
|
||||
|
||||
index-fg = scheme.palette.base05;
|
||||
index-bg = scheme.palette.base00;
|
||||
index-active-fg = scheme.palette.base05;
|
||||
index-active-bg = scheme.palette.base02;
|
||||
|
||||
render-loading-bg = scheme.palette.base00;
|
||||
render-loading-fg = scheme.palette.base05;
|
||||
|
||||
highlight-color = lib'.rgba lib scheme.palette.base03 ".5";
|
||||
highlight-fg = lib'.rgba lib scheme.palette.base0E ".5";
|
||||
highlight-active-color = lib'.rgba lib scheme.palette.base0E ".5";
|
||||
};
|
||||
|
||||
gnome-terminal.profile = {
|
||||
"4621184a-b921-42cf-80a0-7784516606f2".colors = {
|
||||
backgroundColor = "#${scheme.palette.base00}";
|
||||
foregroundColor = "#${scheme.palette.base05}" "#${scheme.palette.base05}";
|
||||
palette = builtins.attrValues (builtins.mapAttrs (_: color: "#${color}") scheme.palette);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
{inputs, ...}: {
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
anastacia = {
|
||||
hostname = "2a01:4f8:1c1c:8495::1";
|
||||
profiles.system = {
|
||||
sshUser = "root";
|
||||
user = "root";
|
||||
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos inputs.self.nixosConfigurations.anastacia;
|
||||
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.anastacia;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,208 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
makeWrapper,
|
||||
cmake,
|
||||
ninja,
|
||||
libarchive,
|
||||
libz,
|
||||
jdk17,
|
||||
libcef,
|
||||
luajit,
|
||||
xorg,
|
||||
mesa,
|
||||
glib,
|
||||
nss,
|
||||
nspr,
|
||||
atk,
|
||||
at-spi2-atk,
|
||||
libdrm,
|
||||
expat,
|
||||
libxkbcommon,
|
||||
gtk3,
|
||||
pango,
|
||||
cairo,
|
||||
alsa-lib,
|
||||
dbus,
|
||||
at-spi2-core,
|
||||
cups,
|
||||
systemd,
|
||||
buildFHSEnv,
|
||||
copyDesktopItems,
|
||||
makeDesktopItem,
|
||||
}: let
|
||||
cef = libcef.overrideAttrs (_: {
|
||||
installPhase = let
|
||||
gl_rpath = lib.makeLibraryPath [
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
rpath = lib.makeLibraryPath [
|
||||
glib
|
||||
nss
|
||||
nspr
|
||||
atk
|
||||
at-spi2-atk
|
||||
libdrm
|
||||
expat
|
||||
xorg.libxcb
|
||||
libxkbcommon
|
||||
xorg.libX11
|
||||
xorg.libXcomposite
|
||||
xorg.libXdamage
|
||||
xorg.libXext
|
||||
xorg.libXfixes
|
||||
xorg.libXrandr
|
||||
mesa
|
||||
gtk3
|
||||
pango
|
||||
cairo
|
||||
alsa-lib
|
||||
dbus
|
||||
at-spi2-core
|
||||
cups
|
||||
xorg.libxshmfence
|
||||
systemd
|
||||
];
|
||||
in ''
|
||||
mkdir -p $out/lib/ $out/share/cef/
|
||||
cp libcef_dll_wrapper/libcef_dll_wrapper.a $out/lib/
|
||||
cp -r ../Resources/* $out/lib/
|
||||
cp -r ../Release/* $out/lib/
|
||||
patchelf --set-rpath "${rpath}" $out/lib/libcef.so
|
||||
patchelf --set-rpath "${gl_rpath}" $out/lib/libEGL.so
|
||||
patchelf --set-rpath "${gl_rpath}" $out/lib/libGLESv2.so
|
||||
cp ../Release/*.bin $out/share/cef/
|
||||
cp -r ../Resources/* $out/share/cef/
|
||||
cp -r ../include $out
|
||||
cp -r ../libcef_dll $out
|
||||
cp -r ../cmake $out
|
||||
'';
|
||||
});
|
||||
|
||||
bolt = stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "bolt-launcher";
|
||||
version = "0.10.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AdamCake";
|
||||
repo = "bolt";
|
||||
rev = finalAttrs.version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-2IoFzD+yhQv1Y7D+abeNUT23BC4P1xZTALF8Y+Zsg44=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
luajit
|
||||
makeWrapper
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
mesa
|
||||
xorg.libX11
|
||||
xorg.libxcb
|
||||
libarchive
|
||||
libz
|
||||
cef
|
||||
jdk17
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
inherit (bolt) name;
|
||||
desktopName = "Bolt Launcher";
|
||||
keywords = [
|
||||
"Game"
|
||||
];
|
||||
exec = "${bolt.name}";
|
||||
terminal = false;
|
||||
categories = ["Game"];
|
||||
icon = "bolt-launcher";
|
||||
})
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-D CMAKE_BUILD_TYPE=Release"
|
||||
"-D BOLT_LUAJIT_INCLUDE_DIR=${luajit}/include"
|
||||
"-G Ninja"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
ls -al
|
||||
mkdir -p cef/dist/Release cef/dist/Resources cef/dist/include
|
||||
|
||||
ln -s ${cef}/lib/* cef/dist/Release
|
||||
|
||||
ln -s ${cef}/share/cef/*.pak cef/dist/Resources
|
||||
ln -s ${cef}/share/cef/icudtl.dat cef/dist/Resources
|
||||
ln -s ${cef}/share/cef/locales cef/dist/Resources
|
||||
|
||||
ln -s ${cef}/include/* cef/dist/include
|
||||
ln -s ${cef}/libcef_dll cef/dist/libcef_dll
|
||||
|
||||
ln -s ${cef}/cmake cef/dist/cmake
|
||||
ln -s ${cef}/CMakeLists.txt cef/dist
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
for size in 16 32 64 128 256; do
|
||||
size_dir="''${size}x''${size}"
|
||||
ls -al $src/icon
|
||||
mkdir -p $out/share/icons/hicolor/''${size_dir}/apps
|
||||
cp $src/icon/$size.png $out/share/icons/hicolor/''${size_dir}/apps/bolt-launcher.png
|
||||
done
|
||||
mkdir -p $out/share/icons/hicolor/scalable/apps/
|
||||
cp $src/icon/bolt.svg $out/share/icons/hicolor/scalable/apps/bolt-launcher.svg
|
||||
'';
|
||||
postFixup = ''
|
||||
makeWrapper "$out/opt/bolt-launcher/bolt" "$out/bin/${finalAttrs.pname}-${finalAttrs.version}" \
|
||||
--set JAVA_HOME "${jdk17}"
|
||||
ls -al $out/bin
|
||||
mkdir -p $out/lib
|
||||
cp $out/usr/local/lib/libbolt-plugin.so $out/lib
|
||||
'';
|
||||
});
|
||||
in
|
||||
buildFHSEnv {
|
||||
inherit (bolt) name version;
|
||||
|
||||
targetPkgs = pkgs:
|
||||
[bolt]
|
||||
++ (with pkgs; [
|
||||
xorg.libSM
|
||||
xorg.libXxf86vm
|
||||
xorg.libX11
|
||||
glib
|
||||
pango
|
||||
cairo
|
||||
gdk-pixbuf
|
||||
gtk2-x11
|
||||
libz
|
||||
libcap
|
||||
libsecret
|
||||
openssl_1_1
|
||||
SDL2
|
||||
libGL
|
||||
]);
|
||||
|
||||
extraInstallCommands = ''
|
||||
mkdir -p $out/share/applications $out/share/icons
|
||||
ln -s ${bolt}/share/applications/*.desktop \
|
||||
$out/share/applications/
|
||||
ln -s ${bolt}/share/icons/hicolor \
|
||||
$out/share/icons/hicolor
|
||||
'';
|
||||
|
||||
runScript = "${bolt.name}";
|
||||
meta = {
|
||||
homepage = "https://github.com/Adamcake/Bolt";
|
||||
description = "An alternative launcher for RuneScape";
|
||||
license = lib.licenses.agpl3Plus;
|
||||
maintainers = with lib.maintainers; [nezia];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "${bolt.name}";
|
||||
};
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
mcuxpresso = import ./mcuxpresso pkgs;
|
||||
# this is unfortunately needed since bolt-launcher makes use of openssl-1.1.1w, and since it is not part of hosts, we have to add it this way
|
||||
bolt-launcher =
|
||||
(import inputs.nixpkgs {
|
||||
inherit (pkgs) system;
|
||||
config.permittedInsecurePackages = ["openssl-1.1.1w"];
|
||||
})
|
||||
.callPackage
|
||||
./bolt-launcher.nix {};
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
{
|
||||
eclipses,
|
||||
stdenv,
|
||||
requireFile,
|
||||
...
|
||||
}: let
|
||||
name = "mcuxpressotools";
|
||||
version = "v16-1";
|
||||
description = "MCUXpresso Config Tools";
|
||||
filename = "mcuxpresso-config-tools-${version}_amd64.deb";
|
||||
|
||||
src = stdenv.mkDerivation {
|
||||
inherit version description;
|
||||
name = "${name}-src";
|
||||
src = requireFile {
|
||||
url = "https://www.nxp.com/design/software/development-software/mcuxpresso-config-tools-pins-clocks-and-peripherals:MCUXpresso-Config-Tools";
|
||||
name = "${filename}.bin";
|
||||
sha256 = "sha256-BbEwxm1urV2IrgUiTiMBEAPvonQGwdL4fpqFftGgRxI=";
|
||||
};
|
||||
|
||||
buildCommand = ''
|
||||
# Unpack tarball.
|
||||
mkdir -p deb
|
||||
sh $src --target deb || true
|
||||
ar -xv deb/${filename}
|
||||
tar xfvz data.tar.gz -C .
|
||||
|
||||
mkdir -p ./final/eclipse
|
||||
mv ./opt/nxp/MCUX_CFG_v13/bin/.* final/eclipse
|
||||
mv ./usr final/
|
||||
mv final/eclipse/tools final/eclipse/eclipse
|
||||
mv final/eclipse/tools.ini final/eclipse/eclipse.ini
|
||||
|
||||
# Create custom .eclipseproduct file
|
||||
echo "name=${name}
|
||||
id=com.nxp.${name}
|
||||
version=${version}
|
||||
" > final/eclipse/.eclipseproduct
|
||||
|
||||
# Additional files
|
||||
mkdir -p final/usr/share/mime
|
||||
mv ./opt/nxp/MCUX_CFG_v13/mcu_data final/mcu_data
|
||||
|
||||
cd ./final
|
||||
tar -czf $out ./
|
||||
'';
|
||||
};
|
||||
in
|
||||
eclipses.buildEclipse {inherit description name src;}
|
|
@ -1,3 +0,0 @@
|
|||
pkgs: {
|
||||
ide = pkgs.callPackage ./ide.nix {};
|
||||
}
|
|
@ -1,100 +0,0 @@
|
|||
# https://github.com/KoviRobi/nixos-config/blob/3ab3f8372d1fd021a235de4d314ef7147846513e/overlays/mcuxpresso.nix
|
||||
{pkgs, ...}: let
|
||||
name = "mcuxpressoide";
|
||||
version = "24.9.25";
|
||||
description = "MCUXpresso IDE";
|
||||
filename = "${name}-${version}.x86_64.deb";
|
||||
mcuxpressoideSrc = pkgs.stdenv.mkDerivation {
|
||||
inherit version description;
|
||||
name = "${name}-src";
|
||||
src = pkgs.requireFile {
|
||||
url = "https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE";
|
||||
name = "${filename}.bin";
|
||||
hash = "sha256-e3g7rzZQ1WFLcUakkjaufpHMtw3qkw5lwxJuCKs6L+k=";
|
||||
};
|
||||
buildCommand = ''
|
||||
# Unpack tarball.
|
||||
mkdir -p deb
|
||||
sh $src --target deb || true
|
||||
ar -xv deb/${filename}
|
||||
tar xfvz data.tar.gz -C .
|
||||
mkdir -p ./final/eclipse
|
||||
mv ./usr/local/${name}-${version}/ide/* ./usr/local/${name}-${version}/ide/.* final/eclipse
|
||||
mv final/eclipse/mcuxpressoide final/eclipse/eclipse
|
||||
mv final/eclipse/mcuxpressoide.ini final/eclipse/eclipse.ini
|
||||
# Create custom .eclipseproduct file
|
||||
rm final/eclipse/.eclipseproduct
|
||||
echo "name=${name}
|
||||
id=com.nxp.${name}
|
||||
version=${version}
|
||||
" > final/eclipse/.eclipseproduct
|
||||
# Install udev rules
|
||||
mkdir -p final/lib/udev/rules.d
|
||||
mv ./lib/udev/rules.d/56-pemicro.rules ./lib/udev/rules.d/85-mcuxpresso.rules final/lib/udev/rules.d/
|
||||
# Additional files
|
||||
mv ./usr/local/${name}-${version}/mcu_data final/mcu_data
|
||||
cd ./final
|
||||
tar -czf $out ./
|
||||
'';
|
||||
};
|
||||
mcuxpressoide = pkgs.eclipses.buildEclipse {
|
||||
name = "mcuxpresso-eclipse";
|
||||
inherit description;
|
||||
src = mcuxpressoideSrc;
|
||||
};
|
||||
|
||||
# needed because of the integrated toolchain
|
||||
mcuxpressoFhsEnv = pkgs.buildFHSEnv {
|
||||
name = "mcuxpresso-env";
|
||||
targetPkgs = pkgs: [
|
||||
pkgs.stdenv.cc.cc.lib
|
||||
pkgs.gcc
|
||||
pkgs.libgcc
|
||||
pkgs.libstdcxx5
|
||||
pkgs.xorg.libXext
|
||||
pkgs.xorg.libX11
|
||||
pkgs.xorg.libXrender
|
||||
pkgs.xorg.libXtst
|
||||
pkgs.xorg.libXi
|
||||
pkgs.freetype
|
||||
pkgs.alsa-lib
|
||||
pkgs.ncurses
|
||||
pkgs.ncurses5
|
||||
pkgs.libusb1
|
||||
pkgs.readline
|
||||
pkgs.libffi
|
||||
pkgs.zlib
|
||||
pkgs.tcl
|
||||
pkgs.libxcrypt
|
||||
pkgs.libxcrypt-legacy
|
||||
pkgs.libusb-compat-0_1
|
||||
];
|
||||
|
||||
runScript = "${mcuxpressoide}/bin/eclipse";
|
||||
};
|
||||
in
|
||||
# wrapper with desktop entry and udev rules
|
||||
pkgs.stdenv.mkDerivation {
|
||||
inherit name version description;
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
nativeBuildInputs = [pkgs.copyDesktopItems];
|
||||
desktopItems = [
|
||||
(pkgs.makeDesktopItem {
|
||||
inherit name;
|
||||
type = "Application";
|
||||
desktopName = "MCUXpresso IDE";
|
||||
exec = "mcuxpresso";
|
||||
})
|
||||
];
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/bin $out/lib/udev/rules.d $out/eclipse $out/mcu_data
|
||||
|
||||
cp ${mcuxpressoide}/lib/udev/rules.d/85-mcuxpresso.rules ${mcuxpressoide}/lib/udev/rules.d/56-pemicro.rules $out/lib/udev/rules.d/
|
||||
|
||||
ln -s ${mcuxpressoFhsEnv}/bin/mcuxpresso-env $out/bin/mcuxpresso
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
Binary file not shown.
|
@ -1,5 +0,0 @@
|
|||
let
|
||||
anastacia = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEplguGeXCbdz++Ry5pwJylmtAMnwtf1+9JoJnCGfw3A root@anastacia";
|
||||
in {
|
||||
"searx-env-file.age".publicKeys = [anastacia];
|
||||
}
|
|
@ -30,5 +30,7 @@
|
|||
"rd.udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
];
|
||||
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
./users.nix
|
||||
./security.nix
|
||||
./networking.nix
|
||||
../nix
|
||||
];
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
"audio"
|
||||
"video"
|
||||
"wheel"
|
||||
"plugdev"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./core
|
||||
./nix
|
||||
|
||||
./hardware/printing.nix
|
||||
./hardware/fwupd.nix
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{config, ...}: {
|
||||
hardware.graphics.enable = true;
|
||||
services.xserver.videoDrivers = ["nvidia"];
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = false;
|
||||
powerManagement.finegrained = false;
|
||||
open = true;
|
||||
open = false;
|
||||
nvidiaSettings = true;
|
||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
{
|
||||
{pkgs, ...}: {
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
"cinny-4.2.3"
|
||||
"cinny-unwrapped-4.2.3"
|
||||
"segger-jlink-qt4-796s"
|
||||
];
|
||||
segger-jlink.acceptLicense = true;
|
||||
};
|
||||
config.allowUnfree = true;
|
||||
overlays = [
|
||||
(_: prev: {
|
||||
lib =
|
||||
prev.lib
|
||||
// import ../../lib {
|
||||
inherit (prev) lib pkgs;
|
||||
};
|
||||
})
|
||||
];
|
||||
config.permittedInsecurePackages = ["cinny-4.2.2" "cinny-unwrapped-4.2.2"];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,27 +1,19 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
{pkgs, ...}: {
|
||||
fonts = {
|
||||
enableDefaultPackages = false;
|
||||
packages = [
|
||||
pkgs.noto-fonts
|
||||
pkgs.noto-fonts-cjk-sans
|
||||
pkgs.noto-fonts-extra
|
||||
pkgs.intel-one-mono
|
||||
pkgs.noto-fonts-color-emoji
|
||||
(pkgs.nerdfonts.override {fonts = ["IntelOneMono" "NerdFontsSymbolsOnly"];})
|
||||
packages = with pkgs; [
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
noto-fonts-extra
|
||||
(nerdfonts.override {fonts = ["IntelOneMono"];})
|
||||
];
|
||||
enableDefaultPackages = false;
|
||||
|
||||
fontconfig = {
|
||||
enable = true;
|
||||
defaultFonts = {
|
||||
serif = ["Noto Serif"];
|
||||
sansSerif = ["Inter Medium"];
|
||||
monospace = ["IntoneMono NF"];
|
||||
emoji = ["Noto Color Emoji"];
|
||||
};
|
||||
fontconfig.defaultFonts = {
|
||||
serif = ["Noto Serif"];
|
||||
sansSerif = ["Inter"];
|
||||
monospace = ["IntoneMono NF"];
|
||||
emoji = ["Noto Color Emoji"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
{pkgs, ...}: {
|
||||
programs = {
|
||||
steam.enable = true;
|
||||
gamemode.enable = true;
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./docker.nix
|
||||
./gnupg.nix
|
||||
./pipewire.nix
|
||||
./kmscon.nix
|
||||
];
|
||||
services.udev.packages = [pkgs.segger-jlink];
|
||||
{
|
||||
imports = [./docker.nix ./gnupg.nix ./pipewire.nix ./kmscon.nix];
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
{pkgs, ...}: {
|
||||
virtualisation.podman = {
|
||||
_: {
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
rootless = {
|
||||
enable = true;
|
||||
setSocketVariable = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [pkgs.distrobox];
|
||||
}
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
_: {
|
||||
documentation = {
|
||||
enable = true;
|
||||
|
||||
man = {
|
||||
enable = true;
|
||||
man-db.enable = false;
|
||||
mandoc.enable = true;
|
||||
generateCaches = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,86 +1,23 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
lib',
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) getExe evalModules;
|
||||
inherit (lib') blurImage;
|
||||
inherit (inputs) niri;
|
||||
in {
|
||||
services.greetd = let
|
||||
home-config = config.home-manager.users.nezia;
|
||||
# huge thanks to https://github.com/sodiboo/system/blob/262e7e80ac9ae0511f8565713feaa8315d084025/login.mod.nix#L22-L67
|
||||
# this is needed because we are also importing the default settings
|
||||
niri-cfg-modules = evalModules {
|
||||
modules = [
|
||||
niri.lib.internal.settings-module
|
||||
(let
|
||||
cfg = home-config.programs.niri.settings;
|
||||
in {
|
||||
programs.niri.settings = {
|
||||
inherit (cfg) input outputs layout;
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
# causes a deprecation warning otherwise
|
||||
cursor = builtins.removeAttrs cfg.cursor ["hide-on-key-press"];
|
||||
|
||||
window-rules = [
|
||||
{
|
||||
draw-border-with-background = false;
|
||||
clip-to-geometry = true;
|
||||
geometry-corner-radius = {
|
||||
top-left = 8.0;
|
||||
top-right = 8.0;
|
||||
bottom-left = 8.0;
|
||||
bottom-right = 8.0;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
# validates config and creates a derivation
|
||||
niri-config = niri.lib.internal.validated-config-for pkgs config.programs.niri.package niri-cfg-modules.config.programs.niri.finalConfig;
|
||||
in {
|
||||
}: {
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = let
|
||||
niri = getExe config.programs.niri.package;
|
||||
regreet = getExe config.programs.regreet.package;
|
||||
# needed because we need to run niri msg quit inside of niri itself (it needs the socket)
|
||||
greeterScript = pkgs.writeScript "greeter-script" ''
|
||||
${regreet} && ${niri} msg action quit --skip-confirmation
|
||||
settings = rec {
|
||||
initial_session = {
|
||||
command = ''
|
||||
${lib.getExe pkgs.greetd.tuigreet}
|
||||
--time
|
||||
--asterisks
|
||||
--user-menu
|
||||
--cmd ${lib.getExe config.programs.niri.package} --session
|
||||
'';
|
||||
in {
|
||||
command = "${niri} -c ${niri-config} -- ${greeterScript}";
|
||||
user = "greeter";
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.regreet = {
|
||||
enable = true;
|
||||
theme = {
|
||||
inherit (config.theme.gtk.theme) name package;
|
||||
};
|
||||
iconTheme = {
|
||||
inherit (config.theme.gtk.iconTheme) name package;
|
||||
};
|
||||
cursorTheme = {
|
||||
inherit (config.theme.cursorTheme) name package;
|
||||
};
|
||||
settings = {
|
||||
background = {
|
||||
path = blurImage pkgs config.theme.wallpaper;
|
||||
|
||||
fit = "Fill";
|
||||
};
|
||||
GTK = {
|
||||
application_prefer_dark_theme = true;
|
||||
};
|
||||
default_session = initial_session;
|
||||
};
|
||||
};
|
||||
security.pam.services = {
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
{
|
||||
services.kanata = {
|
||||
enable = true;
|
||||
keyboards.default = {
|
||||
extraDefCfg = "process-unmapped-keys yes";
|
||||
config = ''
|
||||
(defsrc
|
||||
caps a s d f j k l ;
|
||||
)
|
||||
(defvar
|
||||
tap-time 150
|
||||
hold-time 200
|
||||
)
|
||||
|
||||
(defalias
|
||||
escctrl (tap-hold 100 100 esc lctl)
|
||||
a (tap-hold $tap-time $hold-time a lmet)
|
||||
s (tap-hold $tap-time $hold-time s lalt)
|
||||
d (tap-hold $tap-time $hold-time d lsft)
|
||||
f (tap-hold $tap-time $hold-time f lctl)
|
||||
j (tap-hold $tap-time $hold-time j rctl)
|
||||
k (tap-hold $tap-time $hold-time k rsft)
|
||||
l (tap-hold $tap-time $hold-time l ralt)
|
||||
; (tap-hold $tap-time $hold-time ; rmet)
|
||||
)
|
||||
|
||||
(deflayer base
|
||||
@escctrl @a @s @d @f @j @k @l @;
|
||||
)
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,9 +1,5 @@
|
|||
{
|
||||
services.logind = {
|
||||
lidSwitch = "suspend";
|
||||
extraConfig = ''
|
||||
HandlePowerKey=ignore
|
||||
HandlePowerKeyLongPress=poweroff
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
_: {
|
||||
hardware.pulseaudio.enable = false;
|
||||
# rtkit is optional but recommended
|
||||
security.rtkit.enable = true;
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
services.caddy.enable = true;
|
||||
services.caddy.virtualHosts = {
|
||||
"www.nezia.dev" = {
|
||||
extraConfig = ''
|
||||
redir https://nezia.dev{uri}
|
||||
'';
|
||||
};
|
||||
"nezia.dev" = {
|
||||
extraConfig = ''
|
||||
root * ${inputs.portfolio.packages.${pkgs.system}.default}
|
||||
file_server
|
||||
encode gzip
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,5 +1,9 @@
|
|||
{
|
||||
services = {
|
||||
logind.extraConfig = ''
|
||||
HandlePowerKey=suspend
|
||||
'';
|
||||
|
||||
power-profiles-daemon.enable = true;
|
||||
|
||||
# battery info
|
||||
|
|
|
@ -1,14 +1,8 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
age.secrets.searx-env-file.file = ../../secrets/searx-env-file.age;
|
||||
{pkgs, ...}: {
|
||||
services = {
|
||||
searx = {
|
||||
enable = true;
|
||||
package = pkgs.searxng;
|
||||
environmentFile = config.age.secrets.searx-env-file.path;
|
||||
settings = {
|
||||
search = {
|
||||
safe_search = 1; # 0 = None, 1 = Moderate, 2 = Strict
|
||||
|
@ -16,7 +10,7 @@
|
|||
default_lang = "en";
|
||||
};
|
||||
server = {
|
||||
secret_key = "@SEARX_SECRET_KEY@";
|
||||
secret_key = "TODO_USE_SOPS_INSTEAD";
|
||||
port = 8888; # Internal port
|
||||
bind_address = "localhost"; # Only listen locally
|
||||
base_url = "https://search.nezia.dev/";
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
services = {
|
||||
syncthing = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
systemd.services.syncthing.environment.STNODEFAULTFOLDER = "true"; # Don't create default ~/Sync folder
|
||||
}
|
8
system/syncthing/default.nix
Normal file
8
system/syncthing/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
services = {
|
||||
syncthing = {
|
||||
enable = true;
|
||||
systemd.services.syncthing.environment.STNODEFAULTFOLDER = "true"; # Don't create default ~/Sync folder
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue