Index: nupg/gpg.conf
===================================================================
--- .gnupg/gpg.conf	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,3 +1,0 @@
-keyserver hkps://hkps.pool.sks-keyservers.net
-keyserver-options ca-cert-file=/home/w96k/sks-keyservers.netCA.pem
-keyserver-options no-honor-keyserver-url
Index: uix-channel
===================================================================
--- .guix-channel	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,3 +1,0 @@
-(channel
-  (version 0)
-  (directory "guix-channel"))
Index: CENSE
===================================================================
--- LICENSE	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,674 +1,0 @@
-                    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>.
Index: X/.Xdefaults
===================================================================
--- X/.Xdefaults	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ X/.Xdefaults	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -1,102 +1,50 @@
-*.pointerColor: red
-
-XTerm*utf8: always
-XTerm*metaSendsEscape: true
-
-! Default emacs colors
-XTerm.foreground:  #000000
-XTerm.background:  #ffffff
-XTerm*cursorColor:  red
+!TomorrowNightEighties
+*.foreground:   #cccccc
+*.background:   #2d2d2d
+*.cursorColor:  #aeafad
 
 ! Black / Grey
-!XTerm.color0:       #000000
-XTerm*color8:       #bebebe
+*.color0:       #000000
+*.color8:       #666666
 
 ! Red / Bright Red
-!XTerm*color1:       #8b0000
-XTerm*color9:       #ff4500
+*.color1:       #f2777a
+*.color9:       #FF3334
 
 ! Green + Bright Green
-!XTerm*color2:       #99cc99
-XTerm*color10:      #9ec400
+*.color2:       #99cc99
+*.color10:      #9ec400
 
-! ! Yellow (Orange) + Bright Yellow (Yellow)
-!XTerm*color3:       #cd8500
-XTerm*color11:      #cdcd00
+! Yellow (Orange) + Bright Yellow (Yellow)
+*.color3:       #f99157
+*.color11:      #ffcc66
 
 ! Blue + Bright Blue
-!XTerm*color4:       #6699cc
-XTerm*color12:      #6699cc
+*.color4:       #6699cc
+*.color12:      #6699cc
 
 ! Magenta (Purple) + Bright Magenta
-!XTerm*color5:       #cc99cc
-!XTerm*color13:      #b777e0;
+*.color5:       #cc99cc
+*.color13:      #b777e0
 
 ! Cyan (Aqua) + Bright Cyan
-!XTerm*color6:       #66cccc
-XTerm*color14:      #54ced6
+*.color6:       #66cccc
+*.color14:      #54ced6
 
 ! Light Grey (Selection) + White (Current Line)
-!XTerm*color7:       #515151
-XTerm*color15:      #393939
+*.color7:       #515151
+*.color15:      #393939
 
-! Xterm
-xterm*utf8: 1
-xterm*termName: xterm-256color
-!xterm*loginShell: true
-xterm*locale: true
-xterm*vt100.locale: true
-! xterm*font: x:-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
-! xterm*font: x:-misc-fixed-bold-r-normal--15-*-75-75-c-90-iso10646-1
-xterm*font: x:-adobe-courier-bold-r-normal--14-*-75-75-m-90-iso10646-1
-xterm*boldMode: false
-! xterm*font: x:-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1
-! xterm*boldFont: x:-adobe-courier-medium-r-bold--14-140-75-75-m-90-iso8859-1
-xterm*vt100.allowBoldFonts: True
-xterm*renderFont: True
-xterm.vt100.eightBitInput: False
-xterm*selectToClipboard: True
-xterm*cursorBlink: True
-xterm*cursorColor: red
-xterm*visualBell: True
-xterm*ScrollKey: True
-xterm*saveLines: 5000
-xterm*scaleHeight: 0
-xterm*highlightSelection: True
-xterm.pointerColor: red
+! URxvt
+urxvt*font: xft:terminus:pixelsize=14:autohint=true
+URxvt.scrollBar: false
+URxvt.perl-ext-common: default,selection-to-clipboard,pasta,matcher,keyboard-select
+URxvt.keysym.M-u:     perl:url-select:select_next
+URxvt.underlineURLs:  True
 
-! *font: x:-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1
-! *font: x:-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
-*font: -adobe-courier-bold-r-normal--14-*-75-75-m-90-iso10646-1
-*boldFont: x:-adobe-courier-bold-r-normal--14-*-75-75-m-90-iso10646-1
-*boldMode: false
-
-emacs.toolBar: 0
-emacs.FontBackend: x,xft
-emacs.geometry:=80x49+270+0
-! emacs.font: Unifont-12
-! emacs.font: -adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1
-! emacs.font: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
-emacs.font: -adobe-courier-bold-r-normal--14-*-75-75-m-90-iso10646-1
-emacs.boldFont: -adobe-courier-bold-o-normal--14-*-75-75-m-90-iso10646-1
-! emacs.boldFont: x:-adobe-courier-medium-r-bold--14-140-75-75-m-90-iso8859-1
-emacs.menuBar: 0
-emacs.verticalScrollBars: off
-emacs.cursorColor: red
-emacs.lineSpacing: 0
-emacs.pointerColor: red
-! emacs.minibuffer: none
-
-! emacs.reverseVideo: true
-
-
-! Font Settings
+Xft.autohint: 0
+Xft.lcdfilter: lcddefault
+Xft.hintstyle: hintslight
 Xft.hinting: 0
-Xft.lcdfilter: lcddefault
-Xft.hintstyle: hintnone
 Xft.antialias: 1
-Xft.autohint: 0
 Xft.rgba: rgb
-! Change cursor
-Xcursor.theme: Adwaita
-! Xft.dpi: 96 ! 144
Index: .xinitrc
===================================================================
--- X/.xinitrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,3 +1,0 @@
-xrandr --output HDMI-A-0 --mode 1920x1080 --rate 240 --filter nearest
-exec ratpoison
-
Index: s/.gitconfig
===================================================================
--- cvs/.gitconfig	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,18 +1,0 @@
-[user]
-	name = Mikhail Kirillov
-	email = w96k@runbox.com
-[gpg]
-	program = gpg2
-[github]
-	user = w96k
-[color]
-	ui = auto
-[sendemail]
-	smtpEncryption = tls
-	smtpServer = mail.runbox.com
-	smtpUser = w96k@runbox.com
-	smtpServerPort = 587
-[init]
-	defaultBranch = master
-[http]
-	sslVerify = true
Index: s/.hgrc
===================================================================
--- cvs/.hgrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,25 +1,0 @@
-# example user config (see 'hg help config' for more info)
-[ui]
-username = Mikhail Kirillov <w96k@runbox.com>
-
-# We recommend enabling tweakdefaults to get slight improvements to
-# the UI over time. Make sure to set HGPLAIN in the environment when
-# writing scripts!
-tweakdefaults = True
-
-# uncomment to disable color in command output
-# (see 'hg help color' for details)
-# color = never
-
-# uncomment to disable command output pagination
-# (see 'hg help pager' for details)
-# paginate = never
-
-[extensions]
-# uncomment the lines below to enable some popular extensions
-# (see 'hg help extensions' for more info)
-#
-# histedit =
-# rebase =
-# uncommit =
-
Index: emacs/.emacs
===================================================================
--- emacs/.emacs	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ emacs/.emacs	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,595 @@
+;;;; My config for Emacs that I use in day-to-day work
+;;;;
+;;;; https://w96k.com/
+;;;; 2018-2019 (c) Mikhail w96k Kirillov
+
+;;;; INIT
+
+;;; Add Melpa repository +
+;;; Load use-package & enable installing all packages by default
+;;; You need to manually install use-package from melpa
+;;; (it's the only package you need to install manually)
+;;; Rest packages will be installed automatically
+;;;
+;;; You need to have "INIT" section and execute:
+;;; M-x package-install RET use-package RET
+
+(eval-when-compile
+  ;; increase GC-limit up to 100M for boot speedup
+  (setq gc-cons-threshold 500000000)
+
+  ;;; Disable emacs gui
+  (menu-bar-mode -1)
+  (scroll-bar-mode -1)
+  (tool-bar-mode -1)
+  (tooltip-mode -1)
+
+  (require 'package)
+
+  (setq package-archives
+        '(("gnu" . "http://elpa.gnu.org/packages/")
+          ("melpa" . "http://melpa.org/packages/")))
+
+  (package-initialize)
+
+  ;; restore GC-limit after timeout
+  (run-with-idle-timer
+   15 nil
+   (lambda ()
+     (setq gc-cons-threshold 100000)))
+
+  ;; Optimize loading
+  (setq load-prefer-newer t
+        package-user-dir "~/.emacs.d/elpa"
+        package--init-file-ensured t
+        package-enable-at-startup nil)
+  
+  (require 'use-package))
+
+(use-package use-package
+  :defer nil
+  :config
+  (setq use-package-verbose t)
+  (setq use-package-always-defer t)
+  (setq use-package-always-ensure nil))
+
+(use-package use-package-ensure-system-package :ensure)
+
+;;;; VISUALS
+
+;;; Display numbers
+(global-display-line-numbers-mode)
+
+;; Display whitespace
+(global-whitespace-mode)
+
+;;; Set font
+(set-frame-font "Terminus" nil t)
+
+;;; Display current line
+(global-hl-line-mode)
+
+;;; Set Theme
+(use-package color-theme-sanityinc-tomorrow
+  :demand
+  :if window-system
+  :config (load-theme 'sanityinc-tomorrow-eighties t))
+
+;;; Powerline
+(use-package powerline
+  :demand
+  :config (powerline-default-theme))
+
+;;; Bullets for org-mode
+(use-package org-bullets
+  :ensure t
+  :commands org-bullets-mode
+  :hook (org-mode . org-bullets-mode))
+
+;;;; EDITING
+
+
+;;; Easy undo system
+(use-package undo-tree
+ :after general
+ :commands
+ (global-undo-tree-mode)
+ :init
+ (setq
+  undo-tree-visualizer-timestamps t
+  undo-tree-enable-undo-in-region nil
+  undo-tree-history-directory-alist
+  `(("." . ,(expand-file-name "undo" user-emacs-directory))))
+ :config
+ (global-undo-tree-mode)
+ :diminish undo-tree-mode)
+
+;;; Jump to defenition
+(use-package dumb-jump
+  :bind (("M-g o" . dumb-jump-go-other-window)
+         ("M-g j" . dumb-jump-go)
+         ("M-g i" . dumb-jump-go-prompt)
+         ("M-g x" . dumb-jump-go-prefer-external)
+         ("M-g z" . dumb-jump-go-prefer-external-other-window))
+  :config (setq dumb-jump-selector 'ivy) ;; (setq dumb-jump-selector 'helm)
+  :ensure)
+
+(progn
+  (show-paren-mode))
+
+;;; Edit with root user
+(use-package sudo-edit)
+
+;;; Look eslint config
+(defun my/use-eslint-from-node-modules ()
+  (let* ((root (locate-dominating-file
+                (or (buffer-file-name) default-directory)
+                "node_modules"))
+         (eslint
+          (and root
+               (expand-file-name "node_modules/.bin/eslint"
+                                 root))))
+    (when (and eslint (file-executable-p eslint))
+      (setq-local flycheck-javascript-eslint-executable eslint))))
+
+;;; Live-checking text
+(use-package flycheck
+  :config
+  (add-hook 'after-init-hook #'global-flycheck-mode)
+  (add-hook 'flycheck-mode-hook #'my/use-eslint-from-node-modules)
+  (setq-default flycheck-disabled-checkers
+                (append flycheck-disabled-checkers
+                        '(javascript-jshint)))
+  (flycheck-add-mode 'javascript-eslint 'web-mode)
+  (setq-default flycheck-temp-prefix ".flycheck"))
+
+;;; No tabs
+(setq-default indent-tabs-mode nil)
+
+;;; Version control
+(use-package magit
+  :defer 2
+  :bind ("C-x g" . magit-status)
+  :config (setq magit-refresh-status-buffer nil))
+
+;;; Magit' github integration
+(use-package magithub
+  :after magit)
+
+;;; Git flow
+(use-package magit-gitflow
+  :after magit
+  :init (add-hook 'magit-mode-hook 'turn-on-magit-gitflow))
+
+;;; Show added & removed git lines
+(use-package git-gutter+
+  :ensure t
+  :init (global-git-gutter+-mode)
+  :config (progn
+            (define-key git-gutter+-mode-map (kbd "C-x n") 'git-gutter+-next-hunk)
+            (define-key git-gutter+-mode-map (kbd "C-x p") 'git-gutter+-previous-hunk)
+            (define-key git-gutter+-mode-map (kbd "C-x v =") 'git-gutter+-show-hunk)
+            (define-key git-gutter+-mode-map (kbd "C-x r") 'git-gutter+-revert-hunks)
+            (define-key git-gutter+-mode-map (kbd "C-x t") 'git-gutter+-stage-hunks)
+            (define-key git-gutter+-mode-map (kbd "C-x c") 'git-gutter+-commit)
+            (define-key git-gutter+-mode-map (kbd "C-x C") 'git-gutter+-stage-and-commit)
+            (define-key git-gutter+-mode-map (kbd "C-x C-y") 'git-gutter+-stage-and-commit-whole-buffer)
+            (define-key git-gutter+-mode-map (kbd "C-x U") 'git-gutter+-unstage-whole-buffer))
+  :diminish (git-gutter+-mode . "gg"))
+
+;;; Autoformatting code
+(use-package aggressive-indent
+  :config (global-aggressive-indent-mode))
+
+;;; 80 column width limit highlighter
+(use-package column-enforce-mode
+  :defer t
+  :diminish
+  :config (80-column-rule)
+  :hook (prog-mode . column-enforce-mode))
+
+;;; General autocomplete
+(use-package ivy
+  :demand
+  :diminish
+  :config
+  (ivy-mode)
+  (setq ivy-use-virtual-buffers t)
+  (setq enable-recursive-minibuffers t)
+  (global-set-key "\C-s" 'swiper)
+  (global-set-key (kbd "C-c C-r") 'ivy-resume)
+  (global-set-key (kbd "<f6>") 'ivy-resume))
+
+(use-package counsel
+  :demand
+  :config
+  (global-set-key (kbd "M-x") 'counsel-M-x)
+  (global-set-key (kbd "C-x C-f") 'counsel-find-file)
+  (global-set-key (kbd "<f1> f") 'counsel-describe-function)
+  (global-set-key (kbd "<f1> v") 'counsel-describe-variable)
+  (global-set-key (kbd "<f1> l") 'counsel-find-library)
+  (global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
+  (global-set-key (kbd "<f2> u") 'counsel-unicode-char)
+  (global-set-key (kbd "C-c g") 'counsel-git)
+  (global-set-key (kbd "C-c j") 'counsel-git-grep)
+  (global-set-key (kbd "C-x b") 'counsel-ibuffer)
+  (global-set-key (kbd "C-c k") 'counsel-ag)
+  (global-set-key (kbd "C-x l") 'counsel-locate)
+  (global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
+  (define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history))
+
+(use-package ivy-hydra)
+
+(use-package company
+  :demand
+  :diminish
+  :custom
+  (company-require-match nil)
+  (company-minimum-prefix-length 1)
+  (company-idle-delay 0.1)
+  (company-tooltip-align-annotation t)
+  :hook ((prog-mode . company-mode))
+  :config
+  (add-hook 'after-init-hook 'global-company-mode)
+  :bind (:map company-active-map
+              ("C-n" . company-select-next)
+              ("C-p" . company-select-previous)))
+
+;;;; LANGUAGES
+
+;;; Vue
+(use-package vue-mode
+  :config (setq mmm-submode-decoration-level 0))
+
+;;; PHP
+(use-package php-mode)
+
+;;; Templates
+(use-package web-mode
+  :config
+  (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
+  ())
+
+;;; Javascript
+(use-package js2-mode
+  :config
+  (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
+  (setq-default js2-basic-offset 2)
+  (add-hook 'js2-mode-hook
+            (lambda ()
+              (define-key js-mode-map (kbd "C-x C-e") 'nodejs-repl-send-last-expression)
+              (define-key js-mode-map (kbd "C-c C-j") 'nodejs-repl-send-line)
+              (define-key js-mode-map (kbd "C-c C-r") 'nodejs-repl-send-region)
+              (define-key js-mode-map (kbd "C-c C-l") 'nodejs-repl-load-file)
+              (define-key js-mode-map (kbd "C-c C-z") 'nodejs-repl-switch-to-repl))))
+
+;;; Eslint
+(use-package eslint-fix
+  :ensure-system-package (eslint . "npm install -g eslint")
+  :config
+  (eval-after-load 'js2-mode
+    '(add-hook 'js2-mode-hook (lambda () (add-hook 'after-save-hook 'eslint-fix nil t)))))
+
+(use-package json-mode)
+
+(use-package rjsx-mode
+  :config
+  (add-to-list 'auto-mode-alist '(".*\.js\'" . rjsx-mode)))
+
+;;; Yasnippet
+(use-package yasnippet
+  :demand
+  :diminish
+  :config (yas-global-mode 1))
+
+(use-package yasnippet-snippets
+  :diminish
+  :after yasnippet)
+
+;;; LSP
+(use-package lsp-mode
+  :hook
+  (ruby-mode . lsp)
+  (javascript-mode . lsp)
+  (vue-mode . lsp)
+  :commands lsp)
+
+;;; LSP Flycheck
+(use-package lsp-ui
+  :after (lsp-mode)
+  :hook lsp-mode
+  :commands lsp-ui-mode)
+
+(use-package company-lsp
+  :after (lsp-mode lsp-ui)
+  :commands company-lsp)
+
+;;; Debugger
+(use-package dap-mode
+  :config
+  (dap-mode 1)
+  (dap-ui-mode 1))
+
+;;; Ruby On Rails
+(use-package rinari)
+
+;;; Node.js Repl
+(use-package nodejs-repl)
+
+;;; Haskell support
+(use-package intero
+  :config (add-hook 'haskell-mode-hook 'intero-mode))
+
+;;; Typescript support
+(use-package typescript-mode)
+
+(use-package tide
+  :ensure t
+  :diminish
+  :after (typescript-mode company flycheck)
+  :hook ((typescript-mode . tide-setup)
+         (typescript-mode . tide-hl-identifier-mode)
+         (before-save . tide-format-before-save)))
+
+;;; Clojure REPL
+(use-package cider)
+
+;;;; MISC
+
+(use-package exec-path-from-shell
+  :config
+  (when (memq window-system '(mac ns x))
+    (exec-path-from-shell-initialize)
+    (exec-path-from-shell-copy-env "PATH")))
+
+;; Kill whole line
+(global-set-key (kbd "C-u") 'kill-whole-line)
+
+;;; Volume management using thinkpad volume buttons
+(use-package volume
+  :config
+  (global-set-key (kbd "<XF86AudioRaiseVolume>") 'volume-raise-10)
+  (global-set-key (kbd "<XF86AudioLowerVolume>") 'volume-lower-10))
+
+;;; Screenshot
+(use-package frameshot
+  :config (frameshot-setup
+           '((name   . "w96k")
+             (height . 800)
+             (width  . 1280))))
+
+;;; Change Move to end & beginning of the line behavior
+(use-package mvim
+  :config
+  (global-set-key (kbd "C-a") 'mwim-beginning)
+  (global-set-key (kbd "C-e") 'mwim-end))
+
+(use-package command-log-mode)
+
+;;; Benchmark init
+(use-package benchmark-init
+  :demand
+  :ensure t
+  :config
+  ;; To disable collection of benchmark data after init is done.
+  (add-hook 'after-init-hook 'benchmark-init/deactivate))
+
+;;; Bug-Tracker DebBugs
+(use-package debbugs)
+
+;;; Icons
+(use-package all-the-icons)
+
+;;; Icons for dired
+(use-package all-the-icons-dired
+  :diminish
+  :after all-the-icons
+  :config
+  (add-hook 'dired-mode-hook 'all-the-icons-dired-mode))
+
+;;; Sidebar File-Manager
+(use-package dired-sidebar
+  :after exwm
+  :bind (("C-x C-n" . dired-sidebar-toggle-sidebar))
+  :diminish
+  :after all-the-icons
+  :commands (dired-sidebar-toggle-sidebar)
+  :init
+  (add-hook 'dired-sidebar-mode-hook
+            (lambda ()
+              (unless (file-remote-p default-directory)
+                (auto-revert-mode))))
+  :config
+  (push 'toggle-window-split dired-sidebar-toggle-hidden-commands)
+  (push 'rotate-windows dired-sidebar-toggle-hidden-commands)
+  (setq dired-sidebar-subtree-line-prefix "__")
+  (setq dired-sidebar-use-term-integration t)
+  (setq dired-sidebar-use-custom-font t))
+
+;;; Manage docker in emacs
+(use-package docker
+  :bind ("C-c d" . docker))
+
+;;; hide some minor modes
+(use-package diminish
+  :demand)
+
+;;; org
+(use-package org
+  :config
+  (setq org-todo-keywords
+        (quote ((sequence "TODO(t)" "MIGRATE(m)" "|" "DONE(d)")
+                (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "PHONE" "MEETING"))))
+  (setq org-todo-keyword-faces
+        (quote (("TODO" :foreground "red" :weight bold)
+                ("NEXT" :foreground "blue" :weight bold)
+                ("DONE" :foreground "forest green" :weight bold)
+                ("WAITING" :foreground "orange" :weight bold)
+                ("HOLD" :foreground "magenta" :weight bold)
+                ("CANCELLED" :foreground "forest green" :weight bold)
+                ("MEETING" :foreground "forest cyan" :weight bold)
+                ("PHONE" :foreground "blue" :weight bold)))))
+
+;;; Smart mode line
+(use-package smart-mode-line
+  :demand
+  :config
+  (setq sml/no-confirm-load-theme t)
+  (setq sml/theme 'respectful)
+  (sml/setup))
+
+;;; Delete trailing whitespace on save
+(use-package whitespace-cleanup-mode
+  :diminish
+  :config (global-whitespace-cleanup-mode))
+
+;;; convert org to html in gnus
+(use-package org-mime)
+
+;;; Presentation
+(use-package epresent)
+
+;;; Email
+(use-package pinentry
+  :config
+  (setq epa-pinentry-mode 'loopback)
+  (pinentry-start))
+
+;;; Guru mode (disable arrows and stuff)
+(use-package guru-mode
+  :diminish
+  :config (guru-global-mode +1))
+
+;;; Hackernews
+(use-package hackernews)
+
+;;; PDF Tools
+(use-package pdf-tools
+  :demand
+  :config (pdf-loader-install))
+
+;;; Twitter
+(use-package twittering-mode
+  :config (setq twittering-use-master-password t))
+
+;;; Short messages
+(defalias 'yes-or-no-p 'y-or-n-p)
+
+(setq-default confirm-nonexistent-file-or-buffer t)
+
+(setq
+ save-place-forget-unreadable-files t
+ save-place-limit 200)
+
+(save-place-mode 1)
+
+;;; Browser
+(use-package w3m)
+
+;;; Show Emoji in emacs
+(use-package emojify
+  :config (add-hook 'after-init-hook #'global-emojify-mode))
+
+
+;;; Server for editing web-forms in emacs
+(use-package edit-server
+  :if window-system
+  :config (edit-server-start))
+
+;;; Markdown preview
+(use-package flymd)
+
+;;; AG Search
+(use-package ag)
+
+;;; Remove permission info from dired
+(defun dired-mode-setup ()
+  "to be run as hook for `dired-mode'."
+  (dired-hide-details-mode 1))
+(add-hook 'dired-mode-hook 'dired-mode-setup)
+
+;;; Dired Ranger like
+(use-package peep-dired)
+
+;;; Project Management
+(use-package projectile
+  :diminish 
+  :bind (("s-p" . projectile-command-map)
+         ("C-c p" . projectile-command-map))
+  :config
+  (projectile-global-mode))
+
+;;; Editor Config support
+(use-package editorconfig
+  :ensure t
+  :diminish
+  :config
+  (editorconfig-mode 1))
+
+;;; Parens editing
+(use-package paredit)
+
+;;; Parens colorizing
+(use-package rainbow-delimiters)
+
+;;; Break line at 80 symbols
+(setq fill-column 80)
+
+;;; Disable mouse
+(use-package disable-mouse
+  :diminish 
+  :defer 5
+  :config (global-disable-mouse-mode))
+
+
+(setq create-lockfiles nil)
+(setq
+ make-backup-files nil        ; disable backup files
+ auto-save-list-file-name nil ; disable .saves files
+ auto-save-default nil        ; disable auto saving
+ ring-bell-function 'ignore)  ; turn off alarms completely
+
+;;; No savefiles
+(progn
+  (setq make-backup-files nil)
+  (setq auto-save-default nil)
+  (setq create-lockfiles nil))
+
+;;; Org-mode Setup
+(setq org-agenda-files (list
+                        "~/Documents/life.org"))
+
+;;; Pomodoro technique tracking for org-mode
+(use-package org-pomodoro)
+
+;;; Hugo org exporter
+(use-package ox-hugo
+  :after oxxb
+  :config
+  (setq org-hugo-default-section-directory "posts")
+  (setq HUGO_BASE_DIR "~/github/w96k.gitlab.io/content/"))
+
+;;; Accounting
+(use-package ledger-mode)
+
+;;; Diary
+(use-package org-journal)
+
+;;; Display whitespace
+(progn
+  (setq whitespace-style (quote (face spaces tabs
+                                      space-mark tab-mark newline-mark )))
+  (setq whitespace-display-mappings
+        '(
+          (space-mark 32 [183] [46])
+          (tab-mark 9 [9655 9] [92 9])
+          ))
+
+  (set-face-attribute 'whitespace-space nil :background nil
+                      :foreground "gray30")
+  (set-face-attribute 'whitespace-newline nil :background nil
+                      :foreground "gray30")
+  (set-face-attribute 'whitespace-tab nil :background nil
+                      :foreground "gray30"))
+
+(add-to-list 'exec-path "~/.nodejs/bin/")
Index: acs/.emacs.d/.emacs-config.org
===================================================================
--- emacs/.emacs.d/.emacs-config.org	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,1272 +1,0 @@
-﻿#+TITLE: Emacs configuration
-#+AUTHOR: Kirillov <w96k.dev> Mikhail
-#+OPTIONS: toc:nil
-#+PROPERTY: header-args:elisp :results silent
-#+STARTUP: showeverything
-
-* About this Emacs configuration
-
-Configuration uses org-mode to tangle its contents to init.el and then
-be used by emacs. I use guix home for my emacs config on gnu guix
-system.
-
-If you see :tangle nil it means that snippet is not used anymore, but
-it is left because it might be valuable in a future for me.
-
-This configuration is available here:
-https://w96k.dev/emacs.html
-
-The git source code is hosted on Sourcehut:
-https://git.sr.ht/~w96k/dotfiles/tree/master/item/emacs
-
-The license of emacs config and dotfiles is CC0 which is Public Domain.
-
-** Packets
-Only needed when I need to install a package from Melpa and not GNU Guix
-#+begin_src elisp :tangle nil
-  (require 'package)
-
-  (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
-  		     ("melpa" . "http://melpa.org/packages/")))
-
-  (when (< emacs-major-version 27)
-    (package-initialize))
-
-  (require 'gnutls)
-#+end_src
-
-** EXWM
-
-#+begin_src emacs-lisp :tangle nil
-  (require 'exwm)
-  (require 'exwm-config)
-  (exwm-config-example)
-#+end_src
-
-
-** Init.el
-#+begin_src emacs-lisp :tangle init.el
-  ;; -*- lexical-binding: t -*-
-
-  ;; Show/Hide errors
-  ;; (setq debug-on-error nil)
-  ;; (setq debug-on-quit nil)
-
-  ;; Timer
-  (add-hook 'emacs-startup-hook
-	    (lambda ()
-	      (message
-	       "Emacs ready in %s with %d garbage collections."
-	       (format "%.2f seconds"
-		       (float-time
-			(time-subtract after-init-time before-init-time)))
-	       gcs-done)))
-
-  ;; Dont ask when following symlinks
-  (setq vc-follow-symlinks t)
-
-  ;; Load your custom settings
-  (setq custom-file "~/.emacs.d/custom-settings.el")
-  (load custom-file t)
-#+end_src
-
-* Meta
-** About me
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  ;; Information about me
-  (setq user-full-name "Mikhail Kirillov"
-	user-mail-address "w96k@runbox.com")
-#+END_SRC
-
-** Configuration
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (setq config-dotfiles-path "/home/w96k/projects/dotfiles/emacs/.emacs.d/"
-  	config-path "~/.emacs.d/"
-  	config-name ".emacs-config.org")
-
-  (defun config-visit ()
-    (interactive)
-    (find-file (concat config-path config-name)))
-
-  (defun config-tangle ()
-    (interactive)
-    (org-babel-tangle-file (concat config-dotfiles-path config-name))
-    ;; Configuration stored in another directory,
-    ;; so I need to move files .emacs.d manually
-    ;; (rename-file (concat config-dotfiles-path "early-init.el") config-path t)
-    (rename-file (concat config-dotfiles-path "init.el") config-path t))
-#+END_SRC
-
-* Appereance
-
-** Line numbers
-Изначально они отключены, но можно вызвать по клавише F7.
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (define-key global-map
-    (kbd "<f7>") 'display-line-numbers-mode)
-
-  (define-key global-map
-    (kbd "<f6>") 'whitespace-mode)
-#+END_SRC
-
-* Editing
-** Completion styles
-#+begin_src emacs-lisp :tangle init.el
-  (setq completion-styles '(basic partial-completion emacs22 substring))
-#+end_src
-
-** Dired
-#+BEGIN_SRC emacs-lisp :tangle init.el 
-  ;; Show files in KiB
-  (setq dired-listing-switches "-hlap"
-	dired-kill-when-opening-new-dired-buffer t)
-
-  (customize-set-variable 'global-auto-revert-non-file-buffers t)
-  (global-auto-revert-mode 1)
-#+END_SRC
-
-** Linter
-I use Flymake and Flycheck
-*** Flymake
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (add-hook 'prog-mode-hook 'flymake-mode)
-
-  (require 'psalm)
-
-  (define-prefix-command 'flymake-map)
-  (global-set-key (kbd "C-q") 'flymake-map)
-  (define-key flymake-map (kbd "n") 'flymake-goto-next-error)
-  (define-key flymake-map (kbd "p") 'flymake-goto-prev-error)
-  (define-key flymake-map (kbd "l") 'flymake-show-diagnostics-buffer)
-  (define-key flymake-map (kbd "e") 'flymake-show-diagnostic)
-#+END_SRC
-
-*** Flycheck
-#+BEGIN_SRC emacs-lisp :tangle nil
-  ;; (require 'psalm)
-
-  (when (package-loaded? "flycheck")
-
-    (defun flycheck-phanclient-start-daemon ()
-      "Start the phan daemon"
-      (interactive)
-      (let* ((default-directory (php-project-get-root-dir))
-	     (phan-executable (or flycheck-phanclient--phan-executable
-				  (if (file-exists-p "vendor/bin/phan")
-				      (concat default-directory "vendor/bin/phan")
-				    (executable-find "phan"))))
-	     (cmd (list phan-executable "--daemonize-tcp-port" "4846" "--quick")))
-	(apply #'start-process "PhanDaemon" "*phan daemon*" cmd)))
-
-    (flycheck-define-checker php-phanclient
-      "Phan"
-      :command ("phan_client" "-l" source-original "-f" source)
-      :error-patterns
-      ((warning line-start (or "Parse" "Fatal" "syntax" "Phan") " error" (any ":" ",") " " (message) " in " (file-name) " on line " line line-end))
-      :modes (php-mode php+-mode))
-
-    (add-to-list 'flycheck-checkers 'php-phanclient)
-
-    (flycheck-add-next-checker 'php '(warning . php-phanclient))
-
-    (add-hook 'prog-mode-hook 'flycheck-mode))
-#+END_SRC
-
-** Imenu List
-#+begin_src emacs-lisp :tangle init.el
-  (use-package imenu-list
-    :bind
-    ("C-x C-d" . imenu-list-smart-toggle)
-    :config
-    (setq imenu-list-focus-after-activation nil
-  	imenu-list-auto-resize nil
-  	imenu-list-mode-line-format '()
-  	imenu-list-size 0.4))
-#+end_src
-
-** Version Control System
-Модуль VC + Magit.
-
-| Operation      | VC                                      | Magit                |
-|----------------+-----------------------------------------+----------------------|
-| Project status | project-vc-dir (C-x p v)                | magit-status (C-x g) |
-| Pull           | vc-update (F, in my case)               | magit-pull (F p)     |
-| New branch     | vc-retrieve-tag (C-u B s)               | magit-branch (b c)   |
-| Commit         | vc-next-action (C-x v v)                | magit-commit (c c)   |
-| Rebase         | shell-command (M-!) + git rebase master | magit-rebase (r p)   |
-| Push           | vc-push (P or C-u P)                    | magit-push (P p)     |
-| Stash          | mu-vc-git-stash (z)                     | magit-stash (z)      |
-| Log            | vc-print-root-log (L)                   | magit-log (l l)      |
-https://www.manueluberti.eu//emacs/2021/11/27/vc/
-
-#+BEGIN_SRC emacs-lisp :tangle init.el
-    (setq vc-command-messages t)
-
-    (global-set-key "\C-xvB" 'git-branch-next-action)
-
-    ;; Use magit only when built-in VC fails
-
-  (use-package magit
-    :defer t
-    :bind (("C-x g" . magit-status)))
-
-  (use-package git-timemachine :defer t)
-#+END_SRC
-
-** Jumps
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  ;; Jumps by highlighting symbols on screen
-  (use-package avy
-    :defer t
-    :bind (("M-s M-s"	. avy-goto-char)
-  	 ("M-s s"	. avy-goto-char)
-  	 ("M-s g"	. avy-goto-line)
-  	 ("M-s l"	. avy-goto-char-in-line)
-  	 ("M-s M-l"	. avy-goto-char-in-line)
-
-  	 ("M-g g"	. avy-goto-line)
-  	 ("M-s M-g"	. avy-goto-line)))
-
-  (use-package link-hint
-    :defer t
-    :bind (("M-s j" . link-hint-open-link)))
-
-  ;; Jumps to last change
-  (use-package goto-chg
-    :defer t
-    :bind (("C-z" . goto-last-change)
-  	 ("M-z" . goto-last-change-reverse)))
-
-  ;; Jumps using grep and similar tools
-  (use-package dumb-jump
-    :defer t
-    :bind (("M-g o" . dumb-jump-go-other-window)
-  	 ("M-g j" . dumb-jump-go)
-  	 ("M-g b" . dumb-jump-back)
-  	 ("M-g q" . dumb-jump-quick-look)
-  	 ("M-g x" . dumb-jump-go-prefer-external)
-  	 ("M-g z" . dumb-jump-go-prefer-external-other-window)))
-
-#+END_SRC
-
-** Проекты
-Использую встроенный project.el
-I use built-in project.el
-** Ограничение ширины строки
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (add-hook 'prog-mode-hook 'display-fill-column-indicator-mode)
-
-  ;;; Set column width to 79 according to pep8 for python
-  (add-hook 'python-mode-hook
-	    (lambda () (set-fill-column 79)))
-#+END_SRC
-
-** Ввод парных скобок и кавычек (electric)
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  ;;; Input of pair delimiters
-  (electric-pair-mode)
-  (add-hook 'prog-mode-hook 'electric-pair-mode)
-  (add-hook 'prog-mode-hook 'electric-indent-mode)
-#+END_SRC
-
-** Kill-ring
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (use-package browse-kill-ring
-    :defer t
-    :bind ("C-M-y" . browse-kill-ring))
-#+END_SRC
-
-** Tags
-Для прыжков и поиска функций/классов и т.д.
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (setq path-to-ctags "~/.guix-home/profile/bin/ctags")
-
-  (defun tags-create (dir-name)
-    "Create tags file."
-    (interactive "DDirectory: ")
-    (shell-command
-     (format "%s -f TAGS -e -R %s" path-to-ctags
-  	     (directory-file-name dir-name))))
-
-  (defun tags-create-python (dir-name)
-    "Create tags with python interpreter"
-    (interactive "DDirectory: ")
-    (shell-command
-     (format "%s -f TAGS -e -R --fields=+l --languages=python --python-kinds=-iv $(python -c \"import os, sys; print(' '.join('{}'.format(d) for d in sys.path if os.path.isdir(d)))\") %s" path-to-ctags
-  	     (directory-file-name dir-name))))  
-#+END_SRC
-
-#+begin_src emacs-lisp :tangle init.el
-  (use-package ggtags
-    :defer t
-    :hook
-    (c-mode . ggtags-mode))
-#+end_src
-
-
-** Дебаггер
-#+begin_src emacs-lisp :tangle nil
-  (when (package-loaded? "realgud")
-    (load "~/.emacs.d/site-lisp/realgud-xdebug/realgud-xdebug.el"))
-#+end_src
-
-#+begin_src emacs-lisp :tangle nil
-  (when (package-loaded? "geben")
-    (setq geben-dbgp-default-port 9003))
-#+end_src
-
-*** Автодополнение кода и документация
-По большей части я использую дефолтный Completion Buffer и Corfu
-#+begin_src elisp :tangle nil
-  (when (package-loaded? "corfu")
-    (progn
-      (setq corfu-preview-current 'nil
-	    corfu-popupinfo-delay t)
-      (corfu-mode 1)
-      (corfu-popupinfo-mode 1)
-      (defun show-default-completion-buffer ()
-	(interactive)
-	(corfu-quit)
-	(corfu-mode -1)
-	(completion-at-point)
-	(corfu-mode 1)
-	(corfu-popupinfo-mode 1))
-      (define-key corfu-map (kbd "M-TAB") 'show-default-completion-buffer)
-      (define-key corfu-map (kbd "TAB") 'show-default-completion-buffer)
-      (define-key corfu-map (kbd "C-M-i") 'show-default-completion-buffer)      
-      (corfu-mode -1)
-      (add-hook 'prog-mode-hook 'corfu-mode)
-
-      (defun corfu-send-shell (&rest _)
-	"Send completion candidate when inside comint/eshell."
-	(cond
-	 ((and (derived-mode-p 'eshell-mode) (fboundp 'eshell-send-input))
-	  (eshell-send-input))
-	 ((and (derived-mode-p 'comint-mode)  (fboundp 'comint-send-input))
-	  (comint-send-input))))
-
-      (advice-add #'corfu-insert :after #'corfu-send-shell)
-
-      (add-hook 'eshell-mode-hook 'corfu-mode)))
-
-#+end_src
-*** Агрессивный дефолтный комплит
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (setq aggressive-completion-delay 0.5)
-  (aggressive-completion-mode t)
-#+END_SRC
-** Полнотекстовый поиск
-Для выхода из поиска -- C-c C-q
-#+begin_src emacs-lisp :tangle nil
-  (load "deft-autoloads")
-  
-  (define-key global-map
-    (kbd "C-c n s") 'deft)
-  
-  (setq deft-recursive t
-	deft-use-filter-string-for-filename t
-	deft-default-extension "org md"
-	deft-directory "~/projects/at-w96k/content/digarden")
-#+end_src
-
-** Визуализирование откатов
-При помощи пакета undo-tree   
-#+begin_src emacs-lisp :tangle init.el
-  (use-package undo-tree
-    :defer t
-    :hook
-    (prog-mode . undo-tree-mode)
-    (org-mode . undo-tree-mode))
-#+end_src
-
-** Сниппеты
-#+begin_src emacs-lisp :tangle nil
-  (when (package-loaded? "yasnippet")
-    (progn
-      (add-hook 'prog-mode-hook #'yas-minor-mode)))
-#+end_src
-
-** Клиент LSP
-#+begin_src emacs-lisp :tangle init.el
-  (with-eval-after-load 'eglot
-    (add-to-list 'eglot-server-programs
-                 '((php-mode phps-mode php-ts-mode) . ("/home/w96k/projects/phpactor/bin/phpactor" "language-server" "-vvv"))))
-
-  ;; (with-eval-after-load 'eglot
-  ;;   (add-to-list 'eglot-server-programs '((php-mode phps-mode) . ("~/projects/phpactor/bin/phpactor" "language-server" "-vvv")))
-  ;;   (add-to-list 'eglot-server-programs '((php-mode phps-mode) . ("intelephense" "--stdio")))
-
-  ;;   ;; No event buffers, disable providers cause a lot of hover traffic. Shutdown unused servers.
-  ;;   (setq eglot-events-buffer-size 0
-  ;; 	eglot-ignored-server-capabilities '(:hoverProvider
-  ;; 					    :documentHighlightProvider)
-  ;; 	eglot-autoshutdown t))
-
-  ;; Show all of the available eldoc information when we want it. This way Flymake errors
-  ;; don't just get clobbered by docstrings.        
-  (add-hook 'eglot-managed-mode-hook
-  	  (lambda ()
-  	    "Make sure Eldoc will show us all of the feedback at point."
-  	    (setq-local eldoc-documentation-strategy
-  			#'eldoc-documentation-compose)))
-#+end_src
-
-** Линтеры
-#+begin_src emacs-lisp :tangle nil
-  (defun my-php-mode-setup ()
-    "My PHP-mode hook."
-    (require 'flycheck-phpstan)
-    (flycheck-mode t))
-
-  (add-hook 'php-mode-hook 'my-php-mode-setup)
-#+end_src
-
-#+BEGIN_SRC emacs-lisp :tangle nil
-  ;; (add-hook 'php-mode-hook 'flymake-php-load)
-   ;; (add-hook 'php-mode-hook 'flymake-phpstan-turn-on)
-
-    ;; (require 'flycheck-phpstan)
-
-
-  ;;(add-to-list 'auto-mode-alist '("\\.\\(php\\|phtml\\)\\'" . phps-mode))
-
-  ;; (phps-mode-flycheck-setup)
-
-  ;; (setq phps-mode-async-process t)
-  ;; (setq phps-mode-async-process-using-async-el t)
-#+END_SRC
-
-** Выделение
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (use-package expand-region
-    :defer t
-    :bind (("C-=" . er/expand-region)))
-#+END_SRC
-
-** Сессия
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (desktop-save-mode 1)
-#+END_SRC
-** Скроллинг
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (setq scroll-margin 0)
-#+END_SRC
-** Поиск
-*** Isearch
-#+begin_src emacs-lisp :tangle init.el
-  (with-eval-after-load 'isearch
-    (define-key isearch-mode-map "\C-h" 'isearch-delete-char)
-    (define-key isearch-mode-map "\C-ch" 'isearch-help-for-help))
-#+end_src
-
-*** Подсчёт кандидатов
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (use-package anzu
-    :config
-    (global-anzu-mode t))
-#+END_SRC
-*** Swiper (не используется)
-#+BEGIN_SRC emacs-lisp :result nil :tangle nil
-  (load "swiper-autoloads")
-  (global-set-key (kbd "C-s") 'swiper)
-
-  (setq swiper-include-line-number-in-search t
-	swiper-use-visual-line t
-	swiper-stay-on-quit t)
-#+END_SRC
-** Which function
-#+begin_src emacs-lisp :tangle init.el
-  (which-function-mode t)
-#+end_src
-
-** Подсказка биндов
-Пакет Which-key
-#+begin_src elisp :tangle nil
-  (load "which-key-autoloads")
-  (which-key-setup-side-window-right)
-  (which-key-mode)
-
-  (setq which-key-side-window-max-width 0.5
-	which-key-show-remaining-keys t
-	which-key-max-display-columns 50
-	which-key-max-description-length 35
-	which-key-sort-order 'which-key-local-then-key-order
-	which-key-idle-delay 0.25)
-#+end_src
-
-** Права суперпользователя
-Sudo-edit
-#+begin_src emacs-lisp :tangle init.el
-  (use-package sudo-edit
-    :defer t)
-#+end_src
-
-** Промежуточный код
-Показывает собранное состояние будь то собранный куски на ассемблере
-или байт-код при помощи пакета RMSbolt.
-#+begin_src emacs-lisp :tangle init.el
-  (use-package rmsbolt
-    :defer t)
-#+end_src
-
-** Быстрый запуск программы
-#+begin_src emacs-lisp :tangle nil
-  ;; (when (package-loaded? "quickrun")
-  ;;   (define-key global-map (kbd "C-c C-c") 'quickrun))
-#+end_src
-
-
-* Языки программирования
-** Common Lisp
-*** REPL
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (load "sly-autoloads")
-
-  (setq sly-lisp-implementations
-	'((clisp ("clisp"))
-	  (cmucl ("cmucl" "-quiet"))
-	  (sbcl ("/opt/sbcl/bin/sbcl") :coding-system utf-8-unix)))
-#+END_SRC
-
-** Ruby
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (when (package-loaded? "inf-ruby")
-    (add-hook 'ruby-mode-hook 'inf-ruby-minor-mode))
-
-  (when (package-loaded? "inf-ruby")
-    (add-hook 'ruby-mode-hook 'robe-mode))
-#+END_SRC
-
-** Scheme
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (setq geiser-active-implementations '("guile"))
-#+END_SRC
-
-** Python
-*** Автодополнение и линт
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (when (package-loaded? "anaconda-mode")
-    (progn
-      (add-hook 'python-mode-hook 'anaconda-mode)
-      (add-hook 'python-mode-hook 'anaconda-eldoc-mode)))
-
-  ;; (when (load "flymake" t)
-  ;;   (defun flymake-pylint-init ()
-  ;;     (let* ((temp-file (flymake-init-create-temp-buffer-copy
-  ;; 		       'flymake-create-temp-inplace))
-  ;; 	   (local-file (file-relative-name
-  ;; 			temp-file
-  ;; 			(file-name-directory buffer-file-name))))
-  ;;       (list "epylint" (list local-file))))
-
-  ;;   (add-to-list 'flymake-allowed-file-name-masks
-  ;; 	       '("\\.py\\'" flymake-pylint-init)))
-
-  ;; (add-hook 'python-mode-hook 'flymake-mode)
-#+END_SRC
-*** Прыжки в функции стандартной библиотеки на си
-** SML
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (add-hook 'sml-mode-hook 'sml-mode)
-#+END_SRC
-** Java
-*** Eglot-java
-For better integration with eclipse.jdt.ls
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (unless (package-installed-p 'eglot-java)
-    (package-vc-install "https://github.com/yveszoundi/eglot-java" nil nil 'eglot-java))
-#+end_src
-
-** PHP
-*** PHP-Mode
-Необходимо скачать и распаковать мануал PHP (в формате html) в
-директорию ~~/.emacs.d/php-manual/~.
-#+begin_src emacs-lisp :tangle nil
-  ;; (add-to-list 'load-path "~/.emacs.d/site-lisp/realgud-xdebug/")
-  ;; (require 'realgud-xdebug)
-
-  ;; (defun init-php-mode ()
-  ;;   (eglot-ensure))
-
-  (use-package php-mode
-    :bind ("C-c h" . 'php-quickhelp-at-point)
-    :config
-
-    (setq php-manual-path
-  	"~/projects/php-manual/"
-  	php-quickhelp-dir "~/projects/php-manual/"
-  	php-quickhelp--dest "~/projects/php-manual/php_manual_en.json"))
-
-
-  ;; (add-hook 'php-mode-hook 
-  ;; 		'(lambda ()
-  ;; 		   ;; (auto-complete-mode t)
-
-  ;; 		   ;; (require 'ac-php)
-  ;; 		   (require 'php-quickhelp)
-  ;; 		   (require 'company)
-  ;; 		   (company-mode t)
-  ;; 		   (require 'company-php)
-  ;; 		   (require 'company-quickhelp)
-
-  ;; 		   (require 'yasnippet)
-  ;; 		   (require 'yasnippet-snippets)
-
-  ;; 		   (set (make-local-variable 'company-backends)
-  ;; 			'((company-ac-php-backend company-dabbrev-code)
-  ;; 			  php-quickhelp-company-php
-  ;; 			  company-capf company-files))
-
-  ;; 		   (company-quickhelp-mode t)
-
-  ;; 		   (define-key php-mode-map (kbd "C-M-i") 'company-complete)
-  ;; 		   (define-key company-mode-map (kbd "M-TAB") 'company-complete)
-
-  ;; 		   ;; (setq ac-sources '(ac-source-php php-quickhelp-company-php))
-  ;; 		   ;; (setq eldoc-documentation-function
-  ;; 		   ;;       'php-quickhelp-eldoc-func)
-
-  ;; 		   (yas-minor-mode t)
-
-  ;; 		   ;; (define-key php-mode-map (kbd "C-M-i") 'auto-complete)
-  ;; 		   ;; (define-key ac-mode-map (kbd "M-TAB") 'auto-complete)
-
-  ;; 		   (define-key php-mode-map (kbd "C-c H")
-  ;; 			       'php-local-manual-search)
-
-  ;; 		   (define-key php-mode-map (kbd "C-c h") 'php-quickhelp-at-point)
-  ;; 		   (define-key company-mode-map (kbd "C-c h") 'php-quickhelp-at-point)
-
-  ;; 		   ;; (define-key php-mode-map (kbd "C-c t") 'ac-php-show-tip)
-
-  ;; 		   ;; Jump to definition (optional)
-  ;; 		   (define-key php-mode-map
-  ;; 			       (kbd "M-.") 'ac-php-find-symbol-at-point)
-
-  ;; 		   ;; Return back (optional)
-  ;; 		   (define-key php-mode-map
-  ;; 			       (kbd "M-,") 'ac-php-location-stack-back)))
-  ))
-#+end_src
-
-*** Composer
-#+begin_src emacs-lisp :tangle init.el
-  (setq composer-executable-bin "~/.bin/composer")
-#+end_src
-
-*** Flymake PHP
-*** REPL
-*** LSP сервер
-PHPactor
-#+begin_src emacs-lisp :tangle nil
-  (setq phpactor-executable "~/.bin/phpactor")
-  (custom-set-variables '(lsp-phpactor-path "~/.bin/phpactor"))
-
-  (use-package phpactor :ensure t)
-  (use-package company-phpactor :ensure t)
-
-
-
-  ;; (with-eval-after-load 'php-mode
-  ;;   (define-key php-mode-map (kbd "M-.") #'phpactor-goto-definition)
-  ;;   (define-key php-mode-map (kbd "M-?") #'phpactor-find-references))
-#+end_src
-
-*** Transient меню    
-#+begin_src emacs-lisp :tangle nil
-  (require 'transient)
-  (define-transient-command php-menu ()
-    "Php"
-    [["Class"
-      ("cc" "Copy" phpactor-copy-class)
-      ("cn" "New" phpactor-create-new-class)
-      ("cr" "Move" phpactor-move-class)
-      ("ci" "Inflect" phpactor-inflect-class)
-      ("n"  "Namespace" phpactor-fix-namespace)]
-     ["Properties"
-      ("a"  "Accessor" phpactor-generate-accessors)
-      ("pc" "Constructor" phpactor-complete-constructor)
-      ("pm" "Add missing props" phpactor-complete-properties)
-      ("r" "Rename var locally" phpactor-rename-variable-local)
-      ("R" "Rename var in file" phpactor-rename-variable-file)]
-    ["Extract"
-      ("ec" "constant" phpactor-extract-constant)
-      ("ee" "expression" phpactor-extract-expression)
-      ("em"  "method" phpactor-extract-method)]
-    ["Methods"
-      ("i" "Implement Contracts" phpactor-implement-contracts)
-      ("m"  "Generate method" phpactor-generate-method)]
-    ["Navigate"
-      ("x" "List refs" phpactor-list-references)
-      ("X" "Replace refs" phpactor-replace-references)
-      ("."  "Goto def" phpactor-goto-definition)]
-    ["Phpactor"
-      ("s" "Status" phpactor-status)
-      ("u" "Install" phpactor-install-or-update)]])
-#+end_src
-* Языки декларирования
-** SQL
- to install lsp-server called sqls
-https://emacs-lsp.github.io/lsp-mode/page/lsp-sqls/
-#+BEGIN_SRC emacs-lisp :tangle nil
-  ;; Empty for now (was using emacsql)
-  (setq lsp-sqls-server "~/go/bin/sqls")
-
-  ;; (setq lsp-sqls-workspace-config-path nil)
-
-  (setq lsp-sqls-connections
-	'(((driver . "mysql") (dataSourceName . "dbuser:mangoworms@tcp(localhost:3306)/profile24"))))
-#+END_SRC
-
-The main way to interact with SQL is using org-mode
-#+begin_src emacs-lisp :tangle nil
-  (when (package-loaded? "org-sql")
-    (setq org-sql-files "~/projects/profile24/org"))
-
-  (add-hook 'sql-interactive-mode-hook
-	  (lambda ()
-	    (sql-connect "profile24")
-	    (toggle-truncate-lines t)))
-
-  (setq sql-connection-alist
-      '((profile24
-	 (sql-product 'mysql)
-	 (sql-server "localhost")
-	 (sql-user "dbuser")
-	 (sql-password "123456")
-	 (sql-database "testdb")
-	 (sql-port 3306))))
-#+end_src
-
-*** Sql Viewer
-#+begin_src emacs-lisp :tangle init.el
-  (unless (package-installed-p 'pg)
-    (package-vc-install "https://github.com/emarsden/pg-el" nil nil 'pg))
-  (unless (package-installed-p 'pgmacs)
-    (package-vc-install "https://github.com/emarsden/pgmacs"))
-
-  (use-package pgmacs)
-#+end_src
-
-
-** Веб шаблоны
-*** Web-mode
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (use-package web-mode
-    :defer t
-    :config
-    (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
-    (add-to-list 'auto-mode-alist '("\\.twig.html\\'" . web-mode))
-    (setq web-mode-markup-indent-offset 2)
-    (setq web-mode-enable-auto-pairing t)
-    (setq web-mode-enable-css-colorization t)
-    (setq web-mode-enable-block-face t)
-    (setq web-mode-enable-current-element-highlight t))
-#+END_SRC
-
-** Org
-*** Org-mode
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (use-package org
-    :defer t
-    :config
-    (org-babel-do-load-languages
-     'org-babel-load-languages
-     '((R . t)
-       (ditaa . t)
-       (dot . t)
-       ;; (php . t)
-       (emacs-lisp . t)
-       (gnuplot . t)
-       (haskell . nil)
-       (latex . t)
-       ;;(ledger . t)
-       (ocaml . nil)
-       (octave . t)
-       (python . t)
-       (ruby . t)
-       (screen . nil)
-       (shell . t)
-       (sql . t)
-       (js . t)))
-    (setq org-default-notes-file "~/Documents/todo.org"
-	system-time-locale "C"
-	org-use-speed-commands t
-	org-adapt-indentation nil
-	org-return-follows-link t
-	org-agenda-include-diary t
-	org-display-remote-inline-images 'download
-	org-agenda-start-with-log-mode t
-	org-image-actual-width (list 400)
-	org-hide-emphasis-markers t
-	org-outline-path-complete-in-steps nil
-	org-src-tab-acts-natively t
-	org-id-track-globally t
-	org-confirm-babel-evaluate nil)
-    (setq org-todo-keywords
-	(quote ((sequence "TODO(t)"
-			  "MIGRATE(m)"
-			  "IN PROGRESS(p)" 
-			  "DONE(d)")
-		(sequence "BLOCKED(w@/!)"
-			  "HOLD(h@/!)" "|"
-			  "CANCELLED(c@/!)"
-			  "PHONE"
-			  "MEETING"
-			  "NEED CLARIFICATION(t)"
-			  ))))
-    (setq org-todo-keyword-faces
-	(quote (("TODO" :foreground "red" :weight bold)
-		("NEXT" :foreground "blue" :weight bold)
-		("DONE" :foreground "forest green" :weight bold)
-		("WAITING" :foreground "orange" :weight bold)
-		("HOLD" :foreground "magenta" :weight bold)
-		("CANCELLED" :foreground "forest green" :weight bold)
-		("MEETING" :foreground "forest cyan" :weight bold)
-		("PHONE" :foreground "blue" :weight bold))))
-    :bind
-    ("C-c l" . org-store-link)
-    ("C-c a" . org-agenda)
-    ("C-c c" . org-capture)
-    )
-
-  (defun org-babel-edit-prep:sql (babel-info)
-    (setq-local buffer-file-name (->> babel-info caddr (alist-get :tangle)))
-    (setq-local lsp-buffer-uri (->> babel-info caddr (alist-get :tangle) lsp--path-to-uri))
-    (setq-local lsp-headerline-breadcrumb-enable nil)
-    (lsp))
-
-  ;; (global-set-key (kbd "M-f") 'org-metaright)
-  ;; (global-set-key (kbd "M-b") 'org-metaleft)
-  ;; (global-set-key (kbd "M-p") 'org-metaup)
-  ;; (global-set-key (kbd "M-n") 'org-metadown)
-#+END_SRC
-
-
-*** Org-ref
-#+begin_src emacs-lisp :tangle nil
-  (load "org-ref-autoloads")
-  
-  (setq reftex-default-bibliography '("~/Documents/bibliography/references.bib"))
-  
-  ;; see org-ref for use of these variables
-  (setq org-ref-bibliography-notes "~/Documents/bibliography/notes.org"
-	org-ref-default-bibliography '("~/Documents/Bibliography/references.bib")
-	org-ref-pdf-directory "~/Documents/bibliography/bibtex-pdfs/")
-#+end_src
-
-*** Org-roam
-#+begin_src emacs-lisp :tangle init.el
-  (use-package org-roam
-    :defer t
-    :bind
-    ("C-c n l" . org-roam-node-insert)
-    ("C-c n b" . org-roam-buffer-toggle)
-    ("C-c n f" . org-roam-node-find)
-    ("C-c n t t" . org-roam-tag-add)
-    ("C-c n t r" . org-roam-tag-remove)
-    ("C-c n i" . org-roam-jump-to-index)
-    ("C-c n g" . org-roam-graph)
-    ("C-c n d" . org-roam-db-build-cache)
-    ("C-c n r" . org-roam-node-random)
-    ("C-c n j" . org-roam-dailies-find-date)
-    :config
-    (setq org-roam-directory (file-truename "~/Zettelkasten")
-  	org-roam-v2-ack t
-  	org-roam-completion-everywhere t
-  	org-roam-index-file (concat org-roam-directory "/20210409054712-жизнь.org")
-  	org-roam-dailies-directory (concat org-roam-directory "journals/"))
-
-    (org-roam-db-autosync-mode t))
-
-  (defun org-roam-jump-to-index ()
-    "Stub of recreating the function from V1"
-    (interactive)
-    (let
-        ((org-roam-index org-roam-index-file))
-      (find-file org-roam-index)))
-
-  (use-package org
-    :defer t
-    :config
-    (customize-set-variable 'org-link-descriptive t)
-
-    (add-to-list 'org-agenda-files
-  	       "~/Documents/todo.org")
-
-    (setq org-directory "~/Documents"
-  	org-default-notes-file (concat org-directory "/todo.org")))
-#+end_src
-
-** YAML
-#+begin_src emacs-lisp :tangle init.el
-  (use-package yaml-mode
-    :defer t)
-#+end_src
-
-* Коммуникации
-** Gnus
-#+begin_src emacs-lisp :tangle init.el
-  
-#+end_src
-
-** Telega
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (use-package telega
-    :bind (("C-c t" . telega-prefix-map)))
-#+END_SRC
-
-** Mastodon
-#+begin_src emacs-lisp :tangle init.el
-  (use-package mastodon
-    :defer t
-    :config
-    (setq mastodon-active-user "w96k"
-	  mastodon-instance-url "https://fosstodon.org/"))
-#+end_src
-
-* Разное
-** *Highlight
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (use-package highlight
-    :defer t)
-#+end_src
-** Минорные твики дефолтного имакса
-*** Короткие ответы на вопросы
-#+begin_src emacs-lisp :tangle init.el
-  (if (boundp 'use-short-answers)
-    (setq use-short-answers t)
-  (advice-add 'yes-or-no-p :override #'y-or-n-p))
-#+end_src
-
-*** Не сохранять дубликаты в killring
-
-*** Подсвечивать текущую строку
-#+begin_src emacs-lisp :tangle nil
-  (global-hl-line-mode t)
-#+end_src
-
-*** Автодополнение в echo при M-x и других командах
-#+begin_src emacs-lisp :tangle init.el
-  (icomplete-mode t)
-#+end_src
-*** Проверять орфографию
-#+begin_src emacs-lisp :tangle init.el
-  (flyspell-mode t)
-#+end_src
-
-*** Не спрашивать о несуществующих буферах
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (setq-default confirm-nonexistent-file-or-buffer t)
-#+END_SRC
-
-*** Переключение буферов
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (global-set-key (kbd "M-o")  'mode-line-other-buffer)
-#+END_SRC
-
-*** Минорные твики
-#+begin_src emacs-lisp :tangle init.el
-  ;; (setq redisplay-dont-pause t)
-
-  (setq select-enable-clipboard t
-	select-enable-primary t)
-
-  (setq completions-detailed nil)
-
-  (setq kill-buffer-delete-auto-save-files t)
-  (setq next-error-message-highlight t)
-
-  (setq mode-line-compact 'long)
-
-  (setq completions-group t)
-
-  ;;(set-frame-parameter nil 'internal-border-width 0)
-
-  ;; (set-window-buffer nil (current-buffer))
-
-  (setq default-directory "~/"
-	custom-safe-themes t
-	delete-old-versions t
-	enable-local-variables t)
-#+end_src
-
-*** Shell
-#+begin_src emacs-lisp :tangle init.el
-  (setq ansi-color-for-comint-mode t)
-  (setq shell-command-prompt-show-cwd t)
-#+end_src
-
-*** Переменная PATH в eshell
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (setq exec-path-from-shell-variables
-	'("PATH" "MANPATH"))
-
-  (when (and (memq window-system '(mac ns x))
-	     (not (eq system-type 'berkeley-unix)))
-    (exec-path-from-shell-initialize))
-#+END_SRC
-
-*** Отображение номера колонки
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (column-number-mode)
-#+END_SRC
-
-*** nobreak символы
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (setq nobreak-char-display nil)
-#+END_SRC
-
-*** Меню
-*** Сохранять временные файлы не в той же директории
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (defvar backup-dir "~/.emacs.d/backups/")
-
-  (setq
-   backup-by-copying t
-   backup-directory-alist
-   '(("~/.emacs.d/backups/"))
-   version-control nil)
-#+END_SRC
-
-*** Календарь
-Делаем начало недели в понедельник.
-#+BEGIN_SRC emacs-lisp :tangle init.el
-  (setq calendar-week-start-day 1)
-#+END_SRC
-
-*** Вернуться в предыдущий буфер
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (define-key global-map (kbd "C-q C-q") 'previous-buffer)
-  (define-key global-map (kbd "C-S-q C-S-q") 'next-buffer)
-#+END_SRC
-*** Смена раскладки (EN / RU) и поддержка биндов на других языках
-Работает на C-\
-#+begin_src elisp :tangle init.el
-  (set-input-method "russian-computer")
-  (toggle-input-method)
-#+end_src
-
-*** Требовать создания последней пустой строки
-#+begin_src emacs-lisp :tangle init.el
-  (setq require-final-newline t)
-#+end_src
-
-*** Стирать текст на C-h как в Bash
-И переназначаем старые бинды
-#+begin_src emacs-lisp :tangle nil
-  (define-key global-map (kbd "C-h") 'delete-backward-char)
-  (define-key global-map (kbd "C-c h") 'help-command)
-#+end_src
-
-*** Поддержка CamelCase в навигации
-#+begin_src emacs-lisp :tangle init.el
-  (global-subword-mode 1)
-#+end_src
-
-*** Kills
-#+begin_src emacs-lisp :tangle init.el
-  (use-package whole-line-or-region
-    :bind (("C-k" . kill-region)
-	   ("C-w" . backward-kill-word))
-    :config
-    (whole-line-or-region-global-mode))
-#+end_src
-
-
-** Браузер
-#+begin_src emacs-lisp :tangle nil
-  (setq browse-url-browser-function #'eww-browse-url)
-
-  (add-hook 'eww-mode-hook
-	    (lambda ()
-	      (set-fill-column 80)
-	      (display-fill-column-indicator-mode)
-	      (visual-fill-column-mode)))
-#+end_src
-
-** Tramp
-#+begin_src emacs-lisp :tangle nil
-  (add-to-list 'tramp-remote-path 'tramp-own-remote-path)
-#+end_src
-
-** Docker
-#+begin_src emacs-lisp :tangle init.el
-  (use-package docker :defer t)
-  (use-package docker-compose-mode :defer t)
-#+end_src
-** Debian
-Инструменты для работы с пакетным менеджером Debian'а apt'ом и смежными
-инструментами.
-#+begin_src elisp :tangle nil
-  (load "debian-el-autoloads")
-  (load "dpkg-dev-el-autoloads")
-#+end_src
-
-** Guix
-#+begin_src emacs-lisp :tangle init.el
-  ;; (use-package geiser-guile :defer t)
-
-  (use-package guix
-    :defer t
-    :config
-    (setq geiser-guile-binary "guile")
-    (with-eval-after-load 'geiser-guile
-      (progn
-        (add-to-list 'geiser-guile-load-path "~/projects/guix/")))
-
-    (let ((guix-copyright "~/projects/guix/etc/copyright.el"))
-      (if (file-exists-p guix-copyright)
-  	(load-file "~/projects/guix/etc/copyright.el")))
-
-    (setq copyright-names-regexp
-  	(format "%s <%s>" user-full-name user-mail-address)))
-#+end_src
-
-** Nix
-#+begin_src emacs-lisp :tangle init.el
-  (use-package nix)
-#+end_src
-
-** Direnv
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (when (package-loaded? "direnv")
-      (direnv-mode))
-#+END_SRC
-
-** Баг-трекеры
-*** Debbugs
-** PDF
-
-** Увеличение/уменьшение шрифта
-#+BEGIN_SRC emacs-lisp :tangle nil
-  (defun zoom-in ()
-    (interactive)
-    (let ((x (+ (face-attribute 'default :height)
-		10)))
-      (set-face-attribute 'default nil :height x)
-      (set-face-attribute 'mode-line nil :height x)
-      (set-face-attribute 'mode-line-inactive nil :height x)
-      (set-face-attribute 'mode-line-position-face nil :height x)))
-  
-  (defun zoom-out ()
-    (interactive)
-    (let ((x (- (face-attribute 'default :height)
-		10)))
-      (set-face-attribute 'default nil :height x)
-      (set-face-attribute 'mode-line nil :height x)
-      (set-face-attribute 'mode-line-inactive nil :height x)
-      (set-face-attribute 'mode-line-position-face nil :height x)))
-  
-  (define-key global-map (kbd "C-=") 'zoom-in)
-  (define-key global-map (kbd "C-+") 'zoom-out)
-  
-#+END_SRC
-
-** Автокомплит у yes-or-no
-** Полный экран
-Открывать Emacs на полный экран
-#+begin_src emacs-lisp :tangle nil
-  (add-to-list 'default-frame-alist '(fullscreen . maximized))
-#+end_src
-
-** Фуллскрин
-Отображать ровно столько строчек, сколько вмещает экран.
-
-Не работает с native-comp.
-
-#+begin_src elisp :tangle nil
-  (toggle-frame-fullscreen)
-
-  (defun fullscreen ()
-  "Fullscreen."
-  (interactive)
-  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
-			 ;; if first parameter is '1', can't toggle fullscreen status
-			 '(1 "_NET_WM_STATE_FULLSCREEN" 0)))
-#+end_src
-** Удаление буфера и файла
-#+begin_src elisp :tangle init.el
-  (defun delete-file-and-buffer ()
-    "Kill the current buffer and deletes the file it is visiting."
-    (interactive)
-    (let ((filename (buffer-file-name)))
-      (if filename
-	  (if (y-or-n-p (concat "Do you really want to delete file " filename " ?"))
-	      (progn
-		(delete-file filename)
-		(message "Deleted file %s." filename)
-		(kill-buffer)))
-	(message "Not a file visiting buffer!"))))
-#+end_src
-
-** Длинные строки
-#+begin_src emacs-lisp :tangle nil
-  ;; Better support for files with long lines
-  (setq-default bidi-paragraph-direction 'left-to-right)
-  (setq-default bidi-inhibit-bpa t)
-  (global-so-long-mode 1)
-#+end_src
-
-** Make shebang (#!) file executable when saved
-#+begin_src emacs-lisp :tangle init.el
-  (add-hook 'after-save-hook #'executable-make-buffer-file-executable-if-script-p)
-#+end_src
-
-** Enable savehist-mode for command history
-#+begin_src emacs-lisp :tangle init.el
-  (savehist-mode 1)
-#+end_src
-
-** Ignore case sensitive in completions, search and etc
-#+begin_src emacs-lisp :tangle init.el
-  (setq completion-ignore-case t
-	read-buffer-completion-ignore-case t
-	read-file-name-completion-ignore-case t)
-#+end_src
-
-** Make scripts executable automatically
-#+begin_src emacs-lisp :tangle init.el
-  (add-hook 'after-save-hook
-	    'executable-make-buffer-file-executable-if-script-p)
-#+end_src
-
-** F1 for M-x shell and F2 for grep
-#+begin_src emacs-lisp :tangle init.el
-  (global-set-key (kbd "<f1>") 'shell)
-  (global-set-key (kbd "<f2>") 'rgrep)
-#+end_src
-
-** Hippie expand
-#+begin_src emacs-lisp :tangle init.el
-  (global-set-key [remap dabbrev-expand] 'hippie-expand)
-#+end_src
-
-** Window Divider
-#+begin_src emacs-lisp :tangle init.el
-  (window-divider-mode t)
-#+end_src
-
-** Use specific font for major modes
-#+begin_src emacs-lisp :tangle init.el
-  (buffer-face-mode t)
-
-  (defun set-normal-font ()
-    "Set normal weight font in current buffer"
-    (interactive)
-    (buffer-face-mode 1)
-    (setq buffer-face-mode-face '(:weight normal))
-    (buffer-face-mode))
-
-  ;; Use monospaced font faces in current buffer
-  (defun set-bold-font ()
-    "Sets a bold font in current buffer"
-    (interactive)
-    (buffer-face-mode 1)
-    (setq buffer-face-mode-face '(:weight bold))
-    (buffer-face-mode))
-
-  (add-hook 'dired-mode-hook 'set-normal-font)
-  (add-hook 'org-mode-hook 'set-normal-font)
-  (add-hook 'Info-mode-hook 'set-normal-font)
-#+end_src
Index: acs/.emacs.d/nil
===================================================================
--- emacs/.emacs.d/nil	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,708 +1,0 @@
-(require 'package)
-
-(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
-		   ("melpa" . "http://melpa.org/packages/")))
-
-(when (< emacs-major-version 27)
-  (package-initialize))
-
-(require 'gnutls)
-
-(progn
-    (package-refresh-contents)
-    (package-install 'avy)
-    (package-install 'php-mode)
-    (package-install 'phps-mode)
-    ;; (package-install 'anzu)
-    (package-install 'anaconda-mode)
-    (package-install 'auctex)
-    ;; (package-install 'rmsbolt)
-    ;; (package-install 'beginend)
-    ;; (package-install 'composer)
-    (package-install 'cinspect)
-    (package-install 'debian-el)
-    (package-install 'dpkg-dev-el)
-    (package-install 'edebug-inline-result)
-    ;;(package-install 'haskell-mode)
-    ;;(package-install 'idris-mode)
-    (package-install 'magit)
-    (package-install 'git-timemachine)
-    (package-install 'git-dwim)
-    (package-install 'gitpatch)
-    (package-install 'goto-chg)
-    (package-install 'debbugs)
-    ;;(package-install 'deft)
-    ;; (package-install 'direnv)
-    (package-install 'dumb-jump)
-    (package-install 'docker)
-    (package-install 'docker-cli)
-    (package-install 'docker-tramp)
-    (package-install 'docker-compose-mode)
-    (package-install 'org-sql)
-    ;;(package-install 'eglot)
-    ;; (package-install 'eglot-java)
-    ;; (package-install 'mastodon)
-    ;; (package-install 'exec-path-from-shell)
-    (package-install 'expand-region)
-    ;; (package-install 'flymake-php)
-    (package-install 'flycheck)
-    (package-install 'flycheck-phpstan)
-    (package-install 'phpactor)
-    ;;(package-install 'robe)
-    (package-install 'geiser)
-    (package-install 'geiser-guile)
-    (package-install 'guix)
-    ;; (package-install 'git-gutter)
-    ;; (package-install 'gnuplot)
-    ;;(package-install 'swiper)
-    ;;(package-install 'sqlite3)
-    (package-install 'org-roam)
-    ;; (package-install 'org-roam-ui)
-    ;; (package-install 'org-download)
-    ;; (package-install 'org-babel-eval-in-repl)
-    ;;(package-install 'ob-php)
-    ;; (package-install 'on-screen)
-    ;;(package-install 'nix-mode)
-    (package-install 'pdf-tools)
-    ;;(package-install 'phpactor)
-    ;; (package-install 'company-quickhelp)
-    ;;(package-install 'ac-php)
-    (package-install 'php-mode)
-    (package-install 'php-quickhelp)
-    (package-install 'phan)
-    ;;(package-install 'php-cs-fixer)
-    ;; (package-install 'company-php)
-    ;;(package-install 'php-eldoc)
-    ;;(package-install 'phps-mode)
-    (package-install 'realgud)
-    ;; (package-install 'realgud-xdebug)
-    ;; (package-install 'kiwix)
-    ;;(package-install 'sml-mode)
-    (package-install 'sly)
-    (package-install 'simple-httpd)
-    (package-install 'sudo-edit)
-    ;;(package-install 'treemacs)
-    (package-install 'undo-tree)
-    ;; (package-install 'yasnippet)
-    ;; (package-install 'yasnippet-snippets)
-    ;; (package-install 'vimrc-mode)
-    ;; (package-install 'flymake-phpcs)
-    ;; (package-install 'flymake-phpstan)
-    ;; (package-install 'no-littering)
-    (package-install 'web-mode)
-    ;; (package-install 'which-key)
-    ;; (package-install 'reverse-im)
-    (package-install 'imenu-list)
-    ;; (package-install 'isearch-mb)
-    (package-install 'visual-fill-column)
-    ;; (package-install 'browse-kill-ring)
-    (package-install 'corfu)
-    ;; (package-install 'inf-ruby)
-    (package-install 'yaml-mode)
-    ;; (package-install 'geben)
-    (package-install 'link-hint)
-    (package-install 'whole-line-or-region)
-    (package-install 'quickrun)
-    ;; (package-install 'psysh)
-    ;; (package-install 'restclient)
-    )
-
-(when (eq window-system 'pgtk)
-  (pgtk-use-im-context t))
-
-(when (fboundp 'native-compile-async)
-    (setq comp-async-compilation t
-      package-native-compile t
-
-      native-comp-speed 2
-      native-comp-async-jobs-number 1
-      comp-num-cpus 2
-      ;; JIT Compilation
-      native-comp-deferred-compilation t
-      ;; AOT Compilation
-      package-native-compile t
-      comp-async-report-warnings-errors nil))
-
-;; (native-compile-async "~/.emacs.d/elpa/" 'recursively)
-(native-compile-async "~/.guix-profile/share/emacs/site-lisp" 'recursively)
-
-;; block until native compilation has finished
-  (while (or comp-files-queue
-	     (> (comp-async-runnings) 0))
-
-;; Disable guix autoloading and x resources loading
-(setq site-run-file nil)
-
-(require 'exwm)
-(require 'exwm-config)
-(exwm-config-example)
-
-;; Change mode-line-modes to show only major mode
-(defvar mode-line-major-mode
-  (let ((recursive-edit-help-echo "Recursive edit, type C-M-c to get out"))
-    (list (propertize "%[" 'help-echo recursive-edit-help-echo)
-	  `(:propertize ("" mode-name)
-			help-echo "Major mode\n\
-    mouse-1: Display major mode menu\n\
-    mouse-2: Show help for major mode\n\
-    mouse-3: Toggle minor modes"
-			mouse-face mode-line-highlight
-			local-map ,mode-line-major-mode-keymap)
-	  '("" mode-line-process)
-	  (propertize "%n" 'help-echo "mouse-2: Remove narrowing from buffer"
-		      'mouse-face 'mode-line-highlight
-		      'local-map (make-mode-line-mouse-map
-				  'mouse-2 #'mode-line-widen))
-	  (propertize "%]" 'help-echo recursive-edit-help-echo)
-	  " "))
-  "Mode line construct for displaying major and minor modes.")
-
-(put 'mode-line-major-mode 'risky-local-variable t)
-
-;; Change mode-line-format
-(setq-default mode-line-format
-	      '("%e"
-		mode-line-front-space
-		mode-line-mule-info
-
-		mode-line-client
-		mode-line-modified
-		mode-line-remote
-		mode-line-frame-identification
-		;; long-path
-		mode-line-buffer-identification
-		mode-line-misc-info
-		"   "
-		mode-line-major-mode
-		" "
-		vc-mode
-		"  "
-
-		mode-line-position
-		mode-line-end-spaces
-		))
-
-;; Do not resize the frame at this early stage.
-(setq frame-inhibit-implied-resize t)
-(setq use-dialog-box nil)
-
-;;; Disable some gui
-(scroll-bar-mode -1)
-(tool-bar-mode -1)
-(menu-bar-mode -1)
-;;(tooltip-mode -1)
-
-;;; Changing emacs default setting through customize
-(custom-set-variables
- '(fill-column 72)
- '(git-gutter:added-sign " ")
- '(git-gutter:deleted-sign " ")
- '(git-gutter:modified-sign " ")
- '(git-gutter:unchanged-sign " ")
- '(lsp-headerline-breadcrumb-enable nil)
- '(scroll-bar-mode 'nil)
- '(scroll-bar-adjust-thumb-portion nil)
- '(tool-bar-position 'bottom)
- '(tool-bar-style 'both-horiz))
-
-(custom-set-faces
- '(default ((t (:height 140 :family "Jetbrains Mono" :embolden t))))
- '(region ((t (:background "gray85"))))
- '(mode-line ((t (:background "grey70" :foreground "grey10"))))
- '(mode-line-inactive ((t (:inherit mode-line :background "grey90" :foreground "grey20" :box (:line-width (-2 . -2) :color "grey85") :weight light))))
- '(mode-line-buffer-id ((t (:weight bold))))
- '(mode-line-emphasis ((t (:weight bold))))
- '(lsp-modeline-code-actions-face ((t :inherit mode-line :height 100)))
- '(tool-bar ((t (:background "grey80" :foreground "grey10"))))
- '(fill-column-indicator ((t (:foreground "grey95"))))
- '(hl-line ((t (:background "gray95"))))
- '(fringe ((t (:background "grey87"))))
- '(header-line ((t (:inherit mode-line :background "grey90"))))
- '(vertical-border ((t (:foreground "grey90"))))
- '(window-divider ((t (:foreground "gray90")))))
-
-(set-fringe-style (cons 7 7))
-
-(defun switch-gui ()
-  "Disable/enable menu-bar and tool-bar."
-  (interactive)
-  (if menu-bar-mode
-      (progn
-	(menu-bar-mode -1)
-	(tool-bar-mode -1)
-	(scroll-bar-mode -1))
-    (progn
-      (menu-bar-mode 1)
-      (tool-bar-mode 1)
-      (scroll-bar-mode 1))))
-
-(defun switch-scroll-bar ()
-  "Disable/enable scroll-bar."
-  (interactive)
-  (if scroll-bar-mode
-      (scroll-bar-mode -1)
-    (scroll-bar-mode)))
-
-(define-key global-map (kbd "<f5>") 'switch-gui)
-(define-key global-map (kbd "<f8>") 'switch-scroll-bar)
-
-(provide 'early-init)
-    ;;; early-init.el ends here
-
-;;(add-hook 'prog-mode-hook 'flymake-mode)
-
-(require 'psalm)
-
-(define-prefix-command 'flymake-map)
-(global-set-key (kbd "C-q") 'flymake-map)
-(define-key flymake-map (kbd "n") 'flymake-goto-next-error)
-(define-key flymake-map (kbd "p") 'flymake-goto-prev-error)
-(define-key flymake-map (kbd "l") 'flymake-show-diagnostics-buffer)
-(define-key flymake-map (kbd "e") 'flymake-show-diagnostic)
-
-;; (require 'psalm)
-
-(when (package-loaded? "flycheck")
-
-  (defun flycheck-phanclient-start-daemon ()
-    "Start the phan daemon"
-    (interactive)
-    (let* ((default-directory (php-project-get-root-dir))
-	   (phan-executable (or flycheck-phanclient--phan-executable
-				(if (file-exists-p "vendor/bin/phan")
-				    (concat default-directory "vendor/bin/phan")
-				  (executable-find "phan"))))
-	   (cmd (list phan-executable "--daemonize-tcp-port" "4846" "--quick")))
-      (apply #'start-process "PhanDaemon" "*phan daemon*" cmd)))
-
-  (flycheck-define-checker php-phanclient
-    "Phan"
-    :command ("phan_client" "-l" source-original "-f" source)
-    :error-patterns
-    ((warning line-start (or "Parse" "Fatal" "syntax" "Phan") " error" (any ":" ",") " " (message) " in " (file-name) " on line " line line-end))
-    :modes (php-mode php+-mode))
-
-  (add-to-list 'flycheck-checkers 'php-phanclient)
-
-  (flycheck-add-next-checker 'php '(warning . php-phanclient))
-
-  (add-hook 'prog-mode-hook 'flycheck-mode))
-
-(when (package-loaded? "treemacs")
-  (progn
-    (setq treemacs-width       50
-	  treemacs-show-cursor t
-	  treemacs-position    'right
-	  treemacs-indentation 1
-	  treemacs-tag-follow-mode t
-	  treemacs-fringe-indicator-mode nil)
-
-    (define-key global-map
-      (kbd "C-x C-d") 'treemacs)))
-
-(when (package-loaded? "isearch-mb")
-  (progn
-    (isearch-mb-mode t)
-    (global-set-key (kbd "C-s") 'isearch-forward-regexp)
-    (global-set-key (kbd "C-r") 'isearch-backward-regexp)))
-
-(when (package-loaded? "browse-kill-ring")  
-  (define-key global-map (kbd "C-M-y") 'browse-kill-ring))
-
-(setq path-to-ctags "~/.guix-profile/bin/ctags")
-
-(defun tags-create (dir-name)
-  "Create tags file."
-  (interactive "DDirectory: ")
-  (shell-command
-   (format "%s -f TAGS -e -R %s" path-to-ctags
-	   (directory-file-name dir-name))))
-
-(defun tags-create-python (dir-name)
-  "Create tags with python interpreter"
-  (interactive "DDirectory: ")
-  (shell-command
-   (format "%s -f TAGS -e -R --fields=+l --languages=python --python-kinds=-iv $(python -c \"import os, sys; print(' '.join('{}'.format(d) for d in sys.path if os.path.isdir(d)))\") %s" path-to-ctags
-	   (directory-file-name dir-name))))
-
-(when (package-loaded? "realgud")
-  (load "~/.emacs.d/site-lisp/realgud-xdebug/realgud-xdebug.el"))
-
-(when (package-loaded? "geben")
-  (setq geben-dbgp-default-port 9003))
-
-(when (package-loaded? "corfu")
-  (progn
-    (setq corfu-preview-current 'nil
-	  corfu-popupinfo-delay t)
-    (corfu-mode 1)
-    (corfu-popupinfo-mode 1)
-    (defun show-default-completion-buffer ()
-      (interactive)
-      (corfu-quit)
-      (corfu-mode -1)
-      (completion-at-point)
-      (corfu-mode 1)
-      (corfu-popupinfo-mode 1))
-    (define-key corfu-map (kbd "M-TAB") 'show-default-completion-buffer)
-    (define-key corfu-map (kbd "TAB") 'show-default-completion-buffer)
-    (define-key corfu-map (kbd "C-M-i") 'show-default-completion-buffer)      
-    (corfu-mode -1)
-    (add-hook 'prog-mode-hook 'corfu-mode)
-
-    (defun corfu-send-shell (&rest _)
-      "Send completion candidate when inside comint/eshell."
-      (cond
-       ((and (derived-mode-p 'eshell-mode) (fboundp 'eshell-send-input))
-	(eshell-send-input))
-       ((and (derived-mode-p 'comint-mode)  (fboundp 'comint-send-input))
-	(comint-send-input))))
-
-    (advice-add #'corfu-insert :after #'corfu-send-shell)
-
-    (add-hook 'eshell-mode-hook 'corfu-mode)))
-
-(setq completion-styles '(basic partial-completion substring flex emacs22)
-      completion-ignore-case t
-      read-buffer-completion-ignore-case t
-      read-file-name-completion-ignore-case t)
-
-(setq aggressive-completion-delay 0.5)
-(aggressive-completion-mode t)
-
-(load "deft-autoloads")
-
-(define-key global-map
-  (kbd "C-c n s") 'deft)
-
-(setq deft-recursive t
-      deft-use-filter-string-for-filename t
-      deft-default-extension "org md"
-      deft-directory "~/projects/at-w96k/content/digarden")
-
-(when (package-loaded? "yasnippet")
-  (progn
-    (add-hook 'prog-mode-hook #'yas-minor-mode)))
-
-(defun my-php-mode-setup ()
-  "My PHP-mode hook."
-  (require 'flycheck-phpstan)
-  (flycheck-mode t))
-
-(add-hook 'php-mode-hook 'my-php-mode-setup)
-
-;; (add-hook 'php-mode-hook 'flymake-php-load)
- ;; (add-hook 'php-mode-hook 'flymake-phpstan-turn-on)
-
-  ;; (require 'flycheck-phpstan)
-
-
-;;(add-to-list 'auto-mode-alist '("\\.\\(php\\|phtml\\)\\'" . phps-mode))
-
-;; (phps-mode-flycheck-setup)
-
-;; (setq phps-mode-async-process t)
-;; (setq phps-mode-async-process-using-async-el t)
-
-(desktop-save-mode 1)
-
-(global-anzu-mode t)
-
-(load "swiper-autoloads")
-(global-set-key (kbd "C-s") 'swiper)
-
-(setq swiper-include-line-number-in-search t
-      swiper-use-visual-line t
-      swiper-stay-on-quit t)
-
-(load "which-key-autoloads")
-(which-key-setup-side-window-right)
-(which-key-mode)
-
-(setq which-key-side-window-max-width 0.5
-      which-key-show-remaining-keys t
-      which-key-max-display-columns 50
-      which-key-max-description-length 35
-      which-key-sort-order 'which-key-local-then-key-order
-      which-key-idle-delay 0.25)
-
-(add-hook 'prog-mode-hook 'rmsbolt-mode)
-
-;; (when (package-loaded? "quickrun")
-;;   (define-key global-map (kbd "C-c C-c") 'quickrun))
-
-(load "sly-autoloads")
-
-(setq sly-lisp-implementations
-      '((clisp ("clisp"))
-	(cmucl ("cmucl" "-quiet"))
-	(sbcl ("/opt/sbcl/bin/sbcl") :coding-system utf-8-unix)))
-
-(load "erlang-autoloads")
-
-(when (package-loaded? "inf-ruby")
-  (add-hook 'ruby-mode-hook 'inf-ruby-minor-mode))
-
-(when (package-loaded? "inf-ruby")
-  (add-hook 'ruby-mode-hook 'robe-mode))
-
-(when (package-loaded? "anaconda-mode")
-  (progn
-    (add-hook 'python-mode-hook 'anaconda-mode)
-    (add-hook 'python-mode-hook 'anaconda-eldoc-mode)))
-
-;; (when (load "flymake" t)
-;;   (defun flymake-pylint-init ()
-;;     (let* ((temp-file (flymake-init-create-temp-buffer-copy
-;; 		       'flymake-create-temp-inplace))
-;; 	   (local-file (file-relative-name
-;; 			temp-file
-;; 			(file-name-directory buffer-file-name))))
-;;       (list "epylint" (list local-file))))
-
-;;   (add-to-list 'flymake-allowed-file-name-masks
-;; 	       '("\\.py\\'" flymake-pylint-init)))
-
-;; (add-hook 'python-mode-hook 'flymake-mode)
-
-(add-hook 'sml-mode-hook 'sml-mode)
-
-;; (add-to-list 'load-path "~/.emacs.d/site-lisp/realgud-xdebug/")
-;; (require 'realgud-xdebug)
-
-;; (defun init-php-mode ()
-;;   (eglot-ensure))
-
-(with-eval-after-load 'php-mode
-
-  ;; (add-hook 'php-mode-hook #'init-php-mode)
-  )
-
-(when (package-loaded? "php-mode")
-  (progn
-    (add-hook 'php-mode-hook 'php-enable-symfony2-coding-style)
-    (setq lsp-intelephense-php-version "8.1.16")
-    (defvar phpactor-executable "~/.bin/phpactor")
-    (custom-set-variables '(lsp-phpactor-path "~/usr/local/bin/phpactor"))
-
-    (add-hook 'php-mode-hook 
-	      '(lambda ()
-		 ;; (require 'yasnippet)
-		 ;; (require 'yasnippet-snippets)
-
-		 (set-fill-column 120)
-
-		 ;; (make-local-variable 'eldoc-documentation-function)
-		 ;; (setq eldoc-documentation-function
-		 ;;       'phpactor-hover)
-		 ;; (yas-minor-mode t)
-		 (define-key php-mode-map (kbd "C-c h") 'php-quickhelp-at-point)))
-
-    (setq php-manual-path
-	  "~/php/php-manual/"
-	  php-quickhelp-dir "~/php/php-manual/"
-	  php-quickhelp--dest "~/.emacs.d/php-manual/php_manual_en.json")
-
-
-    ;; (add-hook 'php-mode-hook 
-    ;; 		'(lambda ()
-    ;; 		   ;; (auto-complete-mode t)
-
-    ;; 		   ;; (require 'ac-php)
-    ;; 		   (require 'php-quickhelp)
-    ;; 		   (require 'company)
-    ;; 		   (company-mode t)
-    ;; 		   (require 'company-php)
-    ;; 		   (require 'company-quickhelp)
-
-    ;; 		   (require 'yasnippet)
-    ;; 		   (require 'yasnippet-snippets)
-
-    ;; 		   (set (make-local-variable 'company-backends)
-    ;; 			'((company-ac-php-backend company-dabbrev-code)
-    ;; 			  php-quickhelp-company-php
-    ;; 			  company-capf company-files))
-
-    ;; 		   (company-quickhelp-mode t)
-
-    ;; 		   (define-key php-mode-map (kbd "C-M-i") 'company-complete)
-    ;; 		   (define-key company-mode-map (kbd "M-TAB") 'company-complete)
-
-    ;; 		   ;; (setq ac-sources '(ac-source-php php-quickhelp-company-php))
-    ;; 		   ;; (setq eldoc-documentation-function
-    ;; 		   ;;       'php-quickhelp-eldoc-func)
-
-    ;; 		   (yas-minor-mode t)
-
-    ;; 		   ;; (define-key php-mode-map (kbd "C-M-i") 'auto-complete)
-    ;; 		   ;; (define-key ac-mode-map (kbd "M-TAB") 'auto-complete)
-
-    ;; 		   (define-key php-mode-map (kbd "C-c H")
-    ;; 			       'php-local-manual-search)
-
-    ;; 		   (define-key php-mode-map (kbd "C-c h") 'php-quickhelp-at-point)
-    ;; 		   (define-key company-mode-map (kbd "C-c h") 'php-quickhelp-at-point)
-
-    ;; 		   ;; (define-key php-mode-map (kbd "C-c t") 'ac-php-show-tip)
-
-    ;; 		   ;; Jump to definition (optional)
-    ;; 		   (define-key php-mode-map
-    ;; 			       (kbd "M-.") 'ac-php-find-symbol-at-point)
-
-    ;; 		   ;; Return back (optional)
-    ;; 		   (define-key php-mode-map
-    ;; 			       (kbd "M-,") 'ac-php-location-stack-back)))
-    ))
-
-(setq phpactor-executable "~/.bin/phpactor")
-(custom-set-variables '(lsp-phpactor-path "~/.bin/phpactor"))
-
-(use-package phpactor :ensure t)
-(use-package company-phpactor :ensure t)
-
-
-
-;; (with-eval-after-load 'php-mode
-;;   (define-key php-mode-map (kbd "M-.") #'phpactor-goto-definition)
-;;   (define-key php-mode-map (kbd "M-?") #'phpactor-find-references))
-
-(require 'transient)
-(define-transient-command php-menu ()
-  "Php"
-  [["Class"
-    ("cc" "Copy" phpactor-copy-class)
-    ("cn" "New" phpactor-create-new-class)
-    ("cr" "Move" phpactor-move-class)
-    ("ci" "Inflect" phpactor-inflect-class)
-    ("n"  "Namespace" phpactor-fix-namespace)]
-   ["Properties"
-    ("a"  "Accessor" phpactor-generate-accessors)
-    ("pc" "Constructor" phpactor-complete-constructor)
-    ("pm" "Add missing props" phpactor-complete-properties)
-    ("r" "Rename var locally" phpactor-rename-variable-local)
-    ("R" "Rename var in file" phpactor-rename-variable-file)]
-  ["Extract"
-    ("ec" "constant" phpactor-extract-constant)
-    ("ee" "expression" phpactor-extract-expression)
-    ("em"  "method" phpactor-extract-method)]
-  ["Methods"
-    ("i" "Implement Contracts" phpactor-implement-contracts)
-    ("m"  "Generate method" phpactor-generate-method)]
-  ["Navigate"
-    ("x" "List refs" phpactor-list-references)
-    ("X" "Replace refs" phpactor-replace-references)
-    ("."  "Goto def" phpactor-goto-definition)]
-  ["Phpactor"
-    ("s" "Status" phpactor-status)
-    ("u" "Install" phpactor-install-or-update)]])
-
-;; Empty for now (was using emacsql)
-(setq lsp-sqls-server "~/go/bin/sqls")
-
-;; (setq lsp-sqls-workspace-config-path nil)
-
-(setq lsp-sqls-connections
-      '(((driver . "mysql") (dataSourceName . "dbuser:mangoworms@tcp(localhost:3306)/profile24"))))
-
-(when (package-loaded? "org-sql")
-  (setq org-sql-files "~/projects/profile24/org"))
-
-(add-hook 'sql-interactive-mode-hook
-	(lambda ()
-	  (sql-connect "profile24")
-	  (toggle-truncate-lines t)))
-
-(setq sql-connection-alist
-    '((profile24
-       (sql-product 'mysql)
-       (sql-server "localhost")
-       (sql-user "dbuser")
-       (sql-password "123456")
-       (sql-database "testdb")
-       (sql-port 3306))))
-
-(load "org-ref-autoloads")
-
-(setq reftex-default-bibliography '("~/Documents/bibliography/references.bib"))
-
-;; see org-ref for use of these variables
-(setq org-ref-bibliography-notes "~/Documents/bibliography/notes.org"
-      org-ref-default-bibliography '("~/Documents/Bibliography/references.bib")
-      org-ref-pdf-directory "~/Documents/bibliography/bibtex-pdfs/")
-
-(when (package-loaded? "mastodon")
-  (setq mastodon-active-user "w96k"
-	mastodon-instance-url "https://fosstodon.org/"))
-
-(global-hl-line-mode 1)
-
-(add-to-list 'special-display-buffer-names "*Buffer List*")
-(setq Buffer-menu-files-only t)
-
-(setq exec-path-from-shell-variables
-      '("PATH" "MANPATH"))
-
-(when (and (memq window-system '(mac ns x))
-	   (not (eq system-type 'berkeley-unix)))
-  (exec-path-from-shell-initialize))
-
-(define-key global-map (kbd "C-q C-q") 'previous-buffer)
-(define-key global-map (kbd "C-S-q C-S-q") 'next-buffer)
-
-(define-key global-map (kbd "C-h") 'delete-backward-char)
-(define-key global-map (kbd "C-c h") 'help-command)
-
-(setq browse-url-browser-function #'eww-browse-url)
-
-(add-hook 'eww-mode-hook
-	  (lambda ()
-	    (set-fill-column 80)
-	    (display-fill-column-indicator-mode)
-	    (visual-fill-column-mode)))
-
-(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
-
-(load "debian-el-autoloads")
-(load "dpkg-dev-el-autoloads")
-
-(package-loaded? "nix")
-
-(when (package-loaded? "direnv")
-    (direnv-mode))
-
-(defun zoom-in ()
-  (interactive)
-  (let ((x (+ (face-attribute 'default :height)
-	      10)))
-    (set-face-attribute 'default nil :height x)
-    (set-face-attribute 'mode-line nil :height x)
-    (set-face-attribute 'mode-line-inactive nil :height x)
-    (set-face-attribute 'mode-line-position-face nil :height x)))
-
-(defun zoom-out ()
-  (interactive)
-  (let ((x (- (face-attribute 'default :height)
-	      10)))
-    (set-face-attribute 'default nil :height x)
-    (set-face-attribute 'mode-line nil :height x)
-    (set-face-attribute 'mode-line-inactive nil :height x)
-    (set-face-attribute 'mode-line-position-face nil :height x)))
-
-(define-key global-map (kbd "C-=") 'zoom-in)
-(define-key global-map (kbd "C-+") 'zoom-out)
-
-(add-to-list 'default-frame-alist '(fullscreen . maximized))
-
-(toggle-frame-fullscreen)
-
-(defun fullscreen ()
-"Fullscreen."
-(interactive)
-(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
-		       ;; if first parameter is '1', can't toggle fullscreen status
-		       '(1 "_NET_WM_STATE_FULLSCREEN" 0)))
-
-;; Better support for files with long lines
-(setq-default bidi-paragraph-direction 'left-to-right)
-(setq-default bidi-inhibit-bpa t)
-(global-so-long-mode 1)
Index: emacs/.gnus
===================================================================
--- emacs/.gnus	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ emacs/.gnus	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -1,47 +1,49 @@
-(setq epa-file-cache-passphrase-for-symmetric-encryption t)
+(setq ;; You need to replace this email address with your own!
+ user-mail-address "w96k.ru@gmail.com"
+ ;; You need to replace this key ID with your own key ID!
+ mml-secure-openpgp-signers '("08948CB6")
+ ;; This tells Gnus to get email from Gmail via IMAP.
+ gnus-select-method
+ '(nnimap "gmail"
+          ;; It could also be imap.googlemail.com if that's your server.
+          (nnimap-address "imap.gmail.com")
+          (nnimap-server-port 993)
+          (nnimap-stream ssl))
+ ;; This tells Gnus to use the Gmail SMTP server. This
+ ;; automatically leaves a copy in the Gmail Sent folder.
+ smtpmail-smtp-server "smtp.gmail.com"
+ smtpmail-smtp-service 587
+ ;; Tell message mode to use SMTP.
+ message-send-mail-function 'smtpmail-send-it
+ ;; Gmail system labels have the prefix [Gmail], which matches
+ ;; the default value of gnus-ignored-newsgroups. That's why we
+ ;; redefine it.
+ gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]"
+ ;; The agent seems to confuse nnimap, therefore we'll disable it.
+ gnus-agent nil
+ ;; We don't want local, unencrypted copies of emails we write.
+ gnus-message-archive-group nil
+ ;; We want to be able to read the emails we wrote.
+ mml-secure-openpgp-encrypt-to-self t)
 
-(with-eval-after-load "mail-source"
-  (add-to-list 'mail-sources '(pop :name "runbox"
-	    :server "mail.runbox.com"
-            :user "w96k"
-	    :leave 3
-	    )))
+;; Attempt to encrypt all the mails we'll be sending.
+(add-hook 'message-setup-hook 'mml-secure-message-encrypt)
 
+;; Add two key bindings for your Gmail experience.
+(add-hook 'gnus-summary-mode-hook 'my-gnus-summary-keys)
 
-(setq user-mail-address "w96k@runbox.com"
-      user-full-name "Mikhail Kirillov")
+(defun my-gnus-summary-keys ()
+  (local-set-key "y" 'gmail-archive)
+  (local-set-key "$" 'gmail-report-spam))
 
-(setq gnus-select-method '(nnml ""))
+(defun gmail-archive ()
+  "Archive the current or marked mails.
+This moves them into the All Mail folder."
+  (interactive)
+  (gnus-summary-move-article nil "nnimap+imap.gmail.com:[Gmail]/All Mail"))
 
-(add-to-list 'gnus-secondary-select-methods '(nntp "news.eternal-september.org"))
-(add-to-list 'gnus-secondary-select-methods '(nntp "news.gmane.io"))
-
-;; (add-to-list 'gnus-secondary-select-methods '(nnimap "gmail"
-;;                (nnimap-address "imap.gmail.com")
-;;                (nnimap-server-port 993)
-;;                (nnimap-stream ssl)))
-
-(setq gnus-use-cache t
-      send-mail-function 'smtpmail-send-it
-      message-send-mail-function 'smtpmail-send-it
-      smtpmail-smtp-server "mail.runbox.com"
-      ;; smtpmail-smtp-service 587
-      ;; smtpmail-stream-type 'starttls
-      smtpmail-stream-type  'ssl
-      smtpmail-smtp-service 465
-      mml-secure-openpgp-signers '("CE73F35DE039B8D52039A12CB643528AA92DE506")
-      mml-secure-openpgp-encrypt-to-self t
-      gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]")
-
-(setq starttls-use-gnutls t)
-(setq starttls-gnutls-program "gnutls-cli")
-(setq starttls-extra-arguments nil)
-(setq smtpmail-servers-requiring-authorization ".*")
-
-(add-hook 'message-setup-hook 'mml-secure-message-encrypt)
-(add-hook 'message-setup-hook 'mml-secure-message-sign)
-
-(setq mm-automatic-display (remove "text/html" mm-automatic-display))
-
-(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
-
+(defun gmail-report-spam ()
+  "Report the current or marked mails as spam.
+This moves them into the Spam folder."
+  (interactive)
+  (gnus-summary-move-article nil "nnimap+imap.gmail.com:[Gmail]/Spam"))
Index: eslint/.eslintrc
===================================================================
--- eslint/.eslintrc	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ eslint/.eslintrc	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,43 @@
+{
+    "parser": "babel-eslint",
+    "plugins": [ "react" ],
+    "extends": "airbnb-base",
+    "env": {
+        "browser": true,
+        "es6": true,
+        "node": true
+    },
+    "parserOptions": {
+        "ecmaFeatures": {
+            "jsx": true,
+            "modules": true
+        },
+        "sourceType": "module"
+    },
+    "ecmaFeatures": {
+        "arrowFunctions": true,
+        "blockBindings": true,
+        "classes": true,
+        "defaultParams": true,
+        "destructuring": true,
+        "forOf": true,
+        "generators": true,
+        "modules": true,
+        "spread": true,
+        "templateStrings": true,
+        "jsx": true
+    },
+    "rules": {
+        "consistent-return": [0],
+        "key-spacing": [0],
+        "quotes": [0],
+        "new-cap": [0],
+        "no-multi-spaces": [0],
+        "no-shadow": [0],
+        "no-unused-vars": [1],
+        "no-use-before-define": [2, "nofunc"],
+        "react/jsx-no-undef": 1,
+        "react/jsx-uses-react": 1,
+        "react/jsx-uses-vars": 1
+    }
+}
Index: gnupg/.gnupg/gpg-agent.conf
===================================================================
--- gnupg/.gnupg/gpg-agent.conf	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ gnupg/.gnupg/gpg-agent.conf	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,1 @@
+pinentry-program /gnu/store/az8b2s2d2hiyd5gmih39ilp71al3s5x5-profile/bin/pinentryn
Index: ix-channel/non-gnu/packages/cpuid2cpuflags.scm
===================================================================
--- guix-channel/non-gnu/packages/cpuid2cpuflags.scm	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,32 +1,0 @@
-(define-module (non-gnu packages cpuid2cpuflags)
-  #:use-module (guix packages)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix licenses)
-
-  #:use-module (gnu packages autotools))
-
-(define-public cpuid2cpuflags
-  (package
-   (name "cpuid2cpuflags")
-   (version "11")
-   (source
-    (origin
-     (method git-fetch)
-     (uri (git-reference
-	   (url "https://github.com/mgorny/cpuid2cpuflags/")
-	   (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "0dnfrbzj2zp391lnz28rcglw0qcqy92p16rq9lnhwkipcd6kwzm3"))))
-   (build-system gnu-build-system)
-   (inputs
-    `(("autoconf" ,autoconf)
-      ("automake" ,automake)))
-   (synopsis "CPU_FLAGS_* generator")
-   (description
-    "The program attempts to obtain the identification and
-capabilities of the currently used CPU, and print the matching set of
-CPU_FLAGS_* flags for Gentoo. To use it, just run it.")
-   (home-page "https://github.com/mgorny/cpuid2cpuflags")
-   (license bsd-2)))
Index: ix-channel/non-gnu/packages/emacs.scm
===================================================================
--- guix-channel/non-gnu/packages/emacs.scm	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,40 +1,0 @@
-(define-module (non-gnu packages emacs)
-  #:use-module (gnu packages emacs-xyz)
-  #:use-module (gnu packages guile)
-  #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages package-management)
-  #:use-module (guix packages)
-  #:use-module (guix git-download)
-  #:use-module (guix download))
-
-(define-public emacs-geiser-fixed
-  (package
-   (inherit emacs-geiser)
-   (name "emacs-geiser")
-   (version "0.11.2")
-   (source
-    (origin
-     (method git-fetch)
-     (uri (git-reference
-	   (url "https://gitlab.com/jaor/geiser/")
-	   (commit version)))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "1khi1bghsjx6cs5acizmlbw9z19s4qycnji9krdbn42cbpv0rysv"))))
-   (inputs
-    `(("guile" ,guile-3.0-latest)))))
-
-(define-public emacs-guix-fixed
-  (package
-   (inherit emacs-guix)
-   (name "emacs-guix-fixed")
-   (inputs
-    `(("guile" ,guile-3.0-latest)
-      ("guix" ,guix)))
-   (propagated-inputs
-    `(("geiser" ,emacs-geiser-fixed)
-      ("guile-gcrypt" ,guile-gcrypt)
-      ("dash" ,emacs-dash)
-      ("bui" ,emacs-bui)
-      ("edit-indirect" ,emacs-edit-indirect)
-      ("magit-popup" ,emacs-magit-popup)))))
Index: ix-channel/non-gnu/packages/woeusb.scm
===================================================================
--- guix-channel/non-gnu/packages/woeusb.scm	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,55 +1,0 @@
-(define-module (woeusb)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix git-download)
-  #:use-module (guix licenses)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages bash)
-  #:use-module (gnu packages bootloaders)
-  #:use-module (gnu packages disk)
-  #:use-module (gnu packages gawk)
-  #:use-module (gnu packages linux)
-  #:use-module (gnu packages wxwidgets)
-  #:use-module (gnu packages gettext)
-  #:use-module (gnu packages wget))
-
-
-(define-public woeusb
-  (package
-   (name "woeusb")
-   (version "3.3.1")
-   (source (origin
-	    (method git-fetch)
-	    (uri (git-reference
-		  (url "https://github.com/slacka/WoeUSB/")
-		  (commit (string-append "v" version))))
-	    (file-name (git-file-name name version))
-	    (sha256
-	     (base32
-	      "1hbr88sr943s4yqdvbny543jvgvnsa622wq4cmwd23hjsfcrvyiv"))))
-   (build-system gnu-build-system)
-   (inputs
-    `(("autoconf" ,autoconf)
-      ("automake" ,automake)
-      ("gawk" ,gawk)
-      ("coreutils" ,coreutils)
-      ("grep" ,grep)
-      ("findutils" ,findutils)
-      ("libtool" ,libtool)
-      ("fuse" ,fuse)
-      ("gettext" ,gnu-gettext)))
-   (propagated-inputs
-    `(("grub" ,grub)
-      ("ntfs-3g" ,ntfs-3g)
-      ("wget" ,wget)
-      ("dosfstools" ,dosfstools)
-      ("wxwidgets" ,wxwidgets)
-      ("parted" ,parted)))
-   (synopsis "A Microsoft Windows® USB installation media preparer for GNU+Linux")
-   (description "WoeUSB is a simple tool that enable you to create
-your own usb stick windows installer from an iso image or a real
-DVD. It is a fork of Congelli501's WinUSB.")
-   (home-page "https://github.com/slacka/WoeUSB")
-   (license gpl3+)))
Index: guix/.bash_profile
===================================================================
--- guix/.bash_profile	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ guix/.bash_profile	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,26 @@
+# Add npm to PATH
+export PATH="~/.nodejs/bin/:$PATH"
+
+# Add .bin to PATH
+export PATH="~/.bin/:$PATH"
+
+# Add ruby gems to PATH
+export PATH=$PATH:/home/w96k/.gem/
+export PATH=$PATH:/home/w96k/.gem/ruby/2.5.0/bin/
+
+# Add nix to PATH
+export PATH=$PATH:/nix/var/nix/profiles/default/bin/
+
+# Add custom packages to guix PATH
+export GUIX_PACKAGE_PATH=~/.guix-packages
+
+# Proxy
+export http_proxy=http://127.0.0.1:9050/
+export https_proxy=$http_proxy
+
+setxkbmap -layout us,ru -option grp:caps_toggle
+
+if [ -f .bashrc ]
+then
+    . .bashrc
+fi
Index: guix/.bashrc
===================================================================
--- guix/.bashrc	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ guix/.bashrc	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,31 @@
+# Bash initialization for interactive non-login shells and
+# for remote shells (info "(bash) Bash Startup Files").
+
+# Export 'SHELL' to child processes.  Programs such as 'screen'
+# honor it and otherwise use /bin/sh.
+export SHELL
+
+if [[ $- != *i* ]]
+then
+    # We are being invoked from a non-interactive shell.  If this
+    # is an SSH session (as in "ssh host command"), source
+    # /etc/profile so we get PATH and other essential variables.
+    [[ -n "$SSH_CLIENT" ]] && source /etc/profile
+
+    # Don't do anything else.
+    return
+fi
+
+# Source the system-wide file.
+source /etc/bashrc
+
+# Adjust the prompt depending on whether we're in 'guix environment'.
+if [ -n "$GUIX_ENVIRONMENT" ]
+then
+    PS1='\u@\h \w [env]\$ '
+else
+    PS1='\u@\h \w\$ '
+fi
+alias ls='ls -p --color=auto'
+alias ll='ls -l'
+alias grep='grep --color=auto'
Index: guix/.config/fontconfig/fonts.conf
===================================================================
--- guix/.config/fontconfig/fonts.conf	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ guix/.config/fontconfig/fonts.conf	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+  <match>
+	<test name="family"><string>sans-serif</string></test>
+	<edit name="family" mode="prepend" binding="strong">
+		<string>Terminus</string>
+	</edit>
+	<edit name="family" mode="append" binding="strong">
+		<string>Terminus</string>
+
+	</edit>
+</match>
+<match>
+	<test name="family"><string>serif</string></test>
+	<edit name="family" mode="prepend" binding="strong">
+		<string>Terminus</string>
+	</edit>
+</match>
+<match>
+	<test name="family"><string>monospace</string></test>
+	<edit name="family" mode="prepend" binding="strong">
+		<string>Terminus</string>
+	</edit>
+</match>
+
+<match target="font">
+    <edit name="antialias" mode="assign">
+      <bool>true</bool>
+    </edit>
+  </match>
+    <match target="font">
+    <edit name="hinting" mode="assign">
+      <bool>true</bool>
+    </edit>
+  </match>
+
+</fontconfig>
Index: guix/.config/nixpkgs/config.nix
===================================================================
--- guix/.config/nixpkgs/config.nix	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ guix/.config/nixpkgs/config.nix	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,5 @@
+{
+  allowUnfree = true;
+
+  boot.kernel.sysctl."vm.overcommit_memory" = "1";
+}
Index: ix/.direnvrc
===================================================================
--- guix/.direnvrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,90 +1,0 @@
-# Thanks <https://github.com/direnv/direnv/issues/73#issuecomment-152284914>
-export_function()
-{
-  local name=$1
-  local alias_dir=$PWD/.direnv/aliases
-  mkdir -p "$alias_dir"
-  PATH_add "$alias_dir"
-  local target="$alias_dir/$name"
-  if declare -f "$name" >/dev/null; then
-    echo "#!$SHELL" > "$target"
-    declare -f "$name" >> "$target" 2>/dev/null
-    # Notice that we add shell variables to the function trigger.
-    echo "$name \$*" >> "$target"
-    chmod +x "$target"
-  fi
-}
-
-use_guix()
-{
-    # Set GitHub token.
-    export GUIX_GITHUB_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-
-    # Unset 'GUIX_PACKAGE_PATH'.
-    export GUIX_PACKAGE_PATH=""
-
-    # Recreate a garbage collector root.
-    gcroots="$HOME/.config/guix/gcroots"
-    mkdir -p "$gcroots"
-    gcroot="$gcroots/guix"
-    if [ -L "$gcroot" ]
-    then
-	rm -v "$gcroot"
-    fi
-
-    # Miscellaneous packages.
-    PACKAGES_MAINTENANCE=(
-	direnv
-	git
-	git:send-email
-	git-cal
-	gnupg
-	guile-colorized
-	guile-readline
-	less
-	ncurses
-	openssh
-	xdot
-    )
-
-    # Environment packages.
-    PACKAGES=(help2man guile-sqlite3 guile-gcrypt)
-
-    # Thanks <https://lists.gnu.org/archive/html/guix-devel/2016-09/msg00859.html>
-    eval "$(guix environment --search-paths --root="$gcroot" --pure guix --ad-hoc ${PACKAGES[@]} ${PACKAGES_MAINTENANCE[@]} "$@")"
-
-    # Predefine configure flags.
-    configure()
-    {
-	./configure --localstatedir=/var --prefix=
-    }
-    export_function configure
-
-    # Run make and optionally build something.
-    build()
-    {
-	make -j 2
-	if [ $# -gt 0 ]
-	then
-	    ./pre-inst-env guix build "$@"
-	fi
-    }
-    export_function build
-
-    # Predefine push Git command.
-    push()
-    {
-	git push --set-upstream origin
-    }
-    export_function push
-
-    clear                        # Clean up the screen.
-    git-cal --author='Your Name' # Show contributions calendar.
-
-    # Show commands help.
-    echo "
-build          build a package or just a project if no argument provided
-configure      run ./configure with predefined parameters
-push           push to upstream Git repository
-"
-}
Index: ix/.dotfiles/.bash_profile
===================================================================
--- guix/.dotfiles/.bash_profile	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,22 +1,0 @@
-# Merge search-paths from multiple profiles, the order matters.
-eval "$(guix package --search-paths \
--p $HOME/.config/guix/current \
--p $HOME/.guix-profile \
--p /run/current-system/profile)"
-
-# Prepend setuid programs.
-export PATH=/run/setuid-programs:$PATH:$HOME/.bin:$PATH
-export EMACSLOADPATH=$EMACSLOADPATH:$HOME/.emacs.d/elpa
-export GTAGSLIBPATH=$GTAGSLIBPATH:$HOME/.guix-home/profile/include
-
-# export https_proxy=https://localhost:9250
-export http_proxy=https://localhost:9250
-export SOCKS_SERVER=localhost:9050
-
-# Set up the system, user profile, and related variables.
-# /etc/profile will be sourced by bash automatically
-# Set up the home environment profile.
-if [ -f ~/.profile ]; then source ~/.profile; fi
-
-# Honor per-interactive-shell startup file
-if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
Index: ix/.dotfiles/.bashrc
===================================================================
--- guix/.dotfiles/.bashrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,13 +1,0 @@
-export GUIX_PACKAGE_PATH=$HOME/.guix-packages
-export GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
-
-draw_line()
-{
-  local COLUMNS="$COLUMNS"
-  while ((COLUMNS-- > 0)); do
-    printf '\u2500'
-  done
-}
-
-export PS1="\e[37m$(draw_line)\e[32m\u\e[0m@\e[36m\h \e[1m\e[30m\w\${GUIX_ENVIRONMENT:+ [env]} \n\033[31m>>>\033[0m "
-
Index: ix/.dotfiles/home-configuration.scm
===================================================================
--- guix/.dotfiles/home-configuration.scm	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,297 +1,0 @@
-(use-modules (gnu home)
-             (gnu packages)
-	     (gnu packages base)
-	     (gnu packages gnupg)
-	     (gnu packages shells)
-             (gnu services)
-	     (gnu services xorg)
-	     (gnu system keyboard)
-             (guix gexp)
-	     (guix channels)
-	     (gnu home services)
-	     (gnu home services guix)
-	     (gnu home services ssh)
-	     (gnu home services desktop)
-	     (gnu home services dotfiles)
-             (gnu home services shells)
-	     (gnu home services gnupg))
-
-(define dotfiles-dir "/home/w96k/projects/dotfiles/")
-
-(define wkz-home (home-environment
-		  (packages (specifications->packages
-			     (list
-			      "glibc-locales"
-			      "rlwrap"
-			      "readline"
-			      "mg"
-			      "ratpoison"
-			      "file"
-			      "universal-ctags"
-			      "perl"
-			      "python"
-			      "python-wrapper"
-			      "php"
-			      "xdebug-php-8.1"
-			      "composer"
-			      "openjdk"
-			      "maven"
-			      "sqls"
-			      "go"
-			      "ruby"
-			      "gopls"
-			      "delve"
-			      "python-lsp-server"
-			      "python-jedi" ;; Looks a bit deprecated
-			      "python-debugpy"
-			      "ruby-solargraph"
-			      "zig-zls"
-			      "rust-analyzer"
-			      "racket"
-			      "gcc-toolchain"
-			      "clang-toolchain"
-			      "gdb"
-			      "valgrind"
-			      "frama-c"
-			      "kcachegrind"
-			      "dwarves"
-			      "xterm"
-			      "screen"
-			      "xdot"
-			      "graphviz"
-			      "sed"
-			      ;;"darktable"
-			      "global"
-			      "emacs-eldoc"
-			      "emacs-eldoc-box"
-			      "emacs-edbi"
-			      "emacs-edbi-sqlite"
-			      "emacs-dape"
-			      "emacs-dumb-jump"
-			      "emacs-goto-chg"
-			      "emacs-repology"
-			      "emacs-syslog-mode"
-			      "emacs-ggtags"
-			      "emacs-semantic-refactor"
-                              "openssh"
-                              "docker-compose"
-			      "emacs-docker"
-			      "emacs-dockerfile-mode"
-			      "emacs-docker-compose-mode"
-                              "emacs-company"
-                              "emacs-f"
-                              "emacs-s"
-			      "emacs-xterm-color"
-                              ;; "emacs-lsp-mode"
-			      "emacs-ebuild-mode"
-			      
-			      "emacs-helm"
-			      "emacs-helm-gtags"
-			      
-			      "emacs-magit"
-			      "emacs-git-timemachine"
-			      "emacs-browse-kill-ring"
-			      "emacs-anzu"
-			      "emacs-sudo-edit"
-			      "emacs-highlight"
-			      "emacs-mastodon"
-			      "emacs-org-roam"
-			      "emacs-undo-tree"
-			      "emacs-expand-region"
-			      "emacs-avy"
-			      "emacs-imenu-list"
-
-			      "emacs-nyxt"
-
-			      "guile"
-			      "guile-readline"
-			      "guile-colorized"
-			      "emacs-geiser"
-			      "emacs-geiser-guile"
-			      
-			      "emacs-telega"
-			      "emacs-telega-contrib"
-			      "emacs-guix"
-			      "emacs-simple-httpd"
-			      "emacs-osm"
-			      "translate-shell"
-                              "wget"
-			      "curl"
-                              "bitcoin-core"
-                              "xrandr"
-                              "unzip"
-                              "zip"
-                              "mpv"
-                              "emacs-rmsbolt"
-                              "git"
-                              ;; "wkz-emacs"
-			      "emacs-no-x-toolkit"
-			      "emacs-gptel"
-			      "emacs-nix-mode"
-                              "lm-sensors"
-                              "htop"
-                              "make"
-                              "emacs-simple-httpd"
-                              "emacs-guix"
-			      "emacs-hyperbole"
-			      "emacs-php-mode"
-                              "gimp"
-                              "imagemagick"
-                              "stow"
-                              "smartmontools"
-                              "lshw"
-                              "hwinfo"
-                              "qbittorrent"
-                              "x11-ssh-askpass"
-                              "syncthing"
-                              "pavucontrol"
-                              "arp-scan"
-                              "openconnect"
-                              "alsa-utils"
-                              "grep"
-			      "xlockmore"
-			      "x11-ssh-askpass"
-			      "pinentry"
-			      "pinentry-emacs"
-			      ;;"texlive"
-			      "fetchmail"
-			      "gnupg"
-			      "xhost"
-
-			      "universal-ctags"
-			      
-			      "c-intro-and-ref"
-			      "sicp"
-
-			      "font-xfree86-type1"
-			      "xlsfonts"
-			      "font-alias"
-			      "font-gnu-unifont"
-
-			      "proxychains-ng"
-			      "ungoogled-chromium"
-			      "torbrowser"
-			      "icecat"
-			      "librewolf"
-			      "nyxt"
-			      "netsurf"
-			      "ublock-origin-icecat"
-			      "ublock-origin-chromium"
-			      "noscript-icecat"
-			      "browserpass-native"
-			      
-			      "keepassxc-browser-icecat"
-			      "keepassxc"
-
-			      "restic"
-			      "btrbk"
-
-			      "emacs-helm-pass"
-			      "emacs-pass"
-			      "password-store"
-
-			      "musescore"
-			      "schismtracker"
-			      "workrave"
-			      "flatpak"
-			      "utox"
-			      "net-tools"
-			      "lsof"
-			      "podman"
-			      "podman-compose"
-			      "macchanger"
-
-			      "udiskie"
-			      "emacs-discomfort"
-
-			      "yt-dlp"
-			      "emacs-ytdl"
-
-			      ;; "wkz-php"
-			      ;; "wkz-python"
-			      ;; "wkz-ruby"
-			      )))
-
-		  ;; Below is the list of Home services.  To search for available
-		  ;; services, run 'guix home search KEYWORD' in a terminal.
-		  (services
-		   (list
-		    (service home-bash-service-type
-			     (home-bash-configuration
-			      (guix-defaults? #t)
-			      (aliases '(("grep" . "grep --color=auto")
-					 ("ip" . "ip -color=auto")
-					 ("ll" . "ls -l")
-					 ("ls" . "ls -p --color=auto")))
-			      (bashrc (list (local-file
-					     ".bashrc"
-					     "bashrc")))
-			      (bash-profile (list (local-file
-			                           ".bash_profile"
-			                           "bash_profile")))
-			      ))
-
-		    ;; (service home-x11-display-service-type)
-		    (service home-gpg-agent-service-type)
-
-		    ;;	 (service home-unclutter-service-type
-		    ;;		  (home-unclutter-configuration
-		    ;;		   (idle-timeout 1)))
-
-		    ;; (service home-openssh-service-type
-		    ;; 	     (home-openssh-configuration
-		    ;; 	      (authorized-keys (list (local-file "id_rsa.pub")))))
-
-		    (service home-startx-command-service-type
-			     (xorg-configuration (keyboard-layout (keyboard-layout "us,ru"
-										   #:options '("grp:shifts_toggle" "ctrl:nocaps")))))
-
-		    (service home-dotfiles-service-type
-			     (home-dotfiles-configuration
-			      ;; (layout 'stow)
-			      (directories '(
-					     "/home/w96k/projects/dotfiles/X"
-					     "/home/w96k/projects/dotfiles/wm"
-					     "/home/w96k/projects/dotfiles/emacs"
-					     "/home/w96k/projects/dotfiles/cvs"
-					     "/home/w96k/projects/dotfiles/guix"
-					     "/home/w96k/projects/dotfiles/ssh"
-					     ))))
-
-		    ;; (service home-ssh-agent-service-type
-		    ;; 	  (home-ssh-agent-configuration
-		    ;; 	   (extra-options '("-t" "1h30m"))))
-
-		    (service home-files-service-type
-			     `((".guile" ,%default-dotguile)))
-
-		    (service home-xdg-configuration-files-service-type
-			     `(("gdb/gdbinit" ,%default-gdbinit)
-			       ("nano/nanorc" ,%default-nanorc)))
-
-		    (simple-service 'nonguix-service 
-				    home-channels-service-type
-				    (list
-				     (channel
-				      (name 'nonguix)
-				      (url "https://gitlab.com/nonguix/nonguix")
-				      (introduction
-				       (make-channel-introduction
-					"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
-					(openpgp-fingerprint
-					 "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))))
-
-		    (simple-service 'phps-service 
-				    home-channels-service-type
-				    (list
-				     (channel
-				      (name 'guix-phps)
-				      (url "https://github.com/Nazar65/guix-phps-channel")
-				      (introduction
-				       (make-channel-introduction
-					"4e547cbb9391b5fe1b2a9fbc5efa4d5bec2d646f"
-					(openpgp-fingerprint
-					 "4441 0743 6E32 EE9F F20A  753F B510 AA5B 74EA F294"))))))
-		    ))))
-
-wkz-home
Index: ix/config-desktop.scm
===================================================================
--- guix/config-desktop.scm	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,197 +1,0 @@
-(use-modules (gnu)
-	     (guix transformations)
-	     (gnu home)
-             (guix gexp)
- 	     (nongnu packages linux)
-	     (nongnu system linux-initrd)
-             (gnu home services shells))
-
-(use-service-modules guix cups desktop networking ssh xorg docker nix admin vnc lightdm syncthing virtualization databases linux web backup telephony file-sharing)
-(use-package-modules gnome xdisorg vnc databases)
-
-(load "/home/w96k/projects/dotfiles/guix/.dotfiles/home-configuration.scm")
-
-(define wkz-transform
-  ;; The package transformation procedure.
-  (options->transformation
-   '((tune . "skylake"))))
-
-(operating-system
- (locale "en_US.utf8")
- (timezone "Asia/Tbilisi")
- (kernel linux)
- (kernel-arguments '("video=HDMI-A-1:1920x1080@240"))
- (initrd microcode-initrd)
- (firmware (list linux-firmware))
- (keyboard-layout (keyboard-layout "us,ru"
-                                   #:options '("grp:shifts_toggle" "ctrl:nocaps")))
- (host-name "wkz-guix")
-
- ;; The list of user accounts ('root' is implicit).
- (users (cons* (user-account
-                (name "w96k")
-                (comment "W96K")
-                (group "users")
-                (home-directory "/home/w96k")
-                (supplementary-groups '("wheel" "netdev" "audio" "video" "kvm" "httpd")))
-               %base-user-accounts))
-
- ;; (packages %base-packages)
- (packages
-  (append
-   (map
-    specification->package
-    '(
-      "font-gnu-freefont" "font-gnu-unifont"
-      ))
-   %base-packages))
-
- ;; Below is the list of system services.  To search for available
- ;; services, run 'guix system search KEYWORD' in a terminal.
- (services
-  (append (list
-	   (service guix-home-service-type `(("w96k" ,wkz-home)))
-	   (service block-facebook-hosts-service-type)
-
-	   (service zram-device-service-type
-                            (zram-device-configuration
-                              (compression-algorithm 'zlib)
-                              (priority 100)))
-
-	   (service tor-service-type
-		    (tor-configuration
-                     (config-file (plain-file "tor-config"
-                                              "HTTPTunnelPort 127.0.0.1:9250"))))
-	   (service openssh-service-type)
-
-	   (service transmission-daemon-service-type)
-	   
-	   ;; (service containerd-service-type)
-	   ;; (service docker-service-type)
-	   ;; (service restic-backup-service-type)
-	   
-	   ;; (service hurd-vm-service-type
-           ;;   (hurd-vm-configuration
-           ;;    (disk-size (* 5000 (expt 2 20))) ;5G
-           ;;    (memory-size 1024)))
-	   
-	   ;; (service nix-service-type)
-
-	   ;; (service xvnc-service-type (xvnc-configuration
-           ;;                             (display-number 10)
-           ;;                             (localhost? #f)
-           ;;                             (geometry "1280x800")))
-
-	   ;; (service syncthing-service-type
-	   ;; 	    (syncthing-configuration
-	   ;; 	     (user "w96k")))
-
-	   ;; (service postgresql-service-type
-	   ;; 	    (postgresql-configuration
-	   ;; 	     (postgresql postgresql-15)))
-
-	   (service dhcp-client-service-type)
-
-	   (service httpd-service-type
-		    (httpd-configuration
-		     (config
-		      (httpd-config-file
-		       (modules (cons*
-				 (httpd-module
-				  (name "proxy_module")
-				  (file "modules/mod_proxy.so"))
-				 (httpd-module
-				  (name "proxy_fcgi_module")
-				  (file "modules/mod_proxy_fcgi.so"))
-				 %default-httpd-modules))
-		       (extra-config (list "\
-<FilesMatch \\.php$>
-    SetHandler \"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\"
-</FilesMatch>"))))))
-	   (service php-fpm-service-type
-		    (php-fpm-configuration
-		     (display-errors #t)
-		     (socket "/var/run/php-fpm.sock")
-		     (socket-group "httpd")))
-
-	   ;; (service screen-locker-service-type
-           ;;  (screen-locker-configuration
-           ;;   (name "xlock")
-           ;;   (program (file-append xlockmore "/bin/xlock"))))
-	   )
-
-	  (modify-services %desktop-services
-			   (delete screen-locker-service-type)
-			   (delete modem-manager-service-type)
-			   ;; (delete udisks-service-type)
-			   (delete upower-service-type)
-			   (delete network-manager-service-type)
-			   (delete wpa-supplicant-service-type)
-			   ;; (delete usb-modeswitch-service-type)
-			   (delete geoclue-service-type)
-			   ;;(delete elogind-service-type)
-			   (delete colord-service-type)
-			   (delete ntp-service-type)
-			   
-			   
-			   (guix-service-type config => (guix-configuration
-							 (inherit config)
-							                                  ;; Rely on btrfs compression.
-							 (log-compression 'none)
-							 (extra-options '("--max-jobs=10"))
-							 (substitute-urls
-							  (list
-							   "https://4zwzi66wwdaalbhgnix55ea3ab4pvvw66ll2ow53kjub6se4q2bclcyd.onion"
-							   "https://substitutes.nonguix.org"))
-							 (http-proxy "http://localhost:9250")
-							 (authorized-keys
-							  (append (list (plain-file "non-guix.pub"
-										    "
-(public-key 
- (ecc 
-  (curve Ed25519)
-  (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)
-  )
- )
-"))
-								  %default-authorized-guix-keys))))
-			   
-			   (delete gdm-service-type))))
-
-  (mapped-devices (list (mapped-device
-                          (source (uuid
-                                   "03db8d78-051b-4a11-a7e5-b62ae0f530d4"))
-                          (target "cryptroot")
-                          (type luks-device-mapping))))
-
-  ;; The list of file systems that get "mounted".  The unique
-  ;; file system identifiers there ("UUIDs") can be obtained
-  ;; by running 'blkid' in a terminal.
-  (file-systems (cons* (file-system
-                         (mount-point "/")
-                         (device "/dev/mapper/cryptroot")
-                         (type "btrfs")
-			 (options "compress=zlib:9,autodefrag")
-                         (dependencies mapped-devices))
-		       (file-system
-                         (mount-point "/home/w96k/")
-                         (device "/dev/mapper/cryptroot")
-                         (type "btrfs")
-			 (options "compress=zlib:7,autodefrag,subvol=/home/w96k/")
-                         (dependencies mapped-devices))
-		       (file-system
-                         (mount-point "/home/w96k/Snapshots/")
-                         (device "/dev/mapper/cryptroot")
-                         (type "btrfs")
-			 (options "compress=zlib:9,autodefrag,subvol=/home/w96k/Snapshots")
-                         (dependencies mapped-devices))
-                       (file-system
-                         (mount-point "/boot/efi")
-                         (device (uuid "6ECD-551F"
-                                       'fat32))
-                         (type "vfat")) %base-file-systems))
- 
- (bootloader (bootloader-configuration
-              (bootloader grub-efi-bootloader)
-              (targets (list "/boot/efi"))
-              (keyboard-layout keyboard-layout))))
Index: ix/config-thinkpad.scm
===================================================================
--- guix/config-thinkpad.scm	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,336 +1,0 @@
-;; -*- geiser-scheme-implementation: guile -*-
-
-(use-modules (gnu)
-	     (gnu packages)
-	     (srfi srfi-1))
-
-(use-service-modules
- desktop
- databases
- networking
- ssh
- xorg
- docker
- virtualization
- dbus
- linux
- pm
- vpn
- nix)
-
-(use-package-modules
- wm
- lisp
- bash
- linux
- python
- gnome
- gawk
- xorg
- xdisorg)
-
-;; (define-public linux-libre-custom
-;;   (package
-;;     (inherit linux-libre)
-;;     (native-inputs
-;;      `(("kconfig" ,(local-file "fb.config"))
-;;       ,@(alist-delete "kconfig"
-;;                       (package-native-inputs linux-libre))))))
-
-(define %cpupower-service
-  (simple-service
-   'cpupower activation-service-type
-   #~(zero? (system* #$(file-append cpupower "/bin/cpupower")
-		     "frequency-set" "--governor" "schedutil"))))
-
-(define %x86-energy-perf-policy-service
-  (simple-service
-   'x86-energy-perf-policy-service activation-service-type
-   #~(zero? (system* #$(file-append x86-energy-perf-policy "/bin/x86_energy_perf_policy")
-		     "--turbo-enable" "0"
-		     "--hwp-desired" "16"))))
-
-(define %thinkfan-service
-  (simple-service
-   'thinkfan activation-service-type
-   #~(zero? (system* #$(file-append thinkfan "/sbin/thinkfan")))))
-
-
-(define i915-config
-  (plain-file "i915.conf"
-              "options i915 enable_fbc=1 enable_dc=0 modeset=1 enable_psr=0"))
-
-(define drm-kms-config
-  (plain-file "drm_kms.conf"
-              "options drm_kms_helper poll=N"))
-
-(define thinkpad-acpi-config
-  (plain-file "thinkpad_acpi.conf"
-              "options thinkpad_acpi fan_control=1"))
-
-;; tp_thermal /proc/acpi/ibm/thermal
-
-(define thinkfan-config
-  (plain-file "thinkfan.conf"
-   "\
-hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp3_input
-hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp5_input
-hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp1_input
-hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp4_input
-hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp6_input
-hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp7_input
-hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp8_input
-hwmon /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/hwmon/hwmon1/temp1_input
-hwmon /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/hwmon/hwmon2/temp1_input
-# hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon6/temp3_input
-# hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon6/temp2_input
-hwmon /sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp1_input
-hwmon /sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp2_input
-tp_fan /proc/acpi/ibm/fan
-
-(0, 0, 35)
-(1, 30, 40)
-(2, 35, 50)
-(3, 45, 60)
-(4, 55, 65)
-(5, 60, 70)
-(6, 65, 75)
-(7, 70, 85)
-(\"level full-speed\", 78, 120)"))
-
-(define fancontrol-config
-  (plain-file "fancontrol"
-	      "
-INTERVAL=10
-DEVPATH=hwmon0=devices/virtual/thermal/thermal_zone0 hwmon1=devices/platform/thinkpad_hwmon
-DEVNAME=hwmon0=acpitz hwmon5=thinkpad
-FCTEMPS=hwmon1/pwm1=hwmon0/temp1_input
-FCFANS= hwmon1/pwm1=hwmon5/fan1_input
-MINTEMP=hwmon1/pwm1=20
-MAXTEMP=hwmon1/pwm1=50
-MINSTART=hwmon1/pwm1=150
-MINSTOP=hwmon1/pwm1=50
-MINPWM=hwmon1/pwm1=10"))
-
-(operating-system
- (locale "ru_RU.utf8")
- (timezone "Europe/Tbilisi")
- (keyboard-layout
-  (keyboard-layout
-   "us,ru"
-   #:options
-   '("grp:shifts_toggle"
-     "caps:ctrl_modifier")))
- ;; (kernel linux-libre-5.19)
- ;; (kernel-loadable-modules '(acpi-call-linux-module))
- (kernel-arguments
-   '("consoleblank=0"
-     ;; "processor.max_cstate=3"  ; Disable power savings
-     ;; "intel_idle.max_cstate=0" ; (cstate 3-4 provides
-     ;; 		     			; high freq cpu noice)
-     "vblank_mode=0"
-     ;;"vm.swappiness=5"
-     "thinkpad_acpi.fan_control=1"
-     "acpi_sleep=s3_bios"
-     "acpi_osi=Linux"
-     "i915.modeset=1"
-     ;; "i915.enable_dc=0"
-     ;; "i915.enable_psr=0"
-     "rootfstype=ext4"
-     "KVM"
-     "loglevel=7"
-     ;;"logo"
-     "ahci.mobile_lpm_policy=1"
-     "intremap=off"     ; Fix for failed to map dmar2
-     "modprobe.blacklist=pcspkr,usbmouse,usbkbd,glx"))
- (host-name "w96k-x200t")
- (users
-  (cons*
-   (user-account
-    (name "w96k")
-    (comment "Mikhail Kirillov")
-    (group "users")
-    (home-directory "/home/w96k")
-    (supplementary-groups
-     '("wheel" "netdev" "audio" "video" "kvm" "docker")))
-   %base-user-accounts))
- (packages
-  (append
-   (map
-    specification->package
-    '("xterm"
-      "xinit"
-      "xorg-server"
-      "font-gnu-unifont"
-      "font-gnu-freefont"
-      "mesa"
-      "mesa-utils"
-      "ratpoison"
-      "wmname"
-      "windowmaker" 
-      "nss-certs"
-      "docker-compose"
-      "thinkfan"
-      "cpupower"
-      "lm-sensors"
-      "x86-energy-perf-policy"
-      "git"
-      "stow"
-      "lm-sensors"
-      "xset"
-      "cpuid"
-      ;; Video Codecs stuff
-      "gstreamer"
-      "gst-plugins-base"
-      "gst-plugins-good"
-      "gst-plugins-bad"
-      "gst-plugins-ugly"
-      "gst-libav"
-      ;; "intel-vaapi-driver-g45-h264"
-      "libva-utils"
-      "igt-gpu-tools"
-      ;; Xorg      
-      "xev"
-      "xset"
-      "xrdb"
-      "xhost"
-      "xmodmap"
-      "setxkbmap"
-      "xrandr"
-      "arandr"
-      "xss-lock"
-      "libinput"
-      "xinput"
-      "xf86-input-libinput"
-      ;; "xf86-video-fbdev"
-      "xf86-video-intel"
-      "qemu"))
-   %base-packages))
- 
- (services
-  (cons*
-   (service docker-service-type)
-   (service thermald-service-type)
-   (service virtlog-service-type)
-   (service libvirt-service-type
-            (libvirt-configuration (unix-sock-group "libvirt")))
-   (service openssh-service-type)
-   (service tor-service-type)
-
-   ;;Wacom tablet support
-   (service inputattach-service-type
-	    (inputattach-configuration
-	     (device "/dev/ttyS4")
-	     (device-type "wacom")))
-
-   (service kernel-module-loader-service-type
-            '("thinkpad_acpi"
-	      "msr"
-	      "coretemp"
-	      "acpi_cpufreq"
-	      "overlay"))
-
-   (simple-service 'thinkpad-acpi-config etc-service-type
-		   (list `("modprobe.d/thinkpad_acpi.conf"
-			   ,thinkpad-acpi-config)))
-
-   ;; (simple-service 'fancontrol-config etc-service-type
-   ;; 		   (list `("fancontrol"
-   ;; 			   ,fancontrol-config)))
-
-   ;; (simple-service 'thinkfan-config etc-service-type
-   ;; 		   (list `("thinkfan.conf"
-   ;; 			   ,thinkfan-config)))
-
-   (simple-service 'i915-config etc-service-type
-		   (list `("modprobe.d/i915.conf"
-			   ,i915-config)))
-
-   (simple-service 'drm-kms-config etc-service-type
-		   (list `("modprobe.d/drm_kms.conf"
-			   ,drm-kms-config)))
-
-   ;; (service openvpn-client-service-type
-   ;; 	    (openvpn-client-configuration
-   ;; 	     (persist-tun? #t)
-   ;; 	     (remote
-   ;; 	      (list
-   ;; 	       (openvpn-remote-configuration
-   ;; 		(name "nyc.vpn.riseup.net")
-   ;; 		(port 1196))))))
-   
-   (service special-files-service-type
-	    `(("/bin/bash"   ,(file-append bash "/bin/bash"))
-	      ("/bin/python" ,(file-append python "/bin/python3"))
-	      ("/bin/python3" ,(file-append python "/bin/python3"))
-	      ("/bin/awk" ,(file-append gawk "/usr/bin/awk"))
-	      ("/usr/bin/awk" ,(file-append gawk "/usr/bin/awk"))
-	      ("/lib64/ld-linux-x86-64.so.2"
-               ,(file-append (canonical-package glibc)
-                             "/lib/ld-linux-x86-64.so.2"))))
-
-   (service nix-service-type
-	    (nix-configuration
-	     (extra-config '("trusted-users = root w96k"))))
-
-   (service postgresql-service-type)
-
-   %cpupower-service
-
-   ;; Doesn't start on boot sadly :(
-   %thinkfan-service
-
-   %x86-energy-perf-policy-service
-
-   (screen-locker-service xlockmore "xlock")
-
-
-   ;; (service xorg-server-service-type
-   ;; 	     (xorg-configuration
-   ;; 	      (keyboard-layout keyboard-layout)))
-
-   ;; (service hurd-vm-service-type
-   ;;          (hurd-vm-configuration
-   ;;           (disk-size (* 8 (expt 2 30))) ;12GiB
-   ;;           (memory-size 1024)))
-
-   (service slim-service-type
-	    (slim-configuration
-	     (xorg-configuration
-	      (xorg-configuration
-	       (drivers '("modesetting"))
-	       (keyboard-layout keyboard-layout)))))
-   
-   
-   (modify-services %desktop-services
-		    (delete gdm-service-type))))
-
- (bootloader
-  (bootloader-configuration
-   (bootloader grub-bootloader)
-   (target "/dev/sda")
-   (keyboard-layout keyboard-layout)))
- (swap-devices
-  (list
-   (swap-space
-    (target "/dev/sda1"))))
- (file-systems
-  (cons*
-   (file-system
-    (mount-point "/")
-    (device
-     (uuid "c184f446-df67-4103-b28e-465ac8776f10"
-	   'ext4))
-    (type "ext4")
-    (options "discard"))
-
-   ;; Thinkpad doc HDD
-   
-   ;;(file-system
-   ;;(mount-point "/media/hdd/")
-   ;;(device
-   ;;  (uuid "71cb0818-baf3-4f7f-8bc2-7e2b0cca3488"
-   ;;	 'ext4))
-   ;; (type "ext4"))
-   
-   %base-file-systems)))
Index: guix/config.scm
===================================================================
--- guix/config.scm	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ guix/config.scm	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,92 @@
+(use-modules (gnu) (gnu system nss)
+             (srfi srfi-1))
+
+(use-service-modules xorg
+                     networking
+                     desktop
+                     databases
+                     web
+                     docker)
+
+(use-package-modules geo)
+
+(operating-system
+ (host-name "Libreboot")
+ (timezone "Europe/Moscow")
+ (locale "ru_RU.utf8")
+
+ (bootloader (bootloader-configuration
+              (bootloader grub-bootloader)
+              (target "/dev/sda")))
+
+ (file-systems (cons* (file-system
+                       (device (file-system-label "root"))
+                       (mount-point "/")
+                       (type "ext4"))
+                      %base-file-systems))
+
+ (users (cons (user-account
+               (name "w96k")
+               (group "users")
+               (supplementary-groups '("wheel" "netdev"
+                                       "audio" "video"
+                                       "docker"))
+               (home-directory "/home/w96k"))
+              %base-user-accounts))
+
+ (packages
+  (append
+   (map specification->package
+        '(
+          "ratpoison"
+          "stumpwm"
+          "i3-wm"
+          "inputattach"
+          "font-dejavu"
+          "mailutils"
+          "font-terminus"
+          "emacs-no-x-toolkit"
+          "fontconfig"
+          "git"
+          "htop"
+          "netcat"
+          "nss-certs"
+          "openssh"
+          "vim"
+          "xinit"
+          "xf86-video-intel"
+          "x86-energy-perf-policy"
+          "xterm"
+          "xinit"
+          "rxvt-unicode"
+          "node"
+          "ruby"
+          "bundler"
+          "docker"
+          "docker-cli"
+          "nix"
+          "postgresql"
+          "php"))
+   %base-packages))
+
+ ;; Use the "desktop" services, which include the X11
+ ;; log-in service, networking with NetworkManager, and more.
+ 
+ (services
+  (cons*
+   (service slim-service-type)
+   (service inputattach-service-type
+            (inputattach-configuration
+              (device "/dev/ttyS4")
+              (device-type "wacom")))
+   (postgresql-service #:extension-packages (list postgis))
+   (service docker-service-type)
+   (service tor-service-type)
+   (console-keymap-service "ru")
+
+   (remove (lambda (service)
+             (eq? (service-kind service) gdm-service-type))
+           %desktop-services)))
+
+ ;; Allow resolution of '.local' host names with mDNS.
+ (name-service-switch %mdns-host-lookup-nss))
Index: guix/work.scm
===================================================================
--- guix/work.scm	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ guix/work.scm	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,78 @@
+;; This is my pc at work
+
+(use-modules (gnu) (gnu system nss)
+	     (srfi srfi-1))
+
+(use-service-modules xorg desktop networking desktop databases web docker)
+(use-package-modules certs geo)
+
+(operating-system
+ (host-name "w96k")
+ (timezone "Europe/Moscow")
+ (locale "ru_RU.utf8")
+
+ ;; Choose US English keyboard layout.  The "altgr-intl"
+ ;; variant provides dead keys for accented characters.
+ (keyboard-layout (keyboard-layout "us" "altgr-intl"))
+
+ ;; Use the UEFI variant of GRUB with the EFI System
+ ;; Partition mounted on /boot/efi.
+ (bootloader (bootloader-configuration
+              (bootloader grub-efi-bootloader)
+              (target "/boot/efi")
+              ;;                (target "/dev/sda")
+              (keyboard-layout keyboard-layout)))
+
+ (file-systems (cons*
+                (file-system
+                 (device (file-system-label "guix"))
+                 (mount-point "/")
+                 (type "ext4"))
+		(file-system
+                 (device (uuid "ACA8-6834" `fat))
+                 (mount-point "/boot/efi")
+                 (type "vfat"))
+                %base-file-systems))
+
+ (users (cons (user-account
+               (name "w96k")
+               (group "users")
+               (supplementary-groups '("wheel" "netdev"
+                                       "audio" "video"))
+               (home-directory "/home/w96k"))
+              %base-user-accounts))
+
+ ;; This is where we specify system-wide packages.
+ (packages (append (map specification->package
+                        '(
+                          "ratpoison"
+                          "stumpwm"
+                          "emacs-no-x-toolkit"
+                          "font-dejavu"
+                          "font-inconsolata"
+                          "font-fira-code"
+                          "font-terminus"
+                          "fontconfig"
+                          "nix"
+                          "bundler"
+                          "node"
+                          "ruby"
+                          "git"
+                          "htop"
+                          "rxvt-unicode"
+                          "nss-certs"
+                          "gvfs"))
+                   %base-packages))
+
+ (services (cons*
+            (service slim-service-type)
+            ;;                          (set-xorg-configuration
+            ;;                           (xorg-configuration
+            ;;                            (keyboard-layout keyboard-layout))))
+
+            (remove (lambda (service)
+                      (eq? (service-kind service) gdm-service-type))
+                    %desktop-services)))
+
+ ;; Allow resolution of '.local' host names with mDNS.
+ (name-service-switch %mdns-host-lookup-nss))
Index: nguages/js/.eslintrc
===================================================================
--- languages/js/.eslintrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,43 +1,0 @@
-{
-    "parser": "babel-eslint",
-    "plugins": [ "react" ],
-    "extends": "airbnb-base",
-    "env": {
-        "browser": true,
-        "es6": true,
-        "node": true
-    },
-    "parserOptions": {
-        "ecmaFeatures": {
-            "jsx": true,
-            "modules": true
-        },
-        "sourceType": "module"
-    },
-    "ecmaFeatures": {
-        "arrowFunctions": true,
-        "blockBindings": true,
-        "classes": true,
-        "defaultParams": true,
-        "destructuring": true,
-        "forOf": true,
-        "generators": true,
-        "modules": true,
-        "spread": true,
-        "templateStrings": true,
-        "jsx": true
-    },
-    "rules": {
-        "consistent-return": [0],
-        "key-spacing": [0],
-        "quotes": [0],
-        "new-cap": [0],
-        "no-multi-spaces": [0],
-        "no-shadow": [0],
-        "no-unused-vars": [1],
-        "no-use-before-define": [2, "nofunc"],
-        "react/jsx-no-undef": 1,
-        "react/jsx-uses-react": 1,
-        "react/jsx-uses-vars": 1
-    }
-}
Index: nguages/js/.npmrc
===================================================================
--- languages/js/.npmrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,1 +1,0 @@
-prefix=/home/w96k/.nodejs
Index: nguages/php/.phprc
===================================================================
--- languages/php/.phprc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,2 +1,0 @@
-error_reporting = E_ALL
-display_startup_errors = on
Index: nguages/php/.psysh/rc.php
===================================================================
--- languages/php/.psysh/rc.php	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,15 +1,0 @@
-<?php
-
-$config = [
-    'pager'       => 'more',
-    'usePcntl'    => true,
-    'useReadline' => true,
-    'commands'    => [
-        new \Psy\Command\ParseCommand,
-    ],
-];
-
-$f = getenv('HOME') . '/.composer/vendor/autoload.php';
-if (file_exists($f)) { $config['defaultIncludes'] = [$f]; }
-
-return $config;
Index: nguages/python/.pythonrc
===================================================================
--- languages/python/.pythonrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,9 +1,0 @@
-# -*- mode: python -*-
-# import atexit
-# import rlcompleter
-# import code
-# import os
-# import readline
-
-# readline.parse_and_bind('tab:complete')
-# readline.parse_and_bind('bind ^I rl_complete')
Index: nguages/ruby/.irbrc
===================================================================
--- languages/ruby/.irbrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,1 +1,0 @@
-IRB.conf[:USE_MULTILINE] = false if ENV['INSIDE_EMACS']
Index: nguages/scheme/.guile
===================================================================
--- languages/scheme/.guile	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,4 +1,0 @@
-(use-modules (ice-9 readline) (ice-9 colorized))
-
-(activate-readline)
-(activate-colorized)
Index: readme.org
===================================================================
--- readme.org	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
+++ readme.org	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -0,0 +1,38 @@
+* Dotfiles
+Here you can find my dotfiles for various of unix programs.
+
+** GUIX
+   I use guixsd as my primary linux distro. It's GNU (totally libre),
+   extensible by GNU/Guile & based on nix package manager. Nix is the
+   future of package management.
+
+   [[config.scm][My config]]
+
+** Emacs
+[[emacs.png]]
+
+*** My setup
+| Font  | terminus                    |
+| Theme | sanityinc-tomorrow-eighties |
+
+
+| use-package            | Package management                         |
+| ivy                    | Autocomplete tool (search, find-file, M-x) |
+| aggressive indent mode | Auto formatting for code                   |
+| magit                  | Git frontend                               |
+| org-mode               | Mode for writing documents & more          |
+| exwm                   | Window manager within emacs                |
+| flycheck               | Spot code errors on the fly                |
+| powerline              |                                            |
+
+And many more! I left comments in my config, so you can get idea what
+packages do.
+
+** Install
+
+#BEGIN_SRC
+git clone <this_repo>
+cd <this_repo>
+
+stow <dir>
+#END_SRC
Index: rver/r710_fan_controller.sh
===================================================================
--- server/r710_fan_controller.sh	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,349 +1,0 @@
-#!/bin/sh
-
-#
-# This program created by Rich Gannon <rich@richgannon.net>.
-#
-# Version 1.1: 2017-10-31
-#
-# Updated copies of this program may be found by visiting:
-# http://richgannon.net/projects/dellfanspeed
-#
-# This program comes with absolutely no warranty.  Please
-# test thoroughly on your hardware and in your environment
-# at your own risk.
-#
-
-#
-# Set to 1 if PERC6, H200, H700, or other LSI MegaRAID-based
-# RAID controller is in use (in RAID mode).
-#
-MEGARAID=1
-
-#
-# Set MEGACLI to 0 if you want to disable the check for
-# the MegaCLI command utility `megacli`.  If set to 1
-# and megacli command is in $PATH, this script will use
-# megacli to pill drive temperatures.
-#
-MEGACLI=1
-
-#
-# Set this to 1 to output additional information to the terminal.
-# Set this to 2 to output information information to the terminal.
-#
-DEBUG=1
-
-#
-# Time to sleep between polls in seconds.
-#
-SLEEP_TIMER=5
-
-#
-# Multiple value of SLEEP_TIMER to be used after increasing level
-# before we're allowed to decrease it again.  This can help
-# reduce fan's continuously increasing and decreasing too rapdily
-# each poll.
-#
-# Example:
-# SLEEP_TIMER = 5
-# SLEEP_TIMER_MULTIPLY = 6
-# 5 seconds x 6 = 30 seconds
-#
-SLEEP_TIMER_MULTIPLY=10
-
-#
-# Set temperature levels and fan levels here.  Fan speeds are in
-# hex.  Please adjust only if you know what you are doing and
-# test that the fan speeds are appropriate on your server!
-# LEVEL0 is assumed when below LEVEL1.
-#
-CPU_LEVEL1=36
-CPU_LEVEL2=42
-CPU_LEVEL3=48
-CPU_LEVEL4=55
-CPU_LEVEL5=65
-
-HDD_LEVEL1=36
-HDD_LEVEL2=38
-HDD_LEVEL3=40
-HDD_LEVEL4=42
-HDD_LEVEL4=44
-HDD_LEVEL5=46
-
-#
-# Set the `ipmitool` connect line here.  Right now everything is programmed
-# to be on a bare metal OS, and likely will not work on a VM where an IP
-# login to the iDRAC will work.
-#
-IPMI_TOOL="ipmitool"
-
-#
-# Approximate RPM values in my R710 Gen II are as follows:
-# 0x09 = 2100
-# 0x10 = 2800
-# 0x13 = 3240
-# 0x22 = 4680
-# 0x32 = 6600
-# 0x38 = 7440
-# auto = controlled by iDRAC firmware (default Dell bahavior)
-#
-
-#FAN_LEVEL0=0x09
-#FAN_LEVEL1=0x13
-#FAN_LEVEL2=0x22
-#FAN_LEVEL3=0x32
-#FAN_LEVEL4=0x38
-#FAN_LEVEL5=auto
-
-FAN_LEVEL0=0x04
-FAN_LEVEL1=0x08
-FAN_LEVEL2=0x10
-FAN_LEVEL3=0x18
-FAN_LEVEL4=0x28
-FAN_LEVEL5=auto
-
-#FAN_LEVEL0=0x02
-#FAN_LEVEL1=0x04
-#FAN_LEVEL2=0x0A
-#FAN_LEVEL3=0x10
-#FAN_LEVEL4=0x16
-#FAN_LEVEL5=auto
-#
-# Don't change this.  Initializing variables.
-#
-OLD_LEVEL=5
-FAN_IS_AUTO=1
-CMD_FAN_AUTO=0
-TIMER_MULTIPLY=0
-
-#
-# If MegaCLI utility is available, it is much faster than smartctl
-#
-if [ "`which megacli`" = "" ]; then
-	MEGACLI=0
-fi
-
-#
-# Trap if CTRL+C is pressed.  If it is, we will call our exit_graceful()
-# function to relinquish control back to the iDRAC Firmware.
-#
-trap exit_graceful INT
-
-poll_drive_temp() {
-	high_drive_temp=0
-	if [ $MEGACLI -eq 1 ]; then
-		for drive_temp in `megacli -PDList -aALL | grep "Drive Temperature" | awk '{print $3}' | cut -d ':' -f2 | cut -d 'C' -f1`; do
-			if [ $drive_temp -gt $high_drive_temp ]; then
-				high_drive_temp=$drive_temp
-			fi
-
-			if [ $DEBUG -eq 2 ]; then
-				echo "Drive Temp: $drive_temp"
-			fi
-		done
-
-		if [ $DEBUG -gt 0 ]; then
-			echo "Highest drive temperature: $high_drive_temp Celcius."
-		fi
-		return 0
-	fi
-
-	if [ $MEGARAID -eq 1 ]; then
-		for drive in 00 01 02 03 04 05 06 07; do
-			if [ "`smartctl -d megaraid,$drive -a /dev/sda -a | grep SAS`" != "" ]; then
-				drive_temp=`smartctl -d megaraid,$drive /dev/sda -A | grep "Current Drive Temperature" | awk '{print $4}' | tail -n1` || drive_temp=0
-			else
-				drive_temp=`smartctl -d megaraid,$drive -A /dev/sda | grep "Temperature" | awk '{print $10}' | tail -n1` || drive_temp=0
-			fi
-
-			if [ $drive_temp ]; then
-
-				if [ $drive_temp -gt $high_drive_temp ]; then
-					high_drive_temp=$drive_temp
-				fi
-			else
-				drive_temp="not installed"
-			fi
-
-			if [ $DEBUG -eq 2 ]; then
-				echo "$drive: $drive_temp"
-			fi
-		done
-	else
-		for drive in `lsblk -d | grep sd | awk '{print $1}'`; do
-			if [ "`smartctl -a $drive -a | grep SAS`" != "" ]; then
-				drive_temp=`smartctl /dev/$drive -A | grep "Current Drive Temperature" | awk '{print $4}'` || drive_temp=0
-			else
-				drive_temp=`smartctl -A /dev/$drive | grep "Temperature" | awk '{print $10}' | tail -n1` || drive_temp=0
-			fi
-
-			if [ $drive_temp ]; then
-				if [ $drive_temp -gt $high_drive_temp ]; then
-					high_drive_temp=$drive_temp
-				fi
-			else
-				drive_temp="not installed"
-			fi
-
-			if [ $DEBUG -eq 2 ]; then
-				echo "$drive Temp: $drive_temp"
-			fi
-		done
-	fi
-
-	if [ $DEBUG -gt 0 ]; then
-		echo "Highest drive temperature: $high_drive_temp Celcius."
-	fi
-}
-
-#
-# Poll CPU core temperatures via lm_sensors coretemp driver
-#
-poll_core_temp() {
-	high_core_temp=0
-	for core_temp in `sensors | grep Core | awk '{print $3}' | cut -d '+' -f2 | cut -d '.' -f1`; do
-		if [ $core_temp -gt $high_core_temp ]; then
-			high_core_temp=$core_temp
-		fi
-
-		if [ $DEBUG -eq 2 ]; then
-			echo "Core Temp: $core_temp"
-			echo "High Temp: $high_core_temp"
-		fi
-	done
-
-	if [ $DEBUG -gt 0 ]; then
-		echo "Highest CPU core temperature: $high_core_temp Celcius."
-	fi
-}
-
-#
-# Compare Max polled temperatures and set the appropriate level based
-# on our user-configured levels.
-#
-level_test() {
-	if [ $high_core_temp -lt $CPU_LEVEL1 ] && [ $high_drive_temp -lt $HDD_LEVEL1 ]; then
-		NEW_LEVEL=0
-		if [ "$FAN_LEVEL0" = "auto" ]; then
-			CMD_FAN_AUTO=1
-		else
-			IPMI_CMD="raw 0x30 0x30 0x02 0xff $FAN_LEVEL0"
-		fi
-	elif [ $high_core_temp -lt $CPU_LEVEL2 ] && [ $high_drive_temp -lt $HDD_LEVEL2 ]; then
-		NEW_LEVEL=1
-		if [ "$FAN_LEVEL1" = "auto" ]; then
-			CMD_FAN_AUTO=1
-		else
-			IPMI_CMD="raw 0x30 0x30 0x02 0xff $FAN_LEVEL1"
-		fi
-	elif [ $high_core_temp -lt $CPU_LEVEL3 ] && [ $high_drive_temp -lt $HDD_LEVEL3 ]; then
-		NEW_LEVEL=2
-		if [ "$FAN_LEVEL2" = "auto" ]; then
-			CMD_FAN_AUTO=1
-		else
-			IPMI_CMD="raw 0x30 0x30 0x02 0xff $FAN_LEVEL2"
-		fi
-	elif [ $high_core_temp -lt $CPU_LEVEL4 ] && [ $high_drive_temp -lt $HDD_LEVEL4 ]; then
-		NEW_LEVEL=3
-		if [ "$FAN_LEVEL3" = "auto" ]; then
-			CMD_FAN_AUTO=1
-		else
-			IPMI_CMD="raw 0x30 0x30 0x02 0xff $FAN_LEVEL3"
-		fi
-	elif [ $high_core_temp -lt $CPU_LEVEL5 ] && [ $high_drive_temp -lt $HDD_LEVEL5 ]; then
-		NEW_LEVEL=4
-		if [ "$FAN_LEVEL4" = "auto" ]; then
-			CMD_FAN_AUTO=1
-		else
-			IPMI_CMD="raw 0x30 0x30 0x02 0xff $FAN_LEVEL4"
-		fi
-	else
-		NEW_LEVEL=5
-		if [ "$FAN_LEVEL5" = "auto" ]; then
-			CMD_FAN_AUTO=1
-		else
-			IPMI_CMD="raw 0x30 0x30 0x02 0xff $FAN_LEVEL5"
-		fi
-	fi
-}
-
-#
-# If we change our temp level, we need to issue a command.  If we don't change
-# our level to a new one, no need to issue an IPMI command.
-#
-level_compare() {
-	if [ $OLD_LEVEL -eq $NEW_LEVEL ]; then
-		if [ $DEBUG -gt 0 ]; then
-			echo "Remaining in fan level $OLD_LEVEL."
-		fi
-		TIMER_MULTIPLY=$SLEEP_TIMER_MULTIPLY
-	elif [ $OLD_LEVEL -gt $NEW_LEVEL ] && [ $TIMER_MULTIPLY -gt 0 ]; then
-		if [ $DEBUG -gt 0 ]; then
-			echo "Wait $TIMER_MULTIPLY more polls before reducing fan level."
-		fi
-		TIMER_MULTIPLY=`expr $TIMER_MULTIPLY - 1`
-	else
-		level_change
-		TIMER_MULTIPLY=$SLEEP_TIMER_MULTIPLY
-	fi
-}
-
-level_change() {
-	if [ $CMD_FAN_AUTO -eq 1 ] && [ $FAN_IS_AUTO -ne 1 ]; then
-		if [ $DEBUG -gt 0 ]; then
-			echo "Commanding fan to auto mode."
-		fi
-		`$IPMI_TOOL raw 0x30 0x30 0x01 0x01`
-		FAN_IS_AUTO=1
-		CMD_FAN_AUTO=0
-	elif [ $CMD_FAN_AUTO -eq 1 ] && [ $FAN_IS_AUTO -eq 1 ]; then
-		if [ $DEBUG -gt 0 ]; then
-			echo "Fan already in auto mode."
-		fi
-		CMD_FAN_AUTO=0
-	elif [ $CMD_FAN_AUTO -eq 0 ] && [ $FAN_IS_AUTO -eq 1 ]; then
-		if [ $DEBUG -gt 0 ]; then
-			echo "Commanding fan to manual mode."
-		fi
-		`$IPMI_TOOL raw 0x30 0x30 0x01 0x00`
-		FAN_IS_AUTO=0
-		CMD_FAN_AUTO=0
-	else
-		if [ $DEBUG -gt 0 ]; then
-			echo "Fan already in manual mode."
-		fi
-	fi
-	if [ $DEBUG -gt 0 ]; then
-		echo "Changing to fan level $NEW_LEVEL."
-	fi
-	`$IPMI_TOOL $IPMI_CMD`
-	OLD_LEVEL=$NEW_LEVEL
-}
-
-
-exit_graceful() {
-        echo "Exit requested."
-        echo "Enabling iDRAC automatic fan control."
-        `$IPMI_TOOL raw 0x30 0x30 0x01 0x01`
-        exit 0
-}
-
-#
-# Begin executing the program in a continuous loop.
-#
-while true; do
-	if [ $DEBUG -gt 0 ]; then
-		echo "Start Polling..."
-	fi
-	poll_core_temp
-	poll_drive_temp
-	level_test
-	level_compare
-	if [ $DEBUG -gt 0 ]; then
-		echo "Wait $SLEEP_TIMER seconds..."
-		echo
-	fi
-	sleep $SLEEP_TIMER
-done
-
-exit 0
Index: ell/.inputrc
===================================================================
--- shell/.inputrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,23 +1,0 @@
-# https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html
-$if Bash
-set editing-mode emacs
-set keymap emacs
-set show-all-if-ambiguous on
-Tab:complete
-Meta-Tab: menu-complete
-set blink-matching-paren on
-set colored-completion-prefix on
-set colored-stats on
-set completion-display-width -1
-set completion-ignore-case on
-set completion-map-case 0
-set enable-bracketed-paste on
-set mark-symlinked-directories on
-set menu-complete-display-prefix on
-set mark-symlinked-directories on
-set completion-ignore-case on
-set enable-bracketed-paste on
-set skip-completed-text on
-set bind-tty-special-chars off
-set bell-style visible
-$endif
Index: m/.vimrc
===================================================================
--- vim/.vimrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,73 +1,0 @@
-" Initialization
-filetype plugin on
-syntax enable
-set autoindent
-
-call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged')
-Plug 'tpope/vim-fugitive'
-Plug 'tpope/vim-surround'
-Plug 'tpope/vim-dadbod'
-Plug 'qbbr/vim-symfony'
-Plug 'vim-syntastic/syntastic'
-call plug#end()
-
-" Backups
-set directory=~/.vim/backups/
-
-" Undo history
-set undofile
-set undodir=~/.vim/undo/
-
-" Display maximum char width line
-set colorcolumn=80
-
-" Syntax checker
-set statusline+=%#warningmsg#
-set statusline+=%{SyntasticStatuslineFlag()}
-set statusline+=%*
-
-let g:syntastic_always_populate_loc_list = 1
-let g:syntastic_auto_loc_list = 1
-let g:syntastic_check_on_open = 1
-let g:syntastic_check_on_wq = 0
-
-" Better command completion
-set wildmenu
-set wildmode=list:longest,full
-
-" Emacs keys in insert mode
-imap <C-p> <Up>
-imap <C-n> <Down>
-imap <C-b> <Left>
-imap <C-f> <Right>
-imap <C-a> <C-o>:call <SID>home()<CR>
-imap <C-e> <End>
-imap <C-d> <Del>
-imap <C-h> <BS>
-imap <C-k> <C-r>=<SID>kill()<CR>
-
-function! s:home()
-  let start_column = col('.')
-  normal! ^
-  if col('.') == start_column
-    normal! 0
-  endif
-  return ''
-endfunction
-
-function! s:kill()
-  let [text_before, text_after] = s:split_line()
-  if len(text_after) == 0
-    normal! J
-  else
-    call setline(line('.'), text_before)
-  endif
-  return ''
-endfunction
-
-function! s:split_line()
-  let line_text = getline(line('.'))
-  let text_after  = line_text[col('.')-1 :]
-  let text_before = (col('.') > 1) ? line_text[: col('.')-2] : ''
-  return [text_before, text_after]
-endfunction
Index: .ratpoisonrc
===================================================================
--- wm/.ratpoisonrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ 	(revision )
@@ -1,62 +1,0 @@
-# Change default ratpoison bind
-escape C-Tab
-
-# Hide the cursor on window switch
-# addhook switchwin banish
-
-# Window numbering
-set framesels 1234567890abcdefg
-
-set font "Courier:size=10"
-set winliststyle column
-set bargravity n
-defborder 0 
-set winname class
-set wingravity n
-
-# Commands to run-or-raise programs
-alias icecat exec ratpoison -c "select icecat" || exec guix shell --container --network --no-cwd --preserve='^XAUTHORITY$' --expose="${XAUTHORITY}" --preserve='^DISPLAY$' icecat -- icecat
-alias chromium exec ratpoison -c "select chromium" || exec guix shell --container --network --no-cwd --preserve='^XAUTHORITY$' --expose="${XAUTHORITY}" --preserve='^DISPLAY$' ungoogled-chromium -- chromium
-alias torbrowser exec ratpoison -c "select torbrowser" || exec guix shell --container --network --no-cwd --preserve='^XAUTHORITY$' --expose="${XAUTHORITY}" --preserve='^DISPLAY$' torbrowser -- torbrowser
-alias workrave exec ratpoison -c "select workrave" || exec workrave
-alias emacs exec ratpoison -c "select emacs" || exec emacs
-alias xterm exec ratpoison -c "select xterm" || exec xterm
-alias firefox exec ratpoison -c "select firefox" || exec flatpak run org.mozilla.firefox
-alias dbeaver exec dbeaver -c "select dbeaver" || exec flatpak run io.dbeaver.DBeaverCommunity
-alias guix exec guix
-alias shell exec guix shell --check
-alias shell-container exec guix shell --container --network --no-cwd --preserve='^XAUTHORITY$' --expose="${XAUTHORITY}" --preserve='^DISPLAY$'
-alias shell-pure exec guix shell --pure --check
-alias mpv exec mpv
-
-# Run or raise Emacs
-bind e emacs
-
-# Run or raise Nyxt
-bind B palemoon
-
-# Run or raise Icecat
-bind I icecat
-
-# Run or raise TorBrowser
-bind T torbrowser
-
-# Run or raise Chromium
-bind C chromium
-
-# Run or raise Xterm
-bind c xterm
-
-# Run or raise workrave
-bind W workrave
-
-# Emacs-like switching windows
-bind o focus
-bind O focusprev
-
-# Emacs like help
-bind h help
-bind h help
-
-definekey top XF86AudioLowerVolume exec amixer -q sset Master 3%-
-definekey top XF86AudioRaiseVolume exec amixer -q sset Master 3%+
Index: wm/.stumpwmrc
===================================================================
--- wm/.stumpwmrc	(revision f30e1cd3c795ada69723131d541c8e45210ffdce)
+++ wm/.stumpwmrc	(revision c39b1a4ec77441181684e04b57c3b58087940bc7)
@@ -1,41 +1,47 @@
-;; -*- mode: common-lisp -*-
-
 (in-package :stumpwm)
 
-(run-shell-command "xfce4-panel")
+(setq *startup-message* nil)
+(setq *startup-mode-line* t)
 
-(setq *startup-message* "Welcome to your lovely LISP-machine")
-(set-prefix-key (kbd "C-TAB"))
+(set-module-dir "~/stumpwm/contrib")
 
-(set-normal-gravity :top)
+;; Modeline Battery
+(load-module "battery-portable")
+(load-module "cpu")
+(load-module "mem")
 
+(setf *mode-line-pad-x* 8
+      *mode-line-pad-y* 1
+      *mode-line-timeout* 2
+      *window-border-style* :thin
+      *frame-number-map* "1234567890"
+      *mode-line-position* :top
+      *window-format* "%m%n%s%c"
+      *cpu-modeline-fmt* "%C"
+      *delim* " ^2::^7 "
+      *screen-mode-line-format* (list
+                                 ;; Windows
+                                 ;;"[^B%n^b]"
+                                 "^7%W ^>^7"
+                                 ;; CPU
+                                 "%C" *delim*
+                                 ;; RAM
+                                 "%M" *delim*
+                                 ;; Battery
+                                 "%B" *delim*
+                                 ;; Date
+                                 "%d"
+                                 ))
+
+;; launch Web browser
 (defcommand icecat () ()
-	    (run-or-raise "icecat" '(:class "IceCat")))
+  "Start Icecat or switch to it, if it is already running."
+  (run-or-raise "icecat" '(:class "IceCat")))
+(define-key *root-map* (kbd "B") "icecat")
 
-(defcommand firefox () ()
-	    (run-or-raise "firefox" '(:class "Firefox")))
+;; Change xterm to urxvt
+(define-key *root-map* (kbd "c") "exec urxvt")
 
-(defcommand nyxt () ()
-	    "Start Next or switch to it, if it is already running."
-	    (run-or-raise "nyxt" '(:class "nyxt")))
-	    
-(define-key *root-map* (kbd "b") "nyxt")
-
-;; launch terminal
-(defcommand xterm () ()
-  "Start Urxvt or switch to it, if it is already running."
-  (run-or-raise "xterm" '(:class "xterm")))
-
-(define-key *root-map* (kbd "c") "xterm")
-(define-key *root-map* (kbd "C") "xterm")
-
-;; Change emacs to emacsclient
-(defcommand emacsclient () ()
-  (run-or-raise "emacsclient -c -a emaces" '(:class "Emacs")))
-(defcommand emacs () ()
-  (run-or-raise "emacs" '(:class "Emacs")))
-  (define-key *root-map* (kbd "e") "emacs")
-
-;; Volume Management in thinkpad
+;; Volume Management
 (progn
   (define-key *top-map* (kbd "XF86AudioLowerVolume") "exec amixer -q sset Master 3%-")
@@ -43,24 +49,5 @@
   (define-key *top-map* (kbd "XF86AudioMute") "amixer -q sset Master toggle"))
 
-;; Printscreen
-(defcommand printscreen () ()
-	    "Works in X11 only"
-	    (message "Print screen region")
-	    (run-shell-command "import screenshot.png"))
-	    
-(define-key *top-map* (kbd "SunPrint_Screen") "printscreen")
-
-;; Enable Mode-line
-;;(enable-mode-line (current-screen) (current-head) t)
-
-;; Gaps: useless concept to be honest
-;; (load-module "swm-gaps")
-;; (setf swm-gaps:*inner-gaps-size* 0)
-;; (setf swm-gaps:*outer-gaps-size* 2)
-;; (swm-gaps:toggle-gaps)
-
-;; Show / Hide mode-line
-;; (define-key *root-map* (kbd "M") "mode-line")
-
-;; Old fix for scrolling gtk issue
-(setf (getenv "GDK_CORE_DEVICE_EVENTS") "1")
+;; Mode-line
+(progn
+  (enable-mode-line (current-screen) (current-head) t))
