update config
This commit is contained in:
parent
afcd343d0a
commit
a124a33224
44 changed files with 660 additions and 2126 deletions
374
LICENSE
374
LICENSE
|
@ -1,374 +0,0 @@
|
||||||
Mozilla Public License Version 2.0
|
|
||||||
==================================
|
|
||||||
|
|
||||||
1. Definitions
|
|
||||||
--------------
|
|
||||||
|
|
||||||
1.1. "Contributor"
|
|
||||||
means each individual or legal entity that creates, contributes to
|
|
||||||
the creation of, or owns Covered Software.
|
|
||||||
|
|
||||||
1.2. "Contributor Version"
|
|
||||||
means the combination of the Contributions of others (if any) used
|
|
||||||
by a Contributor and that particular Contributor's Contribution.
|
|
||||||
|
|
||||||
1.3. "Contribution"
|
|
||||||
means Covered Software of a particular Contributor.
|
|
||||||
|
|
||||||
1.4. "Covered Software"
|
|
||||||
means Source Code Form to which the initial Contributor has attached
|
|
||||||
the notice in Exhibit A, the Executable Form of such Source Code
|
|
||||||
Form, and Modifications of such Source Code Form, in each case
|
|
||||||
including portions thereof.
|
|
||||||
|
|
||||||
1.5. "Incompatible With Secondary Licenses"
|
|
||||||
means
|
|
||||||
|
|
||||||
(a) that the initial Contributor has attached the notice described
|
|
||||||
in Exhibit B to the Covered Software; or
|
|
||||||
|
|
||||||
(b) that the Covered Software was made available under the terms of
|
|
||||||
version 1.1 or earlier of the License, but not also under the
|
|
||||||
terms of a Secondary License.
|
|
||||||
|
|
||||||
1.6. "Executable Form"
|
|
||||||
means any form of the work other than Source Code Form.
|
|
||||||
|
|
||||||
1.7. "Larger Work"
|
|
||||||
means a work that combines Covered Software with other material, in
|
|
||||||
a separate file or files, that is not Covered Software.
|
|
||||||
|
|
||||||
1.8. "License"
|
|
||||||
means this document.
|
|
||||||
|
|
||||||
1.9. "Licensable"
|
|
||||||
means having the right to grant, to the maximum extent possible,
|
|
||||||
whether at the time of the initial grant or subsequently, any and
|
|
||||||
all of the rights conveyed by this License.
|
|
||||||
|
|
||||||
1.10. "Modifications"
|
|
||||||
means any of the following:
|
|
||||||
|
|
||||||
(a) any file in Source Code Form that results from an addition to,
|
|
||||||
deletion from, or modification of the contents of Covered
|
|
||||||
Software; or
|
|
||||||
|
|
||||||
(b) any new file in Source Code Form that contains any Covered
|
|
||||||
Software.
|
|
||||||
|
|
||||||
1.11. "Patent Claims" of a Contributor
|
|
||||||
means any patent claim(s), including without limitation, method,
|
|
||||||
process, and apparatus claims, in any patent Licensable by such
|
|
||||||
Contributor that would be infringed, but for the grant of the
|
|
||||||
License, by the making, using, selling, offering for sale, having
|
|
||||||
made, import, or transfer of either its Contributions or its
|
|
||||||
Contributor Version.
|
|
||||||
|
|
||||||
1.12. "Secondary License"
|
|
||||||
means either the GNU General Public License, Version 2.0, the GNU
|
|
||||||
Lesser General Public License, Version 2.1, the GNU Affero General
|
|
||||||
Public License, Version 3.0, or any later versions of those
|
|
||||||
licenses.
|
|
||||||
|
|
||||||
1.13. "Source Code Form"
|
|
||||||
means the form of the work preferred for making modifications.
|
|
||||||
|
|
||||||
1.14. "You" (or "Your")
|
|
||||||
means an individual or a legal entity exercising rights under this
|
|
||||||
License. For legal entities, "You" includes any entity that
|
|
||||||
controls, is controlled by, or is under common control with You. For
|
|
||||||
purposes of this definition, "control" means (a) the power, direct
|
|
||||||
or indirect, to cause the direction or management of such entity,
|
|
||||||
whether by contract or otherwise, or (b) ownership of more than
|
|
||||||
fifty percent (50%) of the outstanding shares or beneficial
|
|
||||||
ownership of such entity.
|
|
||||||
|
|
||||||
2. License Grants and Conditions
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
2.1. Grants
|
|
||||||
|
|
||||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
|
||||||
non-exclusive license:
|
|
||||||
|
|
||||||
(a) under intellectual property rights (other than patent or trademark)
|
|
||||||
Licensable by such Contributor to use, reproduce, make available,
|
|
||||||
modify, display, perform, distribute, and otherwise exploit its
|
|
||||||
Contributions, either on an unmodified basis, with Modifications, or
|
|
||||||
as part of a Larger Work; and
|
|
||||||
|
|
||||||
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
|
||||||
for sale, have made, import, and otherwise transfer either its
|
|
||||||
Contributions or its Contributor Version.
|
|
||||||
|
|
||||||
2.2. Effective Date
|
|
||||||
|
|
||||||
The licenses granted in Section 2.1 with respect to any Contribution
|
|
||||||
become effective for each Contribution on the date the Contributor first
|
|
||||||
distributes such Contribution.
|
|
||||||
|
|
||||||
2.3. Limitations on Grant Scope
|
|
||||||
|
|
||||||
The licenses granted in this Section 2 are the only rights granted under
|
|
||||||
this License. No additional rights or licenses will be implied from the
|
|
||||||
distribution or licensing of Covered Software under this License.
|
|
||||||
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
|
||||||
Contributor:
|
|
||||||
|
|
||||||
(a) for any code that a Contributor has removed from Covered Software;
|
|
||||||
or
|
|
||||||
|
|
||||||
(b) for infringements caused by: (i) Your and any other third party's
|
|
||||||
modifications of Covered Software, or (ii) the combination of its
|
|
||||||
Contributions with other software (except as part of its Contributor
|
|
||||||
Version); or
|
|
||||||
|
|
||||||
(c) under Patent Claims infringed by Covered Software in the absence of
|
|
||||||
its Contributions.
|
|
||||||
|
|
||||||
This License does not grant any rights in the trademarks, service marks,
|
|
||||||
or logos of any Contributor (except as may be necessary to comply with
|
|
||||||
the notice requirements in Section 3.4).
|
|
||||||
|
|
||||||
2.4. Subsequent Licenses
|
|
||||||
|
|
||||||
No Contributor makes additional grants as a result of Your choice to
|
|
||||||
distribute the Covered Software under a subsequent version of this
|
|
||||||
License (see Section 10.2) or under the terms of a Secondary License (if
|
|
||||||
permitted under the terms of Section 3.3).
|
|
||||||
|
|
||||||
2.5. Representation
|
|
||||||
|
|
||||||
Each Contributor represents that the Contributor believes its
|
|
||||||
Contributions are its original creation(s) or it has sufficient rights
|
|
||||||
to grant the rights to its Contributions conveyed by this License.
|
|
||||||
|
|
||||||
2.6. Fair Use
|
|
||||||
|
|
||||||
This License is not intended to limit any rights You have under
|
|
||||||
applicable copyright doctrines of fair use, fair dealing, or other
|
|
||||||
equivalents.
|
|
||||||
|
|
||||||
2.7. Conditions
|
|
||||||
|
|
||||||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
|
||||||
in Section 2.1.
|
|
||||||
|
|
||||||
3. Responsibilities
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
3.1. Distribution of Source Form
|
|
||||||
|
|
||||||
All distribution of Covered Software in Source Code Form, including any
|
|
||||||
Modifications that You create or to which You contribute, must be under
|
|
||||||
the terms of this License. You must inform recipients that the Source
|
|
||||||
Code Form of the Covered Software is governed by the terms of this
|
|
||||||
License, and how they can obtain a copy of this License. You may not
|
|
||||||
attempt to alter or restrict the recipients' rights in the Source Code
|
|
||||||
Form.
|
|
||||||
|
|
||||||
3.2. Distribution of Executable Form
|
|
||||||
|
|
||||||
If You distribute Covered Software in Executable Form then:
|
|
||||||
|
|
||||||
(a) such Covered Software must also be made available in Source Code
|
|
||||||
Form, as described in Section 3.1, and You must inform recipients of
|
|
||||||
the Executable Form how they can obtain a copy of such Source Code
|
|
||||||
Form by reasonable means in a timely manner, at a charge no more
|
|
||||||
than the cost of distribution to the recipient; and
|
|
||||||
|
|
||||||
(b) You may distribute such Executable Form under the terms of this
|
|
||||||
License, or sublicense it under different terms, provided that the
|
|
||||||
license for the Executable Form does not attempt to limit or alter
|
|
||||||
the recipients' rights in the Source Code Form under this License.
|
|
||||||
|
|
||||||
3.3. Distribution of a Larger Work
|
|
||||||
|
|
||||||
You may create and distribute a Larger Work under terms of Your choice,
|
|
||||||
provided that You also comply with the requirements of this License for
|
|
||||||
the Covered Software. If the Larger Work is a combination of Covered
|
|
||||||
Software with a work governed by one or more Secondary Licenses, and the
|
|
||||||
Covered Software is not Incompatible With Secondary Licenses, this
|
|
||||||
License permits You to additionally distribute such Covered Software
|
|
||||||
under the terms of such Secondary License(s), so that the recipient of
|
|
||||||
the Larger Work may, at their option, further distribute the Covered
|
|
||||||
Software under the terms of either this License or such Secondary
|
|
||||||
License(s).
|
|
||||||
|
|
||||||
3.4. Notices
|
|
||||||
|
|
||||||
You may not remove or alter the substance of any license notices
|
|
||||||
(including copyright notices, patent notices, disclaimers of warranty,
|
|
||||||
or limitations of liability) contained within the Source Code Form of
|
|
||||||
the Covered Software, except that You may alter any license notices to
|
|
||||||
the extent required to remedy known factual inaccuracies.
|
|
||||||
|
|
||||||
3.5. Application of Additional Terms
|
|
||||||
|
|
||||||
You may choose to offer, and to charge a fee for, warranty, support,
|
|
||||||
indemnity or liability obligations to one or more recipients of Covered
|
|
||||||
Software. However, You may do so only on Your own behalf, and not on
|
|
||||||
behalf of any Contributor. You must make it absolutely clear that any
|
|
||||||
such warranty, support, indemnity, or liability obligation is offered by
|
|
||||||
You alone, and You hereby agree to indemnify every Contributor for any
|
|
||||||
liability incurred by such Contributor as a result of warranty, support,
|
|
||||||
indemnity or liability terms You offer. You may include additional
|
|
||||||
disclaimers of warranty and limitations of liability specific to any
|
|
||||||
jurisdiction.
|
|
||||||
|
|
||||||
4. Inability to Comply Due to Statute or Regulation
|
|
||||||
---------------------------------------------------
|
|
||||||
|
|
||||||
If it is impossible for You to comply with any of the terms of this
|
|
||||||
License with respect to some or all of the Covered Software due to
|
|
||||||
statute, judicial order, or regulation then You must: (a) comply with
|
|
||||||
the terms of this License to the maximum extent possible; and (b)
|
|
||||||
describe the limitations and the code they affect. Such description must
|
|
||||||
be placed in a text file included with all distributions of the Covered
|
|
||||||
Software under this License. Except to the extent prohibited by statute
|
|
||||||
or regulation, such description must be sufficiently detailed for a
|
|
||||||
recipient of ordinary skill to be able to understand it.
|
|
||||||
|
|
||||||
5. Termination
|
|
||||||
--------------
|
|
||||||
|
|
||||||
5.1. The rights granted under this License will terminate automatically
|
|
||||||
if You fail to comply with any of its terms. However, if You become
|
|
||||||
compliant, then the rights granted under this License from a particular
|
|
||||||
Contributor are reinstated (a) provisionally, unless and until such
|
|
||||||
Contributor explicitly and finally terminates Your grants, and (b) on an
|
|
||||||
ongoing basis, if such Contributor fails to notify You of the
|
|
||||||
non-compliance by some reasonable means prior to 60 days after You have
|
|
||||||
come back into compliance. Moreover, Your grants from a particular
|
|
||||||
Contributor are reinstated on an ongoing basis if such Contributor
|
|
||||||
notifies You of the non-compliance by some reasonable means, this is the
|
|
||||||
first time You have received notice of non-compliance with this License
|
|
||||||
from such Contributor, and You become compliant prior to 30 days after
|
|
||||||
Your receipt of the notice.
|
|
||||||
|
|
||||||
5.2. If You initiate litigation against any entity by asserting a patent
|
|
||||||
infringement claim (excluding declaratory judgment actions,
|
|
||||||
counter-claims, and cross-claims) alleging that a Contributor Version
|
|
||||||
directly or indirectly infringes any patent, then the rights granted to
|
|
||||||
You by any and all Contributors for the Covered Software under Section
|
|
||||||
2.1 of this License shall terminate.
|
|
||||||
|
|
||||||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
|
||||||
end user license agreements (excluding distributors and resellers) which
|
|
||||||
have been validly granted by You or Your distributors under this License
|
|
||||||
prior to termination shall survive termination.
|
|
||||||
|
|
||||||
************************************************************************
|
|
||||||
* *
|
|
||||||
* 6. Disclaimer of Warranty *
|
|
||||||
* ------------------------- *
|
|
||||||
* *
|
|
||||||
* Covered Software is provided under this License on an "as is" *
|
|
||||||
* basis, without warranty of any kind, either expressed, implied, or *
|
|
||||||
* statutory, including, without limitation, warranties that the *
|
|
||||||
* Covered Software is free of defects, merchantable, fit for a *
|
|
||||||
* particular purpose or non-infringing. The entire risk as to the *
|
|
||||||
* quality and performance of the Covered Software is with You. *
|
|
||||||
* Should any Covered Software prove defective in any respect, You *
|
|
||||||
* (not any Contributor) assume the cost of any necessary servicing, *
|
|
||||||
* repair, or correction. This disclaimer of warranty constitutes an *
|
|
||||||
* essential part of this License. No use of any Covered Software is *
|
|
||||||
* authorized under this License except under this disclaimer. *
|
|
||||||
* *
|
|
||||||
************************************************************************
|
|
||||||
|
|
||||||
************************************************************************
|
|
||||||
* *
|
|
||||||
* 7. Limitation of Liability *
|
|
||||||
* -------------------------- *
|
|
||||||
* *
|
|
||||||
* Under no circumstances and under no legal theory, whether tort *
|
|
||||||
* (including negligence), contract, or otherwise, shall any *
|
|
||||||
* Contributor, or anyone who distributes Covered Software as *
|
|
||||||
* permitted above, be liable to You for any direct, indirect, *
|
|
||||||
* special, incidental, or consequential damages of any character *
|
|
||||||
* including, without limitation, damages for lost profits, loss of *
|
|
||||||
* goodwill, work stoppage, computer failure or malfunction, or any *
|
|
||||||
* and all other commercial damages or losses, even if such party *
|
|
||||||
* shall have been informed of the possibility of such damages. This *
|
|
||||||
* limitation of liability shall not apply to liability for death or *
|
|
||||||
* personal injury resulting from such party's negligence to the *
|
|
||||||
* extent applicable law prohibits such limitation. Some *
|
|
||||||
* jurisdictions do not allow the exclusion or limitation of *
|
|
||||||
* incidental or consequential damages, so this exclusion and *
|
|
||||||
* limitation may not apply to You. *
|
|
||||||
* *
|
|
||||||
************************************************************************
|
|
||||||
|
|
||||||
8. Litigation
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Any litigation relating to this License may be brought only in the
|
|
||||||
courts of a jurisdiction where the defendant maintains its principal
|
|
||||||
place of business and such litigation shall be governed by laws of that
|
|
||||||
jurisdiction, without reference to its conflict-of-law provisions.
|
|
||||||
Nothing in this Section shall prevent a party's ability to bring
|
|
||||||
cross-claims or counter-claims.
|
|
||||||
|
|
||||||
9. Miscellaneous
|
|
||||||
----------------
|
|
||||||
|
|
||||||
This License represents the complete agreement concerning the subject
|
|
||||||
matter hereof. If any provision of this License is held to be
|
|
||||||
unenforceable, such provision shall be reformed only to the extent
|
|
||||||
necessary to make it enforceable. Any law or regulation which provides
|
|
||||||
that the language of a contract shall be construed against the drafter
|
|
||||||
shall not be used to construe this License against a Contributor.
|
|
||||||
|
|
||||||
10. Versions of the License
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
10.1. New Versions
|
|
||||||
|
|
||||||
Mozilla Foundation is the license steward. Except as provided in Section
|
|
||||||
10.3, no one other than the license steward has the right to modify or
|
|
||||||
publish new versions of this License. Each version will be given a
|
|
||||||
distinguishing version number.
|
|
||||||
|
|
||||||
10.2. Effect of New Versions
|
|
||||||
|
|
||||||
You may distribute the Covered Software under the terms of the version
|
|
||||||
of the License under which You originally received the Covered Software,
|
|
||||||
or under the terms of any subsequent version published by the license
|
|
||||||
steward.
|
|
||||||
|
|
||||||
10.3. Modified Versions
|
|
||||||
|
|
||||||
If you create software not governed by this License, and you want to
|
|
||||||
create a new license for such software, you may create and use a
|
|
||||||
modified version of this License if you rename the license and remove
|
|
||||||
any references to the name of the license steward (except to note that
|
|
||||||
such modified license differs from this License).
|
|
||||||
|
|
||||||
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
|
||||||
Licenses
|
|
||||||
|
|
||||||
If You choose to distribute Source Code Form that is Incompatible With
|
|
||||||
Secondary Licenses under the terms of this version of the License, the
|
|
||||||
notice described in Exhibit B of this License must be attached.
|
|
||||||
|
|
||||||
Exhibit A - Source Code Form License Notice
|
|
||||||
-------------------------------------------
|
|
||||||
|
|
||||||
This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
|
|
||||||
If it is not possible or desirable to put the notice in a particular
|
|
||||||
file, then You may include the notice in a location (such as a LICENSE
|
|
||||||
file in a relevant directory) where a recipient would be likely to look
|
|
||||||
for such a notice.
|
|
||||||
|
|
||||||
You may add additional accurate notices of copyright ownership.
|
|
||||||
|
|
||||||
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
|
||||||
---------------------------------------------------------
|
|
||||||
|
|
||||||
This Source Code Form is "Incompatible With Secondary Licenses", as
|
|
||||||
defined by the Mozilla Public License, v. 2.0.
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
# dotfiles
|
|
|
@ -1,42 +0,0 @@
|
||||||
{nixos-hardware, ...}: let
|
|
||||||
password = "$y$j9T$g/a4KaQ5VitWI9ZtAh9i3/$wjejk5W8LMc0gaVgw69kwrKLqBgZ95ekaOl/GaTOZVC";
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
nixos-hardware.nixosModules.lenovo-thinkpad-x270
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Don't change!
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
home-manager.users.buffet.home.stateVersion = "23.05";
|
|
||||||
|
|
||||||
users.users.buffet.hashedPassword = password;
|
|
||||||
users.users.root.hashedPassword = password;
|
|
||||||
|
|
||||||
networking.hostName = "alice";
|
|
||||||
|
|
||||||
services = {
|
|
||||||
tlp = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
START_CHARGE_THRESH_BAT0 = 40;
|
|
||||||
STOP_CHARGE_THRESH_BAT0 = 60;
|
|
||||||
|
|
||||||
START_CHARGE_THRESH_BAT1 = 40;
|
|
||||||
STOP_CHARGE_THRESH_BAT1 = 60;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keyd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
"102nd" = "layer(shift)"; # < as shift
|
|
||||||
"enter" = "\\";
|
|
||||||
"\\" = "enter";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
159
common.nix
159
common.nix
|
@ -1,159 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
imports = [
|
|
||||||
./programs/bash.nix
|
|
||||||
./programs/borg.nix
|
|
||||||
./programs/cargo.nix
|
|
||||||
./programs/firefox.nix
|
|
||||||
./programs/foot.nix
|
|
||||||
./programs/git.nix
|
|
||||||
./programs/gpg.nix
|
|
||||||
./programs/ime.nix
|
|
||||||
./programs/keyd.nix
|
|
||||||
./programs/lsd.nix
|
|
||||||
./programs/mako.nix
|
|
||||||
./programs/newsboat.nix
|
|
||||||
./programs/nvim.nix
|
|
||||||
./programs/pipewire.nix
|
|
||||||
./programs/sbcl.nix
|
|
||||||
./programs/sioyek.nix
|
|
||||||
./programs/sway.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
gitFull
|
|
||||||
neovim
|
|
||||||
];
|
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [
|
|
||||||
apl386
|
|
||||||
dejavu_fonts
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
home = {
|
|
||||||
sessionVariables = {
|
|
||||||
ANKI_WAYLAND = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
packages = with pkgs; [
|
|
||||||
unstable.anki
|
|
||||||
|
|
||||||
SDL2
|
|
||||||
SDL2.dev
|
|
||||||
alejandra
|
|
||||||
bear
|
|
||||||
black
|
|
||||||
c2ffi
|
|
||||||
cage
|
|
||||||
cairo
|
|
||||||
chromium
|
|
||||||
ed
|
|
||||||
gcc
|
|
||||||
gnumake
|
|
||||||
mpv
|
|
||||||
python3
|
|
||||||
|
|
||||||
cargo
|
|
||||||
cargo-crev
|
|
||||||
cargo-limit
|
|
||||||
mosh
|
|
||||||
cargo-nextest
|
|
||||||
du-dust
|
|
||||||
fd
|
|
||||||
gdb
|
|
||||||
github-cli
|
|
||||||
htop
|
|
||||||
hyperfine
|
|
||||||
jq
|
|
||||||
kcachegrind
|
|
||||||
linuxPackages.perf
|
|
||||||
man-pages
|
|
||||||
man-pages-posix
|
|
||||||
okular
|
|
||||||
pavucontrol
|
|
||||||
radare2
|
|
||||||
ripgrep
|
|
||||||
rr
|
|
||||||
rustfmt
|
|
||||||
strace
|
|
||||||
tokei
|
|
||||||
trash-cli
|
|
||||||
tree
|
|
||||||
valgrind
|
|
||||||
wget
|
|
||||||
wl-clipboard
|
|
||||||
|
|
||||||
(luajit.withPackages (ps:
|
|
||||||
with ps; [
|
|
||||||
fennel
|
|
||||||
inspect
|
|
||||||
luv
|
|
||||||
]))
|
|
||||||
|
|
||||||
(retroarch.override {
|
|
||||||
cores = with libretro; [
|
|
||||||
genesis-plus-gx
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
pointerCursor = {
|
|
||||||
package = pkgs.phinger-cursors;
|
|
||||||
name = "phinger-cursors-light";
|
|
||||||
gtk.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.buffet = {
|
|
||||||
isNormalUser = true;
|
|
||||||
uid = 1000;
|
|
||||||
extraGroups = [
|
|
||||||
"docker"
|
|
||||||
"networkmanager"
|
|
||||||
"sway"
|
|
||||||
"uinput"
|
|
||||||
"wheel"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.coredump.enable = true;
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
bluetooth.enable = true;
|
|
||||||
uinput.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation = {
|
|
||||||
docker.enable = true;
|
|
||||||
libvirtd.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
powerManagement = {
|
|
||||||
enable = true;
|
|
||||||
powertop.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
earlyoom = {
|
|
||||||
enable = true;
|
|
||||||
enableNotifications = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
mullvad-vpn = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mullvad-vpn; # enable gui
|
|
||||||
};
|
|
||||||
|
|
||||||
systembus-notify.enable = true;
|
|
||||||
upower.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
password = "$6$FHwMlUwmRdAsPqS4$4XND0L0EEVf2Mhc/tvo6y3ZLIrMTOlsIZrG3w69EeXvtVZhdeNyoDOkPNIe.GBB8.PrchuUKDacqbvcvyuPkt0";
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Don't change!
|
|
||||||
system.stateVersion = "22.05";
|
|
||||||
home-manager.users.buffet.home.stateVersion = "22.05";
|
|
||||||
|
|
||||||
users.users.buffet.hashedPassword = password;
|
|
||||||
users.users.root.hashedPassword = password;
|
|
||||||
|
|
||||||
networking.hostName = "fanya";
|
|
||||||
|
|
||||||
services.tlp.enable = true;
|
|
||||||
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
programs.foot = let
|
|
||||||
theme = import ../theme.nix;
|
|
||||||
in {
|
|
||||||
settings.main.font = lib.mkForce "${theme.font.family}:size=${toString (theme.font.size - 1)}";
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.sway = {
|
|
||||||
config.gaps.inner = lib.mkForce 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/d2c87f01-cdb7-4871-ae9d-c3a843e1199d";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/old" = {
|
|
||||||
device = "/dev/disk/by-uuid/d2c87f01-cdb7-4871-ae9d-c3a843e1199d";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@old"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/persist" = {
|
|
||||||
device = "/dev/disk/by-uuid/d2c87f01-cdb7-4871-ae9d-c3a843e1199d";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@persist"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/nix" = {
|
|
||||||
device = "/dev/disk/by-uuid/d2c87f01-cdb7-4871-ae9d-c3a843e1199d";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@nix"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/29E0-A9D9";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [
|
|
||||||
{device = "/dev/disk/by-uuid/c7344d44-0e66-461d-ba99-a177a8efe982";}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp0s25.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
305
flake.lock
305
flake.lock
|
@ -4,16 +4,15 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs"
|
"systems": "systems"
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1690228878,
|
"lastModified": 1703433843,
|
||||||
"narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=",
|
"narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "d8c973fd228949736dedf61b7f8cc1ece3236792",
|
"rev": "417caa847f9383e111d1397039c9d4337d024bf0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -22,86 +21,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"apl386": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1646646198,
|
|
||||||
"narHash": "sha256-oHk4e7NRgAjGtZzQmZToYz7wCZETaj7/yRwZMeeYF2M=",
|
|
||||||
"owner": "abrudz",
|
|
||||||
"repo": "APL386",
|
|
||||||
"rev": "6332c9dbb588946a0e8c9d7984dd0c003eeea266",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "abrudz",
|
|
||||||
"repo": "APL386",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cmp-conventionalcommits": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1665962366,
|
|
||||||
"narHash": "sha256-PAEWX0U8qbBwC3DqfCrDDlTLoIRIlcbwS1eDu3yarTc=",
|
|
||||||
"owner": "davidsierradz",
|
|
||||||
"repo": "cmp-conventionalcommits",
|
|
||||||
"rev": "a4dfacf0601130b7f8afa7c948d735c27802fb7f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "davidsierradz",
|
|
||||||
"repo": "cmp-conventionalcommits",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cmp-git": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685409535,
|
|
||||||
"narHash": "sha256-McIYDGXu+tSaY/U6eu1XouSHto/mSpJ/i4Z4UKYa+mk=",
|
|
||||||
"owner": "petertriho",
|
|
||||||
"repo": "cmp-git",
|
|
||||||
"rev": "f900a4cf117300fdc3ba31d26f8b6223ccd9c574",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "petertriho",
|
|
||||||
"repo": "cmp-git",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"copilot-cmp": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1683831407,
|
|
||||||
"narHash": "sha256-+MzEGnhlrYRvAfskOwmw69OC1CsPXt7s3z+xPe9XPqs=",
|
|
||||||
"owner": "zbirenbaum",
|
|
||||||
"repo": "copilot-cmp",
|
|
||||||
"rev": "c2cdb3c0f5078b0619055af192295830a7987790",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "zbirenbaum",
|
|
||||||
"repo": "copilot-cmp",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"copilot-lua": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1691165896,
|
|
||||||
"narHash": "sha256-lAj7LKVbxTnLUpjJeuPTT3JBo1LQJWffiZmTyU+Y5uw=",
|
|
||||||
"owner": "zbirenbaum",
|
|
||||||
"repo": "copilot.lua",
|
|
||||||
"rev": "f306957de0f9730de4298bb1ea85c3735ef7cc43",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "zbirenbaum",
|
|
||||||
"repo": "copilot.lua",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -110,11 +29,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673295039,
|
"lastModified": 1700795494,
|
||||||
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -124,38 +43,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fennel-ls": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1689863239,
|
|
||||||
"narHash": "sha256-xPTgGmeILJSNsC++r9x+ussS7ttG7a5Cgl/D02auTgE=",
|
|
||||||
"owner": "~xerool",
|
|
||||||
"repo": "fennel-ls",
|
|
||||||
"rev": "e7c642e12a15c6d452559414ee1890b30f4e8406",
|
|
||||||
"type": "sourcehut"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "~xerool",
|
|
||||||
"repo": "fennel-ls",
|
|
||||||
"type": "sourcehut"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gh-nvim": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1682521998,
|
|
||||||
"narHash": "sha256-R+vzppfF3AAAGAUdH1kEPpX7XjHowBlilWNJfHyzZ10=",
|
|
||||||
"owner": "ldelossa",
|
|
||||||
"repo": "gh.nvim",
|
|
||||||
"rev": "2b5551656c1b896bf4ae06546eaaab00311f9a18",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ldelossa",
|
|
||||||
"repo": "gh.nvim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -164,11 +51,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682203081,
|
"lastModified": 1703113217,
|
||||||
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
|
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
|
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -184,42 +71,27 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1687871164,
|
"lastModified": 1705273357,
|
||||||
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
|
"narHash": "sha256-JAlkxgJbWh7+auiT0rJL3IUXXtkULRqygfxQA6mvLgc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
|
"rev": "924d91e1e4c802fd8e60279a022dbae5acb36f2d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-23.05",
|
"ref": "release-23.11",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"impermanence": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1690797372,
|
|
||||||
"narHash": "sha256-GImz19e33SeVcIvBB7NnhbJSbTpFFmNtWLh7Z85Y188=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"rev": "e3a7acd113903269a1b5c8b527e84ce7ee859851",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1691305349,
|
"lastModified": 1705312285,
|
||||||
"narHash": "sha256-0Pig7jnmuRH3c5dOTVTOvTLwo2CRzYTyvJRQ82HWRSo=",
|
"narHash": "sha256-rd+dY+v61Y8w3u9bukO/hB55Xl4wXv4/yC8rCGVnK5U=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "5426a95071d0b9782b3209b3995cde1f5689616e",
|
"rev": "bee2202bec57e521e3bd8acd526884b9767d7fa0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -230,27 +102,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1691328192,
|
"lastModified": 1703013332,
|
||||||
"narHash": "sha256-w59N1zyDQ7SupfMJLFvtms/SIVbdryqlw5AS4+DiH+Y=",
|
"narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "61676e4dcfeeb058f255294bcb08ea7f3bc3ce56",
|
"rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-23.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-unstable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1691368598,
|
|
||||||
"narHash": "sha256-ia7li22keBBbj02tEdqjVeLtc7ZlSBuhUk+7XTUFr14=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "5a8e9243812ba528000995b294292d3b5e120947",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -260,104 +116,75 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1691426742,
|
"lastModified": 1705133751,
|
||||||
"narHash": "sha256-NNyk6xL6E8lAI1wQ3ErzC4s+BOypXAZ+qPcyKNScxUQ=",
|
"narHash": "sha256-rCIsyE80jgiOU78gCWN3A0wE0tR2GI5nH6MlS+HaaSQ=",
|
||||||
"owner": "nix-community",
|
"owner": "NixOS",
|
||||||
"repo": "NUR",
|
"repo": "nixpkgs",
|
||||||
"rev": "33fc23d321725093266f69e0f948a27adf02c0b8",
|
"rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "NixOS",
|
||||||
"repo": "NUR",
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nvim-cmp-vlime": {
|
"nixpkgs_2": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1672313103,
|
"lastModified": 1705183652,
|
||||||
"narHash": "sha256-ejjJWNGjx28viKz8tsaifCkJ9HHYAOkbOZAdlR8gQJo=",
|
"narHash": "sha256-rnfkyUH0x72oHfiSDhuCHDHg3gFgF+lF8zkkg5Zihsw=",
|
||||||
"owner": "HiPhish",
|
"owner": "NixOS",
|
||||||
"repo": "nvim-cmp-vlime",
|
"repo": "nixpkgs",
|
||||||
"rev": "5bc7fa02f255f6faed0ba5fda5f4883b46a66676",
|
"rev": "428544ae95eec077c7f823b422afae5f174dee4b",
|
||||||
"type": "gitlab"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "HiPhish",
|
"owner": "NixOS",
|
||||||
"repo": "nvim-cmp-vlime",
|
"ref": "nixos-23.11",
|
||||||
"type": "gitlab"
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705351485,
|
||||||
|
"narHash": "sha256-K3WLvgyMoL4FOU4iUS2nREWz7xzA0WGEN9ETcrB0zAg=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"rev": "ec97b3e21ab3140eee5c53ad40f4802769d7c5a5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"apl386": "apl386",
|
|
||||||
"cmp-conventionalcommits": "cmp-conventionalcommits",
|
|
||||||
"cmp-git": "cmp-git",
|
|
||||||
"copilot-cmp": "copilot-cmp",
|
|
||||||
"copilot-lua": "copilot-lua",
|
|
||||||
"fennel-ls": "fennel-ls",
|
|
||||||
"gh-nvim": "gh-nvim",
|
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"impermanence": "impermanence",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nur": "nur",
|
"nur": "nur"
|
||||||
"nvim-cmp-vlime": "nvim-cmp-vlime",
|
|
||||||
"rust-tools-nvim": "rust-tools-nvim",
|
|
||||||
"vim-hy": "vim-hy",
|
|
||||||
"vlime": "vlime"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-tools-nvim": {
|
"systems": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689033186,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-jtfyDxifchznUupLSao6nmpVqaX1yO0xN+NhqS9fgxg=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"owner": "simrat39",
|
"owner": "nix-systems",
|
||||||
"repo": "rust-tools.nvim",
|
"repo": "default",
|
||||||
"rev": "0cc8adab23117783a0292a0c8a2fbed1005dc645",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "simrat39",
|
"owner": "nix-systems",
|
||||||
"repo": "rust-tools.nvim",
|
"repo": "default",
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vim-hy": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1688564453,
|
|
||||||
"narHash": "sha256-FwVWUxC4T0qCz/4XgBv8BsUsD+nsOb9g2hQXqVGlQuA=",
|
|
||||||
"owner": "hylang",
|
|
||||||
"repo": "vim-hy",
|
|
||||||
"rev": "dbd001668db9deae19a8f631a38a9d96ef441c27",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hylang",
|
|
||||||
"repo": "vim-hy",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vlime": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1688286786,
|
|
||||||
"narHash": "sha256-t96BZl2qEnFYPnXnVNRUUI2vICdz/0lnnmw+LT0PzLU=",
|
|
||||||
"owner": "vlime",
|
|
||||||
"repo": "vlime",
|
|
||||||
"rev": "c1ac16c1a50bec4c30da87cd4ce2af12e26fb022",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "vlime",
|
|
||||||
"repo": "vlime",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
92
flake.nix
92
flake.nix
|
@ -1,110 +1,34 @@
|
||||||
|
# TODO: encryption
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
agenix.url = "github:ryantm/agenix";
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
|
|
||||||
agenix = {
|
|
||||||
url = "github:ryantm/agenix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
apl386 = {
|
|
||||||
url = "github:abrudz/APL386";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
cmp-conventionalcommits = {
|
|
||||||
url = "github:davidsierradz/cmp-conventionalcommits";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
cmp-git = {
|
|
||||||
url = "github:petertriho/cmp-git";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
copilot-cmp = {
|
|
||||||
url = "github:zbirenbaum/copilot-cmp";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
copilot-lua = {
|
|
||||||
url = "github:zbirenbaum/copilot.lua";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
fennel-ls = {
|
|
||||||
url = "sourcehut:~xerool/fennel-ls";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
gh-nvim = {
|
|
||||||
url = "github:ldelossa/gh.nvim";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-23.05";
|
url = "github:nix-community/home-manager/release-23.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
nvim-cmp-vlime = {
|
|
||||||
url = "gitlab:HiPhish/nvim-cmp-vlime";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# work around for nixpkgs version being too old
|
|
||||||
rust-tools-nvim = {
|
|
||||||
url = "github:simrat39/rust-tools.nvim";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
vim-hy = {
|
|
||||||
url = "github:hylang/vim-hy";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
vlime = {
|
|
||||||
url = "github:vlime/vlime";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
agenix,
|
|
||||||
home-manager,
|
|
||||||
nur,
|
|
||||||
nixpkgs-unstable,
|
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
nixpkgs-unstable,
|
||||||
...
|
...
|
||||||
} @ args: {
|
} @ args: {
|
||||||
nixosConfigurations = let
|
nixosConfigurations.alice = nixpkgs.lib.nixosSystem {
|
||||||
mkSystem = system: module:
|
system = "x86_64-linux";
|
||||||
nixpkgs.lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = args;
|
specialArgs = args;
|
||||||
modules = let
|
modules = let
|
||||||
overlay-unstable = final: prev: {
|
overlay-unstable = final: prev: {
|
||||||
unstable = nixpkgs-unstable.legacyPackages.${prev.system};
|
unstable = nixpkgs-unstable.legacyPackages.${prev.system};
|
||||||
};
|
};
|
||||||
in [
|
in [
|
||||||
module
|
./hosts/alice
|
||||||
|
|
||||||
agenix.nixosModules.default
|
|
||||||
home-manager.nixosModule
|
|
||||||
nur.nixosModules.nur
|
|
||||||
./common.nix
|
|
||||||
./impermanence.nix
|
|
||||||
./system.nix
|
|
||||||
(_: {nixpkgs.overlays = [(import ./overlay args) overlay-unstable];})
|
(_: {nixpkgs.overlays = [(import ./overlay args) overlay-unstable];})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
|
||||||
alice = mkSystem "x86_64-linux" ./alice;
|
|
||||||
fanya = mkSystem "x86_64-linux" ./fanya;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
}: let
|
}: let
|
||||||
host = "11967@prio.ch-s011.rsync.net";
|
host = "11967@prio.ch-s011.rsync.net";
|
||||||
in {
|
in {
|
||||||
age.secrets.borgpassword.file = ../secrets/borgpassword.age;
|
age.secrets.borgpassword.file = ../../secrets/borgpassword.age;
|
||||||
|
|
||||||
services.borgbackup = {
|
services.borgbackup = {
|
||||||
jobs.backup = {
|
jobs.backup = {
|
60
hosts/alice/default.nix
Normal file
60
hosts/alice/default.nix
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
agenix,
|
||||||
|
home-manager,
|
||||||
|
nixos-hardware,
|
||||||
|
nur,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./system.nix
|
||||||
|
agenix.nixosModules.default
|
||||||
|
home-manager.nixosModule
|
||||||
|
nur.nixosModules.nur
|
||||||
|
|
||||||
|
./borg.nix
|
||||||
|
./earlyoom.nix
|
||||||
|
./gpg.nix
|
||||||
|
./keyd.nix
|
||||||
|
./pipewire.nix
|
||||||
|
./sway.nix
|
||||||
|
./tlp.nix
|
||||||
|
|
||||||
|
../../users/buffet
|
||||||
|
];
|
||||||
|
|
||||||
|
# TODO: find out why this is required
|
||||||
|
age.identityPaths = ["/home/buffet/.ssh/id_agenix"];
|
||||||
|
networking.hostName = "alice";
|
||||||
|
users.users.root.hashedPassword = "*";
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gitFull
|
||||||
|
neovim
|
||||||
|
];
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
apl386
|
||||||
|
dejavu_fonts
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk
|
||||||
|
];
|
||||||
|
|
||||||
|
powerManagement.enable = true;
|
||||||
|
systemd.coredump.enable = true;
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
uinput.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
upower.enable = true;
|
||||||
|
|
||||||
|
mullvad-vpn = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.mullvad-vpn; # enable gui
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
10
hosts/alice/earlyoom.nix
Normal file
10
hosts/alice/earlyoom.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
_: {
|
||||||
|
services = {
|
||||||
|
systembus-notify.enable = true;
|
||||||
|
|
||||||
|
earlyoom = {
|
||||||
|
enable = true;
|
||||||
|
enableNotifications = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
hosts/alice/gpg.nix
Normal file
7
hosts/alice/gpg.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
_: {
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
pinentryFlavor = "gnome3";
|
||||||
|
};
|
||||||
|
}
|
|
@ -23,7 +23,7 @@
|
||||||
options = ["subvol=@"];
|
options = ["subvol=@"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/persist" = {
|
fileSystems."/home" = {
|
||||||
device = "/dev/disk/by-uuid/ad5a4aba-eb04-45e7-874e-375e7a9e4ea0";
|
device = "/dev/disk/by-uuid/ad5a4aba-eb04-45e7-874e-375e7a9e4ea0";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@persist"];
|
options = ["subvol=@persist"];
|
||||||
|
@ -40,12 +40,6 @@
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/old" = {
|
|
||||||
device = "/dev/disk/by-uuid/ad5a4aba-eb04-45e7-874e-375e7a9e4ea0";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@old"];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{device = "/dev/disk/by-uuid/2df05abc-60cb-4269-86ae-7c16a4a05369";}
|
{device = "/dev/disk/by-uuid/2df05abc-60cb-4269-86ae-7c16a4a05369";}
|
||||||
];
|
];
|
11
hosts/alice/keyd.nix
Normal file
11
hosts/alice/keyd.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
_: {
|
||||||
|
services.keyd = {
|
||||||
|
enable = true;
|
||||||
|
keyboards.default.settings = {
|
||||||
|
main = {
|
||||||
|
"capslock" = "overload(control, esc)";
|
||||||
|
"esc" = "capslock";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
_: {
|
_: {
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
11
hosts/alice/sway.nix
Normal file
11
hosts/alice/sway.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs.sway.enable = true;
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
wlr.enable = true;
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,8 +1,15 @@
|
||||||
{
|
{
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
nixpkgs-unstable,
|
nixpkgs-unstable,
|
||||||
|
nixos-hardware,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
imports = [
|
||||||
|
nixos-hardware.nixosModules.lenovo-thinkpad-x270
|
||||||
|
];
|
||||||
|
|
||||||
|
system.stateVersion = "23.11";
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
time.timeZone = "Europe/Berlin";
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
@ -13,8 +20,8 @@
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/".options = ["compress=zstd"];
|
"/".options = ["compress=zstd"];
|
||||||
|
"/home".options = ["compress=zstd"];
|
||||||
"/nix".options = ["compress=zstd" "noatime"];
|
"/nix".options = ["compress=zstd" "noatime"];
|
||||||
"/persist".options = ["compress=zstd"];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
@ -27,6 +34,7 @@
|
||||||
nixpkgs.flake = nixpkgs;
|
nixpkgs.flake = nixpkgs;
|
||||||
nixpkgs-unstable.flake = nixpkgs-unstable;
|
nixpkgs-unstable.flake = nixpkgs-unstable;
|
||||||
};
|
};
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
trusted-users = ["root" "buffet"];
|
trusted-users = ["root" "buffet"];
|
18
hosts/alice/tlp.nix
Normal file
18
hosts/alice/tlp.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
_: {
|
||||||
|
services = {
|
||||||
|
tlp = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = let
|
||||||
|
start_charge = 40;
|
||||||
|
stop_charge = 60;
|
||||||
|
in {
|
||||||
|
START_CHARGE_THRESH_BAT0 = start_charge;
|
||||||
|
STOP_CHARGE_THRESH_BAT0 = stop_charge;
|
||||||
|
|
||||||
|
START_CHARGE_THRESH_BAT1 = start_charge;
|
||||||
|
STOP_CHARGE_THRESH_BAT1 = stop_charge;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,83 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
impermanence,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
"${impermanence}/nixos.nix"
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.persistence."/persist/system" = {
|
|
||||||
directories = [
|
|
||||||
"/etc/NetworkManager/system-connections"
|
|
||||||
"/etc/nixos"
|
|
||||||
"/root/.ssh"
|
|
||||||
"/srv"
|
|
||||||
"/var/lib/bluetooth"
|
|
||||||
"/var/lib/docker"
|
|
||||||
"/var/lib/machines"
|
|
||||||
"/var/lib/portables"
|
|
||||||
"/var/log"
|
|
||||||
];
|
|
||||||
|
|
||||||
files = [];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.fuse.userAllowOther = true; # required for allowOther
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
imports = [
|
|
||||||
"${impermanence}/home-manager.nix"
|
|
||||||
];
|
|
||||||
|
|
||||||
home.persistence."/persist/buffet" = {
|
|
||||||
removePrefixDirectory = true;
|
|
||||||
allowOther = true;
|
|
||||||
|
|
||||||
directories = [
|
|
||||||
"anki/.local/share/Anki"
|
|
||||||
"anki/.local/share/Anki2"
|
|
||||||
"crev/.local/share/crev"
|
|
||||||
"data/books"
|
|
||||||
"data/docs"
|
|
||||||
"data/git"
|
|
||||||
"data/proj"
|
|
||||||
"data/reminders"
|
|
||||||
"data/rice"
|
|
||||||
"data/uni"
|
|
||||||
"direnv/.local/share/direnv"
|
|
||||||
"firefox/.cache/mozilla"
|
|
||||||
"firefox/.mozilla"
|
|
||||||
"gpg/.gnupg"
|
|
||||||
"newsboat/.local/share/newsboat"
|
|
||||||
"ssh/.ssh"
|
|
||||||
"trash/.local/share/Trash"
|
|
||||||
];
|
|
||||||
|
|
||||||
files = [
|
|
||||||
"bash/.bash_history"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/persist".neededForBoot = true;
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
supportedFilesystems = ["btrfs"];
|
|
||||||
|
|
||||||
# recreate the root subvolume at boot
|
|
||||||
initrd.postDeviceCommands = lib.mkBefore ''
|
|
||||||
echo "recreating root subvolume..."
|
|
||||||
mkdir -p /mnt
|
|
||||||
mount ${config.fileSystems."/".device} /mnt
|
|
||||||
btrfs subvolume delete /mnt/@old
|
|
||||||
mv /mnt/@ /mnt/@old
|
|
||||||
btrfs subvolume create /mnt/@
|
|
||||||
umount /mnt
|
|
||||||
echo "done recreating subvolume"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# workaround for agenix running before /etc impermanence gets set up
|
|
||||||
age.identityPaths = ["/persist/buffet/ssh/.ssh/id_agenix"];
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
stdenvNoCC,
|
|
||||||
}:
|
|
||||||
stdenvNoCC.mkDerivation {
|
|
||||||
name = "apl386";
|
|
||||||
|
|
||||||
src = inputs.apl386;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
install -Dm644 APL386.ttf -t $out/share/fonts/apl386
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "APL385 Unicode font evolved ";
|
|
||||||
homepage = "https://github.com/abrudz/APL386";
|
|
||||||
license = licenses.unlicense;
|
|
||||||
maintainers = with maintainers; [buffet];
|
|
||||||
platforms = platforms.all;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +1,3 @@
|
||||||
inputs: self: super: {
|
inputs: final: prev: {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
|
|
||||||
apl386 = super.callPackage ./apl386 {};
|
|
||||||
fennel-ls = super.callPackage ./fennel-ls {};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
stdenvNoCC,
|
|
||||||
lua,
|
|
||||||
luaPackages,
|
|
||||||
}:
|
|
||||||
stdenvNoCC.mkDerivation {
|
|
||||||
name = "fennel-ls";
|
|
||||||
|
|
||||||
src = inputs.fennel-ls;
|
|
||||||
|
|
||||||
nativeBuildInputs = [luaPackages.fennel];
|
|
||||||
buildInputs = [lua];
|
|
||||||
|
|
||||||
makeFlags = ["PREFIX=$(out)"];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "A language server for fennel-ls.";
|
|
||||||
homepage = "https://git.sr.ht/~xerool/fennel-ls";
|
|
||||||
license = licenses.mit;
|
|
||||||
platforms = lua.meta.platforms;
|
|
||||||
maintainers = with maintainers; [buffet];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
pinentryFlavor = "curses";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
programs.gpg.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
_: {
|
|
||||||
services.keyd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
"capslock" = "overload(control, esc)";
|
|
||||||
"esc" = "capslock";
|
|
||||||
"rightalt" = "layer(symbols)";
|
|
||||||
};
|
|
||||||
|
|
||||||
symbols = {
|
|
||||||
"h" = "left";
|
|
||||||
"j" = "down";
|
|
||||||
"k" = "up";
|
|
||||||
"l" = "right";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
services.mako = let
|
|
||||||
theme = import ../theme.nix;
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
anchor = "top-right";
|
|
||||||
|
|
||||||
backgroundColor = theme.primary.background;
|
|
||||||
borderColor = theme.wm.focused.border;
|
|
||||||
progressColor = theme.primary.foreground;
|
|
||||||
textColor = theme.primary.foreground;
|
|
||||||
borderSize = 1;
|
|
||||||
|
|
||||||
defaultTimeout = 4000;
|
|
||||||
|
|
||||||
font = with theme; "${font.family} ${toString font.size}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{lib, ...}: {
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
programs.newsboat = {
|
|
||||||
enable = true;
|
|
||||||
autoReload = true;
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
color listnormal black white
|
|
||||||
color listfocus white yellow
|
|
||||||
color listnormal_unread black white bold
|
|
||||||
color listfocus_unread white yellow bold
|
|
||||||
color title white blue bold
|
|
||||||
color info yellow white bold
|
|
||||||
color hint-key default white bold
|
|
||||||
color hint-keys-delimiter default white
|
|
||||||
color hint-separator default white bold
|
|
||||||
color hint-description default white
|
|
||||||
'';
|
|
||||||
|
|
||||||
urls = lib.mapAttrsToList (title: url: {inherit title url;}) {
|
|
||||||
drew = "https://drewdevault.com/blog/index.xml";
|
|
||||||
ducko = "https://goose.icu/index.xml";
|
|
||||||
emersion = "https://emersion.fr/blog/atom.xml";
|
|
||||||
fasterthanlime = "https://fasterthanli.me/index.xml";
|
|
||||||
matklad = "https://matklad.github.io/feed.xml";
|
|
||||||
neeasade = "https://notes.neeasade.net/rss_full.xml";
|
|
||||||
sammyette = "https://sammy.is-a.dev/blog/index.xml";
|
|
||||||
xkcd = "https://xkcd.com/rss.xml";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,559 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
} @ inputs: {
|
|
||||||
# TODO: use some flake
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
clang-tools
|
|
||||||
fennel-ls
|
|
||||||
nil
|
|
||||||
rust-analyzer
|
|
||||||
sumneko-lua-language-server
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.neovim = let
|
|
||||||
leader = ",";
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
plugins = let
|
|
||||||
buildPlugin = pname:
|
|
||||||
pkgs.vimUtils.buildVimPluginFrom2Nix {
|
|
||||||
inherit pname;
|
|
||||||
version = "unknown";
|
|
||||||
src = inputs."${pname}";
|
|
||||||
};
|
|
||||||
buildPlugins = names: lib.attrsets.genAttrs names buildPlugin;
|
|
||||||
plugins = buildPlugins [
|
|
||||||
"cmp-conventionalcommits"
|
|
||||||
"cmp-git"
|
|
||||||
"gh-nvim"
|
|
||||||
"nvim-cmp-vlime"
|
|
||||||
"rust-tools-nvim"
|
|
||||||
"vim-hy"
|
|
||||||
"vlime"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
with pkgs.vimPlugins;
|
|
||||||
with plugins; [
|
|
||||||
{plugin = cmp-buffer;}
|
|
||||||
{plugin = cmp-calc;}
|
|
||||||
{plugin = cmp-conventionalcommits;}
|
|
||||||
{plugin = cmp-latex-symbols;}
|
|
||||||
{plugin = cmp-nvim-lsp;}
|
|
||||||
{plugin = cmp-path;}
|
|
||||||
{plugin = cmp-treesitter;}
|
|
||||||
{plugin = cmp-vsnip;}
|
|
||||||
{plugin = editorconfig-nvim;}
|
|
||||||
{plugin = fennel-vim;}
|
|
||||||
{plugin = friendly-snippets;}
|
|
||||||
{plugin = fugitive;}
|
|
||||||
{plugin = lualine-lsp-progress;}
|
|
||||||
{plugin = nvim-cmp-vlime;}
|
|
||||||
{plugin = parinfer-rust;}
|
|
||||||
{plugin = pest-vim;}
|
|
||||||
{plugin = playground;}
|
|
||||||
{plugin = rust-vim;}
|
|
||||||
{plugin = tabular;}
|
|
||||||
{plugin = vim-nix;}
|
|
||||||
{plugin = vim-hy;}
|
|
||||||
{plugin = vim-repeat;}
|
|
||||||
{plugin = vlime;}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = cmp-git;
|
|
||||||
config = "lua require 'cmp_git'.setup {}";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = crates-nvim;
|
|
||||||
config = ''
|
|
||||||
lua require 'crates'.setup {}
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}ct :lua require('crates').toggle()<cr>
|
|
||||||
nnoremap <silent> ${leader}cr :lua require('crates').reload()<cr>
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}cv :lua require('crates').show_versions_popup()<cr>
|
|
||||||
nnoremap <silent> ${leader}cf :lua require('crates').show_features_popup()<cr>
|
|
||||||
nnoremap <silent> ${leader}cd :lua require('crates').show_dependencies_popup()<cr>
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}cu :lua require('crates').update_crate()<cr>
|
|
||||||
vnoremap <silent> ${leader}cu :lua require('crates').update_crates()<cr>
|
|
||||||
nnoremap <silent> ${leader}ca :lua require('crates').update_all_crates()<cr>
|
|
||||||
nnoremap <silent> ${leader}cU :lua require('crates').upgrade_crate()<cr>
|
|
||||||
vnoremap <silent> ${leader}cU :lua require('crates').upgrade_crates()<cr>
|
|
||||||
nnoremap <silent> ${leader}cA :lua require('crates').upgrade_all_crates()<cr>
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}cH :lua require('crates').open_homepage()<cr>
|
|
||||||
nnoremap <silent> ${leader}cR :lua require('crates').open_repository()<cr>
|
|
||||||
nnoremap <silent> ${leader}cD :lua require('crates').open_documentation()<cr>
|
|
||||||
nnoremap <silent> ${leader}cC :lua require('crates').open_crates_io()<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = gh-nvim;
|
|
||||||
config = ''
|
|
||||||
lua <<EOF
|
|
||||||
require 'litee.lib'.setup {}
|
|
||||||
require 'litee.gh'.setup {}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}qcc :GHCloseCommit<cr>
|
|
||||||
nnoremap <silent> ${leader}qce :GHExpandCommit<cr>
|
|
||||||
nnoremap <silent> ${leader}qct :GHOpenToCommit<cr>
|
|
||||||
nnoremap <silent> ${leader}qcp :GHPopOutCommit<cr>
|
|
||||||
nnoremap <silent> ${leader}qcz :GHCollapseCommit<cr>
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}qip :GHPreviewIssue<cr>
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}qrb :GHStartReview<cr>
|
|
||||||
nnoremap <silent> ${leader}qrc :GHCloseReview<cr>
|
|
||||||
nnoremap <silent> ${leader}qrd :GHDeleteReview<cr>
|
|
||||||
nnoremap <silent> ${leader}qre :GHExpandReview<cr>
|
|
||||||
nnoremap <silent> ${leader}qrs :GHSubmitReview<cr>
|
|
||||||
nnoremap <silent> ${leader}qrz :GHCollapseReview<cr>
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}qpc :GHClosePR<cr>
|
|
||||||
nnoremap <silent> ${leader}qpd :GHPRDetails<cr>
|
|
||||||
nnoremap <silent> ${leader}qpe :GHExpandPR<cr>
|
|
||||||
nnoremap <silent> ${leader}qpo :GHOpenPR<cr>
|
|
||||||
nnoremap <silent> ${leader}qpp :GHPopOutPR<cr>
|
|
||||||
nnoremap <silent> ${leader}qpr :GHRefreshPR<cr>
|
|
||||||
nnoremap <silent> ${leader}qpt :GHOpenToPR<cr>
|
|
||||||
nnoremap <silent> ${leader}qpz :GHCollapsePR<cr>
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}qtc :GHCreateThread<cr>
|
|
||||||
nnoremap <silent> ${leader}qtn :GHNextThread<cr>
|
|
||||||
nnoremap <silent> ${leader}qt :GHToggleThread<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = gitsigns-nvim;
|
|
||||||
config = ''
|
|
||||||
lua <<EOF
|
|
||||||
require 'gitsigns'.setup {
|
|
||||||
signs = {
|
|
||||||
add = { text = '┆' },
|
|
||||||
change = { text = '┆' },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = litee-nvim;
|
|
||||||
config = ''
|
|
||||||
lua require 'litee.lib'.setup {}
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}lt :LTPanel<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = litee-calltree-nvim;
|
|
||||||
config = ''
|
|
||||||
lua require 'litee.calltree'.setup {}
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}lci :lua vim.lsp.buf.incoming_calls()<cr>
|
|
||||||
nnoremap <silent> ${leader}lco :lua vim.lsp.buf.outgoing_calls()<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = litee-symboltree-nvim;
|
|
||||||
config = ''
|
|
||||||
lua require 'litee.symboltree'.setup {}
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}ls :lua vim.lsp.buf.document_symbol()<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = lualine-nvim;
|
|
||||||
config = ''
|
|
||||||
lua <<EOF
|
|
||||||
require 'lualine'.setup {
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = 'auto',
|
|
||||||
component_separators = {left = ''', right = '''},
|
|
||||||
section_separators = {left = ''', right = '''},
|
|
||||||
disabled_filetypes = {
|
|
||||||
statusline = {},
|
|
||||||
winbar = {},
|
|
||||||
},
|
|
||||||
ignore_focus = {},
|
|
||||||
always_divide_middle = true,
|
|
||||||
globalstatus = false,
|
|
||||||
refresh = {
|
|
||||||
statusline = 1000,
|
|
||||||
tabline = 1000,
|
|
||||||
winbar = 1000,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = {'mode'},
|
|
||||||
lualine_b = {'diff', 'diagnostics'},
|
|
||||||
lualine_c = {
|
|
||||||
'filename',
|
|
||||||
{
|
|
||||||
'lsp_progress',
|
|
||||||
display_components = {'lsp_client_name', 'spinner'},
|
|
||||||
spinner_symbols = {'⠋', '⠙', '⠸', '⠴', '⠦', '⠇'},
|
|
||||||
timer = {spinner = '75'}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lualine_x = {'encoding', 'fileformat', 'filetype'},
|
|
||||||
lualine_y = {'progress'},
|
|
||||||
lualine_z = {'location'}
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = {'filename'},
|
|
||||||
lualine_x = {'location'},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
winbar = {},
|
|
||||||
inactive_winbar = {},
|
|
||||||
extensions = {}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = kanagawa-nvim;
|
|
||||||
config = ''
|
|
||||||
colorscheme kanagawa
|
|
||||||
lua <<EOF
|
|
||||||
local colors = require 'kanagawa.colors'.setup();
|
|
||||||
|
|
||||||
require 'kanagawa'.setup {
|
|
||||||
overrides = {
|
|
||||||
EndOfBuffer = { fg = colors.waveBlue2 },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = lspsaga-nvim;
|
|
||||||
config = ''
|
|
||||||
lua require 'lspsaga'.init_lsp_saga()
|
|
||||||
|
|
||||||
nnoremap <silent> ${leader}a :Lspsaga code_action<cr>
|
|
||||||
nnoremap <silent> ${leader}r :Lspsaga rename<cr>
|
|
||||||
nnoremap <silent> gd :lua vim.lsp.buf.definition()<cr>
|
|
||||||
nnoremap <silent> gD :lua vim.lsp.buf.declaration()<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = nvim-cmp;
|
|
||||||
config = ''
|
|
||||||
set completeopt=menu,menuone,noselect
|
|
||||||
|
|
||||||
lua <<EOF
|
|
||||||
local cmp = require 'cmp'
|
|
||||||
|
|
||||||
cmp.setup {
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
vim.fn["vsnip#anonymous"](args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
window = {
|
|
||||||
completion = cmp.config.window.bordered(),
|
|
||||||
documentation = cmp.config.window.bordered(),
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
['<tab>'] = cmp.mapping.confirm({ select = true }),
|
|
||||||
['<c-p>'] = cmp.mapping.select_prev_item(select_opts),
|
|
||||||
['<c-n>'] = cmp.mapping.select_next_item(select_opts),
|
|
||||||
['<c-d>'] = cmp.mapping.scroll_docs(4),
|
|
||||||
['<c-u>'] = cmp.mapping.scroll_docs(-4),
|
|
||||||
['<c-e>'] = cmp.mapping.abort(),
|
|
||||||
},
|
|
||||||
sources = cmp.config.sources {
|
|
||||||
{ name = 'buffer' },
|
|
||||||
{ name = 'calc' },
|
|
||||||
{ name = 'conventionalcommits' },
|
|
||||||
{ name = 'crates' },
|
|
||||||
{ name = 'git' },
|
|
||||||
{ name = 'latex_symbols' },
|
|
||||||
{ name = 'nvim_lsp' },
|
|
||||||
{ name = 'path' },
|
|
||||||
{ name = 'treesitter' },
|
|
||||||
{ name = 'vlime' },
|
|
||||||
{ name = 'vsnip' },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = nvim-dap;
|
|
||||||
config = ''
|
|
||||||
nnoremap <silent> <f5> <cmd>lua require 'dap'.continue()<cr>
|
|
||||||
nnoremap <silent> <f10> <cmd>lua require 'dap'.step_over()<cr>
|
|
||||||
nnoremap <silent> <f11> <cmd>lua require 'dap'.step_into()<cr>
|
|
||||||
nnoremap <silent> <f12> <cmd>lua require 'dap'.step_out()<cr>
|
|
||||||
nnoremap <silent> ${leader}db <cmd>lua require'dap'.toggle_breakpoint()<cr>
|
|
||||||
nnoremap <silent> ${leader}dB <cmd>lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<cr>
|
|
||||||
nnoremap <silent> ${leader}dr <cmd>lua require'dap'.repl.open()<cr>
|
|
||||||
nnoremap <silent> ${leader}dl <cmd>lua require'dap'.run_last()<cr>
|
|
||||||
|
|
||||||
lua <<EOF
|
|
||||||
local dap = require 'dap'
|
|
||||||
|
|
||||||
dap.adapters.lldb = {
|
|
||||||
type = 'executable',
|
|
||||||
command = '${pkgs.lldb}/bin/lldb-vscode',
|
|
||||||
name = 'lldb',
|
|
||||||
}
|
|
||||||
|
|
||||||
local lldb = {
|
|
||||||
name = 'Launch lldb',
|
|
||||||
type = 'lldb',
|
|
||||||
request = 'launch',
|
|
||||||
program = function()
|
|
||||||
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
|
||||||
end,
|
|
||||||
cwd = "''${workspaceFolder}",
|
|
||||||
stopOnEntry = false,
|
|
||||||
runInTerminal = true,
|
|
||||||
args = {},
|
|
||||||
}
|
|
||||||
|
|
||||||
dap.configurations.rust = { lldb }
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = nvim-dap-ui;
|
|
||||||
config = ''
|
|
||||||
lua require 'dapui'.setup()
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = nvim-dap-virtual-text;
|
|
||||||
config = ''
|
|
||||||
lua <<EOF
|
|
||||||
require 'nvim-dap-virtual-text'.setup {
|
|
||||||
commented = true,
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = nvim-hlslens;
|
|
||||||
config = ''
|
|
||||||
lua require 'hlslens'.setup {}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = nvim-lspconfig;
|
|
||||||
config = let
|
|
||||||
configure = srv: ''
|
|
||||||
lspconfig.${srv}.setup {
|
|
||||||
capabilities = caps,
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
servers = [
|
|
||||||
"clangd"
|
|
||||||
"fennel_ls"
|
|
||||||
"gopls"
|
|
||||||
"lua_ls"
|
|
||||||
"nil_ls"
|
|
||||||
"rust_analyzer"
|
|
||||||
];
|
|
||||||
serverConfigs = lib.strings.concatStringsSep "\n" (builtins.map configure servers);
|
|
||||||
in ''
|
|
||||||
lua <<EOF
|
|
||||||
local lspconfig = require 'lspconfig'
|
|
||||||
local caps = require 'cmp_nvim_lsp'.default_capabilities(
|
|
||||||
vim.lsp.protocol.make_client_capabilities()
|
|
||||||
)
|
|
||||||
${serverConfigs}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = nvim-treesitter.withPlugins (plugins:
|
|
||||||
with plugins; [
|
|
||||||
tree-sitter-bash
|
|
||||||
tree-sitter-bibtex
|
|
||||||
tree-sitter-c
|
|
||||||
tree-sitter-c-sharp
|
|
||||||
tree-sitter-clojure
|
|
||||||
tree-sitter-cmake
|
|
||||||
tree-sitter-comment
|
|
||||||
tree-sitter-commonlisp
|
|
||||||
tree-sitter-cpp
|
|
||||||
tree-sitter-css
|
|
||||||
tree-sitter-devicetree
|
|
||||||
tree-sitter-dockerfile
|
|
||||||
tree-sitter-dot
|
|
||||||
tree-sitter-fennel
|
|
||||||
tree-sitter-glsl
|
|
||||||
tree-sitter-go
|
|
||||||
tree-sitter-java
|
|
||||||
tree-sitter-javascript
|
|
||||||
tree-sitter-json
|
|
||||||
tree-sitter-latex
|
|
||||||
tree-sitter-llvm
|
|
||||||
tree-sitter-lua
|
|
||||||
tree-sitter-make
|
|
||||||
tree-sitter-markdown
|
|
||||||
tree-sitter-markdown-inline
|
|
||||||
tree-sitter-nix
|
|
||||||
tree-sitter-perl
|
|
||||||
tree-sitter-python
|
|
||||||
tree-sitter-regex
|
|
||||||
tree-sitter-rst
|
|
||||||
tree-sitter-rust
|
|
||||||
tree-sitter-sql
|
|
||||||
tree-sitter-scheme
|
|
||||||
tree-sitter-svelte
|
|
||||||
tree-sitter-toml
|
|
||||||
tree-sitter-typescript
|
|
||||||
tree-sitter-vim
|
|
||||||
tree-sitter-yaml
|
|
||||||
tree-sitter-zig
|
|
||||||
]);
|
|
||||||
config = ''
|
|
||||||
lua <<EOF
|
|
||||||
require 'nvim-treesitter.configs'.setup {
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
additional_vim_regex_highlighting = false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = rust-tools-nvim;
|
|
||||||
config = ''
|
|
||||||
lua require 'rust-tools'.setup {}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = telescope-nvim;
|
|
||||||
config = ''
|
|
||||||
nnoremap <silent> ${leader}f :Telescope find_files<cr>
|
|
||||||
nnoremap <silent> ${leader}F :Telescope find_files hidden=true no_ignore=true<cr>
|
|
||||||
nnoremap <silent> ${leader}g :Telescope live_grep<cr>
|
|
||||||
nnoremap <silent> ${leader}b :Telescope buffers<cr>
|
|
||||||
nnoremap <silent> ${leader}: :Telescope commands<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = trouble-nvim;
|
|
||||||
config = ''
|
|
||||||
nnoremap <silent> ${leader}t :TroubleToggle<cr>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = vim-vsnip;
|
|
||||||
config = ''
|
|
||||||
imap <expr> <c-k> vsnip#jumpable(1) ? '<Plug>(vsnip-jump-next)' : '<Tab>'
|
|
||||||
smap <expr> <c-k> vsnip#jumpable(1) ? '<Plug>(vsnip-jump-next)' : '<Tab>'
|
|
||||||
imap <expr> <c-j> vsnip#jumpable(-1) ? '<Plug>(vsnip-jump-prev)' : '<S-Tab>'
|
|
||||||
smap <expr> <c-j> vsnip#jumpable(-1) ? '<Plug>(vsnip-jump-prev)' : '<S-Tab>'
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
plugin = vimwiki;
|
|
||||||
# TODO: vimwiki config
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfig = let
|
|
||||||
theme = import ../theme.nix;
|
|
||||||
in ''
|
|
||||||
" keybinds
|
|
||||||
let mapleader = "${leader}"
|
|
||||||
let g:mapleader = "${leader}"
|
|
||||||
|
|
||||||
inoremap kj <esc>
|
|
||||||
|
|
||||||
vnoremap < <gv
|
|
||||||
vnoremap > >gv
|
|
||||||
|
|
||||||
nnoremap <c-h> <c-w>h
|
|
||||||
nnoremap <c-j> <c-w>j
|
|
||||||
nnoremap <c-k> <c-w>k
|
|
||||||
nnoremap <c-l> <c-w>l
|
|
||||||
|
|
||||||
nnoremap <leader>s :w<cr>
|
|
||||||
|
|
||||||
" misc
|
|
||||||
set termguicolors
|
|
||||||
set mouse=a
|
|
||||||
set undofile
|
|
||||||
set hidden
|
|
||||||
set encoding=utf-8
|
|
||||||
set hlsearch
|
|
||||||
set incsearch
|
|
||||||
set ignorecase
|
|
||||||
set smartcase
|
|
||||||
set lazyredraw
|
|
||||||
set splitbelow
|
|
||||||
set splitright
|
|
||||||
set matchtime=2
|
|
||||||
set showmatch
|
|
||||||
set wrap
|
|
||||||
set breakindent
|
|
||||||
set nowritebackup
|
|
||||||
set updatetime=250
|
|
||||||
set colorcolumn=+1
|
|
||||||
set cursorline
|
|
||||||
set signcolumn=yes
|
|
||||||
|
|
||||||
set shiftwidth=4
|
|
||||||
set tabstop=4
|
|
||||||
set expandtab
|
|
||||||
|
|
||||||
set shiftround
|
|
||||||
set autoindent
|
|
||||||
set smartindent
|
|
||||||
|
|
||||||
highlight! ExtraWhitespace guibg=${theme.normal.red}
|
|
||||||
match ExtraWhitespace /\s\+$/
|
|
||||||
|
|
||||||
autocmd FileType lisp setlocal shiftwidth=2 tabstop=2
|
|
||||||
autocmd FileType c setlocal noexpandtab shiftwidth=8 tabstop=8
|
|
||||||
|
|
||||||
lua <<EOF
|
|
||||||
vim.diagnostic.config {
|
|
||||||
severity_sort = true,
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
roswell
|
|
||||||
sbcl
|
|
||||||
];
|
|
||||||
|
|
||||||
file.".config/common-lisp/source-registry.conf.d/lisp.conf".text = ''
|
|
||||||
(:include (:home "proj" "cl-proj.lisp"))
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
_: {
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
programs.senpai = {
|
|
||||||
enable = true;
|
|
||||||
config = {
|
|
||||||
addr = "irc.buffet.sh";
|
|
||||||
nick = "buffet";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
_: {
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
programs.sioyek = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
#config = with import ../theme.nix; {
|
|
||||||
# background_color = makeRgbFloat primary.background;
|
|
||||||
#};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,224 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# TODO: turn off primary selection
|
|
||||||
programs.sway.enable = true;
|
|
||||||
|
|
||||||
home-manager.users.buffet = {
|
|
||||||
wayland.windowManager.sway = {
|
|
||||||
enable = true;
|
|
||||||
wrapperFeatures.gtk = true;
|
|
||||||
xwayland = false;
|
|
||||||
|
|
||||||
config = let
|
|
||||||
browser = "firefox";
|
|
||||||
mod = "Mod4";
|
|
||||||
terminal = "foot";
|
|
||||||
theme = import ../theme.nix;
|
|
||||||
|
|
||||||
makeWorkspaceBinds = num: let
|
|
||||||
ws = toString num;
|
|
||||||
in {
|
|
||||||
"${mod}+${ws}" = "workspace ${ws}";
|
|
||||||
"${mod}+Shift+${ws}" = "move container to workspace ${ws}";
|
|
||||||
};
|
|
||||||
|
|
||||||
joinAttrSets = builtins.foldl' (x: y: x // y) {};
|
|
||||||
|
|
||||||
statusCommand = pkgs.writeScript "status_command" ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
while :; do
|
|
||||||
energy_full=
|
|
||||||
energy_now=
|
|
||||||
charge=
|
|
||||||
|
|
||||||
for bat in /sys/class/power_supply/*/capacity; do
|
|
||||||
bat="''${bat%/*}"
|
|
||||||
read -r full < $bat/energy_full
|
|
||||||
read -r now < $bat/energy_now
|
|
||||||
energy_full=$((energy_full + full))
|
|
||||||
energy_now=$((energy_now + now))
|
|
||||||
done
|
|
||||||
|
|
||||||
if cat /sys/class/power_supply/*/status | grep -q Charging; then
|
|
||||||
charge=+
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${pkgs.mullvad}/bin/mullvad status | grep -q 'Connected to'; then
|
|
||||||
mullvad='&'
|
|
||||||
else
|
|
||||||
mullvad=
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s %s %s ' "$mullvad" "$charge$((energy_now * 100 / energy_full))%" "$(date +'%H:%M')"
|
|
||||||
|
|
||||||
sleep 3
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
modifier = mod;
|
|
||||||
window.border = 1;
|
|
||||||
focus.followMouse = true;
|
|
||||||
fonts = {
|
|
||||||
names = [theme.font.family];
|
|
||||||
style = "Regular";
|
|
||||||
size = theme.font.size * 1.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
gaps = {
|
|
||||||
inner = 8;
|
|
||||||
outer = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
input."*" = {
|
|
||||||
xkb_layout = "us";
|
|
||||||
xkb_options = "compose:prsc";
|
|
||||||
};
|
|
||||||
|
|
||||||
output."*" = {bg = "${theme.primary.background} solid_color";};
|
|
||||||
|
|
||||||
floating.titlebar = false;
|
|
||||||
window.titlebar = false;
|
|
||||||
|
|
||||||
colors = with theme; rec {
|
|
||||||
focused = rec {
|
|
||||||
inherit (wm.focused) border text;
|
|
||||||
inherit (primary) background;
|
|
||||||
indicator = border;
|
|
||||||
childBorder = border;
|
|
||||||
};
|
|
||||||
|
|
||||||
unfocused = rec {
|
|
||||||
inherit (wm.unfocused) border text;
|
|
||||||
inherit (primary) background;
|
|
||||||
indicator = border;
|
|
||||||
childBorder = border;
|
|
||||||
};
|
|
||||||
|
|
||||||
focusedInactive = unfocused;
|
|
||||||
};
|
|
||||||
|
|
||||||
keybindings = let
|
|
||||||
swaylockConf = pkgs.writeText "swaylock.conf" ''
|
|
||||||
ignore-empty-password
|
|
||||||
color=${theme.primary.background}
|
|
||||||
bs-hl-color=${theme.normal.red}
|
|
||||||
caps-lock-bs-hl-color=${theme.normal.red}
|
|
||||||
caps-lock-key-hl-color=${theme.bright.green}
|
|
||||||
inside-color=${theme.primary.background}
|
|
||||||
inside-clear-color=${theme.normal.yellow}
|
|
||||||
inside-caps-lock-color=${theme.primary.background}
|
|
||||||
inside-ver-color=${theme.normal.blue}
|
|
||||||
inside-wrong-color=${theme.normal.red}
|
|
||||||
key-hl-color=${theme.bright.green}
|
|
||||||
ring-color=${theme.normal.green}
|
|
||||||
ring-clear-color=${theme.normal.yellow}
|
|
||||||
ring-caps-lock-color=${theme.bright.yellow}
|
|
||||||
ring-ver-color=${theme.bright.blue}
|
|
||||||
ring-wrong-color=${theme.bright.red}
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"${mod}+Shift+c" = "kill";
|
|
||||||
"${mod}+Control+r" = "reload";
|
|
||||||
"${mod}+Shift+e" = "exit";
|
|
||||||
|
|
||||||
"${mod}+Shift+Return" = "exec ${terminal}";
|
|
||||||
"${mod}+i" = "exec ${browser}";
|
|
||||||
"${mod}+Shift+y" = "exec ${pkgs.swaylock}/bin/swaylock -C '${swaylockConf}'";
|
|
||||||
"${mod}+z" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s 1%-";
|
|
||||||
"${mod}+x" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s 1%+";
|
|
||||||
"${mod}+Shift+z" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s 5%-";
|
|
||||||
"${mod}+Shift+x" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s 5%+";
|
|
||||||
|
|
||||||
"${mod}+p" = "exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy window";
|
|
||||||
"${mod}+Shift+p" = "exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy active";
|
|
||||||
|
|
||||||
"${mod}+o" = "splith";
|
|
||||||
"${mod}+u" = "splitv";
|
|
||||||
|
|
||||||
"${mod}+s" = "layout stacking";
|
|
||||||
"${mod}+t" = "layout tabbed";
|
|
||||||
"${mod}+e" = "layout toggle split";
|
|
||||||
"${mod}+f" = "fullscreen";
|
|
||||||
|
|
||||||
"${mod}+h" = "focus left";
|
|
||||||
"${mod}+j" = "focus down";
|
|
||||||
"${mod}+k" = "focus up";
|
|
||||||
"${mod}+l" = "focus right";
|
|
||||||
|
|
||||||
"${mod}+Left" = "focus left";
|
|
||||||
"${mod}+Down" = "focus down";
|
|
||||||
"${mod}+Up" = "focus up";
|
|
||||||
"${mod}+Right" = "focus right";
|
|
||||||
|
|
||||||
"${mod}+Shift+h" = "move left";
|
|
||||||
"${mod}+Shift+j" = "move down";
|
|
||||||
"${mod}+Shift+k" = "move up";
|
|
||||||
"${mod}+Shift+l" = "move right";
|
|
||||||
|
|
||||||
"${mod}+Ctrl+h" = "resize grow left 10 px or 10 ppt";
|
|
||||||
"${mod}+Ctrl+j" = "resize grow down 10 px or 10 ppt";
|
|
||||||
"${mod}+Ctrl+k" = "resize grow up 10 px or 10 ppt";
|
|
||||||
"${mod}+Ctrl+l" = "resize grow right 10 px or 10 ppt";
|
|
||||||
|
|
||||||
"${mod}+space" = "focus mode_toggle";
|
|
||||||
"${mod}+a" = "focus parent";
|
|
||||||
|
|
||||||
"${mod}+Shift+space" = "floating toggle";
|
|
||||||
}
|
|
||||||
// (joinAttrSets (map makeWorkspaceBinds (lib.range 1 9)));
|
|
||||||
|
|
||||||
seat."*" = {hide_cursor = "when-typing enable";};
|
|
||||||
|
|
||||||
bars = [
|
|
||||||
{
|
|
||||||
position = "top";
|
|
||||||
fonts = {
|
|
||||||
names = [theme.font.family];
|
|
||||||
style = "Regular";
|
|
||||||
size = theme.font.size * 1.0;
|
|
||||||
};
|
|
||||||
statusCommand = "${statusCommand}";
|
|
||||||
|
|
||||||
colors = with theme; {
|
|
||||||
statusline = primary.foreground;
|
|
||||||
inherit (primary) background;
|
|
||||||
|
|
||||||
focusedWorkspace = {
|
|
||||||
inherit (primary) background;
|
|
||||||
inherit (wm.focused) text;
|
|
||||||
inherit (wm.focused) border;
|
|
||||||
};
|
|
||||||
|
|
||||||
inactiveWorkspace = {
|
|
||||||
inherit (primary) background;
|
|
||||||
inherit (wm.unfocused) text;
|
|
||||||
border = primary.background;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
gaps 5
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
for_window [title="leftovers"] floating enable
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
wlr.enable = true;
|
|
||||||
extraPortals = with pkgs; [
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
52
theme.nix
52
theme.nix
|
@ -1,52 +0,0 @@
|
||||||
{
|
|
||||||
light = false;
|
|
||||||
|
|
||||||
font = {
|
|
||||||
family = "APL386 Unicode";
|
|
||||||
size = 7;
|
|
||||||
};
|
|
||||||
|
|
||||||
primary = {
|
|
||||||
background = "#1f1f28";
|
|
||||||
foreground = "#dcd7ba";
|
|
||||||
};
|
|
||||||
|
|
||||||
cursor = {
|
|
||||||
background = "#2d4f67";
|
|
||||||
foreground = "#c8c093";
|
|
||||||
};
|
|
||||||
|
|
||||||
normal = {
|
|
||||||
black = "#090618";
|
|
||||||
red = "#c34043";
|
|
||||||
green = "#76946a";
|
|
||||||
yellow = "#c0a36e";
|
|
||||||
blue = "#7e9cd8";
|
|
||||||
magenta = "#957fb8";
|
|
||||||
cyan = "#6a9589";
|
|
||||||
white = "#c8c093";
|
|
||||||
};
|
|
||||||
|
|
||||||
bright = {
|
|
||||||
black = "#727169";
|
|
||||||
red = "#e82424";
|
|
||||||
green = "#98bb6c";
|
|
||||||
yellow = "#e6c384";
|
|
||||||
blue = "#7fb4ca";
|
|
||||||
magenta = "#938aa9";
|
|
||||||
cyan = "#7aa89f";
|
|
||||||
white = "#dcd7ba";
|
|
||||||
};
|
|
||||||
|
|
||||||
wm = {
|
|
||||||
focused = {
|
|
||||||
text = "#dcd7ba";
|
|
||||||
border = "#54546d";
|
|
||||||
};
|
|
||||||
|
|
||||||
unfocused = {
|
|
||||||
text = "#c8c093";
|
|
||||||
border = "#363646";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -8,14 +8,13 @@ in {
|
||||||
INPUTRC = inputrc;
|
INPUTRC = inputrc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.direnv.enableBashIntegration = true;
|
||||||
|
|
||||||
programs.bash = {
|
programs.bash = {
|
||||||
enable = true;
|
enable = true;
|
||||||
historyControl = ["erasedups" "ignorespace"];
|
historyControl = ["erasedups" "ignorespace"];
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
"cd.." = "cd ..";
|
|
||||||
ch = "ssh -t irc.buffet.sh -- screen -r weechat";
|
|
||||||
htop = "htop -t";
|
|
||||||
mkdir = "mkdir -p";
|
mkdir = "mkdir -p";
|
||||||
rg = "rg -S";
|
rg = "rg -S";
|
||||||
update = let
|
update = let
|
||||||
|
@ -36,8 +35,38 @@ in {
|
||||||
];
|
];
|
||||||
|
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
PS0='\[\e[0m\]'
|
__prompt() {
|
||||||
PS1='\[\e[1m\] '
|
local status="$?"
|
||||||
|
local row
|
||||||
|
local col
|
||||||
|
|
||||||
|
IFS=';' read -rs -dR -p $'\e[6n' row col >/dev/tty
|
||||||
|
if [[ $col != 1 ]]; then
|
||||||
|
printf '%s' $'\e[0;7m%\n\e[0m'
|
||||||
|
fi
|
||||||
|
|
||||||
|
PS1='\[\e[0;1m\]['
|
||||||
|
|
||||||
|
case $status in
|
||||||
|
0) PS1+='\[\e[32m\]' ;;
|
||||||
|
*) PS1+='\[\e[31m\]' ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ "$PWD" == "$HOME" ]]; then
|
||||||
|
PS1+="~"
|
||||||
|
elif [[ "$PWD" == / ]]; then
|
||||||
|
PS1+=/
|
||||||
|
else
|
||||||
|
PS1+="''${PWD##*/}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
PS1+='\[\e[0;1m\]]\[\e[0m\]'
|
||||||
|
|
||||||
|
[[ $CONTAINER_ID ]] && PS1+="'"
|
||||||
|
|
||||||
|
PS1+=' '
|
||||||
|
}
|
||||||
|
PROMPT_COMMAND=__prompt
|
||||||
|
|
||||||
bind '"\C-o": "\C-a\C-k fg; if [[ $? == 1 ]]; then nvim; fi\n"'
|
bind '"\C-o": "\C-a\C-k fg; if [[ $? == 1 ]]; then nvim; fi\n"'
|
||||||
bind '"\e\C-m": "\C-e | nvim\C-m"'
|
bind '"\e\C-m": "\C-e | nvim\C-m"'
|
39
users/buffet/colors.nix
Normal file
39
users/buffet/colors.nix
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
rec {
|
||||||
|
wallpaper = "#e6e6e6";
|
||||||
|
focused = "#e96161";
|
||||||
|
unfocused = "#5c5c5c";
|
||||||
|
|
||||||
|
primary = {
|
||||||
|
foreground = "#000000";
|
||||||
|
background = "#ffffff";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
foreground = "#dcd7ba";
|
||||||
|
background = "#6f6f78";
|
||||||
|
};
|
||||||
|
|
||||||
|
normal = {
|
||||||
|
black = "#393939";
|
||||||
|
red = "#e96161";
|
||||||
|
green = "#3cc970";
|
||||||
|
yellow = "#e6d250";
|
||||||
|
blue = "#4f9afa";
|
||||||
|
magenta = "#d949d9";
|
||||||
|
cyan = "#31d6c8";
|
||||||
|
white = "#d6d6d6";
|
||||||
|
};
|
||||||
|
|
||||||
|
bright = {
|
||||||
|
black = "#5c5c5c";
|
||||||
|
red = "#ff5353";
|
||||||
|
green = "#62ec75";
|
||||||
|
yellow = "#ffea2e";
|
||||||
|
blue = "#56c7ff";
|
||||||
|
magenta = "#fd5cff";
|
||||||
|
cyan = "#55f2ea";
|
||||||
|
white = "#ffffff";
|
||||||
|
};
|
||||||
|
|
||||||
|
borders = normal.red;
|
||||||
|
}
|
103
users/buffet/default.nix
Normal file
103
users/buffet/default.nix
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
./bash.nix
|
||||||
|
./cargo.nix
|
||||||
|
./firefox.nix
|
||||||
|
./foot.nix
|
||||||
|
./git.nix
|
||||||
|
./gpg.nix
|
||||||
|
./ime.nix
|
||||||
|
./mako.nix
|
||||||
|
./nvim.nix
|
||||||
|
./sway.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.buffet = {
|
||||||
|
isNormalUser = true;
|
||||||
|
uid = 1000;
|
||||||
|
hashedPassword = "$y$j9T$g/a4KaQ5VitWI9ZtAh9i3/$wjejk5W8LMc0gaVgw69kwrKLqBgZ95ekaOl/GaTOZVC";
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"sway"
|
||||||
|
"uinput"
|
||||||
|
"wheel"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.buffet = {
|
||||||
|
home = {
|
||||||
|
stateVersion = "23.11";
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
#SDL2
|
||||||
|
#SDL2.dev
|
||||||
|
#alejandra
|
||||||
|
#bear
|
||||||
|
#black
|
||||||
|
#c2ffi
|
||||||
|
#cage
|
||||||
|
#cairo
|
||||||
|
#chromium
|
||||||
|
#ed
|
||||||
|
#gcc
|
||||||
|
#gnumake
|
||||||
|
#mpv
|
||||||
|
#python3
|
||||||
|
|
||||||
|
cargo
|
||||||
|
cargo-crev
|
||||||
|
cargo-limit
|
||||||
|
mosh
|
||||||
|
cargo-nextest
|
||||||
|
du-dust
|
||||||
|
fd
|
||||||
|
gdb
|
||||||
|
github-cli
|
||||||
|
htop
|
||||||
|
hyperfine
|
||||||
|
jq
|
||||||
|
kcachegrind
|
||||||
|
linuxPackages.perf
|
||||||
|
man-pages
|
||||||
|
man-pages-posix
|
||||||
|
okular
|
||||||
|
pavucontrol
|
||||||
|
radare2
|
||||||
|
ripgrep
|
||||||
|
rr
|
||||||
|
rustfmt
|
||||||
|
strace
|
||||||
|
tokei
|
||||||
|
trash-cli
|
||||||
|
tree
|
||||||
|
valgrind
|
||||||
|
wget
|
||||||
|
wl-clipboard
|
||||||
|
|
||||||
|
#(luajit.withPackages (ps:
|
||||||
|
# with ps; [
|
||||||
|
# fennel
|
||||||
|
# inspect
|
||||||
|
# luv
|
||||||
|
# ]))
|
||||||
|
|
||||||
|
#(retroarch.override {
|
||||||
|
# cores = with libretro; [
|
||||||
|
# genesis-plus-gx
|
||||||
|
# ];
|
||||||
|
#})
|
||||||
|
];
|
||||||
|
|
||||||
|
pointerCursor = {
|
||||||
|
package = pkgs.phinger-cursors;
|
||||||
|
name = "phinger-cursors-light";
|
||||||
|
gtk.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,6 +4,12 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
# sins
|
||||||
|
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"tampermonkey"
|
||||||
|
];
|
||||||
|
|
||||||
home-manager.users.buffet = {
|
home-manager.users.buffet = {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -11,14 +17,16 @@
|
||||||
|
|
||||||
profiles."buffet" = {
|
profiles."buffet" = {
|
||||||
extensions = with config.nur.repos.rycee.firefox-addons; [
|
extensions = with config.nur.repos.rycee.firefox-addons; [
|
||||||
config.nur.repos.rycee.firefox-addons."10ten-ja-reader"
|
|
||||||
bitwarden
|
bitwarden
|
||||||
clearurls
|
clearurls
|
||||||
|
config.nur.repos.rycee.firefox-addons."10ten-ja-reader"
|
||||||
decentraleyes
|
decentraleyes
|
||||||
fediact
|
|
||||||
istilldontcareaboutcookies
|
istilldontcareaboutcookies
|
||||||
refined-github
|
noscript
|
||||||
|
privacy-badger
|
||||||
sidebery
|
sidebery
|
||||||
|
stylus
|
||||||
|
tampermonkey
|
||||||
ublock-origin
|
ublock-origin
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -28,7 +36,20 @@
|
||||||
|
|
||||||
userChrome = ''
|
userChrome = ''
|
||||||
#TabsToolbar {
|
#TabsToolbar {
|
||||||
visibility: collapse !important;
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-bar {
|
||||||
|
background: #ffffff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar-splitter {
|
||||||
|
background: #ffffff !important;
|
||||||
|
width: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
##sidebar-header {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
|
@ -5,16 +5,16 @@
|
||||||
server.enable = true;
|
server.enable = true;
|
||||||
|
|
||||||
settings = let
|
settings = let
|
||||||
theme = import ../theme.nix;
|
colors = import ./colors.nix;
|
||||||
dehash = lib.attrsets.mapAttrs (_: lib.strings.removePrefix "#");
|
dehash = lib.attrsets.mapAttrs (_: lib.strings.removePrefix "#");
|
||||||
normal = dehash theme.normal;
|
primary = dehash colors.primary;
|
||||||
bright = dehash theme.bright;
|
normal = dehash colors.normal;
|
||||||
|
bright = dehash colors.bright;
|
||||||
in {
|
in {
|
||||||
main = {
|
main = {
|
||||||
font = "${theme.font.family}:size=${toString (theme.font.size - 2)}";
|
term = "xterm-256color";
|
||||||
#font-italic = "${theme.font.family}:size=${toString (theme.font.size - 2)}";
|
font = "APL386 Unicode:weight=bold:size=8";
|
||||||
#font-bold-italic = "${theme.font.family}:style=Bold:size=${toString (theme.font.size - 2)}";
|
pad = "12x8";
|
||||||
pad = "${toString theme.font.size}x${toString theme.font.size}";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
scrollback.lines = 10000;
|
scrollback.lines = 10000;
|
||||||
|
@ -28,8 +28,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
colors = {
|
colors = {
|
||||||
foreground = lib.strings.removePrefix "#" theme.primary.foreground;
|
inherit (primary) foreground background;
|
||||||
background = lib.strings.removePrefix "#" theme.primary.background;
|
|
||||||
|
|
||||||
regular0 = normal.black;
|
regular0 = normal.black;
|
||||||
regular1 = normal.red;
|
regular1 = normal.red;
|
|
@ -4,16 +4,13 @@ _: {
|
||||||
enable = true;
|
enable = true;
|
||||||
userEmail = "dev@buffet.sh";
|
userEmail = "dev@buffet.sh";
|
||||||
userName = "buffet";
|
userName = "buffet";
|
||||||
|
|
||||||
difftastic = {
|
difftastic = {
|
||||||
enable = true;
|
enable = true;
|
||||||
background =
|
background = "light";
|
||||||
if (import ../theme.nix).light
|
|
||||||
then "light"
|
|
||||||
else "dark";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
aliases = {
|
aliases = {
|
||||||
a = "add";
|
|
||||||
b = "branch";
|
b = "branch";
|
||||||
c = "commit --verbose";
|
c = "commit --verbose";
|
||||||
m = "commit --amend --verbose";
|
m = "commit --amend --verbose";
|
||||||
|
@ -24,8 +21,6 @@ _: {
|
||||||
|
|
||||||
l = "log";
|
l = "log";
|
||||||
s = "status -s";
|
s = "status -s";
|
||||||
co = "checkout";
|
|
||||||
cob = "checkout -b";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
signing = {
|
signing = {
|
5
users/buffet/gpg.nix
Normal file
5
users/buffet/gpg.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
_: {
|
||||||
|
home-manager.users.buffet = {
|
||||||
|
programs.gpg.enable = true;
|
||||||
|
};
|
||||||
|
}
|
21
users/buffet/mako.nix
Normal file
21
users/buffet/mako.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager.users.buffet = {
|
||||||
|
services.mako = let
|
||||||
|
colors = import ./colors.nix;
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
anchor = "top-right";
|
||||||
|
|
||||||
|
backgroundColor = colors.primary.background;
|
||||||
|
borderColor = colors.borders;
|
||||||
|
progressColor = colors.primary.foreground;
|
||||||
|
textColor = colors.primary.foreground;
|
||||||
|
borderSize = 1;
|
||||||
|
|
||||||
|
defaultTimeout = 4000;
|
||||||
|
|
||||||
|
font = "APL386 Unicode 8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,8 +1,8 @@
|
||||||
_: {
|
_: {
|
||||||
home-manager.users.buffet = {
|
home-manager.users.buffet = {
|
||||||
programs.lsd = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableAliases = true;
|
defaultEditor = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
210
users/buffet/sway.nix
Normal file
210
users/buffet/sway.nix
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
colors = import ./colors.nix;
|
||||||
|
in {
|
||||||
|
home-manager.users.buffet = {
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
|
||||||
|
config = let
|
||||||
|
mod = "Mod4";
|
||||||
|
in {
|
||||||
|
input."*" = {
|
||||||
|
xkb_layout = "us";
|
||||||
|
xkb_options = "compose:prsc";
|
||||||
|
};
|
||||||
|
|
||||||
|
seat."*" = {hide_cursor = "when-typing enable";};
|
||||||
|
floating.modifier = mod;
|
||||||
|
|
||||||
|
# TODO: screenshot keybinds
|
||||||
|
keybindings = let
|
||||||
|
makeWorkspaceBinds = num: let
|
||||||
|
ws = toString num;
|
||||||
|
in {
|
||||||
|
"${mod}+${ws}" = "workspace ${ws}";
|
||||||
|
"${mod}+Shift+${ws}" = "move container to workspace ${ws}";
|
||||||
|
};
|
||||||
|
|
||||||
|
joinAttrSets = builtins.foldl' (x: y: x // y) {};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"${mod}+Return" = "exec ${pkgs.foot}/bin/foot";
|
||||||
|
"${mod}+i" = "exec ${pkgs.firefox-wayland}/bin/firefox";
|
||||||
|
"${mod}+Shift+y" = "exec swaylock";
|
||||||
|
# TODO: menu?
|
||||||
|
|
||||||
|
"${mod}+z" = "exec ${pkgs.light}/bin/light -U 0.5";
|
||||||
|
"${mod}+x" = "exec ${pkgs.light}/bin/light -A 0.5";
|
||||||
|
"${mod}+Shift+z" = "exec ${pkgs.light}/bin/light -U 5";
|
||||||
|
"${mod}+Shift+x" = "exec ${pkgs.light}/bin/light -A 5";
|
||||||
|
|
||||||
|
"${mod}+Shift+1" = "kill";
|
||||||
|
"${mod}+Shift+c" = "reload";
|
||||||
|
"${mod}+Shift+e" = "exit";
|
||||||
|
|
||||||
|
"${mod}+h" = "focus left";
|
||||||
|
"${mod}+j" = "focus down";
|
||||||
|
"${mod}+k" = "focus up";
|
||||||
|
"${mod}+l" = "focus right";
|
||||||
|
|
||||||
|
"${mod}+Left" = "focus left";
|
||||||
|
"${mod}+Down" = "focus down";
|
||||||
|
"${mod}+Up" = "focus up";
|
||||||
|
"${mod}+Right" = "focus right";
|
||||||
|
|
||||||
|
"${mod}+Shift+h" = "move left";
|
||||||
|
"${mod}+Shift+j" = "move down";
|
||||||
|
"${mod}+Shift+k" = "move up";
|
||||||
|
"${mod}+Shift+l" = "move right";
|
||||||
|
|
||||||
|
"${mod}+o" = "splith";
|
||||||
|
"${mod}+u" = "splitv";
|
||||||
|
|
||||||
|
"${mod}+s" = "layout stacking";
|
||||||
|
"${mod}+t" = "layout tabbed";
|
||||||
|
"${mod}+e" = "layout toggle split";
|
||||||
|
"${mod}+f" = "fullscreen";
|
||||||
|
|
||||||
|
"${mod}+Shift+space" = "floating toggle";
|
||||||
|
|
||||||
|
"${mod}+Shift+minus" = "move scratchpad";
|
||||||
|
"${mod}+minus" = "scratchpad show";
|
||||||
|
}
|
||||||
|
// (joinAttrSets (map makeWorkspaceBinds (lib.range 1 9)));
|
||||||
|
|
||||||
|
output."*" = {
|
||||||
|
bg = "${colors.wallpaper} solid_color";
|
||||||
|
};
|
||||||
|
|
||||||
|
gaps = {
|
||||||
|
inner = 12;
|
||||||
|
left = 8;
|
||||||
|
right = 8;
|
||||||
|
bottom = 8;
|
||||||
|
top = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.border = 1;
|
||||||
|
fonts = {
|
||||||
|
names = ["APL386 Unicode"];
|
||||||
|
style = "Bold";
|
||||||
|
size = 8.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
colors = rec {
|
||||||
|
focused = rec {
|
||||||
|
border = colors.focused;
|
||||||
|
childBorder = border;
|
||||||
|
background = border;
|
||||||
|
text = border;
|
||||||
|
indicator = border;
|
||||||
|
};
|
||||||
|
|
||||||
|
unfocused = rec {
|
||||||
|
border = colors.unfocused;
|
||||||
|
childBorder = border;
|
||||||
|
background = border;
|
||||||
|
text = border;
|
||||||
|
indicator = border;
|
||||||
|
};
|
||||||
|
|
||||||
|
focusedInactive = unfocused;
|
||||||
|
};
|
||||||
|
|
||||||
|
bars = [
|
||||||
|
{
|
||||||
|
position = "top";
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
names = ["APL386 Unicode"];
|
||||||
|
style = "Bold";
|
||||||
|
size = 8.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
statusCommand = toString (pkgs.writeScript "status_command" ''
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
while :; do
|
||||||
|
energy_full=0
|
||||||
|
energy_now=0
|
||||||
|
charging=
|
||||||
|
|
||||||
|
for bat in /sys/class/power_supply/*/capacity; do
|
||||||
|
bat="''${bat%/*}"
|
||||||
|
read -r full <"$bat/energy_full"
|
||||||
|
read -r now <"$bat/energy_now"
|
||||||
|
energy_full=$((energy_full + full))
|
||||||
|
energy_now=$((energy_now + now))
|
||||||
|
done
|
||||||
|
|
||||||
|
if cat /sys/class/power_supply/*/status | grep -q Charging; then
|
||||||
|
charging=+
|
||||||
|
fi
|
||||||
|
|
||||||
|
percentage=$((energy_now * 100 / energy_full))
|
||||||
|
|
||||||
|
printf '%s %s ' "$charging$percentage%" "$(date +'%H:%M:%S')"
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
'');
|
||||||
|
|
||||||
|
colors = rec {
|
||||||
|
statusline = colors.primary.foreground;
|
||||||
|
inherit (colors.primary) background;
|
||||||
|
|
||||||
|
focusedWorkspace = rec {
|
||||||
|
background = colors.focused;
|
||||||
|
border = background;
|
||||||
|
text = colors.primary.background;
|
||||||
|
};
|
||||||
|
|
||||||
|
inactiveWorkspace = rec {
|
||||||
|
inherit (colors.primary) background;
|
||||||
|
border = background;
|
||||||
|
text = colors.primary.foreground;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
gaps 16 20
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
for_window [title="."] title_format ""
|
||||||
|
for_window [title="^oyster$"] floating enable
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: use colors.nix
|
||||||
|
programs.swaylock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ignore-empty-password = true;
|
||||||
|
color = "#ffffff";
|
||||||
|
key-hl-color = "#3cc970";
|
||||||
|
bs-hl-color = "#e96161";
|
||||||
|
caps-lock-key-hl-color = "#3cc970";
|
||||||
|
caps-lock-bs-hl-color = "#e96161";
|
||||||
|
inside-color = "#ffffff";
|
||||||
|
inside-clear-color = "#ffffff";
|
||||||
|
inside-caps-lock-color = "#ffffff";
|
||||||
|
inside-ver-color = "#ffffff";
|
||||||
|
inside-wrong-color = "#ffffff";
|
||||||
|
ring-color = "#ffffff";
|
||||||
|
ring-clear-color = "#ffffff";
|
||||||
|
ring-caps-lock-color = "#ffffff";
|
||||||
|
ring-ver-color = "#ffffff";
|
||||||
|
ring-wrong-color = "#ffffff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue