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": {
|
||||
"darwin": "darwin",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
"nixpkgs": "nixpkgs",
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1690228878,
|
||||
"narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=",
|
||||
"lastModified": 1703433843,
|
||||
"narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "d8c973fd228949736dedf61b7f8cc1ece3236792",
|
||||
"rev": "417caa847f9383e111d1397039c9d4337d024bf0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -22,86 +21,6 @@
|
|||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -110,11 +29,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1673295039,
|
||||
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
||||
"lastModified": 1700795494,
|
||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -124,38 +43,6 @@
|
|||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -164,11 +51,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1682203081,
|
||||
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
|
||||
"lastModified": 1703113217,
|
||||
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
|
||||
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -184,42 +71,27 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1687871164,
|
||||
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
|
||||
"lastModified": 1705273357,
|
||||
"narHash": "sha256-JAlkxgJbWh7+auiT0rJL3IUXXtkULRqygfxQA6mvLgc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
|
||||
"rev": "924d91e1e4c802fd8e60279a022dbae5acb36f2d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.05",
|
||||
"ref": "release-23.11",
|
||||
"repo": "home-manager",
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1691305349,
|
||||
"narHash": "sha256-0Pig7jnmuRH3c5dOTVTOvTLwo2CRzYTyvJRQ82HWRSo=",
|
||||
"lastModified": 1705312285,
|
||||
"narHash": "sha256-rd+dY+v61Y8w3u9bukO/hB55Xl4wXv4/yC8rCGVnK5U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "5426a95071d0b9782b3209b3995cde1f5689616e",
|
||||
"rev": "bee2202bec57e521e3bd8acd526884b9767d7fa0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -230,27 +102,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1691328192,
|
||||
"narHash": "sha256-w59N1zyDQ7SupfMJLFvtms/SIVbdryqlw5AS4+DiH+Y=",
|
||||
"lastModified": 1703013332,
|
||||
"narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "61676e4dcfeeb058f255294bcb08ea7f3bc3ce56",
|
||||
"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",
|
||||
"rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -260,104 +116,75 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1691426742,
|
||||
"narHash": "sha256-NNyk6xL6E8lAI1wQ3ErzC4s+BOypXAZ+qPcyKNScxUQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "33fc23d321725093266f69e0f948a27adf02c0b8",
|
||||
"lastModified": 1705133751,
|
||||
"narHash": "sha256-rCIsyE80jgiOU78gCWN3A0wE0tR2GI5nH6MlS+HaaSQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nvim-cmp-vlime": {
|
||||
"flake": false,
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1672313103,
|
||||
"narHash": "sha256-ejjJWNGjx28viKz8tsaifCkJ9HHYAOkbOZAdlR8gQJo=",
|
||||
"owner": "HiPhish",
|
||||
"repo": "nvim-cmp-vlime",
|
||||
"rev": "5bc7fa02f255f6faed0ba5fda5f4883b46a66676",
|
||||
"type": "gitlab"
|
||||
"lastModified": 1705183652,
|
||||
"narHash": "sha256-rnfkyUH0x72oHfiSDhuCHDHg3gFgF+lF8zkkg5Zihsw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "428544ae95eec077c7f823b422afae5f174dee4b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "HiPhish",
|
||||
"repo": "nvim-cmp-vlime",
|
||||
"type": "gitlab"
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.11",
|
||||
"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": {
|
||||
"inputs": {
|
||||
"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",
|
||||
"impermanence": "impermanence",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nur": "nur",
|
||||
"nvim-cmp-vlime": "nvim-cmp-vlime",
|
||||
"rust-tools-nvim": "rust-tools-nvim",
|
||||
"vim-hy": "vim-hy",
|
||||
"vlime": "vlime"
|
||||
"nur": "nur"
|
||||
}
|
||||
},
|
||||
"rust-tools-nvim": {
|
||||
"flake": false,
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689033186,
|
||||
"narHash": "sha256-jtfyDxifchznUupLSao6nmpVqaX1yO0xN+NhqS9fgxg=",
|
||||
"owner": "simrat39",
|
||||
"repo": "rust-tools.nvim",
|
||||
"rev": "0cc8adab23117783a0292a0c8a2fbed1005dc645",
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "simrat39",
|
||||
"repo": "rust-tools.nvim",
|
||||
"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",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
|
|
106
flake.nix
106
flake.nix
|
@ -1,110 +1,34 @@
|
|||
# TODO: encryption
|
||||
{
|
||||
inputs = {
|
||||
impermanence.url = "github:nix-community/impermanence";
|
||||
agenix.url = "github:ryantm/agenix";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||
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";
|
||||
|
||||
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 = {
|
||||
url = "github:nix-community/home-manager/release-23.05";
|
||||
url = "github:nix-community/home-manager/release-23.11";
|
||||
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 = {
|
||||
agenix,
|
||||
home-manager,
|
||||
nur,
|
||||
nixpkgs-unstable,
|
||||
nixpkgs,
|
||||
nixpkgs-unstable,
|
||||
...
|
||||
} @ args: {
|
||||
nixosConfigurations = let
|
||||
mkSystem = system: module:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = args;
|
||||
modules = let
|
||||
overlay-unstable = final: prev: {
|
||||
unstable = nixpkgs-unstable.legacyPackages.${prev.system};
|
||||
};
|
||||
in [
|
||||
module
|
||||
|
||||
agenix.nixosModules.default
|
||||
home-manager.nixosModule
|
||||
nur.nixosModules.nur
|
||||
./common.nix
|
||||
./impermanence.nix
|
||||
./system.nix
|
||||
(_: {nixpkgs.overlays = [(import ./overlay args) overlay-unstable];})
|
||||
];
|
||||
nixosConfigurations.alice = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = args;
|
||||
modules = let
|
||||
overlay-unstable = final: prev: {
|
||||
unstable = nixpkgs-unstable.legacyPackages.${prev.system};
|
||||
};
|
||||
in {
|
||||
alice = mkSystem "x86_64-linux" ./alice;
|
||||
fanya = mkSystem "x86_64-linux" ./fanya;
|
||||
in [
|
||||
./hosts/alice
|
||||
(_: {nixpkgs.overlays = [(import ./overlay args) overlay-unstable];})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
}: let
|
||||
host = "11967@prio.ch-s011.rsync.net";
|
||||
in {
|
||||
age.secrets.borgpassword.file = ../secrets/borgpassword.age;
|
||||
age.secrets.borgpassword.file = ../../secrets/borgpassword.age;
|
||||
|
||||
services.borgbackup = {
|
||||
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=@"];
|
||||
};
|
||||
|
||||
fileSystems."/persist" = {
|
||||
fileSystems."/home" = {
|
||||
device = "/dev/disk/by-uuid/ad5a4aba-eb04-45e7-874e-375e7a9e4ea0";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@persist"];
|
||||
|
@ -40,12 +40,6 @@
|
|||
fsType = "vfat";
|
||||
};
|
||||
|
||||
fileSystems."/old" = {
|
||||
device = "/dev/disk/by-uuid/ad5a4aba-eb04-45e7-874e-375e7a9e4ea0";
|
||||
fsType = "btrfs";
|
||||
options = ["subvol=@old"];
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{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;
|
||||
|
||||
services.pipewire = {
|
||||
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-unstable,
|
||||
nixos-hardware,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
nixos-hardware.nixosModules.lenovo-thinkpad-x270
|
||||
];
|
||||
|
||||
system.stateVersion = "23.11";
|
||||
|
||||
time.timeZone = "Europe/Berlin";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
|
@ -13,8 +20,8 @@
|
|||
|
||||
fileSystems = {
|
||||
"/".options = ["compress=zstd"];
|
||||
"/home".options = ["compress=zstd"];
|
||||
"/nix".options = ["compress=zstd" "noatime"];
|
||||
"/persist".options = ["compress=zstd"];
|
||||
};
|
||||
|
||||
networking = {
|
||||
|
@ -27,6 +34,7 @@
|
|||
nixpkgs.flake = nixpkgs;
|
||||
nixpkgs-unstable.flake = nixpkgs-unstable;
|
||||
};
|
||||
|
||||
settings = {
|
||||
auto-optimise-store = true;
|
||||
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;
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
programs.direnv.enableBashIntegration = true;
|
||||
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
historyControl = ["erasedups" "ignorespace"];
|
||||
|
||||
shellAliases = {
|
||||
"cd.." = "cd ..";
|
||||
ch = "ssh -t irc.buffet.sh -- screen -r weechat";
|
||||
htop = "htop -t";
|
||||
mkdir = "mkdir -p";
|
||||
rg = "rg -S";
|
||||
update = let
|
||||
|
@ -36,8 +35,38 @@ in {
|
|||
];
|
||||
|
||||
initExtra = ''
|
||||
PS0='\[\e[0m\]'
|
||||
PS1='\[\e[1m\] '
|
||||
__prompt() {
|
||||
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 '"\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,
|
||||
...
|
||||
}: {
|
||||
# sins
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"tampermonkey"
|
||||
];
|
||||
|
||||
home-manager.users.buffet = {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
|
@ -11,14 +17,16 @@
|
|||
|
||||
profiles."buffet" = {
|
||||
extensions = with config.nur.repos.rycee.firefox-addons; [
|
||||
config.nur.repos.rycee.firefox-addons."10ten-ja-reader"
|
||||
bitwarden
|
||||
clearurls
|
||||
config.nur.repos.rycee.firefox-addons."10ten-ja-reader"
|
||||
decentraleyes
|
||||
fediact
|
||||
istilldontcareaboutcookies
|
||||
refined-github
|
||||
noscript
|
||||
privacy-badger
|
||||
sidebery
|
||||
stylus
|
||||
tampermonkey
|
||||
ublock-origin
|
||||
];
|
||||
|
||||
|
@ -28,7 +36,20 @@
|
|||
|
||||
userChrome = ''
|
||||
#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;
|
||||
|
||||
settings = let
|
||||
theme = import ../theme.nix;
|
||||
colors = import ./colors.nix;
|
||||
dehash = lib.attrsets.mapAttrs (_: lib.strings.removePrefix "#");
|
||||
normal = dehash theme.normal;
|
||||
bright = dehash theme.bright;
|
||||
primary = dehash colors.primary;
|
||||
normal = dehash colors.normal;
|
||||
bright = dehash colors.bright;
|
||||
in {
|
||||
main = {
|
||||
font = "${theme.font.family}:size=${toString (theme.font.size - 2)}";
|
||||
#font-italic = "${theme.font.family}:size=${toString (theme.font.size - 2)}";
|
||||
#font-bold-italic = "${theme.font.family}:style=Bold:size=${toString (theme.font.size - 2)}";
|
||||
pad = "${toString theme.font.size}x${toString theme.font.size}";
|
||||
term = "xterm-256color";
|
||||
font = "APL386 Unicode:weight=bold:size=8";
|
||||
pad = "12x8";
|
||||
};
|
||||
|
||||
scrollback.lines = 10000;
|
||||
|
@ -28,8 +28,7 @@
|
|||
};
|
||||
|
||||
colors = {
|
||||
foreground = lib.strings.removePrefix "#" theme.primary.foreground;
|
||||
background = lib.strings.removePrefix "#" theme.primary.background;
|
||||
inherit (primary) foreground background;
|
||||
|
||||
regular0 = normal.black;
|
||||
regular1 = normal.red;
|
|
@ -4,16 +4,13 @@ _: {
|
|||
enable = true;
|
||||
userEmail = "dev@buffet.sh";
|
||||
userName = "buffet";
|
||||
|
||||
difftastic = {
|
||||
enable = true;
|
||||
background =
|
||||
if (import ../theme.nix).light
|
||||
then "light"
|
||||
else "dark";
|
||||
background = "light";
|
||||
};
|
||||
|
||||
aliases = {
|
||||
a = "add";
|
||||
b = "branch";
|
||||
c = "commit --verbose";
|
||||
m = "commit --amend --verbose";
|
||||
|
@ -24,8 +21,6 @@ _: {
|
|||
|
||||
l = "log";
|
||||
s = "status -s";
|
||||
co = "checkout";
|
||||
cob = "checkout -b";
|
||||
};
|
||||
|
||||
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 = {
|
||||
programs.lsd = {
|
||||
programs.neovim = {
|
||||
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