mirror of
https://codeberg.org/muon/home.git
synced 2025-12-06 08:07:45 +00:00
Add dotfiles
This commit is contained in:
commit
39fe550b3e
45 changed files with 4363 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
bak/
|
||||||
674
LICENSE
Normal file
674
LICENSE
Normal file
|
|
@ -0,0 +1,674 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
796
flake.lock
generated
Normal file
796
flake.lock
generated
Normal file
|
|
@ -0,0 +1,796 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"base16": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1658847131,
|
||||||
|
"narHash": "sha256-X6Mml7cT0YR3WCD5fkUhpRVV5ZPcwdcDsND8r8xMqTE=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"rev": "6b404cda2e04ca3cf5ca7b877af9c469e1386acb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"doom-emacs": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1662497747,
|
||||||
|
"narHash": "sha256-4n7E1fqda7cn5/F2jTkOnKw1juG6XMS/FI9gqODL3aU=",
|
||||||
|
"owner": "doomemacs",
|
||||||
|
"repo": "doomemacs",
|
||||||
|
"rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "doomemacs",
|
||||||
|
"repo": "doomemacs",
|
||||||
|
"rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"doom-snippets": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1676839496,
|
||||||
|
"narHash": "sha256-1Ay9zi0u1lycmEeFqIxr0RWH+JvH9BnzgRzkPeWEAYY=",
|
||||||
|
"owner": "doomemacs",
|
||||||
|
"repo": "snippets",
|
||||||
|
"rev": "fe4003014ae00b866f117cb193f711fd9d72fd11",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "doomemacs",
|
||||||
|
"repo": "snippets",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emacs-overlay": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1676366521,
|
||||||
|
"narHash": "sha256-i4UAY8t9Au9SJtsgYppa3NHSVf1YkV6yqnNIQd+Km4g=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "emacs-overlay",
|
||||||
|
"rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "emacs-overlay",
|
||||||
|
"rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emacs-so-long": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1575031854,
|
||||||
|
"narHash": "sha256-xIa5zO0ZaToDrec1OFjBK6l39AbA4l/CE4LInVu2hi0=",
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "emacs-so-long",
|
||||||
|
"rev": "ed666b0716f60e8988c455804de24b55919e71ca",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "emacs-so-long",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"evil-collection": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1686801899,
|
||||||
|
"narHash": "sha256-wGJWF9t8yaxLyYQRf3hK+5/AIYYAS8qWXPDEvatzBlc=",
|
||||||
|
"owner": "emacs-evil",
|
||||||
|
"repo": "evil-collection",
|
||||||
|
"rev": "4a7d924dbd851ef1b2ccb85778be6e7a6a81ebd4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "emacs-evil",
|
||||||
|
"repo": "evil-collection",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"evil-escape": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1588439096,
|
||||||
|
"narHash": "sha256-aB2Ge5o/93B18tPf4fN1c+O46CNh/nOqwLJbox4c8Gw=",
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "evil-escape",
|
||||||
|
"rev": "819f1ee1cf3f69a1ae920e6004f2c0baeebbe077",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "evil-escape",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"evil-markdown": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1626852210,
|
||||||
|
"narHash": "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=",
|
||||||
|
"owner": "Somelauw",
|
||||||
|
"repo": "evil-markdown",
|
||||||
|
"rev": "8e6cc68af83914b2fa9fd3a3b8472573dbcef477",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Somelauw",
|
||||||
|
"repo": "evil-markdown",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"evil-org-mode": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1607203864,
|
||||||
|
"narHash": "sha256-JxwqVYDN6OIJEH15MVI6XOZAPtUWUhJQWHyzcrUvrFg=",
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "evil-org-mode",
|
||||||
|
"rev": "a9706da260c45b98601bcd72b1d2c0a24a017700",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "evil-org-mode",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"evil-quick-diff": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1575189609,
|
||||||
|
"narHash": "sha256-oGzl1ayW9rIuq0haoiFS7RZsS8NFMdEA7K1BSozgnJU=",
|
||||||
|
"owner": "rgrinberg",
|
||||||
|
"repo": "evil-quick-diff",
|
||||||
|
"rev": "69c883720b30a892c63bc89f49d4f0e8b8028908",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rgrinberg",
|
||||||
|
"repo": "evil-quick-diff",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"explain-pause-mode": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1595842060,
|
||||||
|
"narHash": "sha256-++znrjiDSx+cy4okFBBXUBkRFdtnE2x+trkmqjB3Njs=",
|
||||||
|
"owner": "lastquestion",
|
||||||
|
"repo": "explain-pause-mode",
|
||||||
|
"rev": "2356c8c3639cbeeb9751744dbe737267849b4b51",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lastquestion",
|
||||||
|
"repo": "explain-pause-mode",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1673956053,
|
||||||
|
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1673956053,
|
||||||
|
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681202837,
|
||||||
|
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681202837,
|
||||||
|
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"format-all": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1581716637,
|
||||||
|
"narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=",
|
||||||
|
"owner": "lassik",
|
||||||
|
"repo": "emacs-format-all-the-code",
|
||||||
|
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lassik",
|
||||||
|
"repo": "emacs-format-all-the-code",
|
||||||
|
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1687969886,
|
||||||
|
"narHash": "sha256-tC2qFLmuM0PFaw0tMHVcFmzsG/351q09qa1EpuL2n1U=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "a7002d6bfca54742d5fc9b485a1879953b4585b9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"utils": "utils"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1680000368,
|
||||||
|
"narHash": "sha256-TlgC4IJ7aotynUdkGRtaAVxquaiddO38Ws89nB7VGY8=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "765e4007b6f9f111469a25d1df6540e8e0ca73a6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"wlroots": "wlroots",
|
||||||
|
"xdph": "xdph"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1688466862,
|
||||||
|
"narHash": "sha256-Ll5jaJeju1aW4mvIC/5UIgMfHukUjiVznGV3kJCwBhY=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"rev": "07d7962c7f56c9928e494e4401806726d7ac5b05",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-protocols": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1684265364,
|
||||||
|
"narHash": "sha256-AxNnWbthsuNx73HDQr0eBxrcE3+yfl/WsaXZqUFmkpQ=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"rev": "8c279b9fb0f2b031427dc5ef4eab53f2ed835530",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-doom-emacs": {
|
||||||
|
"inputs": {
|
||||||
|
"doom-emacs": "doom-emacs",
|
||||||
|
"doom-snippets": "doom-snippets",
|
||||||
|
"emacs-overlay": "emacs-overlay",
|
||||||
|
"emacs-so-long": "emacs-so-long",
|
||||||
|
"evil-collection": "evil-collection",
|
||||||
|
"evil-escape": "evil-escape",
|
||||||
|
"evil-markdown": "evil-markdown",
|
||||||
|
"evil-org-mode": "evil-org-mode",
|
||||||
|
"evil-quick-diff": "evil-quick-diff",
|
||||||
|
"explain-pause-mode": "explain-pause-mode",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"format-all": "format-all",
|
||||||
|
"nix-straight": "nix-straight",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nose": "nose",
|
||||||
|
"ob-racket": "ob-racket",
|
||||||
|
"org": "org",
|
||||||
|
"org-contrib": "org-contrib",
|
||||||
|
"org-yt": "org-yt",
|
||||||
|
"php-extras": "php-extras",
|
||||||
|
"revealjs": "revealjs",
|
||||||
|
"rotate-text": "rotate-text",
|
||||||
|
"sln-mode": "sln-mode",
|
||||||
|
"ts-fold": "ts-fold",
|
||||||
|
"ws-butler": "ws-butler"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1686959076,
|
||||||
|
"narHash": "sha256-tzwHJ8q9CMpIwxcyCM51i88arntNMARi1mFkAppMgqk=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-doom-emacs",
|
||||||
|
"rev": "2c4ba0d77fdfa4495929c8aee814936e722715c5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-doom-emacs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-straight": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1666982610,
|
||||||
|
"narHash": "sha256-xjgIrmUsekVTE+MpZb5DMU8DQf9DJ/ZiR0o30L9/XCc=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-straight.el",
|
||||||
|
"rev": "ad10364d64f472c904115fd38d194efe1c3f1226",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-straight.el",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1687502512,
|
||||||
|
"narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1682566018,
|
||||||
|
"narHash": "sha256-HPzPRFiy2o/7k7mtnwfM1E6NVZHiFbPdmYCMoIpkHO4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8e3b64db39f2aaa14b35ee5376bd6a2e707cadc2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1687898314,
|
||||||
|
"narHash": "sha256-B4BHon3uMXQw8ZdbwxRK1BmxVOGBV4viipKpGaIlGwk=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e18dc963075ed115afb3e312b64643bf8fd4b474",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1679793451,
|
||||||
|
"narHash": "sha256-JafTtgMDATE8dZOImBhWMA9RCn9AP8FVOpN+9K/tTlg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0cd51a933d91078775b300cf0f29aa3495231aa2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nose": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1400604510,
|
||||||
|
"narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=",
|
||||||
|
"owner": "emacsattic",
|
||||||
|
"repo": "nose",
|
||||||
|
"rev": "f8528297519eba911696c4e68fa88892de9a7b72",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "emacsattic",
|
||||||
|
"repo": "nose",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ob-racket": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1584656173,
|
||||||
|
"narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=",
|
||||||
|
"owner": "xchrishawk",
|
||||||
|
"repo": "ob-racket",
|
||||||
|
"rev": "83457ec9e1e96a29fd2086ed19432b9d75787673",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "xchrishawk",
|
||||||
|
"repo": "ob-racket",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"org": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1683136293,
|
||||||
|
"narHash": "sha256-PMHNr3Qo62uqO5IUDAfxUoqa4Zvb9y2J76pRYDB/6Y4=",
|
||||||
|
"owner": "emacs-straight",
|
||||||
|
"repo": "org-mode",
|
||||||
|
"rev": "080710797ad25e76c4556d2b03cc0aa5313cd187",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "emacs-straight",
|
||||||
|
"repo": "org-mode",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"org-contrib": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1675694242,
|
||||||
|
"narHash": "sha256-4Fn33CTVTCqh5TyVAggSr8Fm8/hB8Xgl+hkxh3WCrI8=",
|
||||||
|
"owner": "emacsmirror",
|
||||||
|
"repo": "org-contrib",
|
||||||
|
"rev": "fff6c888065588527b1c1d7dd7e41c29ef767e17",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "emacsmirror",
|
||||||
|
"repo": "org-contrib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"org-yt": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1527381913,
|
||||||
|
"narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=",
|
||||||
|
"owner": "TobiasZawada",
|
||||||
|
"repo": "org-yt",
|
||||||
|
"rev": "40cc1ac76d741055cbefa13860d9f070a7ade001",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "TobiasZawada",
|
||||||
|
"repo": "org-yt",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"php-extras": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1573312690,
|
||||||
|
"narHash": "sha256-r4WyVbzvT0ra4Z6JywNBOw5RxOEYd6Qe2IpebHXkj1U=",
|
||||||
|
"owner": "arnested",
|
||||||
|
"repo": "php-extras",
|
||||||
|
"rev": "d410c5af663c30c01d461ac476d1cbfbacb49367",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "arnested",
|
||||||
|
"repo": "php-extras",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"revealjs": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681386605,
|
||||||
|
"narHash": "sha256-9Q7aWgjAV37iJp6oYDz45e8J+RKwKY1Uvgg/BXwf5nQ=",
|
||||||
|
"owner": "hakimel",
|
||||||
|
"repo": "reveal.js",
|
||||||
|
"rev": "0301ce58ab185f7191696e16b1b6389f58df2892",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hakimel",
|
||||||
|
"repo": "reveal.js",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"hyprland": "hyprland",
|
||||||
|
"nix-doom-emacs": "nix-doom-emacs",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"rust-overlay": "rust-overlay",
|
||||||
|
"stylix": "stylix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rotate-text": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1322962747,
|
||||||
|
"narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=",
|
||||||
|
"owner": "debug-ito",
|
||||||
|
"repo": "rotate-text.el",
|
||||||
|
"rev": "48f193697db996855aee1ad2bc99b38c6646fe76",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "debug-ito",
|
||||||
|
"repo": "rotate-text.el",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1688351637,
|
||||||
|
"narHash": "sha256-CLTufJ29VxNOIZ8UTg0lepsn3X03AmopmaLTTeHDCL4=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "f9b92316727af9e6c7fee4a761242f7f46880329",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sln-mode": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1423727528,
|
||||||
|
"narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=",
|
||||||
|
"owner": "sensorflo",
|
||||||
|
"repo": "sln-mode",
|
||||||
|
"rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sensorflo",
|
||||||
|
"repo": "sln-mode",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"nixpkgs": "nixpkgs_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1688308288,
|
||||||
|
"narHash": "sha256-dahwZIc0zGgGMKR/j1SJjYhaoGJTHJUse8CzC8DUyV0=",
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"rev": "35cab8eb76c1d3672b2b290a64f357847c30d090",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ts-fold": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681029086,
|
||||||
|
"narHash": "sha256-z3eVkAPFI6JYZZ+2XM496zBxwnujTp4Y4KNNfqgUC/E=",
|
||||||
|
"owner": "jcs-elpa",
|
||||||
|
"repo": "ts-fold",
|
||||||
|
"rev": "5fd2a5afe2112ac23b58ee1b12730fcf16068df3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "jcs-elpa",
|
||||||
|
"repo": "ts-fold",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1676283394,
|
||||||
|
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wlroots": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"host": "gitlab.freedesktop.org",
|
||||||
|
"lastModified": 1686753331,
|
||||||
|
"narHash": "sha256-KovjVFwcuoUO0eu/UiWrnD3+m/K+SHSAVIz4xF9K1XA=",
|
||||||
|
"owner": "wlroots",
|
||||||
|
"repo": "wlroots",
|
||||||
|
"rev": "7e7633abf09b362d0bad9e3fc650fd692369291d",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"host": "gitlab.freedesktop.org",
|
||||||
|
"owner": "wlroots",
|
||||||
|
"repo": "wlroots",
|
||||||
|
"type": "gitlab"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ws-butler": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1634511126,
|
||||||
|
"narHash": "sha256-c0y0ZPtxxICPk+eaNbbQf6t+FRCliNY54CCz9QHQ8ZI=",
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "ws-butler",
|
||||||
|
"rev": "572a10c11b6cb88293de48acbb59a059d36f9ba5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hlissner",
|
||||||
|
"repo": "ws-butler",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xdph": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-protocols": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-protocols"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1685385764,
|
||||||
|
"narHash": "sha256-r+XMyOoRXq+hlfjayb+fyi9kq2JK48TrwuNIAXqlj7U=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"rev": "4d9ff0c17716936e0b5ca577a39e263633901ed1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
27
flake.nix
Normal file
27
flake.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
description = "My NixOS configuration";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
stylix.url = "github:danth/stylix";
|
||||||
|
nix-doom-emacs.url = "github:nix-community/nix-doom-emacs";
|
||||||
|
rust-overlay = {
|
||||||
|
url = "github:oxalica/rust-overlay";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
outputs = {self, ...} @ inputs: let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
in {
|
||||||
|
nixosConfigurations = import ./hosts inputs;
|
||||||
|
|
||||||
|
formatter.${system} = pkgs.alejandra;
|
||||||
|
};
|
||||||
|
}
|
||||||
67
hosts/default.nix
Normal file
67
hosts/default.nix
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
{
|
||||||
|
nixpkgs,
|
||||||
|
self,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (self) inputs;
|
||||||
|
bootloader = ../modules/core/bootloader.nix;
|
||||||
|
core = ../modules/core;
|
||||||
|
unfree = ../modules/unfree;
|
||||||
|
prime = ../modules/unfree/prime.nix;
|
||||||
|
|
||||||
|
hmModule = inputs.home-manager.nixosModules.home-manager;
|
||||||
|
stylix = inputs.stylix;
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useUserPackages = true;
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
inherit self;
|
||||||
|
inherit stylix;
|
||||||
|
};
|
||||||
|
users.muon = ../modules/home;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
# desktop
|
||||||
|
muon = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules =
|
||||||
|
[
|
||||||
|
{networking.hostName = "muon";}
|
||||||
|
./muon/hardware-configuration.nix
|
||||||
|
core
|
||||||
|
bootloader
|
||||||
|
unfree
|
||||||
|
hmModule
|
||||||
|
|
||||||
|
{inherit home-manager;}
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# laptop
|
||||||
|
muop = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules =
|
||||||
|
[
|
||||||
|
{networking.hostName = "muop";}
|
||||||
|
./muop/hardware-configuration.nix
|
||||||
|
core
|
||||||
|
bootloader
|
||||||
|
unfree
|
||||||
|
prime
|
||||||
|
hmModule
|
||||||
|
|
||||||
|
#inputs.hyprland.nixosModules.default
|
||||||
|
|
||||||
|
# inputs.stylix.nixosModules.stylix
|
||||||
|
|
||||||
|
{inherit home-manager;}
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
69
hosts/default.nix~
Normal file
69
hosts/default.nix~
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
{
|
||||||
|
nixpkgs,
|
||||||
|
self,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (self) inputs;
|
||||||
|
bootloader = ../modules/core/bootloader.nix;
|
||||||
|
core = ../modules/core;
|
||||||
|
unfree = ../modules/unfree;
|
||||||
|
|
||||||
|
hmModule = inputs.home-manager.nixosModules.home-manager;
|
||||||
|
stylix = inputs.stylix;
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useUserPackages = true;
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
inherit self;
|
||||||
|
inherit stylix;
|
||||||
|
};
|
||||||
|
users.muon = ../modules/home;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
# desktop
|
||||||
|
muop = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules =
|
||||||
|
[
|
||||||
|
{networking.hostName = "muop";}
|
||||||
|
./muon/hardware-configuration.nix
|
||||||
|
core
|
||||||
|
bootloader
|
||||||
|
unfree
|
||||||
|
hmModule
|
||||||
|
|
||||||
|
#inputs.hyprland.nixosModules.default
|
||||||
|
|
||||||
|
# inputs.stylix.nixosModules.stylix
|
||||||
|
|
||||||
|
{inherit home-manager;}
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# laptop
|
||||||
|
muop = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules =
|
||||||
|
[
|
||||||
|
{networking.hostName = "muop";}
|
||||||
|
./muop/hardware-configuration.nix
|
||||||
|
core
|
||||||
|
bootloader
|
||||||
|
unfree
|
||||||
|
hmModule
|
||||||
|
|
||||||
|
#inputs.hyprland.nixosModules.default
|
||||||
|
|
||||||
|
# inputs.stylix.nixosModules.stylix
|
||||||
|
|
||||||
|
{inherit home-manager;}
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
77
hosts/muon/hardware-configuration.nix
Normal file
77
hosts/muon/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/03e49688-cc62-49c9-a906-e2ea87a38891";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."luks-86769693-b61c-4712-852d-e0fba612d260".device = "/dev/disk/by-uuid/86769693-b61c-4712-852d-e0fba612d260";
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/CCCC-449E";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/mnt/bulk" =
|
||||||
|
{ device = "/dev/disk/by-uuid/11c2c896-d49a-4d9b-a846-b0a550128395";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
# swapDevices =
|
||||||
|
# [ { device = "/dev/disk/by-uuid/e7cf209d-386d-41db-8a35-6c9fff014722"; }
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
services.xserver.libinput.mouse.accelProfile = "flat";
|
||||||
|
|
||||||
|
services.xserver.displayManager.sessionCommands = ''
|
||||||
|
${pkgs.xorg.xinput} --set-prop "pointer:Logitech Gaming Mouse G502" "libinput Accel Profile Enabled" 0, 1
|
||||||
|
${pkgs.xorg.xinput} --set-prop "pointer:Logitech Gaming Mouse G502" "libinput Accel Speed" -0.4
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.xserver.displayManager.setupCommands = ''
|
||||||
|
${pkgs.xorg.xrandr}/bin/xrandr --output HDMI-1 --mode 1920x1080 --pos 2560x0 --rotate right --output DP-2 --primary --mode 2560x1440 --pos 0x480 --rotate normal
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.xserver.xrandrHeads = [
|
||||||
|
{
|
||||||
|
output = "DP-2";
|
||||||
|
primary = true;
|
||||||
|
monitorConfig = ''
|
||||||
|
Option "PreferredMode" "2560x1440"
|
||||||
|
Option "Position" "0 480"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = "HDMI-1";
|
||||||
|
monitorConfig = ''
|
||||||
|
Option "PreferredMode" "1920x1080"
|
||||||
|
Option "Position" "2560 0"
|
||||||
|
Option "Rotate" "right"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
41
hosts/muop/hardware-configuration.nix
Normal file
41
hosts/muop/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/29b32abb-ea5d-4cca-b506-3485d8df430c";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."luks-57f71aee-059c-4ae1-8859-89cfcb21a4af".device = "/dev/disk/by-uuid/57f71aee-059c-4ae1-8859-89cfcb21a4af";
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/9094-4224";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
30
modules/core/blocker.nix
Normal file
30
modules/core/blocker.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
# this should block *most* junk sites
|
||||||
|
# make sure to ALWAYS lock commit hash to avoid fed honeypots
|
||||||
|
# three letter agencies go fuck yourself
|
||||||
|
{
|
||||||
|
networking.extraHosts =
|
||||||
|
builtins.readFile (pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/StevenBlack/hosts/e1bb5f08e6f9f4daef93cc327580a95f83959f38/alternates/fakenews-gambling/hosts";
|
||||||
|
sha256 = "LZt3/AvsbYuW+TWsnGnRQNXhvGYO0tMc7uHY/A19bUc=";
|
||||||
|
# blocks fakenews, gambling and coomer sites
|
||||||
|
})
|
||||||
|
+ builtins.readFile (pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/shreyasminocha/shady-hosts/fc9cc4020e80b3f87024c96178cba0f766b95e7a/hosts";
|
||||||
|
sha256 = "jbsEiIcOjoglqLeptHhwWhvL/p0PI3DVMdGCzSXFgNA=";
|
||||||
|
# blocks some shady fed sites
|
||||||
|
})
|
||||||
|
+ builtins.readFile (pkgs.fetchurl {
|
||||||
|
# blocks crypto phishing scams
|
||||||
|
url = "https://raw.githubusercontent.com/MetaMask/eth-phishing-detect/3be0b9594f0bc6e3e699ee30cb2e809618539597/src/hosts.txt";
|
||||||
|
sha256 = "b3HvaLxnUJZOANUL/p+XPNvu9Aod9YLHYYtCZT5Lan0=";
|
||||||
|
})
|
||||||
|
+ builtins.readFile (pkgs.fetchurl {
|
||||||
|
# generic ads
|
||||||
|
url = "https://raw.githubusercontent.com/AdAway/adaway.github.io/04f783e1d9f48bd9ac156610791d7f55d0f7d943/hosts.txt";
|
||||||
|
sha256 = "mp0ka7T0H53rJ3f7yAep3ExXmY6ftpHpAcwWrRWzWYI=";
|
||||||
|
});
|
||||||
|
}
|
||||||
25
modules/core/bootloader.nix
Normal file
25
modules/core/bootloader.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
boot = {
|
||||||
|
tmp.cleanOnBoot = true;
|
||||||
|
bootspec.enable = true;
|
||||||
|
consoleLogLevel = 0;
|
||||||
|
|
||||||
|
kernelParams = [
|
||||||
|
"cgroup_no_v1=all"
|
||||||
|
"systemd.unified_cgroup_hierarchy=yes"
|
||||||
|
];
|
||||||
|
initrd.verbose = false;
|
||||||
|
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
systemd-boot.editor = false;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
timeout = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
18
modules/core/default.nix
Normal file
18
modules/core/default.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./nix.nix
|
||||||
|
./users.nix
|
||||||
|
./xdg.nix
|
||||||
|
|
||||||
|
./schizo.nix
|
||||||
|
./network.nix
|
||||||
|
./blocker.nix
|
||||||
|
|
||||||
|
./display.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
111
modules/core/display.nix
Normal file
111
modules/core/display.nix
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Display manager
|
||||||
|
services.xserver.enable = true;
|
||||||
|
services.xserver.displayManager.sddm.enable = true;
|
||||||
|
services.xserver.displayManager.autoLogin.enable = true;
|
||||||
|
services.xserver.displayManager.autoLogin.user = "muon";
|
||||||
|
|
||||||
|
# Window manager
|
||||||
|
#services.xserver.windowManager.leftwm.enable = true;
|
||||||
|
#services.xserver.windowManager.herbstluftwm.enable = true;
|
||||||
|
|
||||||
|
services.xserver.windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
enableContribAndExtras = true;
|
||||||
|
};
|
||||||
|
systemd.user.services.xmobar = {
|
||||||
|
script = "${lib.getExe pkgs.xmobar}";
|
||||||
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
partOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# system.activationScripts = {
|
||||||
|
# screenlayout.text = ''
|
||||||
|
# ${lib.getExe pkgs.xrandr} --output DVI-D-0 --off --output HDMI-0 --off --output HDMI-1 --mode 1920x1080 --pos 2560x0 --rotate right --output DP-0 --off --output DP-1 --off --output DP-2 --primary --mode 2560x1440 --pos 0x480 --rotate normal --output DP-3 --off
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
systemd.services.screensetter = {
|
||||||
|
enable = true;
|
||||||
|
description = "sets correct screen resolution";
|
||||||
|
wantedBy = [ "graphical-session.target"];
|
||||||
|
# Add this line in your nixos configuration (E.G. the "configuration.nix" file or a module imported into it)
|
||||||
|
# this allows you to use `xrandr` inside of scripts called by this service
|
||||||
|
# https://www.reddit.com/r/NixOS/comments/w4fj6p/comment/ih1oa5e/?utm_source=reddit&utm_medium=web2x&context=3
|
||||||
|
path = [ pkgs.xorg.xrandr ];
|
||||||
|
|
||||||
|
unitConfig = {
|
||||||
|
type = "simple";
|
||||||
|
};
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
# ExecStart = "/home/<this_user>/.screenlayout/nixos-screenlayout.sh";
|
||||||
|
ExecStart = "${config.users.users.muon.home}/.screenlayout/main.sh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# systemd.user.services.screenlayout = {
|
||||||
|
# script = "${config.users.users.muon.home}/.screenlayout/main.sh";
|
||||||
|
# wantedBy = [ "graphical-session.target" ];
|
||||||
|
# partOf = [ "graphical-session.target" ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Wayland
|
||||||
|
# services.xserver.displayManager.gdm.wayland = true;
|
||||||
|
# programs.hyprland.package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
|
# programs.hyprland.enable = true;
|
||||||
|
|
||||||
|
# environment.variables = {
|
||||||
|
# GDK_SCALE="2";
|
||||||
|
# XCURSOR_SIZE="24";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# hardware = {
|
||||||
|
# opengl = {
|
||||||
|
# enable = true;
|
||||||
|
# driSupport = true;
|
||||||
|
# driSupport32Bit = true;
|
||||||
|
# extraPackages = with pkgs; [
|
||||||
|
# vaapiVdpau
|
||||||
|
# libvdpau-va-gl
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# pulseaudio.support32Bit = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# xdg.portal = {
|
||||||
|
# enable = true;
|
||||||
|
# wlr.enable = false;
|
||||||
|
# extraPortals = [
|
||||||
|
# pkgs.xdg-desktop-portal-gtk
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# sound = {
|
||||||
|
# enable = true;
|
||||||
|
# mediaKeys.enable = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Hide cursor
|
||||||
|
services.xbanish.enable = true;
|
||||||
|
|
||||||
|
# Install fonts
|
||||||
|
fonts = {
|
||||||
|
fonts = with pkgs; [
|
||||||
|
mononoki
|
||||||
|
openmoji-color
|
||||||
|
(nerdfonts.override { fonts = [ "Mononoki" ]; })
|
||||||
|
];
|
||||||
|
fontconfig = {
|
||||||
|
hinting.autohint = true;
|
||||||
|
defaultFonts = {
|
||||||
|
emoji = [ "OpenMoji Color" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
80
modules/core/network.nix
Normal file
80
modules/core/network.nix
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
networking = {
|
||||||
|
interfaces.enp0s31f6.mtu = 1200;
|
||||||
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
wifi.macAddress = "random";
|
||||||
|
};
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
# if your minecraft server is not worky
|
||||||
|
# this is probably why
|
||||||
|
# Steam Remote UDP ports 27031 and 27036 and TCP ports 27036 and 27037
|
||||||
|
allowedTCPPorts = [443 80 22 7000 8080 5432 27036 27037 9122];
|
||||||
|
allowedUDPPorts = [443 80 44857 8080 27031 51820];
|
||||||
|
allowPing = true;
|
||||||
|
logReversePathDrops = true;
|
||||||
|
};
|
||||||
|
# nameservers = ["10.8.0.1"];
|
||||||
|
};
|
||||||
|
environment.etc = {
|
||||||
|
"resolv.conf".text = ''
|
||||||
|
options timeout:1
|
||||||
|
nameserver 192.168.1.1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# slows down boot time
|
||||||
|
systemd.services.NetworkManager-wait-online.enable = false;
|
||||||
|
|
||||||
|
# services.openvpn.servers = {
|
||||||
|
# remote = { config = ''config ${config.users.users.muon.home}/documents/openvpn/muon.ovpn''; };
|
||||||
|
# };
|
||||||
|
|
||||||
|
# services.openssh = {
|
||||||
|
# enable = true;
|
||||||
|
# ports = [9122];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# # Enable WireGuard
|
||||||
|
# networking.wireguard.interfaces = {
|
||||||
|
# # "wg0" is the network interface name. You can name the interface arbitrarily.
|
||||||
|
# wg0 = {
|
||||||
|
# # Determines the IP address and subnet of the client's end of the tunnel interface.
|
||||||
|
# ips = [ "10.10.10.2/24" ];
|
||||||
|
# listenPort = 51820; # to match firewall allowedUDPPorts (without this wg uses random port numbers)
|
||||||
|
|
||||||
|
# # Path to the private key file.
|
||||||
|
# #
|
||||||
|
# # Note: The private key can also be included inline via the privateKey option,
|
||||||
|
# # but this makes the private key world-readable; thus, using privateKeyFile is
|
||||||
|
# # recommended.
|
||||||
|
# privateKeyFile = ''${config.users.users.muon.home}/documents/wireguard/vpn-client-private.key'';
|
||||||
|
|
||||||
|
# peers = [
|
||||||
|
# # For a client configuration, one peer entry for the server will suffice.
|
||||||
|
|
||||||
|
# {
|
||||||
|
# # Public key of the server (not a file path).
|
||||||
|
# publicKey = "iBuHEKkNftQHXHJbj1wJS2D/PwXHkldvkdQQCPsCRH0=";
|
||||||
|
|
||||||
|
# # Forward all the traffic via VPN.
|
||||||
|
# allowedIPs = [ "0.0.0.0/0" ];
|
||||||
|
# # Or forward only particular subnets
|
||||||
|
# #allowedIPs = [ "10.100.0.1" "91.108.12.0/22" ];
|
||||||
|
|
||||||
|
# # Set this to the server IP and port.
|
||||||
|
# endpoint = "93.95.230.11:51820"; # ToDo: route to endpoint not automatically configured https://wiki.archlinux.org/index.php/WireGuard#Loop_routing https://discourse.nixos.org/t/solved-minimal-firewall-setup-for-wireguard-client/7577
|
||||||
|
|
||||||
|
# # Send keepalives every 25 seconds. Important to keep NAT tables alive.
|
||||||
|
# persistentKeepalive = 25;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
98
modules/core/nix.nix
Normal file
98
modules/core/nix.nix
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment = {
|
||||||
|
# set channels (backwards compatibility)
|
||||||
|
etc = {
|
||||||
|
"nix/flake-channels/nixpkgs".source = inputs.nixpkgs;
|
||||||
|
"nix/flake-channels/home-manager".source = inputs.home-manager;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemPackages = with pkgs; [git deadnix alejandra statix];
|
||||||
|
defaultPackages = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = false;
|
||||||
|
allowBroken = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# faster rebuilding
|
||||||
|
documentation = {
|
||||||
|
enable = true;
|
||||||
|
doc.enable = false;
|
||||||
|
man.enable = true;
|
||||||
|
dev.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "daily";
|
||||||
|
options = "--delete-older-than 3d";
|
||||||
|
};
|
||||||
|
package = pkgs.nixUnstable;
|
||||||
|
|
||||||
|
# Make builds run with low priority so my system stays responsive
|
||||||
|
daemonCPUSchedPolicy = "idle";
|
||||||
|
daemonIOSchedClass = "idle";
|
||||||
|
|
||||||
|
# pin the registry to avoid downloading and evaling a new nixpkgs version every time
|
||||||
|
registry = lib.mapAttrs (_: v: {flake = v;}) inputs;
|
||||||
|
|
||||||
|
# This will additionally add your inputs to the system's legacy channels
|
||||||
|
# Making legacy nix commands consistent as well, awesome!
|
||||||
|
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
|
||||||
|
|
||||||
|
# Free up to 1GiB whenever there is less than 100MiB left.
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
keep-outputs = true
|
||||||
|
warn-dirty = false
|
||||||
|
keep-derivations = true
|
||||||
|
min-free = ${toString (100 * 1024 * 1024)}
|
||||||
|
max-free = ${toString (1024 * 1024 * 1024)}
|
||||||
|
use-xdg-base-directories = true
|
||||||
|
'';
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
# use binary cache, its not gentoo
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
# allow sudo users to mark the following values as trusted
|
||||||
|
allowed-users = ["@wheel"];
|
||||||
|
# only allow sudo users to manage the nix store
|
||||||
|
trusted-users = ["@wheel"];
|
||||||
|
sandbox = true;
|
||||||
|
max-jobs = "auto";
|
||||||
|
# continue building derivations if one fails
|
||||||
|
keep-going = true;
|
||||||
|
log-lines = 20;
|
||||||
|
extra-experimental-features = ["flakes" "nix-command" "recursive-nix" "ca-derivations"];
|
||||||
|
|
||||||
|
# use binary cache, its not gentoo
|
||||||
|
substituters = [
|
||||||
|
"https://cache.nixos.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
"https://nixpkgs-unfree.cachix.org"
|
||||||
|
"https://oxalica.cachix.org"
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
|
];
|
||||||
|
|
||||||
|
trusted-public-keys = [
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
"nixpkgs-unfree.cachix.org-1:hqvoInulhbV4nJ9yJOEr+4wxhDV4xq2d1DK7S6Nj6rs="
|
||||||
|
"oxalica.cachix.org-1:h0iRBw6tQD8+51ZvnNEBPbwLR58UD7klauDBWzBdugQ="
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
system.autoUpgrade.enable = false;
|
||||||
|
system.stateVersion = "23.05"; # DONT TOUCH THIS
|
||||||
|
}
|
||||||
152
modules/core/schizo.nix
Normal file
152
modules/core/schizo.nix
Normal file
|
|
@ -0,0 +1,152 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.tor = {
|
||||||
|
enable = true;
|
||||||
|
client.enable = true;
|
||||||
|
torsocks.enable = true;
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
(writeScriptBin "sudo" ''exec doas "$@"'')
|
||||||
|
];
|
||||||
|
security = {
|
||||||
|
protectKernelImage = true;
|
||||||
|
lockKernelModules = false;
|
||||||
|
rtkit.enable = true;
|
||||||
|
apparmor = {
|
||||||
|
enable = true;
|
||||||
|
killUnconfinedConfinables = true;
|
||||||
|
packages = [pkgs.apparmor-profiles];
|
||||||
|
};
|
||||||
|
pam = {
|
||||||
|
loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "@wheel";
|
||||||
|
item = "nofile";
|
||||||
|
type = "soft";
|
||||||
|
value = "524288";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "@wheel";
|
||||||
|
item = "nofile";
|
||||||
|
type = "hard";
|
||||||
|
value = "1048576";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
services = {
|
||||||
|
login.enableGnomeKeyring = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
doas = {
|
||||||
|
enable = true;
|
||||||
|
extraRules = [
|
||||||
|
{
|
||||||
|
groups = ["wheel"];
|
||||||
|
persist = true;
|
||||||
|
keepEnv = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
groups = ["power"];
|
||||||
|
noPass = true;
|
||||||
|
cmd = "${pkgs.systemd}/bin/poweroff";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
groups = ["power"];
|
||||||
|
noPass = true;
|
||||||
|
cmd = "${pkgs.systemd}/bin/reboot";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
groups = ["nix"];
|
||||||
|
cmd = "nix-collect-garbage";
|
||||||
|
noPass = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
groups = ["nix"];
|
||||||
|
cmd = "nixos-rebuild";
|
||||||
|
keepEnv = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
sudo.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.kernel.sysctl = {
|
||||||
|
"kernel.yama.ptrace_scope" = 2;
|
||||||
|
"kernel.kptr_restrict" = 2;
|
||||||
|
"kernel.sysrq" = 0;
|
||||||
|
"net.core.bpf_jit_enable" = false;
|
||||||
|
"kernel.ftrace_enabled" = false;
|
||||||
|
"net.ipv4.conf.all.log_martians" = true;
|
||||||
|
"net.ipv4.conf.all.rp_filter" = "1";
|
||||||
|
"net.ipv4.conf.default.log_martians" = true;
|
||||||
|
"net.ipv4.conf.default.rp_filter" = "1";
|
||||||
|
"net.ipv4.icmp_echo_ignore_broadcasts" = true;
|
||||||
|
"net.ipv4.conf.all.accept_redirects" = false;
|
||||||
|
"net.ipv4.conf.all.secure_redirects" = false;
|
||||||
|
"net.ipv4.conf.default.accept_redirects" = false;
|
||||||
|
"net.ipv4.conf.default.secure_redirects" = false;
|
||||||
|
"net.ipv6.conf.all.accept_redirects" = false;
|
||||||
|
"net.ipv6.conf.default.accept_redirects" = false;
|
||||||
|
"net.ipv4.conf.all.send_redirects" = false;
|
||||||
|
"net.ipv4.conf.default.send_redirects" = false;
|
||||||
|
"net.ipv6.conf.default.accept_ra" = 0;
|
||||||
|
"net.ipv6.conf.all.accept_ra" = 0;
|
||||||
|
"net.ipv4.tcp_syncookies" = 1;
|
||||||
|
"net.ipv4.tcp_timestamps" = 0;
|
||||||
|
"net.ipv4.tcp_rfc1337" = 1;
|
||||||
|
"net.ipv4.tcp_fastopen" = 3;
|
||||||
|
"net.ipv4.tcp_congestion_control" = "bbr";
|
||||||
|
"net.core.default_qdisc" = "cake";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Security
|
||||||
|
boot.blacklistedKernelModules = [
|
||||||
|
# Obscure network protocols
|
||||||
|
"ax25"
|
||||||
|
"netrom"
|
||||||
|
"rose"
|
||||||
|
# Old or rare or insufficiently audited filesystems
|
||||||
|
"adfs"
|
||||||
|
"affs"
|
||||||
|
"bfs"
|
||||||
|
"befs"
|
||||||
|
"cramfs"
|
||||||
|
"efs"
|
||||||
|
"erofs"
|
||||||
|
"exofs"
|
||||||
|
"freevxfs"
|
||||||
|
"f2fs"
|
||||||
|
"vivid"
|
||||||
|
"gfs2"
|
||||||
|
"ksmbd"
|
||||||
|
"nfsv4"
|
||||||
|
"nfsv3"
|
||||||
|
"cifs"
|
||||||
|
"nfs"
|
||||||
|
"cramfs"
|
||||||
|
"freevxfs"
|
||||||
|
"jffs2"
|
||||||
|
"hfs"
|
||||||
|
"hfsplus"
|
||||||
|
"squashfs"
|
||||||
|
"udf"
|
||||||
|
"bluetooth"
|
||||||
|
"btusb"
|
||||||
|
# "uvcvideo" # thats why your webcam not worky
|
||||||
|
"hpfs"
|
||||||
|
"jfs"
|
||||||
|
"minix"
|
||||||
|
"nilfs2"
|
||||||
|
"omfs"
|
||||||
|
# "uvcvideo"
|
||||||
|
"qnx4"
|
||||||
|
"qnx6"
|
||||||
|
"sysv"
|
||||||
|
];
|
||||||
|
}
|
||||||
258
modules/core/system.nix
Normal file
258
modules/core/system.nix
Normal file
|
|
@ -0,0 +1,258 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
xdg,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# compress half of the ram to use as swap
|
||||||
|
zramSwap = {
|
||||||
|
enable = true;
|
||||||
|
algorithm = "zstd";
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO Move?
|
||||||
|
environment.variables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
BROWSER = "chromium";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.overlays = [ inputs.rust-overlay.overlays.default ];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
git
|
||||||
|
clang
|
||||||
|
llvmPackages_16.bintools
|
||||||
|
rust-bin.nightly.latest.default
|
||||||
|
# support both 32- and 64-bit applications
|
||||||
|
wineWowPackages.stable
|
||||||
|
# winetricks (all versions)
|
||||||
|
winetricks
|
||||||
|
texlive.combined.scheme-small
|
||||||
|
];
|
||||||
|
|
||||||
|
virtualisation.virtualbox.host.enable = true;
|
||||||
|
users.extraGroups.vboxusers.members = [ "muon" ];
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Atlantic/Reykjavik";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_DK.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_DK.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_DK.UTF-8";
|
||||||
|
LC_MONETARY = "en_DK.UTF-8";
|
||||||
|
LC_NAME = "en_DK.UTF-8";
|
||||||
|
LC_NUMERIC = "en_DK.UTF-8";
|
||||||
|
LC_PAPER = "en_DK.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_DK.UTF-8";
|
||||||
|
LC_TIME = "en_DK.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver = {
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "";
|
||||||
|
xkbOptions = "caps:escape";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Use keymap in console
|
||||||
|
console.useXkbConfig = true;
|
||||||
|
|
||||||
|
programs.thunar.enable = true;
|
||||||
|
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
||||||
|
services.tumbler.enable = true; # Thumbnail support for images
|
||||||
|
|
||||||
|
# Sound
|
||||||
|
sound = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
services.pipewire = {
|
||||||
|
enable = false;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
|
services.syncthing = with config.users.users.muon; {
|
||||||
|
enable = true;
|
||||||
|
user = "muon";
|
||||||
|
dataDir = "${config.xdg.userDirs.documents}";
|
||||||
|
configDir = "${home}/.config/syncthing";
|
||||||
|
|
||||||
|
overrideDevices = true;
|
||||||
|
overrideFolders = true;
|
||||||
|
|
||||||
|
devices = {
|
||||||
|
"syncthing" = {
|
||||||
|
id = "SDFDQ4N-UPPGKQH-JWVII4O-FT4XTH3-FT2RPMZ-EQC57PQ-VXL7BBD-4LLPTA4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
folders = {
|
||||||
|
"documents" = {
|
||||||
|
path = "${home}/documents";
|
||||||
|
devices = ["syncthing"];
|
||||||
|
};
|
||||||
|
"librewolf" = {
|
||||||
|
path = "${home}/.librewolf";
|
||||||
|
devices = ["syncthing"];
|
||||||
|
};
|
||||||
|
"logseq" = {
|
||||||
|
path = "${home}/.logseq";
|
||||||
|
devices = ["syncthing"];
|
||||||
|
};
|
||||||
|
"zotero" = {
|
||||||
|
path = "${home}/Zotero";
|
||||||
|
devices = ["syncthing"];
|
||||||
|
};
|
||||||
|
"zotero-conf" = {
|
||||||
|
path = "${home}/.zotero";
|
||||||
|
devices = ["syncthing"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nix-ld = {
|
||||||
|
enable = true;
|
||||||
|
libraries = with pkgs; [
|
||||||
|
stdenv.cc.cc
|
||||||
|
openssl
|
||||||
|
curl
|
||||||
|
glib
|
||||||
|
util-linux
|
||||||
|
glibc
|
||||||
|
icu
|
||||||
|
libunwind
|
||||||
|
libuuid
|
||||||
|
zlib
|
||||||
|
libsecret
|
||||||
|
# graphical
|
||||||
|
freetype
|
||||||
|
libglvnd
|
||||||
|
libnotify
|
||||||
|
SDL2
|
||||||
|
vulkan-loader
|
||||||
|
gdk-pixbuf
|
||||||
|
xorg.libX11
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd = let
|
||||||
|
extraConfig = ''
|
||||||
|
DefaultTimeoutStopSec=15s
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
inherit extraConfig;
|
||||||
|
user = {inherit extraConfig;};
|
||||||
|
services."getty@tty1".enable = false;
|
||||||
|
services."autovt@tty1".enable = false;
|
||||||
|
services."getty@tty7".enable = false;
|
||||||
|
services."autovt@tty7".enable = false;
|
||||||
|
# Systemd OOMd
|
||||||
|
# Fedora enables these options by default. See the 10-oomd-* files here:
|
||||||
|
# https://src.fedoraproject.org/rpms/systemd/tree/acb90c49c42276b06375a66c73673ac3510255
|
||||||
|
oomd = {
|
||||||
|
enableRootSlice = true;
|
||||||
|
enableUserServices = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
# Atmel DFU
|
||||||
|
### ATmega16U2
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess"
|
||||||
|
### ATmega32U2
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess"
|
||||||
|
### ATmega16U4
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess"
|
||||||
|
### ATmega32U4
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
|
||||||
|
### AT90USB64
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
|
||||||
|
### AT90USB162
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
|
||||||
|
### AT90USB128
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Input Club
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess"
|
||||||
|
|
||||||
|
# STM32duino
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess"
|
||||||
|
# STM32 DFU
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
|
||||||
|
|
||||||
|
# BootloadHID
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess"
|
||||||
|
|
||||||
|
# USBAspLoader
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
|
||||||
|
|
||||||
|
# USBtinyISP
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess"
|
||||||
|
|
||||||
|
# ModemManager should ignore the following devices
|
||||||
|
# Atmel SAM-BA (Massdrop)
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
|
||||||
|
# Caterina (Pro Micro)
|
||||||
|
## pid.codes shared PID
|
||||||
|
### Keyboardio Atreus 2 Bootloader
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
## Spark Fun Electronics
|
||||||
|
### Pro Micro 3V3/8MHz
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
### Pro Micro 5V/16MHz
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
### LilyPad 3V3/8MHz (and some Pro Micro clones)
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
## Pololu Electronics
|
||||||
|
### A-Star 32U4
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
## Arduino SA
|
||||||
|
### Leonardo
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
### Micro
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
## Adafruit Industries LLC
|
||||||
|
### Feather 32U4
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
### ItsyBitsy 32U4 3V3/8MHz
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
### ItsyBitsy 32U4 5V/16MHz
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
## dog hunter AG
|
||||||
|
### Leonardo
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
### Micro
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||||
|
|
||||||
|
# hid_listen
|
||||||
|
KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"
|
||||||
|
|
||||||
|
# hid bootloaders
|
||||||
|
## QMK HID
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess"
|
||||||
|
## PJRC's HalfKay
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess"
|
||||||
|
|
||||||
|
# APM32 DFU
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess"
|
||||||
|
|
||||||
|
# GD32V DFU
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess"
|
||||||
|
|
||||||
|
# WB32 DFU
|
||||||
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess"
|
||||||
|
'';
|
||||||
|
}
|
||||||
31
modules/core/users.nix
Normal file
31
modules/core/users.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
users.users.root.initialPassword = "changeme";
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
programs.adb.enable = true;
|
||||||
|
users.users.muon = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"systemd-journal"
|
||||||
|
"vboxusers"
|
||||||
|
"audio"
|
||||||
|
"plugdev"
|
||||||
|
"wireshark"
|
||||||
|
"video"
|
||||||
|
"input"
|
||||||
|
"lp"
|
||||||
|
"networkmanager"
|
||||||
|
"power"
|
||||||
|
"nix"
|
||||||
|
"docker"
|
||||||
|
"adbusers"
|
||||||
|
];
|
||||||
|
uid = 1000;
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
initialPassword = "changeme";
|
||||||
|
};
|
||||||
|
}
|
||||||
17
modules/core/xdg.nix
Normal file
17
modules/core/xdg.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.variables = with config.users.users.muon; {
|
||||||
|
WINIT_X11_SCALE_FACTOR="1";
|
||||||
|
|
||||||
|
# XDG Base
|
||||||
|
XDG_CONFIG_HOME="${home}/.config";
|
||||||
|
XDG_CACHE_HOME="${home}/.cache";
|
||||||
|
XDG_DATA_HOME="${home}/.local/share";
|
||||||
|
XDG_STATE_HOME="${home}/.local/state";
|
||||||
|
};
|
||||||
|
}
|
||||||
48
modules/home/alacritty/default.nix
Normal file
48
modules/home/alacritty/default.nix
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
cursor = {
|
||||||
|
style.shape = "Beam";
|
||||||
|
vi_mode_style = "Block";
|
||||||
|
unfocused_hollow = true;
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
padding.x = 6;
|
||||||
|
padding.y = 6;
|
||||||
|
};
|
||||||
|
key_bindings = [
|
||||||
|
{
|
||||||
|
key = "U";
|
||||||
|
mods = "Control";
|
||||||
|
mode = "Vi|~Search";
|
||||||
|
action = "ScrollHalfPageUp";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "D";
|
||||||
|
mods = "Control";
|
||||||
|
mode = "Vi|~Search";
|
||||||
|
action = "ScrollHalfPageDown";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "U";
|
||||||
|
mods = "Control";
|
||||||
|
mode = "~Alt";
|
||||||
|
action = "ScrollHalfPageUp";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "D";
|
||||||
|
mods = "Control";
|
||||||
|
mode = "~Alt";
|
||||||
|
action = "ScrollHalfPageDown";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
36
modules/home/default.nix
Normal file
36
modules/home/default.nix
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
self,
|
||||||
|
stylix,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
config.home.stateVersion = "23.05";
|
||||||
|
config.home.extraOutputsToInstall = ["doc" "devdoc"];
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./packages.nix
|
||||||
|
|
||||||
|
./git
|
||||||
|
./shell
|
||||||
|
./alacritty
|
||||||
|
./helix
|
||||||
|
./tools
|
||||||
|
./qutebrowser
|
||||||
|
|
||||||
|
stylix.homeManagerModules.stylix
|
||||||
|
./theme
|
||||||
|
|
||||||
|
# ./herbstluftwm
|
||||||
|
# ./leftwm
|
||||||
|
./xmonad
|
||||||
|
# ./hyprland
|
||||||
|
# inputs.hyprland.homeManagerModules.default
|
||||||
|
|
||||||
|
inputs.nix-doom-emacs.hmModule
|
||||||
|
./doom-emacs
|
||||||
|
];
|
||||||
|
}
|
||||||
12
modules/home/doom-emacs/default.nix
Normal file
12
modules/home/doom-emacs/default.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.doom-emacs = {
|
||||||
|
enable = true;
|
||||||
|
doomPrivateDir = ./doom;
|
||||||
|
};
|
||||||
|
}
|
||||||
121
modules/home/doom-emacs/doom/config.el
Normal file
121
modules/home/doom-emacs/doom/config.el
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||||
|
;; sync' after modifying this file!
|
||||||
|
|
||||||
|
|
||||||
|
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||||
|
;; clients, file templates and snippets.
|
||||||
|
(setq user-full-name "Muonis"
|
||||||
|
user-mail-address "user@muon.host")
|
||||||
|
|
||||||
|
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
|
||||||
|
;; are the three important ones:
|
||||||
|
;;
|
||||||
|
;; + `doom-font'
|
||||||
|
;; + `doom-variable-pitch-font'
|
||||||
|
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||||
|
;; presentations or streaming.
|
||||||
|
;;
|
||||||
|
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
|
||||||
|
;; font string. You generally only need these two:
|
||||||
|
;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
|
||||||
|
(setq doom-font (font-spec :family "Mononoki Nerd Font" :size 14 :weight 'regular))
|
||||||
|
|
||||||
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
|
;; `load-theme' function. This is the default:
|
||||||
|
(setq doom-theme 'doom-gruvbox)
|
||||||
|
|
||||||
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
|
;; change `org-directory'. It must be set before org loads!
|
||||||
|
(setq org-directory "~/documents/org/")
|
||||||
|
|
||||||
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
|
; (setq display-line-numbers-type t)
|
||||||
|
;; (setq display-line-numbers-type relative)
|
||||||
|
(setq display-line-numbers-type 'relative)
|
||||||
|
(setq doom-line-numbers-style 'relative)
|
||||||
|
|
||||||
|
;; Company coc mode
|
||||||
|
(company-tng-configure-default)
|
||||||
|
|
||||||
|
;; Unbind jk bind jj, Dutch :/
|
||||||
|
(setq evil-escape-key-sequence "jj")
|
||||||
|
|
||||||
|
;; Here are some additional functions/macros that could help you configure Doom:
|
||||||
|
;;
|
||||||
|
;; - `load!' for loading external *.el files relative to this one
|
||||||
|
;; - `use-package!' for configuring packages
|
||||||
|
;; - `after!' for running code after a package has loaded
|
||||||
|
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||||
|
;; this file. Emacs searches the `load-path' when you load packages with
|
||||||
|
;; `require' or `use-package'.
|
||||||
|
;; - `map!' for binding new keys
|
||||||
|
;;
|
||||||
|
;; To get information about any of these functions/macros, move the cursor over
|
||||||
|
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||||
|
;; This will open documentation for it, including demos of how they are used.
|
||||||
|
;;
|
||||||
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
|
;; they are implemented.
|
||||||
|
|
||||||
|
;; Window nav
|
||||||
|
(map! :g "C-h" 'evil-window-left)
|
||||||
|
(map! :g "C-j" 'evil-window-down)
|
||||||
|
(map! :g "C-k" 'evil-window-up)
|
||||||
|
(map! :g "C-l" 'evil-window-right)
|
||||||
|
|
||||||
|
;; org-roam
|
||||||
|
(setq org-roam-directory "~/documents/roam")
|
||||||
|
(org-roam-db-autosync-enable)
|
||||||
|
(org-roam-complete-everywhere)
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
"r f" 'org-roam-node-find
|
||||||
|
"r g" 'org-roam-graph
|
||||||
|
"r b" 'org-roam-buffer-toggle
|
||||||
|
"r i" 'org-roam-node-insert
|
||||||
|
"r c" 'org-roam-capture
|
||||||
|
)
|
||||||
|
|
||||||
|
;; vterm
|
||||||
|
(after! vterm
|
||||||
|
(set-evil-initial-state! 'vterm-mode
|
||||||
|
'emacs))
|
||||||
|
|
||||||
|
;; Autocomplete region buffer
|
||||||
|
(defun narrow-to-region-indirect (start end)
|
||||||
|
"Restrict editing in this buffer to the current region, indirectly."
|
||||||
|
(interactive "r")
|
||||||
|
(deactivate-mark)
|
||||||
|
(let ((buf (clone-indirect-buffer nil nil)))
|
||||||
|
(with-current-buffer buf
|
||||||
|
(narrow-to-region start end))
|
||||||
|
(switch-to-buffer buf)))
|
||||||
|
|
||||||
|
;; EIN
|
||||||
|
(setq ein:output-area-inlined-images t)
|
||||||
|
(setq ein:slice-image t)
|
||||||
|
(setq ein:completion-backend 'ein:use-company-backend)
|
||||||
|
(setq ein:polymode t)
|
||||||
|
|
||||||
|
;; ORG
|
||||||
|
(require 'org)
|
||||||
|
(require 'ox-latex)
|
||||||
|
(add-to-list 'org-latex-packages-alist '("" "minted"))
|
||||||
|
(setq org-latex-listings 'minted)
|
||||||
|
|
||||||
|
(setq org-latex-pdf-process
|
||||||
|
'("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
|
||||||
|
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
|
||||||
|
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
|
||||||
|
|
||||||
|
(setq org-src-fontify-natively t)
|
||||||
|
|
||||||
|
(org-babel-do-load-languages
|
||||||
|
'org-babel-load-languages
|
||||||
|
'((R . t)
|
||||||
|
(latex . t)))
|
||||||
16
modules/home/doom-emacs/doom/custom.el
Normal file
16
modules/home/doom-emacs/doom/custom.el
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
(custom-set-variables
|
||||||
|
;; custom-set-variables was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(custom-safe-themes
|
||||||
|
'("7a424478cb77a96af2c0f50cfb4e2a88647b3ccca225f8c650ed45b7f50d9525" "a138ec18a6b926ea9d66e61aac28f5ce99739cf38566876dc31e29ec8757f6e2" "b54376ec363568656d54578d28b95382854f62b74c32077821fdfd604268616a" "2e05569868dc11a52b08926b4c1a27da77580daa9321773d92822f7a639956ce" "5f128efd37c6a87cd4ad8e8b7f2afaba425425524a68133ac0efd87291d05874" "680f62b751481cc5b5b44aeab824e5683cf13792c006aeba1c25ce2d89826426" "4ff1c4d05adad3de88da16bd2e857f8374f26f9063b2d77d38d14686e3868d8d" "8d3ef5ff6273f2a552152c7febc40eabca26bae05bd12bc85062e2dc224cde9a" "944d52450c57b7cbba08f9b3d08095eb7a5541b0ecfb3a0a9ecd4a18f3c28948" "2721b06afaf1769ef63f942bf3e977f208f517b187f2526f0e57c1bd4a000350" "e3daa8f18440301f3e54f2093fe15f4fe951986a8628e98dcd781efbec7a46f2" "afa47084cb0beb684281f480aa84dab7c9170b084423c7f87ba755b15f6776ef" "a44e2d1636a0114c5e407a748841f6723ed442dc3a0ed086542dc71b92a87aee" "60ada0ff6b91687f1a04cc17ad04119e59a7542644c7c59fc135909499400ab8" "467dc6fdebcf92f4d3e2a2016145ba15841987c71fbe675dcfe34ac47ffb9195" "e19ac4ef0f028f503b1ccafa7c337021834ce0d1a2bca03fcebc1ef635776bea" "b5803dfb0e4b6b71f309606587dd88651efe0972a5be16ece6a958b197caeed8" "6c531d6c3dbc344045af7829a3a20a09929e6c41d7a7278963f7d3215139f6a7" "1f1b545575c81b967879a5dddc878783e6ebcca764e4916a270f9474215289e5" "3d47380bf5aa650e7b8e049e7ae54cdada54d0637e7bac39e4cc6afb44e8463b" "6c98bc9f39e8f8fd6da5b9c74a624cbb3782b4be8abae8fd84cbc43053d7c175" "97db542a8a1731ef44b60bc97406c1eb7ed4528b0d7296997cbb53969df852d6" "028c226411a386abc7f7a0fba1a2ebfae5fe69e2a816f54898df41a6a3412bb5" "7a7b1d475b42c1a0b61f3b1d1225dd249ffa1abb1b7f726aec59ac7ca3bf4dae" "da186cce19b5aed3f6a2316845583dbee76aea9255ea0da857d1c058ff003546" "4699e3a86b1863bbc695236036158d175a81f0f3ea504e2b7c71f8f7025e19e3" "234dbb732ef054b109a9e5ee5b499632c63cc24f7c2383a849815dacc1727cb6" "1704976a1797342a1b4ea7a75bdbb3be1569f4619134341bd5a4c1cfb16abad4" "f6665ce2f7f56c5ed5d91ed5e7f6acb66ce44d0ef4acfaa3a42c7cfe9e9a9013" "c4063322b5011829f7fdd7509979b5823e8eea2abf1fe5572ec4b7af1dd78519" default))
|
||||||
|
'(package-selected-packages '(jekyll-modes))
|
||||||
|
'(warning-suppress-log-types '((lsp-mode) (lsp-mode)))
|
||||||
|
'(warning-suppress-types '((emacs) (defvaralias) (lsp-mode))))
|
||||||
|
(custom-set-faces
|
||||||
|
;; custom-set-faces was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
)
|
||||||
190
modules/home/doom-emacs/doom/init.el
Normal file
190
modules/home/doom-emacs/doom/init.el
Normal file
|
|
@ -0,0 +1,190 @@
|
||||||
|
;;; init.el -*- lexical-binding: t; -*-
|
||||||
|
;; This file controls what Doom modules are enabled and what order they load
|
||||||
|
;; in. Remember to run 'doom sync' after modifying it!
|
||||||
|
|
||||||
|
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||||
|
;; documentation. There you'll find a "Module Index" link where you'll find
|
||||||
|
;; a comprehensive list of Doom's modules and what flags they support.
|
||||||
|
|
||||||
|
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||||
|
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||||
|
;; flags as well (those symbols that start with a plus).
|
||||||
|
;;
|
||||||
|
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||||
|
;; directory (for easy access to its source code).
|
||||||
|
|
||||||
|
(doom! :input
|
||||||
|
;;chinese
|
||||||
|
;;japanese
|
||||||
|
;;layout ; auie,ctsrnm is the superior home row
|
||||||
|
|
||||||
|
:completion
|
||||||
|
company ; the ultimate code completion backend
|
||||||
|
(helm +fuzzy) ; the *other* search engine for love and life
|
||||||
|
;; ido ; the other *other* search engine...
|
||||||
|
;; (ivy +fuzzy) ; a search engine for love and life
|
||||||
|
;; (vertico +fuzzy) ; the search engine of the future
|
||||||
|
|
||||||
|
:ui
|
||||||
|
;;deft ; notational velocity for Emacs
|
||||||
|
doom ; what makes DOOM look the way it does
|
||||||
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
|
doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
|
;;(emoji +unicode) ; 🙂
|
||||||
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
|
;;hydra
|
||||||
|
;;indent-guides ; highlighted indent columns
|
||||||
|
(ligatures +hasklig) ; ligatures and symbols to make your code pretty again
|
||||||
|
;;minimap ; show a map of the code on the side
|
||||||
|
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||||
|
;;nav-flash ; blink cursor line after big motions
|
||||||
|
neotree ; a project drawer, like NERDTree for vim
|
||||||
|
ophints ; highlight the region an operation acts on
|
||||||
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
;;tabs ; a tab bar for Emacs
|
||||||
|
;;treemacs ; a project drawer, like neotree but cooler
|
||||||
|
;;unicode ; extended unicode support for various languages
|
||||||
|
vc-gutter ; vcs diff in the fringe
|
||||||
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
|
;;window-select ; visually switch windows
|
||||||
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
|
:editor
|
||||||
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
|
file-templates ; auto-snippets for empty files
|
||||||
|
fold ; (nigh) universal code folding
|
||||||
|
(format +onsave) ; automated prettiness
|
||||||
|
;;god ; run Emacs commands without modifier keys
|
||||||
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
|
;;multiple-cursors ; editing in many places at once
|
||||||
|
;;objed ; text object editing for the innocent
|
||||||
|
;;parinfer ; turn lisp into python, sort of
|
||||||
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
|
snippets ; my elves. They type so I don't have to
|
||||||
|
;;word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
|
:emacs
|
||||||
|
dired ; making dired pretty [functional]
|
||||||
|
electric ; smarter, keyword-based electric-indent
|
||||||
|
;;ibuffer ; interactive buffer management
|
||||||
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
|
:term
|
||||||
|
;;eshell ; the elisp shell that works everywhere
|
||||||
|
;;shell ; simple shell REPL for Emacs
|
||||||
|
term ; basic terminal emulator for Emacs
|
||||||
|
vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
|
:checkers
|
||||||
|
syntax ; tasing you for every semicolon you forget
|
||||||
|
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
||||||
|
;;grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
|
:tools
|
||||||
|
;;ansible
|
||||||
|
biblio ; Writes a PhD for you (citation needed)
|
||||||
|
debugger ; FIXME stepping through code, to help you add bugs
|
||||||
|
;;direnv
|
||||||
|
;;docker
|
||||||
|
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||||
|
ein ; tame Jupyter notebooks with emacs
|
||||||
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
|
;;gist ; interacting with github gists
|
||||||
|
lookup ; navigate your code and its documentation
|
||||||
|
lsp ; M-x vscode
|
||||||
|
magit ; a git porcelain for Emacs
|
||||||
|
;;make ; run make tasks from Emacs
|
||||||
|
;;pass ; password manager for nerds
|
||||||
|
pdf ; pdf enhancements
|
||||||
|
;;prodigy ; FIXME managing external services & code builders
|
||||||
|
;;rgb ; creating color strings
|
||||||
|
;;taskrunner ; taskrunner for all your projects
|
||||||
|
;;terraform ; infrastructure as code
|
||||||
|
;;tmux ; an API for interacting with tmux
|
||||||
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
|
:os
|
||||||
|
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||||
|
tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
|
:lang
|
||||||
|
;;agda ; types of types of types of types...
|
||||||
|
;;beancount ; mind the GAAP
|
||||||
|
cc ; C > C++ == 1
|
||||||
|
;;clojure ; java with a lisp
|
||||||
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
|
;;coq ; proofs-as-programs
|
||||||
|
;;crystal ; ruby at the speed of c
|
||||||
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
|
;;data ; config/data formats
|
||||||
|
;;(dart +flutter) ; paint ui and not much else
|
||||||
|
;;dhall
|
||||||
|
;;elixir ; erlang done right
|
||||||
|
;;elm ; care for a cup of TEA?
|
||||||
|
emacs-lisp ; drown in parentheses
|
||||||
|
;;erlang ; an elegant language for a more civilized age
|
||||||
|
;;ess ; emacs speaks statistics
|
||||||
|
;;factor
|
||||||
|
;;faust ; dsp, but you get to keep your soul
|
||||||
|
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||||
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
|
;;gdscript ; the language you waited for
|
||||||
|
;;(go +lsp) ; the hipster dialect
|
||||||
|
(haskell +lsp) ; a language that's lazier than I am
|
||||||
|
;;hy ; readability of scheme w/ speed of python
|
||||||
|
;;idris ; a language you can depend on
|
||||||
|
json ; At least it ain't XML
|
||||||
|
(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||||
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
|
;;julia ; a better, faster MATLAB
|
||||||
|
kotlin ; a better, slicker Java(Script)
|
||||||
|
latex ; writing papers in Emacs has never been so fun
|
||||||
|
;;lean ; for folks with too much to prove
|
||||||
|
;;ledger ; be audit you can be
|
||||||
|
lua ; one-based indices? one-based indices
|
||||||
|
markdown ; writing docs for people to ignore
|
||||||
|
;;nim ; python + lisp at the speed of c
|
||||||
|
;;nix ; I hereby declare "nix geht mehr!"
|
||||||
|
;;ocaml ; an objective camel
|
||||||
|
(org +present) ; organize your plain life in plain text
|
||||||
|
;;php ; perl's insecure younger brother
|
||||||
|
;;plantuml ; diagrams for confusing people more
|
||||||
|
;;purescript ; javascript, but functional
|
||||||
|
python ; beautiful is better than ugly
|
||||||
|
;;qt ; the 'cutest' gui framework ever
|
||||||
|
;;racket ; a DSL for DSLs
|
||||||
|
;;raku ; the artist formerly known as perl6
|
||||||
|
;;rest ; Emacs as a REST client
|
||||||
|
;;rst ; ReST in peace
|
||||||
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
|
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
;;scala ; java, but good
|
||||||
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
;;sml
|
||||||
|
;;solidity ; do you need a blockchain? No.
|
||||||
|
;;swift ; who asked for emoji variables?
|
||||||
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
|
web ; the tubes
|
||||||
|
yaml ; JSON, but readable
|
||||||
|
zig ; C, but simpler
|
||||||
|
|
||||||
|
:email
|
||||||
|
;;(mu4e +org +gmail)
|
||||||
|
;;notmuch
|
||||||
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
|
:app
|
||||||
|
;;calendar
|
||||||
|
;;emms
|
||||||
|
;;everywhere ; *leave* Emacs!? You must be joking
|
||||||
|
;;irc ; how neckbeards socialize
|
||||||
|
;;(rss +org) ; emacs as an RSS reader
|
||||||
|
;;twitter ; twitter client https://twitter.com/vnought
|
||||||
|
|
||||||
|
:config
|
||||||
|
;;literate
|
||||||
|
(default +bindings +smartparens))
|
||||||
56
modules/home/doom-emacs/doom/packages.el
Normal file
56
modules/home/doom-emacs/doom/packages.el
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; $DOOMDIR/packages.el
|
||||||
|
|
||||||
|
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||||
|
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||||
|
;; use 'M-x doom/reload'.
|
||||||
|
|
||||||
|
|
||||||
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
|
;(package! some-package)
|
||||||
|
|
||||||
|
;; To install a package directly from a remote git repo, you must specify a
|
||||||
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||||
|
;; https://github.com/raxod502/straight.el#the-recipe-format
|
||||||
|
;(package! another-package
|
||||||
|
; :recipe (:host github :repo "username/repo"))
|
||||||
|
|
||||||
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||||
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||||
|
;; `:files' in the `:recipe':
|
||||||
|
;(package! this-package
|
||||||
|
; :recipe (:host github :repo "username/repo"
|
||||||
|
; :files ("some-file.el" "src/lisp/*.el")))
|
||||||
|
|
||||||
|
;; If you'd like to disable a package included with Doom, you can do so here
|
||||||
|
;; with the `:disable' property:
|
||||||
|
;(package! builtin-package :disable t)
|
||||||
|
|
||||||
|
;; You can override the recipe of a built in package without having to specify
|
||||||
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||||
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||||
|
;(package! builtin-package :recipe (:nonrecursive t))
|
||||||
|
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||||
|
|
||||||
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||||
|
;; This is required for some packages whose default branch isn't 'master' (which
|
||||||
|
;; our package manager can't deal with; see raxod502/straight.el#279)
|
||||||
|
;(package! builtin-package :recipe (:branch "develop"))
|
||||||
|
|
||||||
|
;; Use `:pin' to specify a particular commit to install.
|
||||||
|
;(package! builtin-package :pin "1a2b3c4d5e")
|
||||||
|
|
||||||
|
|
||||||
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||||
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||||
|
;(unpin! pinned-package)
|
||||||
|
;; ...or multiple packages
|
||||||
|
;(unpin! pinned-package another-pinned-package)
|
||||||
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||||
|
;(unpin! t)
|
||||||
|
|
||||||
|
(package! evil-tutor)
|
||||||
|
|
||||||
|
(package! org-roam)
|
||||||
|
|
||||||
|
(package! platformio-mode)
|
||||||
68
modules/home/git/default.nix
Normal file
68
modules/home/git/default.nix
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [zsh-forgit gitflow];
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "muon";
|
||||||
|
userEmail = "admin@muon.host";
|
||||||
|
ignores = [
|
||||||
|
".cache/"
|
||||||
|
".DS_Store"
|
||||||
|
".idea/"
|
||||||
|
"*.swp"
|
||||||
|
"*.elc"
|
||||||
|
"auto-save-list"
|
||||||
|
".direnv/"
|
||||||
|
"node_modules"
|
||||||
|
"result"
|
||||||
|
"result-*"
|
||||||
|
];
|
||||||
|
extraConfig = {
|
||||||
|
init = {defaultBranch = "main";};
|
||||||
|
delta = {
|
||||||
|
line-numbers = true;
|
||||||
|
};
|
||||||
|
branch.autosetupmerge = "true";
|
||||||
|
push.default = "current";
|
||||||
|
merge.stat = "true";
|
||||||
|
core.whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol";
|
||||||
|
repack.usedeltabaseoffset = "true";
|
||||||
|
pull.ff = "only";
|
||||||
|
rebase = {
|
||||||
|
autoSquash = true;
|
||||||
|
autoStash = true;
|
||||||
|
};
|
||||||
|
rerere = {
|
||||||
|
autoupdate = true;
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lfs.enable = true;
|
||||||
|
delta.enable = true;
|
||||||
|
aliases = {
|
||||||
|
co = "checkout";
|
||||||
|
c = "commit -m";
|
||||||
|
ca = "commit -am";
|
||||||
|
graph = "log --all --decorate --graph --oneline";
|
||||||
|
l = "log";
|
||||||
|
r = "rebase";
|
||||||
|
s = "status --short";
|
||||||
|
ss = "status";
|
||||||
|
d = "diff";
|
||||||
|
ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)";
|
||||||
|
pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)";
|
||||||
|
af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)";
|
||||||
|
st = "status";
|
||||||
|
br = "branch";
|
||||||
|
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
|
||||||
|
hist = ''
|
||||||
|
log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
|
||||||
|
llog = ''
|
||||||
|
log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
|
||||||
|
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
177
modules/home/helix/default.nix
Normal file
177
modules/home/helix/default.nix
Normal file
|
|
@ -0,0 +1,177 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
keys.normal = {
|
||||||
|
"C" = ["collapse_selection" "extend_to_line_end" "change_selection"];
|
||||||
|
"D" = ["extend_to_line_end" "delete_selection"];
|
||||||
|
"Y" = ["extend_to_line_bounds" "yank_main_selection_to_clipboard" "goto_line_start" "collapse_selection"];
|
||||||
|
"V" = ["select_mode" "extend_to_line_bounds"];
|
||||||
|
|
||||||
|
"{" = "goto_prev_paragraph";
|
||||||
|
"}" = "goto_next_paragraph";
|
||||||
|
"X" = "extend_line_above";
|
||||||
|
"esc" = ["collapse_selection" "keep_primary_selection"];
|
||||||
|
space.space = "file_picker";
|
||||||
|
space.w = ":w";
|
||||||
|
# space.q = ":bc";
|
||||||
|
"C-q" = ":xa";
|
||||||
|
space.u = {
|
||||||
|
f = ":format"; # format using LSP formatter
|
||||||
|
w = ":set whitespace.render all";
|
||||||
|
W = ":set whitespace.render none";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
keys.select = {
|
||||||
|
"%" = "match_brackets";
|
||||||
|
};
|
||||||
|
editor = {
|
||||||
|
color-modes = true;
|
||||||
|
cursorline = true;
|
||||||
|
mouse = false;
|
||||||
|
idle-timeout = 1;
|
||||||
|
line-number = "relative";
|
||||||
|
scrolloff = 5;
|
||||||
|
completion-replace = true;
|
||||||
|
bufferline = "always";
|
||||||
|
true-color = true;
|
||||||
|
rulers = [80];
|
||||||
|
soft-wrap.enable = true;
|
||||||
|
indent-guides = {
|
||||||
|
render = true;
|
||||||
|
};
|
||||||
|
lsp = {
|
||||||
|
display-messages = true;
|
||||||
|
display-inlay-hints = true;
|
||||||
|
};
|
||||||
|
statusline = {
|
||||||
|
separator = "|";
|
||||||
|
left = ["mode" "selections" "spinner" "file-name" "total-line-numbers"];
|
||||||
|
center = [];
|
||||||
|
right = ["diagnostics" "file-encoding" "file-line-ending" "file-type" "position-percentage" "position"];
|
||||||
|
mode = {
|
||||||
|
normal = "NORMAL";
|
||||||
|
insert = "INSERT";
|
||||||
|
select = "SELECT";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
whitespace.characters = {
|
||||||
|
space = "·";
|
||||||
|
nbsp = "⍽";
|
||||||
|
tab = "→";
|
||||||
|
newline = "⤶";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor-shape = {
|
||||||
|
insert = "bar";
|
||||||
|
normal = "block";
|
||||||
|
select = "block";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
languages = {
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "bash";
|
||||||
|
auto-format = true;
|
||||||
|
formatter = {
|
||||||
|
command = "${pkgs.shfmt}/bin/shfmt";
|
||||||
|
args = ["-i" "2" "-"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "html";
|
||||||
|
file-types = ["html" "tera"];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "clojure";
|
||||||
|
injection-regex = "(clojure|clj|edn|boot|yuck)";
|
||||||
|
file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot" "yuck"];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "latex";
|
||||||
|
file-types = ["tex"];
|
||||||
|
config.texlab = {
|
||||||
|
build = {
|
||||||
|
forwardSearchAfter = true;
|
||||||
|
onSave = true;
|
||||||
|
};
|
||||||
|
chktex = {
|
||||||
|
onEdit = true;
|
||||||
|
};
|
||||||
|
forwardSearch = {
|
||||||
|
executable = "zathura";
|
||||||
|
args = [ "--synctex-forward" "%l:1:%f" "%p" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
language-server = {
|
||||||
|
bash-language-server = {
|
||||||
|
command = "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server";
|
||||||
|
args = ["start"];
|
||||||
|
};
|
||||||
|
|
||||||
|
clangd = {
|
||||||
|
command = "${pkgs.clang-tools}/bin/clangd";
|
||||||
|
clangd.fallbackFlags = ["-std=c++2b"];
|
||||||
|
};
|
||||||
|
|
||||||
|
nil = {
|
||||||
|
command = lib.getExe pkgs.nil;
|
||||||
|
config.nil.formatting.command = ["${lib.getExe pkgs.alejandra}" "-q"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
themes = {
|
||||||
|
ui.selection = {bg = "white"; modifiers = ["reversed"];};
|
||||||
|
ui.primary = {bg = "light-cyan"; modifiers = ["reversed"];};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# some other lsp related packages / dev tools
|
||||||
|
typst
|
||||||
|
shellcheck
|
||||||
|
lldb
|
||||||
|
gopls
|
||||||
|
clang-tools
|
||||||
|
nodejs
|
||||||
|
guile
|
||||||
|
nim
|
||||||
|
zig
|
||||||
|
texlab
|
||||||
|
zls
|
||||||
|
jre8
|
||||||
|
gcc
|
||||||
|
uncrustify
|
||||||
|
black
|
||||||
|
shellcheck
|
||||||
|
gawk
|
||||||
|
haskellPackages.haskell-language-server
|
||||||
|
java-language-server
|
||||||
|
kotlin-language-server
|
||||||
|
nodePackages.vls
|
||||||
|
nodePackages.jsonlint
|
||||||
|
nodePackages.yarn
|
||||||
|
|
||||||
|
# Nix
|
||||||
|
alejandra
|
||||||
|
nil
|
||||||
|
|
||||||
|
# Rust
|
||||||
|
cargo
|
||||||
|
rust-analyzer
|
||||||
|
];
|
||||||
|
}
|
||||||
192
modules/home/herbstluftwm/autostart
Executable file
192
modules/home/herbstluftwm/autostart
Executable file
|
|
@ -0,0 +1,192 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# this is a simple config for herbstluftwm
|
||||||
|
|
||||||
|
hc() {
|
||||||
|
herbstclient "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
hc emit_hook reload
|
||||||
|
|
||||||
|
xsetroot -solid '#5A8E3A'
|
||||||
|
|
||||||
|
# remove all existing keybindings
|
||||||
|
hc keyunbind --all
|
||||||
|
|
||||||
|
# keybindings
|
||||||
|
# if you have a super key you will be much happier with Mod set to Mod4
|
||||||
|
#Mod=Mod1 # Use alt as the main modifier
|
||||||
|
Mod=Mod4 # Use the super key as the main modifier
|
||||||
|
|
||||||
|
hc keybind $Mod-Shift-e quit
|
||||||
|
hc keybind $Mod-Shift-r reload
|
||||||
|
hc keybind $Mod-Shift-q close
|
||||||
|
hc keybind $Mod-Return spawn "${TERMINAL:-alacritty}" # use your $TERMINAL with xterm as fallback
|
||||||
|
|
||||||
|
# basic movement in tiling and floating mode
|
||||||
|
# focusing clients
|
||||||
|
hc keybind $Mod-Left focus left
|
||||||
|
hc keybind $Mod-Down focus down
|
||||||
|
hc keybind $Mod-Up focus up
|
||||||
|
hc keybind $Mod-Right focus right
|
||||||
|
hc keybind $Mod-h focus left
|
||||||
|
hc keybind $Mod-j focus down
|
||||||
|
hc keybind $Mod-k focus up
|
||||||
|
hc keybind $Mod-l focus right
|
||||||
|
|
||||||
|
# moving clients in tiling and floating mode
|
||||||
|
hc keybind $Mod-Shift-Left shift left
|
||||||
|
hc keybind $Mod-Shift-Down shift down
|
||||||
|
hc keybind $Mod-Shift-Up shift up
|
||||||
|
hc keybind $Mod-Shift-Right shift right
|
||||||
|
hc keybind $Mod-Shift-h shift left
|
||||||
|
hc keybind $Mod-Shift-j shift down
|
||||||
|
hc keybind $Mod-Shift-k shift up
|
||||||
|
hc keybind $Mod-Shift-l shift right
|
||||||
|
|
||||||
|
# splitting frames
|
||||||
|
# create an empty frame at the specified direction
|
||||||
|
hc keybind $Mod-u split bottom 0.5
|
||||||
|
hc keybind $Mod-o split right 0.5
|
||||||
|
# let the current frame explode into subframes
|
||||||
|
hc keybind $Mod-Control-space split explode
|
||||||
|
|
||||||
|
# resizing frames and floating clients
|
||||||
|
resizestep=0.02
|
||||||
|
hc keybind $Mod-Control-h resize left +$resizestep
|
||||||
|
hc keybind $Mod-Control-j resize down +$resizestep
|
||||||
|
hc keybind $Mod-Control-k resize up +$resizestep
|
||||||
|
hc keybind $Mod-Control-l resize right +$resizestep
|
||||||
|
hc keybind $Mod-Control-Left resize left +$resizestep
|
||||||
|
hc keybind $Mod-Control-Down resize down +$resizestep
|
||||||
|
hc keybind $Mod-Control-Up resize up +$resizestep
|
||||||
|
hc keybind $Mod-Control-Right resize right +$resizestep
|
||||||
|
|
||||||
|
# tags
|
||||||
|
tag_names=({1..9})
|
||||||
|
tag_keys=({1..9} 0)
|
||||||
|
|
||||||
|
hc rename default "${tag_names[0]}" || true
|
||||||
|
for i in "${!tag_names[@]}"; do
|
||||||
|
hc add "${tag_names[$i]}"
|
||||||
|
key="${tag_keys[$i]}"
|
||||||
|
if [ -n "$key" ]; then
|
||||||
|
hc keybind "$Mod-$key" use_index "$i"
|
||||||
|
hc keybind "$Mod-Shift-$key" move_index "$i"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# cycle through tags
|
||||||
|
hc keybind $Mod-period use_index +1 --skip-visible
|
||||||
|
hc keybind $Mod-comma use_index -1 --skip-visible
|
||||||
|
|
||||||
|
# layouting
|
||||||
|
hc keybind $Mod-r remove
|
||||||
|
hc keybind $Mod-s floating toggle
|
||||||
|
hc keybind $Mod-f fullscreen toggle
|
||||||
|
hc keybind $Mod-Shift-f set_attr clients.focus.floating toggle
|
||||||
|
hc keybind $Mod-Shift-d set_attr clients.focus.decorated toggle
|
||||||
|
hc keybind $Mod-Shift-m set_attr clients.focus.minimized true
|
||||||
|
hc keybind $Mod-Control-m jumpto last-minimized
|
||||||
|
hc keybind $Mod-p pseudotile toggle
|
||||||
|
# The following cycles through the available layouts within a frame, but skips
|
||||||
|
# layouts, if the layout change wouldn't affect the actual window positions.
|
||||||
|
# I.e. if there are two windows within a frame, the grid layout is skipped.
|
||||||
|
hc keybind $Mod-space \
|
||||||
|
or , and . compare tags.focus.curframe_wcount = 2 \
|
||||||
|
. cycle_layout +1 horizontal max vertical grid \
|
||||||
|
, cycle_layout +1
|
||||||
|
|
||||||
|
# mouse
|
||||||
|
hc mouseunbind --all
|
||||||
|
hc mousebind $Mod-Button1 move
|
||||||
|
hc mousebind $Mod-Button2 zoom
|
||||||
|
hc mousebind $Mod-Button3 resize
|
||||||
|
|
||||||
|
# focus
|
||||||
|
hc keybind $Mod-BackSpace cycle_monitor
|
||||||
|
hc keybind $Mod-Tab cycle_all +1
|
||||||
|
hc keybind $Mod-Shift-Tab cycle_all -1
|
||||||
|
hc keybind $Mod-c cycle
|
||||||
|
hc keybind $Mod-i jumpto urgent
|
||||||
|
|
||||||
|
# theme
|
||||||
|
hc attr theme.tiling.reset 1
|
||||||
|
hc attr theme.floating.reset 1
|
||||||
|
hc set frame_border_active_color '#222222cc'
|
||||||
|
hc set frame_border_normal_color '#101010cc'
|
||||||
|
hc set frame_bg_normal_color '#565656aa'
|
||||||
|
hc set frame_bg_active_color '#345F0Caa'
|
||||||
|
hc set frame_border_width 1
|
||||||
|
hc set show_frame_decorations 'focused_if_multiple'
|
||||||
|
hc set frame_bg_transparent on
|
||||||
|
hc set frame_transparent_width 5
|
||||||
|
hc set frame_gap 4
|
||||||
|
|
||||||
|
hc attr theme.title_height 0
|
||||||
|
hc attr theme.title_when never
|
||||||
|
hc attr theme.title_font 'Dejavu Sans:pixelsize=12' # example using Xft
|
||||||
|
# hc attr theme.title_font '-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
|
||||||
|
hc attr theme.title_depth 3 # space below the title's baseline
|
||||||
|
hc attr theme.active.color '#345F0Cef'
|
||||||
|
hc attr theme.title_color '#ffffff'
|
||||||
|
hc attr theme.normal.color '#323232dd'
|
||||||
|
hc attr theme.urgent.color '#7811A1dd'
|
||||||
|
hc attr theme.tab_color '#1F1F1Fdd'
|
||||||
|
hc attr theme.active.tab_color '#2B4F0Add'
|
||||||
|
hc attr theme.active.tab_outer_color '#6C8257dd'
|
||||||
|
hc attr theme.active.tab_title_color '#ababab'
|
||||||
|
hc attr theme.normal.title_color '#898989'
|
||||||
|
hc attr theme.inner_width 1
|
||||||
|
hc attr theme.inner_color black
|
||||||
|
hc attr theme.border_width 1
|
||||||
|
hc attr theme.floating.border_width 1
|
||||||
|
hc attr theme.floating.outer_width 1
|
||||||
|
hc attr theme.floating.outer_color black
|
||||||
|
hc attr theme.active.inner_color '#789161'
|
||||||
|
hc attr theme.urgent.inner_color '#9A65B0'
|
||||||
|
hc attr theme.normal.inner_color '#606060'
|
||||||
|
# copy inner color to outer_color
|
||||||
|
for state in active urgent normal; do
|
||||||
|
hc substitute C theme.${state}.inner_color \
|
||||||
|
attr theme.${state}.outer_color C
|
||||||
|
done
|
||||||
|
hc attr theme.tiling.outer_width 1
|
||||||
|
hc attr theme.background_color '#141414'
|
||||||
|
|
||||||
|
hc set window_gap 0
|
||||||
|
hc set frame_padding 0
|
||||||
|
hc set smart_window_surroundings on
|
||||||
|
hc set smart_frame_surroundings on
|
||||||
|
hc set mouse_recenter_gap 0
|
||||||
|
|
||||||
|
# rules
|
||||||
|
hc unrule -F
|
||||||
|
#hc rule class=XTerm tag=3 # move all xterms to tag 3
|
||||||
|
hc rule focus=on # normally focus new clients
|
||||||
|
hc rule floatplacement=smart
|
||||||
|
#hc rule focus=off # normally do not focus new clients
|
||||||
|
# give focus to most common terminals
|
||||||
|
#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
|
||||||
|
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on
|
||||||
|
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
|
||||||
|
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
|
||||||
|
hc rule fixedsize floating=on
|
||||||
|
|
||||||
|
hc set tree_style '╾│ ├└╼─┐'
|
||||||
|
|
||||||
|
# unlock, just to be sure
|
||||||
|
hc unlock
|
||||||
|
|
||||||
|
# do multi monitor setup here, e.g.:
|
||||||
|
# hc set_monitors 1280x1024+0+0 1280x1024+1280+0
|
||||||
|
# or simply:
|
||||||
|
# hc detect_monitors
|
||||||
|
|
||||||
|
# find the panel
|
||||||
|
#panel=~/.config/herbstluftwm/panel.sh
|
||||||
|
#[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
|
||||||
|
#for monitor in $(hc list_monitors | cut -d: -f1) ; do
|
||||||
|
# # start it on each monitor
|
||||||
|
# "$panel" "$monitor" &
|
||||||
|
#done
|
||||||
9
modules/home/herbstluftwm/default.nix
Normal file
9
modules/home/herbstluftwm/default.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.file.".config/herbstluftwm/autostart".source = ./autostart;
|
||||||
|
}
|
||||||
48
modules/home/hyprland/default.nix
Normal file
48
modules/home/hyprland/default.nix
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland = with lib; with pkgs; {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
nvidiaPatches = true;
|
||||||
|
recommendedEnvironment = true;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
monitor=,preferred,auto,1
|
||||||
|
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options = caps:escape
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = false
|
||||||
|
}
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0
|
||||||
|
}
|
||||||
|
|
||||||
|
bind = SUPER, Return, exec, ${getExe alacritty}
|
||||||
|
bind = SUPER, b, exec, ${getExe chromium}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
home.pointerCursor = {
|
||||||
|
name = "Adwaita";
|
||||||
|
package = pkgs.gnome.adwaita-icon-theme;
|
||||||
|
size = 24;
|
||||||
|
x11 = {
|
||||||
|
enable = true;
|
||||||
|
defaultCursor = "Adwaita";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
109
modules/home/leftwm/default.nix
Normal file
109
modules/home/leftwm/default.nix
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
|
xdg.configFile."leftwm/themes/current/theme.toml".source = ./theme.toml;
|
||||||
|
xdg.configFile."leftwm/themes/current/up".source = ./up;
|
||||||
|
xdg.configFile."leftwm/themes/current/down".source = ./down;
|
||||||
|
|
||||||
|
xdg.configFile."leftwm/config.ron".text = ''
|
||||||
|
#![enable(implicit_some)]
|
||||||
|
(
|
||||||
|
modkey: "Mod4",
|
||||||
|
mousekey: "Mod4",
|
||||||
|
workspaces: [],
|
||||||
|
tags: [
|
||||||
|
"1",
|
||||||
|
"2",
|
||||||
|
"3",
|
||||||
|
"4",
|
||||||
|
"5",
|
||||||
|
"6",
|
||||||
|
"7",
|
||||||
|
"8",
|
||||||
|
"9",
|
||||||
|
],
|
||||||
|
max_window_width: None,
|
||||||
|
layouts: [
|
||||||
|
MainAndVertStack,
|
||||||
|
MainAndHorizontalStack,
|
||||||
|
MainAndDeck,
|
||||||
|
GridHorizontal,
|
||||||
|
EvenHorizontal,
|
||||||
|
EvenVertical,
|
||||||
|
Fibonacci,
|
||||||
|
LeftMain,
|
||||||
|
CenterMain,
|
||||||
|
CenterMainBalanced,
|
||||||
|
CenterMainFluid,
|
||||||
|
Monocle,
|
||||||
|
RightWiderLeftStack,
|
||||||
|
LeftWiderRightStack,
|
||||||
|
],
|
||||||
|
layout_mode: Tag,
|
||||||
|
insert_behavior: Bottom,
|
||||||
|
scratchpad: [
|
||||||
|
(name: "Alacritty", value: "alacritty", x: 860, y: 390, height: 300, width: 200),
|
||||||
|
],
|
||||||
|
window_rules: [],
|
||||||
|
disable_current_tag_swap: false,
|
||||||
|
disable_tile_drag: false,
|
||||||
|
disable_window_snap: true,
|
||||||
|
focus_behaviour: Sloppy,
|
||||||
|
focus_new_windows: true,
|
||||||
|
single_window_border: true,
|
||||||
|
sloppy_mouse_follows_focus: true,
|
||||||
|
auto_derive_workspaces: true,
|
||||||
|
keybind: [
|
||||||
|
(command: Execute, value: "dmenu_run", modifier: ["modkey"], key: "p"),
|
||||||
|
(command: Execute, value: "alacritty", modifier: ["modkey"], key: "Return"),
|
||||||
|
(command: CloseWindow, value: "", modifier: ["modkey", "Shift"], key: "q"),
|
||||||
|
(command: SoftReload, value: "", modifier: ["modkey", "Shift"], key: "r"),
|
||||||
|
(command: Execute, value: "loginctl kill-session $XDG_SESSION_ID", modifier: ["modkey", "Shift"], key: "x"),
|
||||||
|
(command: Execute, value: "slock", modifier: ["modkey", "Control"], key: "l"),
|
||||||
|
(command: MoveToLastWorkspace, value: "", modifier: ["modkey", "Shift"], key: "w"),
|
||||||
|
(command: SwapTags, value: "", modifier: ["modkey"], key: "w"),
|
||||||
|
(command: MoveWindowUp, value: "", modifier: ["modkey", "Shift"], key: "k"),
|
||||||
|
(command: MoveWindowDown, value: "", modifier: ["modkey", "Shift"], key: "j"),
|
||||||
|
(command: MoveWindowTop, value: "", modifier: ["modkey", "Shift"], key: "Return"),
|
||||||
|
(command: FocusWindowUp, value: "", modifier: ["modkey"], key: "k"),
|
||||||
|
(command: FocusWindowDown, value: "", modifier: ["modkey"], key: "j"),
|
||||||
|
(command: NextLayout, value: "", modifier: ["modkey", "Control"], key: "k"),
|
||||||
|
(command: PreviousLayout, value: "", modifier: ["modkey", "Control"], key: "j"),
|
||||||
|
(command: FocusWorkspaceNext, value: "", modifier: ["modkey"], key: "l"),
|
||||||
|
(command: FocusWorkspacePrevious, value: "", modifier: ["modkey"], key: "h"),
|
||||||
|
(command: MoveWindowUp, value: "", modifier: ["modkey", "Shift"], key: "Up"),
|
||||||
|
(command: MoveWindowDown, value: "", modifier: ["modkey", "Shift"], key: "Down"),
|
||||||
|
(command: FocusWindowUp, value: "", modifier: ["modkey"], key: "Up"),
|
||||||
|
(command: FocusWindowDown, value: "", modifier: ["modkey"], key: "Down"),
|
||||||
|
(command: NextLayout, value: "", modifier: ["modkey", "Control"], key: "Up"),
|
||||||
|
(command: PreviousLayout, value: "", modifier: ["modkey", "Control"], key: "Down"),
|
||||||
|
(command: FocusWorkspaceNext, value: "", modifier: ["modkey"], key: "Right"),
|
||||||
|
(command: FocusWorkspacePrevious, value: "", modifier: ["modkey"], key: "Left"),
|
||||||
|
(command: GotoTag, value: "1", modifier: ["modkey"], key: "1"),
|
||||||
|
(command: GotoTag, value: "2", modifier: ["modkey"], key: "2"),
|
||||||
|
(command: GotoTag, value: "3", modifier: ["modkey"], key: "3"),
|
||||||
|
(command: GotoTag, value: "4", modifier: ["modkey"], key: "4"),
|
||||||
|
(command: GotoTag, value: "5", modifier: ["modkey"], key: "5"),
|
||||||
|
(command: GotoTag, value: "6", modifier: ["modkey"], key: "6"),
|
||||||
|
(command: GotoTag, value: "7", modifier: ["modkey"], key: "7"),
|
||||||
|
(command: GotoTag, value: "8", modifier: ["modkey"], key: "8"),
|
||||||
|
(command: GotoTag, value: "9", modifier: ["modkey"], key: "9"),
|
||||||
|
(command: MoveToTag, value: "1", modifier: ["modkey", "Shift"], key: "1"),
|
||||||
|
(command: MoveToTag, value: "2", modifier: ["modkey", "Shift"], key: "2"),
|
||||||
|
(command: MoveToTag, value: "3", modifier: ["modkey", "Shift"], key: "3"),
|
||||||
|
(command: MoveToTag, value: "4", modifier: ["modkey", "Shift"], key: "4"),
|
||||||
|
(command: MoveToTag, value: "5", modifier: ["modkey", "Shift"], key: "5"),
|
||||||
|
(command: MoveToTag, value: "6", modifier: ["modkey", "Shift"], key: "6"),
|
||||||
|
(command: MoveToTag, value: "7", modifier: ["modkey", "Shift"], key: "7"),
|
||||||
|
(command: MoveToTag, value: "8", modifier: ["modkey", "Shift"], key: "8"),
|
||||||
|
(command: MoveToTag, value: "9", modifier: ["modkey", "Shift"], key: "9"),
|
||||||
|
],
|
||||||
|
state_path: None,
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
}
|
||||||
6
modules/home/leftwm/down
Executable file
6
modules/home/leftwm/down
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
SCRIPTPATH="$HOME/config/leftwm/themes/current"
|
||||||
|
|
||||||
|
leftwm-command "UnloadTheme"
|
||||||
|
|
||||||
3
modules/home/leftwm/theme.toml
Normal file
3
modules/home/leftwm/theme.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
border_width = 1
|
||||||
|
margin = 4
|
||||||
|
focused_border_color = "#2cb8b5"
|
||||||
13
modules/home/leftwm/up
Executable file
13
modules/home/leftwm/up
Executable file
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
export SCRIPTPATH="$HOME/.config/leftwm/themes/current"
|
||||||
|
|
||||||
|
#down the last running theme
|
||||||
|
if [ -f "/tmp/leftwm-theme-down" ]; then
|
||||||
|
/tmp/leftwm-theme-down
|
||||||
|
rm /tmp/leftwm-theme-down
|
||||||
|
fi
|
||||||
|
ln -s $SCRIPTPATH/down /tmp/leftwm-theme-down
|
||||||
|
|
||||||
|
#set the theme.toml config
|
||||||
|
leftwm-command "LoadTheme $SCRIPTPATH/theme.toml"
|
||||||
|
|
||||||
91
modules/home/packages.nix
Normal file
91
modules/home/packages.nix
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
self,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = false;
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# system
|
||||||
|
wget
|
||||||
|
unzip
|
||||||
|
neovim
|
||||||
|
python3
|
||||||
|
dconf
|
||||||
|
libnotify
|
||||||
|
i3lock-fancy-rapid
|
||||||
|
pkg-config
|
||||||
|
alsa-utils
|
||||||
|
|
||||||
|
# cli
|
||||||
|
zellij
|
||||||
|
fd
|
||||||
|
glow
|
||||||
|
trash-cli
|
||||||
|
thefuck
|
||||||
|
xclip
|
||||||
|
fend
|
||||||
|
broot
|
||||||
|
unar
|
||||||
|
bottom
|
||||||
|
|
||||||
|
# gui
|
||||||
|
feh
|
||||||
|
rofi
|
||||||
|
dunst
|
||||||
|
yq
|
||||||
|
imagemagick
|
||||||
|
ungoogled-chromium
|
||||||
|
librewolf
|
||||||
|
mullvad-browser
|
||||||
|
tor-browser-bundle-bin
|
||||||
|
gimp
|
||||||
|
logseq
|
||||||
|
zotero
|
||||||
|
armcord
|
||||||
|
freetube
|
||||||
|
texstudio
|
||||||
|
texlive.combined.scheme-full
|
||||||
|
mpv
|
||||||
|
inkscape
|
||||||
|
dolphin
|
||||||
|
qgis
|
||||||
|
obs-studio
|
||||||
|
mumble
|
||||||
|
onionshare-gui
|
||||||
|
freetube
|
||||||
|
kotatogram-desktop
|
||||||
|
signal-desktop
|
||||||
|
|
||||||
|
# dev
|
||||||
|
psmisc
|
||||||
|
qmk
|
||||||
|
python311Packages.pip
|
||||||
|
cmake
|
||||||
|
texlab
|
||||||
|
|
||||||
|
# gaming
|
||||||
|
gamemode
|
||||||
|
gamehub
|
||||||
|
lutris
|
||||||
|
prismlauncher
|
||||||
|
airshipper
|
||||||
|
bottles
|
||||||
|
minigalaxy
|
||||||
|
cemu
|
||||||
|
mindustry
|
||||||
|
|
||||||
|
# media
|
||||||
|
ffmpeg
|
||||||
|
pulseaudio
|
||||||
|
playerctl
|
||||||
|
pavucontrol
|
||||||
|
pulsemixer
|
||||||
|
pamixer
|
||||||
|
alsa-utils
|
||||||
|
alsa-tools
|
||||||
|
cava
|
||||||
|
];
|
||||||
|
}
|
||||||
41
modules/home/qutebrowser/default.nix
Normal file
41
modules/home/qutebrowser/default.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.qutebrowser = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
content.cookies.accept = "no-3rdparty";
|
||||||
|
url = {
|
||||||
|
default_page = "https://searx.be/";
|
||||||
|
start_pages = "https://searx.be/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
searchEngines = {
|
||||||
|
DEFAULT = "https://searx.be/?q={}";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
host = c.content.blocking.hosts.lists.append
|
||||||
|
host("https://www.github.developerdan.com/hosts/lists/facebook-extended.txt")
|
||||||
|
|
||||||
|
abp = c.content.blocking.adblock.lists.append
|
||||||
|
abp("https://fanboy.co.nz/r/fanboy-ultimate.txt")
|
||||||
|
abp("https://fanboy.co.nz/fanboy-antifacebook.txt")
|
||||||
|
abp("https://fanboy.co.nz/fanboy-annoyance.txt")
|
||||||
|
abp("https://fanboy.co.nz/fanboy-cookiemonster.txt")
|
||||||
|
abp("https://easylist-downloads.adblockplus.org/antiadblockfilters.txt")
|
||||||
|
abp("https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt")
|
||||||
|
|
||||||
|
abp("https://github.com/DandelionSprout/adfilt/raw/master/LegitimateURLShortener.txt")
|
||||||
|
abp("https://github.com/DandelionSprout/adfilt/raw/master/AnnoyancesList")
|
||||||
|
abp("https://github.com/DandelionSprout/adfilt/raw/master/SocialShareList.txt")
|
||||||
|
abp("https://github.com/DandelionSprout/adfilt/raw/master/ExtremelyCondensedList.txt")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
137
modules/home/shell/default.nix
Normal file
137
modules/home/shell/default.nix
Normal file
|
|
@ -0,0 +1,137 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [comma ripgrep];
|
||||||
|
home.sessionVariables.STARSHIP_CACHE = "${config.xdg.cacheHome}/starship";
|
||||||
|
programs = {
|
||||||
|
nix-index.enable = false;
|
||||||
|
|
||||||
|
exa.enable = true;
|
||||||
|
|
||||||
|
zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
dircolors = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
skim = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
defaultCommand = "rg --files --hidden";
|
||||||
|
changeDirWidgetOptions = [
|
||||||
|
"--preview 'exa --icons --git --color always -T -L 3 {} | head -200'"
|
||||||
|
"--exact"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
scan_timeout = 1;
|
||||||
|
#character = {
|
||||||
|
#error_symbol = "[](bold red)";
|
||||||
|
#success_symbol = "[](bold green)";
|
||||||
|
#vicmd_symbol = "[](bold yellow)";
|
||||||
|
#format = "$symbol [|](bold bright-black) ";
|
||||||
|
#};
|
||||||
|
git_commit = {commit_hash_length = 4;};
|
||||||
|
line_break.disabled = false;
|
||||||
|
lua.symbol = "[](blue) ";
|
||||||
|
python.symbol = "[](blue) ";
|
||||||
|
hostname = {
|
||||||
|
ssh_only = true;
|
||||||
|
format = "[$hostname](bold blue) ";
|
||||||
|
disabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
dotDir = ".config/zsh";
|
||||||
|
|
||||||
|
enableCompletion = true;
|
||||||
|
enableAutosuggestions = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
autoload -U compinit
|
||||||
|
setopt no_auto_remove_slash
|
||||||
|
|
||||||
|
fuck () {
|
||||||
|
TF_PYTHONIOENCODING=$PYTHONIOENCODING;
|
||||||
|
export TF_SHELL=zsh;
|
||||||
|
export TF_ALIAS=fuck;
|
||||||
|
TF_SHELL_ALIASES=$(alias);
|
||||||
|
export TF_SHELL_ALIASES;
|
||||||
|
TF_HISTORY="$(fc -ln -10)";
|
||||||
|
export TF_HISTORY;
|
||||||
|
export PYTHONIOENCODING=utf-8;
|
||||||
|
TF_CMD=$(
|
||||||
|
thefuck THEFUCK_ARGUMENT_PLACEHOLDER $@
|
||||||
|
) && eval $TF_CMD;
|
||||||
|
unset TF_HISTORY;
|
||||||
|
export PYTHONIOENCODING=$TF_PYTHONIOENCODING;
|
||||||
|
test -n "$TF_CMD" && print -s $TF_CMD
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
history = {
|
||||||
|
save = 2000000;
|
||||||
|
size = 2000000;
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
ignoreDups = true;
|
||||||
|
ignoreSpace = true;
|
||||||
|
path = "$HOME/.local/state/zsh/history";
|
||||||
|
};
|
||||||
|
|
||||||
|
shellAliases = with pkgs; with lib; {
|
||||||
|
rebuild = "doas nix-store --verify; pushd ~/.config/dotfiles && doas nixos-rebuild switch --flake .# && notify-send \"Done\" && bat cache --build; popd";
|
||||||
|
update = "doas nix-store --verify; pushd ~/.config/dotfiles && doas nixos-rebuild switch --upgrade-all --flake .# && notify-send \"Done\" && bat cache --build; popd";
|
||||||
|
cleanup = "doas nix-collect-garbage --delete-older-than 7d";
|
||||||
|
bloat = "nix path-info -Sh /run/current-system";
|
||||||
|
cat = "${getExe bat} --style=plain";
|
||||||
|
vpn = getExe mullvad;
|
||||||
|
grep = getExe ripgrep;
|
||||||
|
fzf = getExe skim;
|
||||||
|
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
|
||||||
|
du = getExe du-dust;
|
||||||
|
ps = getExe procs;
|
||||||
|
m = "mkdir -p";
|
||||||
|
fcd = "cd $(find -type d | fzf)";
|
||||||
|
l = "ls -lF --time-style=long-iso --icons";
|
||||||
|
sc = "sudo systemctl";
|
||||||
|
scu = "systemctl --user ";
|
||||||
|
la = "${getExe exa} -lah";
|
||||||
|
ls = "${getExe exa} -h --git --icons --color=auto --group-directories-first -s extension";
|
||||||
|
tree = "${getExe exa} --tree --icons --tree";
|
||||||
|
burn = "pkill -9";
|
||||||
|
diff = "diff --color=auto";
|
||||||
|
".." = "cd ..";
|
||||||
|
"..." = "cd ../../";
|
||||||
|
"...." = "cd ../../../";
|
||||||
|
"....." = "cd ../../../../";
|
||||||
|
"......" = "cd ../../../../../";
|
||||||
|
v = "${getExe neovim}";
|
||||||
|
vim = "${getExe neovim}";
|
||||||
|
};
|
||||||
|
plugins = with pkgs; [
|
||||||
|
{
|
||||||
|
name = "zsh-vi-mode";
|
||||||
|
src = zsh-vi-mode;
|
||||||
|
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
47
modules/home/theme/default.nix
Normal file
47
modules/home/theme/default.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
stylix,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
theme-name = "mocha";
|
||||||
|
theme = "${pkgs.base16-schemes}/share/themes/${theme-name}.yaml";
|
||||||
|
wallpaper = pkgs.runCommand "image.png" {} ''
|
||||||
|
COLOR=$(${pkgs.yq}/bin/yq -r .base00 ${theme})
|
||||||
|
COLOR="#"$COLOR
|
||||||
|
${pkgs.imagemagick}/bin/magick convert -size 1920x1080 xc:$COLOR $out
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
stylix = {
|
||||||
|
image = wallpaper;
|
||||||
|
# polarity = "light";
|
||||||
|
# base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
||||||
|
base16Scheme = theme;
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.mononoki;
|
||||||
|
name = "Mononoki Nerd Font";
|
||||||
|
};
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
serif = config.stylix.fonts.monospace;
|
||||||
|
sansSerif = config.stylix.fonts.monospace;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.random-background = {
|
||||||
|
enable = true;
|
||||||
|
imageDirectory = "${wallpaper}";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zellij.enable = true;
|
||||||
|
programs.rofi.enable = true;
|
||||||
|
|
||||||
|
# config.services.xserver.desktopManager.wallpaper = ./wallpaper.jpg;
|
||||||
|
}
|
||||||
BIN
modules/home/theme/wallpaper.jpg
Normal file
BIN
modules/home/theme/wallpaper.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 MiB |
93
modules/home/tools/default.nix
Normal file
93
modules/home/tools/default.nix
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
browser = ["chromium.desktop"];
|
||||||
|
|
||||||
|
associations = {
|
||||||
|
"text/html" = browser;
|
||||||
|
"x-scheme-handler/http" = browser;
|
||||||
|
"x-scheme-handler/https" = browser;
|
||||||
|
"x-scheme-handler/ftp" = browser;
|
||||||
|
"x-scheme-handler/about" = browser;
|
||||||
|
"x-scheme-handler/unknown" = browser;
|
||||||
|
"application/x-extension-htm" = browser;
|
||||||
|
"application/x-extension-html" = browser;
|
||||||
|
"application/x-extension-shtml" = browser;
|
||||||
|
"application/xhtml+xml" = browser;
|
||||||
|
"application/x-extension-xhtml" = browser;
|
||||||
|
"application/x-extension-xht" = browser;
|
||||||
|
|
||||||
|
"audio/*" = ["mpv.desktop"];
|
||||||
|
"video/*" = ["mpv.dekstop"];
|
||||||
|
"image/*" = ["imv.desktop"];
|
||||||
|
"application/json" = browser;
|
||||||
|
#"application/pdf" = ["org.pwmt.zathura.desktop.desktop"];
|
||||||
|
#"x-scheme-handler/tg" = ["telegramdesktop.desktop"];
|
||||||
|
#"x-scheme-handler/spotify" = ["spotify.desktop"];
|
||||||
|
#"x-scheme-handler/discord" = ["WebCord.desktop"];
|
||||||
|
};
|
||||||
|
|
||||||
|
texlive = pkgs.texlive.combine {
|
||||||
|
inherit
|
||||||
|
(pkgs.texlive)
|
||||||
|
scheme-small
|
||||||
|
noto
|
||||||
|
mweights
|
||||||
|
cm-super
|
||||||
|
cmbright
|
||||||
|
fontaxes
|
||||||
|
beamer
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
|
in {
|
||||||
|
# home.packages = [texlive];
|
||||||
|
services = {
|
||||||
|
gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
pinentryFlavor = "gnome3";
|
||||||
|
enableSshSupport = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
gpg.enable = true;
|
||||||
|
man.enable = true;
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
tealdeer = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
display = {
|
||||||
|
compact = false;
|
||||||
|
use_pager = true;
|
||||||
|
};
|
||||||
|
updates = {
|
||||||
|
auto_update = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
bat.enable = true;
|
||||||
|
};
|
||||||
|
xdg = {
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
documents = "$HOME/documents";
|
||||||
|
download = "$HOME/downloads";
|
||||||
|
videos = "$HOME/misc/videos";
|
||||||
|
music = "$HOME/misc/music";
|
||||||
|
pictures = "$HOME/misc/pictures";
|
||||||
|
desktop = "$HOME/misc/desktop";
|
||||||
|
publicShare = "$HOME/misc/public";
|
||||||
|
templates = "$HOME/misc/templates";
|
||||||
|
};
|
||||||
|
mimeApps.enable = true;
|
||||||
|
mimeApps.associations.added = associations;
|
||||||
|
mimeApps.defaultApplications = associations;
|
||||||
|
};
|
||||||
|
}
|
||||||
165
modules/home/xmonad/default.nix
Normal file
165
modules/home/xmonad/default.nix
Normal file
|
|
@ -0,0 +1,165 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with config.lib.stylix.colors; {
|
||||||
|
xsession.windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
enableContribAndExtras = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xsession.windowManager.xmonad.config =
|
||||||
|
pkgs.writeText "xmonad.hs" ''
|
||||||
|
import XMonad
|
||||||
|
|
||||||
|
import XMonad.Config.Desktop
|
||||||
|
|
||||||
|
import XMonad.Layout.ResizableTile
|
||||||
|
import XMonad.Layout.NoBorders
|
||||||
|
import XMonad.Layout.Gaps
|
||||||
|
import XMonad.Layout.Spacing
|
||||||
|
import XMonad.Layout.PerScreen
|
||||||
|
|
||||||
|
import XMonad.Util.EZConfig
|
||||||
|
import XMonad.Util.Ungrab
|
||||||
|
import XMonad.Util.Loggers
|
||||||
|
|
||||||
|
import XMonad.Hooks.EwmhDesktops
|
||||||
|
import XMonad.Hooks.DynamicLog
|
||||||
|
import XMonad.Hooks.ManageDocks
|
||||||
|
import XMonad.Hooks.ManageHelpers
|
||||||
|
import XMonad.Hooks.StatusBar
|
||||||
|
import XMonad.Hooks.StatusBar.PP
|
||||||
|
|
||||||
|
import System.Exit
|
||||||
|
|
||||||
|
import qualified XMonad.StackSet as W
|
||||||
|
|
||||||
|
mobarStart = "xmobar ~/.config/xmobar/xmobarrc"
|
||||||
|
|
||||||
|
main :: IO()
|
||||||
|
main = xmonad
|
||||||
|
. ewmhFullscreen
|
||||||
|
. ewmh
|
||||||
|
. docks
|
||||||
|
. withEasySB mySB defToggleStrutsKey
|
||||||
|
$ myConfig
|
||||||
|
where
|
||||||
|
mySB = statusBarProp mobarStart (pure myXmobarPP)
|
||||||
|
|
||||||
|
myConfig = def
|
||||||
|
{ modMask = mod4Mask
|
||||||
|
, terminal = "alacritty"
|
||||||
|
|
||||||
|
-- Border
|
||||||
|
, borderWidth = 1
|
||||||
|
, normalBorderColor = "#${base03}"
|
||||||
|
, focusedBorderColor = "#${base0B}"
|
||||||
|
|
||||||
|
-- Hooks
|
||||||
|
, manageHook = myHook
|
||||||
|
-- , layoutHook = desktopLayoutModifiers $ smartBorders myLayout
|
||||||
|
, layoutHook = myLayout
|
||||||
|
-- , startupHook = myStartup
|
||||||
|
}
|
||||||
|
`additionalKeysP`
|
||||||
|
[ ("M-b", spawn "chromium")
|
||||||
|
, ("M-<Return>", spawn "alacritty")
|
||||||
|
, ("M-d", spawn "rofi -show drun")
|
||||||
|
|
||||||
|
-- Windows
|
||||||
|
, ("M-S-<Return>", windows W.swapMaster)
|
||||||
|
, ("M-S-q", kill)
|
||||||
|
, ("M-S-x", io (exitWith ExitSuccess))
|
||||||
|
|
||||||
|
-- Media keys
|
||||||
|
, ("<XF86AudioMute>", spawn "pamixer -t")
|
||||||
|
, ("<XF86AudioLowerVolume>", spawn "pamixer -d2")
|
||||||
|
, ("<XF86AudioRaiseVolume>", spawn "pamixer -i2")
|
||||||
|
]
|
||||||
|
|
||||||
|
myLayout = avoidStruts $ lessBorders Screen $ smartBorders $ tall ||| Full
|
||||||
|
where
|
||||||
|
addSpaces = spacingRaw True (Border 2 2 2 2) True (Border 2 2 2 2) True
|
||||||
|
-- addGaps = gaps [(U,10),(R,10),(L,10),(D,10)]
|
||||||
|
-- tall = ResizableTall 2 (1/10) 1 []
|
||||||
|
tall = ifWider 1280 (tiled) (Mirror tiled)
|
||||||
|
tiled = Tall nmaster delta ratio
|
||||||
|
nmaster = 1
|
||||||
|
ratio = 1/2
|
||||||
|
delta = 3/100
|
||||||
|
|
||||||
|
myHook :: ManageHook
|
||||||
|
myHook = composeAll
|
||||||
|
[ isDialog --> doFloat
|
||||||
|
, isFullscreen --> (doF W.focusDown <+> doFullFloat)
|
||||||
|
]
|
||||||
|
|
||||||
|
-- myStartup :: X ()
|
||||||
|
-- myStartup = do
|
||||||
|
-- spawn mobarStart
|
||||||
|
|
||||||
|
myXmobarPP :: PP
|
||||||
|
myXmobarPP = def
|
||||||
|
{ ppSep = magenta " • "
|
||||||
|
, ppTitleSanitize = xmobarStrip
|
||||||
|
, ppCurrent = wrap " " "" . xmobarBorder "Top" "#${base0C}" 2
|
||||||
|
, ppHidden = white . wrap " " ""
|
||||||
|
, ppHiddenNoWindows = lowWhite . wrap " " ""
|
||||||
|
, ppUrgent = red . wrap (yellow "!") (yellow "!")
|
||||||
|
, ppOrder = \[ws, l, _, wins] -> [ws, l, wins]
|
||||||
|
, ppExtras = [logTitles formatFocused formatUnfocused]
|
||||||
|
}
|
||||||
|
where
|
||||||
|
formatFocused = wrap (white "[") (white "]") . magenta . ppWindow
|
||||||
|
formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow
|
||||||
|
|
||||||
|
-- | Windows should have *some* title, which should not not exceed a
|
||||||
|
-- sane length.
|
||||||
|
ppWindow :: String -> String
|
||||||
|
ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30
|
||||||
|
|
||||||
|
blue, lowWhite, magenta, red, white, yellow :: String -> String
|
||||||
|
magenta = xmobarColor "#${base0E}" ""
|
||||||
|
blue = xmobarColor "#${base0D}" ""
|
||||||
|
white = xmobarColor "#${base05}" ""
|
||||||
|
yellow = xmobarColor "#${base0A}" ""
|
||||||
|
red = xmobarColor "#${base08}" ""
|
||||||
|
lowWhite = xmobarColor "#${base04}" ""
|
||||||
|
'';
|
||||||
|
|
||||||
|
programs.xmobar.enable = true;
|
||||||
|
programs.xmobar.extraConfig = ''
|
||||||
|
Config
|
||||||
|
{ overrideRedirect = False
|
||||||
|
, font = "Mononoki"
|
||||||
|
, bgColor = "#${base00}"
|
||||||
|
, fgColor = "#${base05}"
|
||||||
|
, position = BottomH 20
|
||||||
|
, lowerOnStart = True
|
||||||
|
, commands =
|
||||||
|
[ Run Cpu
|
||||||
|
[ "-L", "3"
|
||||||
|
, "-H", "50"
|
||||||
|
, "--high" , "red"
|
||||||
|
, "--normal", "green"
|
||||||
|
] 10
|
||||||
|
, Run Alsa "default" "Master"
|
||||||
|
[ "--template", "Vol: <volumestatus>"
|
||||||
|
, "--suffix" , "True"
|
||||||
|
, "--"
|
||||||
|
, "--on", ""
|
||||||
|
]
|
||||||
|
, Run Memory ["--template", "Mem: <usedratio>%"] 10
|
||||||
|
, Run Swap [] 10
|
||||||
|
, Run Date "%Y-%m-%d %a <fc=#${base0C}>%H:%M:%S</fc>" "date" 1
|
||||||
|
, Run XMonadLog
|
||||||
|
]
|
||||||
|
, sepChar = "%"
|
||||||
|
, alignSep = "}{"
|
||||||
|
, template = "%XMonadLog% }{ %cpu% | %memory% | %swap% | %date% "
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
10
modules/unfree/default.nix
Normal file
10
modules/unfree/default.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./nvidia.nix
|
||||||
|
./flatpak.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
12
modules/unfree/flatpak.nix
Normal file
12
modules/unfree/flatpak.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Don't like flatpak, even though it's free
|
||||||
|
# Only used to contain unfree packages
|
||||||
|
xdg.portal.enable = true;
|
||||||
|
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
}
|
||||||
71
modules/unfree/nvidia.nix
Normal file
71
modules/unfree/nvidia.nix
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Unfree </3
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfreePredicate = pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"nvidia-x11"
|
||||||
|
"nvidia-settings"
|
||||||
|
"steam"
|
||||||
|
"steam-original"
|
||||||
|
"steam-run"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
|
|
||||||
|
# environment.variables = {
|
||||||
|
# GBM_BACKEND = "nvidia-drm";
|
||||||
|
# LIBVA_DRIVER_NAME = "nvidia";
|
||||||
|
# __GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||||
|
# };
|
||||||
|
|
||||||
|
services.picom = {
|
||||||
|
enable = true;
|
||||||
|
vSync = true;
|
||||||
|
settings = {
|
||||||
|
"unredir-if-possible" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.steam.enable = true;
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
opengl = {
|
||||||
|
# this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# optionally enable 32bit pulseaudio support if pulseaudio is enabled
|
||||||
|
pulseaudio.support32Bit = config.hardware.pulseaudio.enable;
|
||||||
|
|
||||||
|
nvidia = {
|
||||||
|
open = false;
|
||||||
|
modesetting.enable = true;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
forceFullCompositionPipeline = true;
|
||||||
|
|
||||||
|
# powerManagement.enable = true;
|
||||||
|
# prime = {
|
||||||
|
# reverseSync.enable = true;
|
||||||
|
# # offload = {
|
||||||
|
# # enable = true;
|
||||||
|
# # enableOffloadCmd = true;
|
||||||
|
# # };
|
||||||
|
|
||||||
|
# intelBusId = "PCI:0:2:0";
|
||||||
|
# nvidiaBusId = "PCI:1:0:0";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
opengl.extraPackages = with pkgs; [nvidia-vaapi-driver];
|
||||||
|
};
|
||||||
|
}
|
||||||
20
modules/unfree/prime.nix
Normal file
20
modules/unfree/prime.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
hardware.nvidia = {
|
||||||
|
powerManagement.enable = true;
|
||||||
|
prime = {
|
||||||
|
reverseSync.enable = true;
|
||||||
|
# offload = {
|
||||||
|
# enable = true;
|
||||||
|
# enableOffloadCmd = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
intelBusId = "PCI:0:2:0";
|
||||||
|
nvidiaBusId = "PCI:1:0:0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue