chore: remove unused configurations
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
||||
[submodule "flakes/neovim"]
|
||||
path = flakes/neovim
|
||||
url = https://forge.capytal.company/dot013/nvim
|
||||
429
LICENSE-CC-BY-SA
429
LICENSE-CC-BY-SA
@@ -1,429 +0,0 @@
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
||||
|
||||
27
README.md
27
README.md
@@ -1,27 +0,0 @@
|
||||
<samp>my dotfiles</samp>
|
||||
|
||||
<samp><ul>
|
||||
<li><b>os:</b> <a href="https://nixos.org">nix</a></li>
|
||||
<li><b>wm:</b> <a href="https://hyprland.org">hyprland</a></li>
|
||||
<li><b>bar & widgets</b> <a href="https://github.com/elkowar/eww">eww</a></li>
|
||||
<li><b>wallpaper:</b> <a href="./static">by me</a></li>
|
||||
<li>
|
||||
<b>term:</b> <a href="https://wezfurlong.org/wezterm">wezterm</a>
|
||||
<ul><li><b>multiplexer:</b> <a href="https://github.com/tmux/tmux">tmux</a></li></ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>editor:</b> <a href="https://neovim.io">editor</a>
|
||||
<ul><li>
|
||||
<b>config:</b>
|
||||
<a href="https://codeberg.org/Guz013/.nvim">repo</a>
|
||||
<sup>(<a href="https://github.com/Guz013/.nvim">gh mirror</a>)</sup>
|
||||
</li></ul>
|
||||
</li>
|
||||
</ul></samp>
|
||||
|
||||
<samp><small>
|
||||
© Gustavo "Guz" L. de Mello <<a href="mailto:contact.guz013@gmail.com">contact.guz013@gmail.com</a>> <br/>
|
||||
Code under the <a href="./LICENSE-WTFPL">WTFPL license</a>, unless otherwise noticed.
|
||||
|
||||
<sub>THE CONFIGURATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.</sub>
|
||||
</small></samp>
|
||||
@@ -1,146 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./secrets.nix
|
||||
];
|
||||
|
||||
context = {
|
||||
job = false;
|
||||
};
|
||||
|
||||
# GnuPG keyring
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-gtk2;
|
||||
settings = {default-cache-ttl = 3600 * 24;};
|
||||
};
|
||||
services.pcscd.enable = true;
|
||||
|
||||
# Yet another nix cli helper
|
||||
programs.nh = {
|
||||
enable = true;
|
||||
clean.enable = true;
|
||||
clean.extraArgs = "--keep-since 7d --keep 3";
|
||||
flake = "/home/guz/.projects/dot013-nix";
|
||||
};
|
||||
|
||||
# QMK keyboard
|
||||
hardware.keyboard.qmk.enable = true;
|
||||
services.udev.packages = with pkgs; [via vial];
|
||||
|
||||
# Enable Nix-LD for standalone binaries (useful for development)
|
||||
programs.nix-ld.enable = true;
|
||||
|
||||
# Bluetooth
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
services.blueman.enable = true;
|
||||
|
||||
# Audio
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
|
||||
wireplumber.enable = true;
|
||||
|
||||
extraConfig = {
|
||||
pipewire-pulse."switch-on-connect.conf" = {
|
||||
"pulse.cmd" = [
|
||||
{
|
||||
cmd = "load-module";
|
||||
args = "module-switch-on-connect";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
security.rtkit.enable = true;
|
||||
services.pulseaudio.enable = lib.mkForce false;
|
||||
environment.systemPackages = with pkgs; [
|
||||
pwvucontrol
|
||||
via
|
||||
vial
|
||||
];
|
||||
|
||||
# Networking
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
nameservers = [
|
||||
/*
|
||||
"192.168.0.1"
|
||||
*/
|
||||
"8.8.8.8"
|
||||
# "1.1.1.1"
|
||||
# "9.9.9.9"
|
||||
];
|
||||
};
|
||||
|
||||
# Firewall
|
||||
networking.firewall.enable = true;
|
||||
networking.firewall.allowedUDPPorts = [53];
|
||||
networking.firewall.allowedTCPPorts = [80 433];
|
||||
|
||||
# SSH
|
||||
services.openssh.enable = true;
|
||||
services.openssh.settings = {
|
||||
PasswordAuthentication = false;
|
||||
PermitRootLogin = "forced-commands-only";
|
||||
};
|
||||
|
||||
# Mosh
|
||||
programs.mosh.enable = true;
|
||||
programs.mosh.openFirewall = true;
|
||||
|
||||
# Tailscale
|
||||
services.tailscale.enable = true;
|
||||
|
||||
# Locale
|
||||
time.timeZone = "America/Sao_Paulo";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = let
|
||||
locale = "pt_BR.UTF-8";
|
||||
in {
|
||||
LC_ADDRESS = locale;
|
||||
LC_IDENTIFICATION = locale;
|
||||
LC_MEASUREMENT = locale;
|
||||
LC_MONETARY = locale;
|
||||
LC_NAME = locale;
|
||||
LC_NUMERIC = locale;
|
||||
LC_PAPER = locale;
|
||||
LC_TELEPHONE = locale;
|
||||
LC_TIME = locale;
|
||||
};
|
||||
|
||||
# Keyboard
|
||||
services.xserver.xkb = {
|
||||
layout = "br";
|
||||
};
|
||||
console.keyMap = "br-abnt2";
|
||||
|
||||
security.polkit.enable = true;
|
||||
|
||||
# Bootloader
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.kernel.sysctl."kernel.yama.ptrace_scope" = lib.mkForce 0;
|
||||
|
||||
# Nix
|
||||
nix.settings = {
|
||||
experimental-features = ["nix-command" "flakes"];
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It's perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "24.11"; # Did you read the comment?
|
||||
}
|
||||
275
flake.lock
generated
275
flake.lock
generated
@@ -105,38 +105,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
@@ -158,24 +126,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -227,25 +177,6 @@
|
||||
"url": "https://code.capytal.cc/dot013/godotdev.nvim"
|
||||
}
|
||||
},
|
||||
"heart-modpack": {
|
||||
"inputs": {
|
||||
"nix-minecraft": "nix-minecraft",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762728338,
|
||||
"narHash": "sha256-TybTNtKAdrsv4r7/oHedacHjILXKeMwDiHVansh7Lus=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "36e7a038351c6ce8d80eb77f47d4c44accb40b02",
|
||||
"revCount": 33,
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@spacestation/heart/modpack.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@spacestation/heart/modpack.git"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -253,11 +184,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773681845,
|
||||
"narHash": "sha256-o8hrZrigP0JYcwnglCp8Zi8jQafWsxbDtRRPzuVwFxY=",
|
||||
"lastModified": 1774274588,
|
||||
"narHash": "sha256-dnHvv5EMUgTzGZmA+3diYjQU2O6BEpGLEOgJ1Qe9LaY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "0759e0e137305bc9d0c52c204c6d8dffe6f601a6",
|
||||
"rev": "cf9686ba26f5ef788226843bc31fda4cf72e373b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -306,7 +237,7 @@
|
||||
"inputs": {
|
||||
"godotdev": "godotdev",
|
||||
"mdfmt": "mdfmt",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nvim-treesitter-main": "nvim-treesitter-main"
|
||||
},
|
||||
"locked": {
|
||||
@@ -323,100 +254,7 @@
|
||||
"url": "https://code.capytal.cc/dot013/nvim"
|
||||
}
|
||||
},
|
||||
"nix-flatpak": {
|
||||
"locked": {
|
||||
"lastModified": 1767983141,
|
||||
"narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=",
|
||||
"owner": "gmodena",
|
||||
"repo": "nix-flatpak",
|
||||
"rev": "440818969ac2cbd77bfe025e884d0aa528991374",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "gmodena",
|
||||
"ref": "latest",
|
||||
"repo": "nix-flatpak",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-minecraft": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"heart-modpack",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762653944,
|
||||
"narHash": "sha256-zAgyqF6bPFGCe9WcZdskvxS3qmMPOh15TBF6yxbai78=",
|
||||
"owner": "infinidoge",
|
||||
"repo": "nix-minecraft",
|
||||
"rev": "8fa3e5e2763f7dfc7ab665609167a4e6796518f4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "infinidoge",
|
||||
"repo": "nix-minecraft",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-minecraft_2": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773456096,
|
||||
"narHash": "sha256-vlV3HnHBxnfW4a2ifabH3L/3iGGjA5ejEP7XD7EOC+E=",
|
||||
"owner": "infinidoge",
|
||||
"repo": "nix-minecraft",
|
||||
"rev": "ce7440a5fced512773e8e695d8a7bd57f33c7e6d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "infinidoge",
|
||||
"repo": "nix-minecraft",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1753429684,
|
||||
"narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7fd36ee82c0275fb545775cc5e4d30542899511d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1773646010,
|
||||
"narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1767892417,
|
||||
"narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
|
||||
@@ -432,7 +270,23 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1774106199,
|
||||
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1767379071,
|
||||
"narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=",
|
||||
@@ -448,13 +302,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1773610124,
|
||||
"narHash": "sha256-EpC7ELOKmb+xXaqpK5ZRpJ5g9fxxg6tWny7/rUBfrwk=",
|
||||
"lastModified": 1774244481,
|
||||
"narHash": "sha256-4XfMXU0DjN83o6HWZoKG9PegCvKvIhNUnRUI19vzTcQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9fe1300f4360e13f39d6d1d006e54fd5093e9ad5",
|
||||
"rev": "4590696c8693fea477850fe379a01544293ca4e2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -508,7 +362,7 @@
|
||||
},
|
||||
"nvim-treesitter-main": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nvim-treesitter": "nvim-treesitter",
|
||||
"nvim-treesitter-textobjects": "nvim-treesitter-textobjects"
|
||||
},
|
||||
@@ -543,39 +397,14 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rec-sh": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717124269,
|
||||
"narHash": "sha256-CboDW1jTZST8WwjUrrh/d+AiQ9Cz7MyDGuP4aUP4Ghw=",
|
||||
"ref": "main",
|
||||
"rev": "437b7475d283b76da1625e53648f6f2ed3b82378",
|
||||
"revCount": 13,
|
||||
"type": "git",
|
||||
"url": "https://code.capytal.cc/dot013/rec.sh/"
|
||||
},
|
||||
"original": {
|
||||
"ref": "main",
|
||||
"type": "git",
|
||||
"url": "https://code.capytal.cc/dot013/rec.sh/"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"disko": "disko",
|
||||
"heart-modpack": "heart-modpack",
|
||||
"home-manager": "home-manager",
|
||||
"impermanence": "impermanence",
|
||||
"neovim": "neovim",
|
||||
"nix-flatpak": "nix-flatpak",
|
||||
"nix-minecraft": "nix-minecraft_2",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"rec-sh": "rec-sh",
|
||||
"sops-nix": "sops-nix",
|
||||
"stylix": "stylix",
|
||||
"zen-browser": "zen-browser"
|
||||
@@ -588,11 +417,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773550941,
|
||||
"narHash": "sha256-wa/++bL2QeMUreNFBZEWluQfOYB0MnQIeGNMuaX9sfs=",
|
||||
"lastModified": 1774303811,
|
||||
"narHash": "sha256-fhG4JAcLgjKwt+XHbjs8brpWnyKUfU4LikLm3s0Q/ic=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "c469b6885f0dcd5c7c56bd935a0f08dbcd9e79e1",
|
||||
"rev": "614e256310e0a4f8a9ccae3fa80c11844fba7042",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -614,7 +443,7 @@
|
||||
"nixpkgs"
|
||||
],
|
||||
"nur": "nur",
|
||||
"systems": "systems_3",
|
||||
"systems": "systems",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-schemes": "tinted-schemes",
|
||||
@@ -622,11 +451,11 @@
|
||||
"tinted-zed": "tinted-zed"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1771788390,
|
||||
"narHash": "sha256-RzBpBwn93GWxLjacTte+ngwwg0L/BVOg4G/sSIeK3Rw=",
|
||||
"lastModified": 1774194089,
|
||||
"narHash": "sha256-SCczWhr8y8aaXVHG+gOGcRahNb0BU1Z5zYZuv9W/nA8=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "ebb238f14d6f930068be4718472da3105fd5d3bf",
|
||||
"rev": "7c34241d80ea64dd2039bb3a786fb66b4c6261d9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -651,36 +480,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -772,11 +571,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773737882,
|
||||
"narHash": "sha256-P6k0BtT1/idYveVRdcwAZk8By9UjZW8XOMhSoS6wTBY=",
|
||||
"lastModified": 1774352774,
|
||||
"narHash": "sha256-gibUM0pSnLxEeuFrYA8T1oEaixk+fjQpqXbYaxcEX/4=",
|
||||
"owner": "0xc000022070",
|
||||
"repo": "zen-browser-flake",
|
||||
"rev": "a7f1db35d74faf04e5189b3a32f890186ace5c28",
|
||||
"rev": "a0f3d47dbd8f8618a1920d5a5ca09b7993415895",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
109
flake.nix
109
flake.nix
@@ -29,28 +29,21 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
heart-modpack = {
|
||||
url = "git+ssh://gitea@spacestation/heart/modpack.git";
|
||||
# url = "git+file:///home/guz/.projects/heart-modpack";
|
||||
};
|
||||
|
||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
||||
|
||||
nix-minecraft = {
|
||||
url = "github:infinidoge/nix-minecraft";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# heart-modpack = {
|
||||
# url = "git+ssh://gitea@spacestation/heart/modpack.git";
|
||||
# # url = "git+file:///home/guz/.projects/heart-modpack";
|
||||
# };
|
||||
#
|
||||
# nix-minecraft = {
|
||||
# url = "github:infinidoge/nix-minecraft";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
|
||||
neovim = {
|
||||
url = "git+https://code.capytal.cc/dot013/nvim";
|
||||
# url = "git+file:///home/guz/.projects/dot013-nvim";
|
||||
};
|
||||
|
||||
rec-sh = {
|
||||
url = "git+https://code.capytal.cc/dot013/rec.sh/?ref=main";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
zen-browser = {
|
||||
url = "github:0xc000022070/zen-browser-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
@@ -83,12 +76,6 @@
|
||||
inherit pkgs pkgs-unstable;
|
||||
inherit (pkgs) lib;
|
||||
});
|
||||
|
||||
# Home manager NixOS module
|
||||
homeNixOSModules = [
|
||||
home-manager.nixosModules.home-manager
|
||||
./style.nix
|
||||
];
|
||||
in {
|
||||
formatter = forAllSystems ({pkgs, ...}: pkgs.alejandra);
|
||||
|
||||
@@ -104,64 +91,12 @@
|
||||
inherit inputs self;
|
||||
};
|
||||
modules = [
|
||||
./hosts/battleship-mk2/configuration.nix
|
||||
./modules/nixos/context.nix
|
||||
./hosts/battleship/configuration.nix
|
||||
./home/terminal/configuration.nix
|
||||
inputs.stylix.nixosModules.stylix
|
||||
./style.nix
|
||||
];
|
||||
};
|
||||
"figther" = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
pkgs-unstable = import nixpkgs-unstable {
|
||||
inherit system;
|
||||
config.allowUnfreePredicate = _: true;
|
||||
};
|
||||
inherit inputs self;
|
||||
};
|
||||
modules =
|
||||
homeNixOSModules
|
||||
++ [
|
||||
./hosts/figther/configuration.nix
|
||||
inputs.stylix.nixosModules.stylix
|
||||
./modules/nixos/context.nix
|
||||
./home/guz-lite/configuration.nix
|
||||
];
|
||||
};
|
||||
"rusty" = inputs.nixpkgs-2505.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
pkgs-unstable = import nixpkgs-unstable {
|
||||
inherit system;
|
||||
config.allowUnfreePredicate = _: true;
|
||||
};
|
||||
inherit inputs self;
|
||||
};
|
||||
modules =
|
||||
[
|
||||
inputs.home-manager-2505.nixosModules.home-manager
|
||||
./style.nix
|
||||
]
|
||||
++ [
|
||||
inputs.stylix-2505.nixosModules.stylix
|
||||
./modules/nixos/context.nix
|
||||
./hosts/rusty/configuration.nix
|
||||
];
|
||||
};
|
||||
"virus" = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
pkgs-unstable = import nixpkgs-unstable {
|
||||
inherit system;
|
||||
config.allowUnfreePredicate = _: true;
|
||||
};
|
||||
inherit inputs self;
|
||||
};
|
||||
modules = [
|
||||
./hosts/virus/configuration.nix
|
||||
];
|
||||
};
|
||||
"infiltrator" = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
@@ -183,28 +118,10 @@
|
||||
pkgs-unstable,
|
||||
...
|
||||
}: {
|
||||
"guz" = home-manager.lib.homeManagerConfiguration {
|
||||
"terminal" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs pkgs-unstable;
|
||||
modules = [
|
||||
inputs.stylix.homeManagerModules.stylix
|
||||
./style.nix
|
||||
inputs.xremap.homeManagerModules.default
|
||||
./home/guz
|
||||
];
|
||||
};
|
||||
"guz-lite" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs pkgs-unstable;
|
||||
modules = [
|
||||
inputs.stylix.homeManagerModules.stylix
|
||||
./style.nix
|
||||
inputs.xremap.homeManagerModules.default
|
||||
./home/guz-lite
|
||||
];
|
||||
};
|
||||
"worm" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs pkgs-unstable;
|
||||
modules = [
|
||||
./home/worm
|
||||
./home/terminal/home.nix
|
||||
];
|
||||
};
|
||||
});
|
||||
@@ -221,8 +138,6 @@
|
||||
];
|
||||
};
|
||||
neovim = inputs.neovim.homeManagerModules.default;
|
||||
qutebrowser-profiles = ./modules/home-manager/qutebrowser-profiles.nix;
|
||||
zen-browser = ./modules/home-manager/zen-browser;
|
||||
};
|
||||
|
||||
packages = forAllSystems ({
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||
inputs.rec-sh.homeManagerModules.rec-sh
|
||||
];
|
||||
|
||||
programs.rec-sh.enable = true;
|
||||
|
||||
xdg.mimeApps.enable = true;
|
||||
xdg.mimeApps.defaultApplications = let
|
||||
email = "org.mozilla.Thunderbird.desktop";
|
||||
in {
|
||||
"message/rfc822" = email;
|
||||
"x-scheme-handler/mailto" = email;
|
||||
"text/calendar" = email;
|
||||
"text/x-vcard" = email;
|
||||
};
|
||||
|
||||
services.flatpak.enable = true;
|
||||
services.flatpak.packages = [
|
||||
# Thunder Bird (Email Client)
|
||||
"org.mozilla.Thunderbird"
|
||||
# Brave (Job Browser)
|
||||
"com.brave.Browser"
|
||||
# Obsidian (Notes)
|
||||
"md.obsidian.Obsidian"
|
||||
];
|
||||
services.flatpak.update.onActivation = true;
|
||||
services.flatpak.overrides = {
|
||||
global = {
|
||||
# Force wayland by default
|
||||
Context = {
|
||||
sockets = ["wayland" "!x11" "!fallback-x11"];
|
||||
filesystems = [
|
||||
# Access to user themes
|
||||
"$HOME/.icons:ro"
|
||||
"$HOME/.themes:ro"
|
||||
"$HOME/.local/share/fonts:ro"
|
||||
];
|
||||
};
|
||||
Environment = {
|
||||
# Fix un-themed cursor in Wayland apps
|
||||
XCURSOR_PATH = "$HOME/.icons";
|
||||
};
|
||||
};
|
||||
"com.brave.Browser" = {Context.sockets = ["x11"];};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nautilus
|
||||
alacritty
|
||||
];
|
||||
|
||||
# TODO: Move this server to a remote server
|
||||
services.activitywatch = {
|
||||
enable = true;
|
||||
package = pkgs.aw-server-rust;
|
||||
watchers = {
|
||||
"awatcher" = {
|
||||
executable = "awatcher";
|
||||
package = pkgs.awatcher;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
{
|
||||
config,
|
||||
self,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
imports = [
|
||||
self.homeManagerModules.qutebrowser-profiles
|
||||
./scripts.nix
|
||||
./profiles.nix
|
||||
];
|
||||
|
||||
xdg.mimeApps.defaultApplications = with lib;
|
||||
listToAttrs (map (name: {
|
||||
inherit name;
|
||||
value = config.programs.qutebrowser.package.meta.desktopFileName;
|
||||
}) [
|
||||
"application/x-extension-shtml"
|
||||
"application/x-extension-xhtml"
|
||||
"application/x-extension-html"
|
||||
"application/x-extension-xhtm"
|
||||
"application/x-extension-htm"
|
||||
"x-scheme-handler/unknown"
|
||||
"x-scheme-handler/mailto"
|
||||
"x-scheme-handler/chrome"
|
||||
"x-scheme-handler/about"
|
||||
"x-scheme-handler/https"
|
||||
"x-scheme-handler/http"
|
||||
"application/xhtml+xml"
|
||||
"application/json"
|
||||
"text/plain"
|
||||
"text/html"
|
||||
]);
|
||||
|
||||
programs.qutebrowser.enable = true;
|
||||
programs.qutebrowser.keyBindings = {
|
||||
normal = {
|
||||
",m" = "spawn umpv {url}";
|
||||
",M" = "hint links spawn umpv {hint-url}";
|
||||
";M" = "hint --rapid links spawn umpv {hint-url}";
|
||||
"tD" = "config-cycle -t -u {url} colors.webpage.darkmode.enabled false true ;; reload";
|
||||
};
|
||||
};
|
||||
programs.qutebrowser.settings = {
|
||||
auto_save.session = true;
|
||||
confirm_quit = ["downloads"];
|
||||
|
||||
tabs.width = builtins.floor (1920 * 0.1);
|
||||
tabs.position = "left";
|
||||
|
||||
# Colors
|
||||
colors.tabs.pinned.even.bg = mkForce "#181818";
|
||||
colors.tabs.pinned.odd.bg = mkForce "#181818";
|
||||
|
||||
colors.tabs.selected.even.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
colors.tabs.selected.odd.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
colors.tabs.selected.even.fg = mkForce "#111111";
|
||||
colors.tabs.selected.odd.fg = mkForce "#111111";
|
||||
|
||||
colors.tabs.pinned.selected.even.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
colors.tabs.pinned.selected.odd.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
|
||||
## Darkmode
|
||||
colors.webpage.darkmode.enabled = true;
|
||||
colors.webpage.darkmode.algorithm = "lightness-cielab";
|
||||
colors.webpage.darkmode.policy.images = "never";
|
||||
|
||||
# Prevent fingerprinting
|
||||
content.canvas_reading = false;
|
||||
content.cookies.accept = "all";
|
||||
content.cookies.store = true;
|
||||
content.geolocation = false;
|
||||
content.webgl = false;
|
||||
content.webrtc_ip_handling_policy = "default-public-interface-only";
|
||||
};
|
||||
programs.qutebrowser.extraConfig = ''
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'file://*')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'http://*:*/*')
|
||||
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'capytal.company')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.capytal.company')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'capytal.cc')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.capytal.cc')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'lored.dev')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.lored.dev')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'guz.one')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.guz.one')
|
||||
|
||||
# Thanks to @hseg on GitHub (https://github.com/qutebrowser/qutebrowser/issues/6880#issuecomment-1815248845)
|
||||
config.bind('o', 'cmd-set-text -s :open -s')
|
||||
config.bind('go', 'cmd-set-text :open -s {url:pretty}')
|
||||
config.bind('O', 'cmd-set-text -s :open -s -t')
|
||||
config.bind('gO', 'cmd-set-text :open -s -t -r {url:pretty}')
|
||||
config.bind('xo', 'cmd-set-text -s :open -s -b')
|
||||
config.bind('xO', 'cmd-set-text :open -s -b -r {url:pretty}')
|
||||
config.bind('wo', 'cmd-set-text -s :open -s -w')
|
||||
config.bind('wO', 'cmd-set-text :open -s -w {url:pretty}')
|
||||
config.bind('pp', 'open -s -- {clipboard}')
|
||||
config.bind('pP', 'open -s -- {primary}')
|
||||
config.bind('Pp', 'open -s -t -- {clipboard}')
|
||||
config.bind('PP', 'open -s -t -- {primary}')
|
||||
config.bind('wp', 'open -s -w -- {clipboard}')
|
||||
config.bind('wP', 'open -s -w -- {primary}')
|
||||
'';
|
||||
programs.qutebrowser.searchEngines = {
|
||||
DEFAULT = "https://search.brave.com/search?q={}";
|
||||
# Nix
|
||||
pkg = "https://search.nixos.org/packages?query={}";
|
||||
opt = "https://search.nixos.org/options?query={}";
|
||||
lib = "https://noogle.dev/q?term={}";
|
||||
hm = "https://home-manager-options.extranix.com/?query={}";
|
||||
wiki = "https://wiki.nixos.org/w/index.php?search={}";
|
||||
|
||||
# Wikipedia
|
||||
w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
|
||||
wpt = "https://pt.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
|
||||
};
|
||||
|
||||
programs.mpv.enable = true;
|
||||
programs.mpv.scripts = with pkgs.mpvScripts; [
|
||||
quality-menu
|
||||
sponsorblock
|
||||
];
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{config, ...}: {
|
||||
programs.qutebrowser.profiles = let
|
||||
programmingSearchEngines = {
|
||||
# Languages
|
||||
go = "https://pkg.go.dev/search?q={}";
|
||||
};
|
||||
setColor = c: {
|
||||
colors.tabs.selected.even.bg = c;
|
||||
colors.tabs.selected.odd.bg = c;
|
||||
colors.tabs.pinned.selected.even.bg = c;
|
||||
colors.tabs.pinned.selected.odd.bg = c;
|
||||
};
|
||||
in {
|
||||
"art" = {
|
||||
settings = setColor "#CBA6F7"; # Catppuccin's Mauve;
|
||||
};
|
||||
"personal" = {
|
||||
settings = setColor "#F5E0DC"; # Catppuccin's Rosewater
|
||||
};
|
||||
"work" = {
|
||||
settings = setColor "#74C7EC"; # Catppuccin's Sapphire
|
||||
searchEngines = programmingSearchEngines;
|
||||
};
|
||||
"job" = {
|
||||
settings =
|
||||
(config.programs.qutebrowser.profiles."work".settings)
|
||||
// {
|
||||
confirm_quit = ["always"];
|
||||
content.webgl = true;
|
||||
}
|
||||
// (setColor "#A6E2A1"); # Catppuccin's Green
|
||||
searchEngines = programmingSearchEngines;
|
||||
};
|
||||
"shopping" = {
|
||||
settings = setColor "#F9E2AF"; # Catppuccin's Yellow
|
||||
};
|
||||
"goverment" = {
|
||||
settings = setColor "#A6ADC8"; # Catppuccin's Subtext 1
|
||||
};
|
||||
"academic" = {
|
||||
settings =
|
||||
{
|
||||
confirm_quit = ["always"];
|
||||
content.webgl = true;
|
||||
}
|
||||
// setColor "#19236F";
|
||||
};
|
||||
"facebook" = {
|
||||
settings = setColor "#1877F2"; # Facebook's Blue
|
||||
};
|
||||
"yt-music" = {
|
||||
settings =
|
||||
{
|
||||
tabs.width = 10;
|
||||
}
|
||||
// (setColor "#FF0000"); # Youtube's Red
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{pkgs, ...}: {
|
||||
programs.qutebrowser.greasemonkey = [
|
||||
# Youtube Adblocking
|
||||
(pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_adblock.js";
|
||||
hash = "sha256-AyD9VoLJbKPfqmDEwFIEBMl//EIV/FYnZ1+ona+VU9c=";
|
||||
})
|
||||
|
||||
# Youtube Sponsorblock
|
||||
(pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_sponsorblock.js";
|
||||
hash = "sha256-nwNade1oHP+w5LGUPJSgAX1+nQZli4Rhe8FFUoF5mLE=";
|
||||
})
|
||||
|
||||
# Reddit adblock
|
||||
(pkgs.fetchurl {
|
||||
url = "https://github.com/afreakk/greasemonkeyscripts/raw/refs/heads/master/reddit_adblock.js";
|
||||
hash = "sha256-KmCXL4GrZtwPLRyAvAxADpyjbdY5UFnS/XKZFKtg7tk=";
|
||||
})
|
||||
|
||||
# Pinterest adblock
|
||||
(pkgs.writeText "pinterest_adblock.js" ''
|
||||
// ==UserScript==
|
||||
// @name remove ads from pinterest
|
||||
// @version 1.0.0
|
||||
// @author guz
|
||||
// @match *://*.pinterest.com/*
|
||||
// ==/UserScript==
|
||||
|
||||
const removeShit = () => {
|
||||
document.querySelectorAll('[data-grid-item]:has([title="Promoted by"])').forEach((e) => e.remove());
|
||||
document.querySelectorAll('[data-grid-item]:has([data-test-id="oneTapPromotedPin"])').forEach((e) => e.remove());
|
||||
document.querySelectorAll('[data-grid-item]:has([aria-label="Product Pin"])').forEach((e) => e.remove());
|
||||
// document.querySelectorAll('[data-grid-item]:has-text(ideas you might love)').forEach((e) => e.remove());
|
||||
// document.querySelectorAll('[data-grid-item]:has-text(Seaches to try)').forEach((e) => e.remove());
|
||||
};
|
||||
(trySetInterval = () => {
|
||||
window.setInterval(removeShit, 1000);
|
||||
})();
|
||||
'')
|
||||
|
||||
# Privacy Redirector
|
||||
(pkgs.substitute {
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://github.com/dybdeskarphet/privacy-redirector/raw/refs/heads/main/privacy-redirector.user.js";
|
||||
hash = "sha256-xj36+/3coiStIxftWCJUWHokSEmr+YRLOTktbmn5TkU=";
|
||||
};
|
||||
substitutions = [
|
||||
# ON-OFF (Redirection / Farside)
|
||||
"--replace"
|
||||
"pinterest = [true, true]"
|
||||
"pinterest = [false, false]"
|
||||
"--replace"
|
||||
"tumblr = [true, false]"
|
||||
"tumblr = [false, false]"
|
||||
"--replace"
|
||||
"wikipedia = [true, false]"
|
||||
"wikipedia = [false, false]"
|
||||
"--replace"
|
||||
"youtube = [true, false]"
|
||||
"youtube = [false, false]"
|
||||
"--replace"
|
||||
"instagram = [true, true]"
|
||||
"instagram = [false, false]"
|
||||
];
|
||||
})
|
||||
|
||||
# # Aternos Anti-Anti-Adblock
|
||||
# (pkgs.fetchurl {
|
||||
# url = "https://gist.github.com/DvilMuck/f2b14f3f65e8f22974d781277158f82a/raw/66a0d8d9dd598fc516c3c9d9bbf6ef3f0f6a7a1e/aternosAntiAntiadblock.user.js";
|
||||
# hash = "sha256-PBFCt9o22D7WAN8S6C2BnLKgG3J5zZ/mWbWspCKcm6k=";
|
||||
# })
|
||||
#
|
||||
# # Aternos block tracking
|
||||
# (pkgs.fetchurl {
|
||||
# url = "https://gist.github.com/DvilMuck/f2b14f3f65e8f22974d781277158f82a/raw/66a0d8d9dd598fc516c3c9d9bbf6ef3f0f6a7a1e/aternosBlockTracking.user.js";
|
||||
# hash = "sha256-GDDx3gbvh28qiB3Gi61k/pdM11wJhcV7dwCRGNvq30c=";
|
||||
# })
|
||||
];
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
{pkgs, ...}: {
|
||||
imports = [
|
||||
../worm/configuration.nix
|
||||
];
|
||||
|
||||
home-manager.users.guz = import ./default.nix;
|
||||
|
||||
services.flatpak.enable = true;
|
||||
|
||||
# Desktops
|
||||
|
||||
## Hyprland
|
||||
programs.hyprland.enable = true;
|
||||
programs.hyprland.withUWSM = true;
|
||||
|
||||
programs.hyprlock.enable = true;
|
||||
|
||||
programs.xwayland.enable = true;
|
||||
|
||||
services.dbus.enable = true;
|
||||
|
||||
### Freedesktop providers
|
||||
|
||||
#### Secrets
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
security.pam.services."gdm".enableGnomeKeyring = true;
|
||||
|
||||
### Force wayland
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
||||
### File picker and other portals not implemented by XDPH
|
||||
xdg.portal.extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
];
|
||||
|
||||
services.xserver.displayManager.gdm.enable = true;
|
||||
|
||||
fonts.fontDir.enable = true;
|
||||
fonts.fontconfig.enable = true;
|
||||
fonts.packages = with pkgs; [
|
||||
google-fonts
|
||||
nerd-fonts.fira-code
|
||||
(stdenv.mkDerivation rec {
|
||||
name = "Cal Sans";
|
||||
pname = "calsans";
|
||||
version = "1.0.0";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/calcom/font/releases/download/v${version}/CalSans_Semibold_v${version}.zip";
|
||||
stripRoot = false;
|
||||
hash = "sha256-JqU64JUgWimJgrKX3XYcml8xsvy//K7O5clNKJRGaTM=";
|
||||
};
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -m444 -Dt $out/share/fonts/truetype fonts/webfonts/*.ttf
|
||||
runHook postInstall
|
||||
'';
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/calcom/font";
|
||||
license = licenses.ofl;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
# Xremap run-as-user
|
||||
hardware.uinput.enable = true;
|
||||
users.groups.uinput.members = ["guz"];
|
||||
users.groups.input.members = ["guz"];
|
||||
|
||||
# TODO: Activity watch server
|
||||
networking.firewall.allowedTCPPorts = [5600];
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
{...}: {
|
||||
home.username = "guz";
|
||||
home.homeDirectory = "/home/guz";
|
||||
|
||||
imports = [
|
||||
../worm/default.nix
|
||||
|
||||
./desktop
|
||||
./browser
|
||||
|
||||
./apps.nix
|
||||
./style.nix
|
||||
./desktop.nix
|
||||
./keymaps.nix
|
||||
];
|
||||
|
||||
services.polkit-gnome.enable = true;
|
||||
|
||||
# The *state version* indicates which default
|
||||
# settings are in effect and will therefore help avoid breaking
|
||||
# program configurations. Switching to a higher state version
|
||||
# typically requires performing some manual steps, such as data
|
||||
# conversion or moving files.
|
||||
home.stateVersion = "24.11";
|
||||
}
|
||||
@@ -1,147 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.pointerCursor.enable = true;
|
||||
home.pointerCursor.name = "Vanilla-DMZ";
|
||||
home.pointerCursor.package = pkgs.vanilla-dmz;
|
||||
home.pointerCursor.gtk.enable = true;
|
||||
home.pointerCursor.x11.enable = true;
|
||||
home.pointerCursor.hyprcursor.enable = true;
|
||||
|
||||
home.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
||||
# Hyprland
|
||||
wayland.windowManager.hyprland.enable = true;
|
||||
wayland.windowManager.hyprland.systemd.enable = false;
|
||||
wayland.windowManager.hyprland.xwayland.enable = true;
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
"$MOD" = "SUPER";
|
||||
"$MONITOR-1" = lib.mkDefault "";
|
||||
"$MONITOR-2" = lib.mkDefault "";
|
||||
|
||||
animations.enabled = true;
|
||||
|
||||
decoration = {
|
||||
rounding = 5;
|
||||
|
||||
dim_inactive = true;
|
||||
dim_strength = 0.2;
|
||||
dim_around = 0.4;
|
||||
|
||||
blur.enabled = false;
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
preserve_split = true;
|
||||
};
|
||||
|
||||
exec-once = [
|
||||
"systemctl --user enable --now hyprpaper.service"
|
||||
"systemctl --user enable --now hypridle.service"
|
||||
"systemctl --user restart --now activitywatch-watcher-awatcher.service"
|
||||
];
|
||||
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 10;
|
||||
border_size = 0;
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "br";
|
||||
kb_variant = "abnt2";
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0;
|
||||
};
|
||||
|
||||
monitor = [
|
||||
", preferred, auto, 1"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
# Inkscape pop-ups
|
||||
"float,class:^(org.inkscape.Inkscape)$"
|
||||
"tile,class:^(org.inkscape.Inkscape)$,title:(.*)(- Inkscape)$"
|
||||
|
||||
# Blender pop-ups
|
||||
"float,class:^(blender)$,title:^(?!.*\ \-\ Blender).*$)"
|
||||
];
|
||||
|
||||
workspace = [
|
||||
# Primary monitor
|
||||
"1,monitor:$MONITOR-1,default:true"
|
||||
"2,monitor:$MONITOR-1"
|
||||
"3,monitor:$MONITOR-1"
|
||||
"4,monitor:$MONITOR-1"
|
||||
"5,monitor:$MONITOR-1"
|
||||
# Second monitor
|
||||
"6,monitor:$MONITOR-2"
|
||||
"7,monitor:$MONITOR-2"
|
||||
"8,monitor:$MONITOR-2"
|
||||
"9,monitor:$MONITOR-2"
|
||||
"10,monitor:$MONITOR-2,default:true"
|
||||
];
|
||||
};
|
||||
|
||||
## Idle lock screen
|
||||
programs.hyprlock.enable = true;
|
||||
|
||||
services.hypridle.enable = true;
|
||||
services.hypridle.settings = let
|
||||
hyprlock = lib.getExe config.programs.hyprlock.package;
|
||||
|
||||
brightnessctl = lib.getExe pkgs.brightnessctl;
|
||||
hyprctl = lib.getExe' config.wayland.windowManager.hyprland.package "hyprctl";
|
||||
loginctl = lib.getExe' pkgs.systemd "loginctl";
|
||||
in {
|
||||
general = {
|
||||
lock_cmd = "pidof ${hyprlock} || ${hyprlock}";
|
||||
before_sleep_cmd = "${loginctl} unlock-session";
|
||||
after_sleep_cmd = "${hyprctl} dispatch dpms on";
|
||||
};
|
||||
listener = {
|
||||
timeout = 10;
|
||||
on-timeout = "${brightnessctl} -sd rgb:kbd_backlight set 0 && ${hyprlock}";
|
||||
on-resume = "${brightnessctl} -rd rgb:kbd_backlight";
|
||||
};
|
||||
};
|
||||
|
||||
## Wallpaper
|
||||
services.hyprpaper.enable = true;
|
||||
|
||||
## File picker and other portals not implemented by XDPH
|
||||
xdg.portal.extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
];
|
||||
xdg.portal.config.common.default = ["gtk"];
|
||||
xdg.portal.xdgOpenUsePortal = true;
|
||||
|
||||
## Temp status bar
|
||||
programs.waybar.enable = true;
|
||||
programs.waybar.style = builtins.readFile ./waybar.css;
|
||||
programs.waybar.systemd.enable = true;
|
||||
|
||||
# Notifications
|
||||
services.dunst.enable = true;
|
||||
services.dunst.settings = {
|
||||
global = {
|
||||
follow = "mouse";
|
||||
};
|
||||
};
|
||||
|
||||
# Application Launcher
|
||||
programs.rofi.enable = true;
|
||||
programs.rofi.modes = ["drun" "emoji"];
|
||||
|
||||
# Clipboard
|
||||
services.cliphist.enable = true;
|
||||
services.cliphist.allowImages = true;
|
||||
home.packages = with pkgs; [
|
||||
wl-clipboard
|
||||
];
|
||||
}
|
||||
@@ -1,149 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.eww.enable = true;
|
||||
programs.eww.enableZshIntegration = true;
|
||||
|
||||
programs.waybar.settings = let
|
||||
layer = "top";
|
||||
position = "top";
|
||||
|
||||
height = 25;
|
||||
spacing = 5;
|
||||
|
||||
margin-top = 5;
|
||||
margin-x = 10;
|
||||
margin-right = margin-x;
|
||||
margin-left = margin-x;
|
||||
in {
|
||||
main = let
|
||||
monitor = config.wayland.windowManager.hyprland.settings."$MONITOR-1";
|
||||
in {
|
||||
inherit
|
||||
layer
|
||||
position
|
||||
height
|
||||
spacing
|
||||
margin-top
|
||||
margin-right
|
||||
margin-left
|
||||
;
|
||||
|
||||
output = [monitor];
|
||||
|
||||
modules-left = [
|
||||
"hyprland/workspaces"
|
||||
];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
active-only = false;
|
||||
persistent-workspaces = {
|
||||
"${monitor}" = [1 2 3 4 5];
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
default = "";
|
||||
active = "";
|
||||
};
|
||||
};
|
||||
|
||||
modules-center = [
|
||||
"clock"
|
||||
];
|
||||
|
||||
modules-right = [
|
||||
"pulseaudio"
|
||||
];
|
||||
|
||||
"clock" = {
|
||||
format = "{:%d %R}";
|
||||
format-alt = "{:%B %d, 12.0%y (%A)}";
|
||||
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||
calendar = {
|
||||
mode = "year";
|
||||
mode-mon-col = 3;
|
||||
weeks-pos = "left";
|
||||
on-scroll = 1;
|
||||
format = with config.lib.stylix.colors.withHashtag; {
|
||||
months = "<span color='${base09}'><b>{}</b></span>";
|
||||
days = "<span color='${base05}'><b>{}</b></span>";
|
||||
weeks = "<span color='${base09}'><b>W{}</b></span>";
|
||||
weeksdays = "<span color='${base09}'><b>{}</b></span>";
|
||||
today = "<span color='${base07}'><b>{}</b></span>";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = "";
|
||||
format-icons = {
|
||||
default = ["" ""];
|
||||
};
|
||||
onclick = "${lib.getExe pkgs.pwvucontrol}";
|
||||
};
|
||||
};
|
||||
secondary = let
|
||||
monitor = config.wayland.windowManager.hyprland.settings."$MONITOR-2";
|
||||
in {
|
||||
inherit
|
||||
layer
|
||||
position
|
||||
height
|
||||
spacing
|
||||
margin-top
|
||||
margin-right
|
||||
margin-left
|
||||
;
|
||||
|
||||
output = [monitor];
|
||||
|
||||
modules-left = [
|
||||
"cpu"
|
||||
"memory"
|
||||
"disk"
|
||||
];
|
||||
|
||||
"cpu" = {
|
||||
format = " {usage}%";
|
||||
};
|
||||
|
||||
"memory" = {
|
||||
format = " {percentage}%";
|
||||
};
|
||||
|
||||
"disk" = {
|
||||
interval = 30;
|
||||
format = " {specific_free:0.2f}";
|
||||
unit = "GB";
|
||||
};
|
||||
|
||||
modules-center = [
|
||||
"hyprland/window"
|
||||
];
|
||||
|
||||
"hyprland/window" = {
|
||||
format = "{title}";
|
||||
};
|
||||
|
||||
modules-right = [
|
||||
"hyprland/workspaces"
|
||||
];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
active-only = false;
|
||||
persistent-workspaces = {
|
||||
"${monitor}" = [6 7 8 9 10];
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
default = "";
|
||||
active = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{...}: {
|
||||
imports = [./bar.nix];
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
.body {
|
||||
background-color: red;
|
||||
border-radius: $rounding;
|
||||
|
||||
font-family: $font-monospace;
|
||||
font-weight: bold;
|
||||
color: $base05;
|
||||
|
||||
padding: 0px $gaps-out;
|
||||
}
|
||||
|
||||
.workspaces {
|
||||
font-family: $font-emoji;
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
|
||||
.day {
|
||||
padding-left: $gaps-out;
|
||||
}
|
||||
|
||||
.valuebar {
|
||||
scale {
|
||||
min-height: 5px;
|
||||
}
|
||||
|
||||
scale trough {
|
||||
all: unset;
|
||||
background: darkgreen;
|
||||
border-radius: 50px;
|
||||
min-height: 5px;
|
||||
min-width: 50px;
|
||||
|
||||
slider {
|
||||
all: unset;
|
||||
}
|
||||
|
||||
highlight {
|
||||
all: unset;
|
||||
background: green;
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
(defpoll time :interval "10s" :initial "00:00" `date +%H:%M`)
|
||||
(defpoll date :interval "1m" :initial "00/00" `date +%d/%m`)
|
||||
(defpoll week-day :interval "1m" :initial "1" `date +%w`)
|
||||
|
||||
(defvar bar1g (geometry
|
||||
:x "0%" :y "0%"
|
||||
:width "2560px"
|
||||
:height "20px"
|
||||
:anchor "top center"))
|
||||
|
||||
(defwindow statusbarcomplete
|
||||
:monitor 0
|
||||
:stacking "fg"
|
||||
:exclusive true
|
||||
:reserve (struts :distance "20px" :side "top")
|
||||
:windowtype "dock"
|
||||
:focusable false
|
||||
:geometry bar1g
|
||||
(box
|
||||
:orientation "h"
|
||||
:class "topbar-shell"
|
||||
(centerbox
|
||||
:orientation "h"
|
||||
:class "body"
|
||||
(box
|
||||
:halign "start"
|
||||
(day))
|
||||
(empty)
|
||||
(box
|
||||
:halign "end"
|
||||
(statuses)))))
|
||||
|
||||
|
||||
;; (defwidget workspaces [workspace]
|
||||
;; (box
|
||||
;; :class "workspaces"
|
||||
;; :orientation "h"
|
||||
;; "${
|
||||
;; workspace == 1 ? '' : ''
|
||||
;; } ${
|
||||
;; workspace == 2 ? '' : ''
|
||||
;; } ${
|
||||
;; workspace == 3 ? '' : ''
|
||||
;; } ${
|
||||
;; workspace == 4 ? '' : ''
|
||||
;; } ${
|
||||
;; workspace == 5 ? '' : ''
|
||||
;; }"))
|
||||
|
||||
(defwidget day []
|
||||
(box
|
||||
:orientation "h"
|
||||
:class "day"
|
||||
; Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn
|
||||
"${[" Sun", " Mon", " Tue", " Wed", " Thu", " Fri", " Sat"][week-day]} ${date} - ${time}"))
|
||||
|
||||
(defwidget statuses []
|
||||
(box
|
||||
:class "statuses"
|
||||
:orientation "h"
|
||||
(box
|
||||
(valuebar
|
||||
:label ""
|
||||
:value-text "Ram: ${round(EWW_RAM.used_mem_perc, 2)}% used"
|
||||
:value "${EWW_RAM.used_mem_perc}"))
|
||||
(box
|
||||
(valuebar
|
||||
:label ""
|
||||
:value-text "CPU ${round(EWW_CPU.avg, 2)}"
|
||||
:value "${EWW_CPU.avg}"))
|
||||
(box
|
||||
(valuebar
|
||||
:label ""
|
||||
:value-text "Disk: ${round(EWW_DISK["/"].used_perc, 2)}% used"
|
||||
:value "${EWW_DISK["/"].used_perc}"))))
|
||||
|
||||
(defwidget valuebar [label value ?value-text ?onchange ?onclick]
|
||||
(box
|
||||
:class "valuebar"
|
||||
:orientation "h"
|
||||
:space-evenly false
|
||||
:tooltip "${value-text == "" ? value : value-text}"
|
||||
(box
|
||||
:orientation "h"
|
||||
:space-evenly false
|
||||
:class "label"
|
||||
label)
|
||||
(scale
|
||||
:min 0
|
||||
:max 101
|
||||
:active {onchange != ""}
|
||||
:onchange onchange
|
||||
:value value)))
|
||||
|
||||
(defwidget empty [] "")
|
||||
@@ -1,220 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.xremap.homeManagerModules.default
|
||||
];
|
||||
|
||||
services.xremap.enable = true;
|
||||
services.xremap.withHypr = true;
|
||||
services.xremap.config.keymap = let
|
||||
TERMINAL = config.home.sessionVariables.TERMINAL;
|
||||
EXPLORER = config.home.sessionVariables.EXPLORER;
|
||||
rofi = lib.getExe config.programs.rofi.finalPackage;
|
||||
|
||||
exec = c:
|
||||
["hyprctl" "dispatch" "exec"]
|
||||
++ (
|
||||
if builtins.isString c
|
||||
then [c]
|
||||
else c
|
||||
);
|
||||
|
||||
MODE_DEFAULT = "default";
|
||||
move = d: ["hyprctl" "dispatch" "movefocus" d];
|
||||
close = _: ["hyprctl" "dispatch" "killactive"];
|
||||
switchWorkspace = w: ["hyprctl" "dispatch" "workspace" w];
|
||||
toggleFullscreen = _: ["hyprctl" "dispatch" "fullscreen"];
|
||||
toggleFloating = _: ["hyprctl" "dispatch" "togglefloating"];
|
||||
toggleSplit = _: ["hyprctl" "dispatch" "togglesplit"];
|
||||
|
||||
MODE_ARREGEMENT = "arregement";
|
||||
moveTile = d: ["hyprctl" "dispatch" "movewindow" d];
|
||||
switchTileWorkspace = w: ["hyprctl" "dispatch" "movetoworkspace" w];
|
||||
|
||||
MODE_RESIZING = "resizing";
|
||||
resize = d:
|
||||
[
|
||||
"hyprctl"
|
||||
"dispatch"
|
||||
"resizeactive"
|
||||
]
|
||||
++ {
|
||||
"l" = ["-10" "0"];
|
||||
"r" = ["10" "0"];
|
||||
"u" = ["0" "-10"];
|
||||
"d" = ["0" "10"];
|
||||
}
|
||||
.${
|
||||
d
|
||||
};
|
||||
|
||||
movementBinds = {
|
||||
# Move between tiles
|
||||
"super-h" = {launch = move "l";};
|
||||
"super-l" = {launch = move "r";};
|
||||
"super-k" = {launch = move "u";};
|
||||
"super-j" = {launch = move "d";};
|
||||
# Move between workspaces
|
||||
"super-1" = {launch = switchWorkspace "1";};
|
||||
"super-2" = {launch = switchWorkspace "2";};
|
||||
"super-3" = {launch = switchWorkspace "3";};
|
||||
"super-4" = {launch = switchWorkspace "4";};
|
||||
"super-5" = {launch = switchWorkspace "5";};
|
||||
"super-6" = {launch = switchWorkspace "6";};
|
||||
"super-7" = {launch = switchWorkspace "7";};
|
||||
"super-8" = {launch = switchWorkspace "8";};
|
||||
"super-9" = {launch = switchWorkspace "9";};
|
||||
"super-0" = {launch = switchWorkspace "10";};
|
||||
};
|
||||
in [
|
||||
{
|
||||
name = "General Keybindings";
|
||||
remap = {
|
||||
# Terminal
|
||||
"super-q" = {launch = exec "${TERMINAL}";};
|
||||
# File explorer
|
||||
"super-e" = {launch = exec ["${TERMINAL}" "-e" "${EXPLORER}"];};
|
||||
# Web Browser
|
||||
"super-w" = {launch = exec ["xdg-open" "https://search.brave.com"];};
|
||||
# Launcher
|
||||
"super-s" = {
|
||||
launch = exec [
|
||||
(lib.getExe (pkgs.writeShellScriptBin "launcher" ''
|
||||
${rofi} -show drun -theme ${config.xdg.configHome}/rofi/launcher.rasi
|
||||
''))
|
||||
];
|
||||
};
|
||||
# Emoji picker
|
||||
"super-i" = {
|
||||
launch = exec [
|
||||
(lib.getExe (pkgs.rofimoji))
|
||||
];
|
||||
};
|
||||
# Toggle fullscreen
|
||||
"super-f" = {launch = toggleFullscreen "";};
|
||||
# Toggle floating
|
||||
"super-shift-f" = {launch = toggleFloating "";};
|
||||
# Close window
|
||||
"super-c" = {launch = close "";};
|
||||
};
|
||||
mode = MODE_DEFAULT;
|
||||
}
|
||||
{
|
||||
name = "Navigation Keybinds";
|
||||
remap =
|
||||
{
|
||||
# Switch modes
|
||||
"super-m" = {
|
||||
remap = {
|
||||
"a" = {set_mode = MODE_ARREGEMENT;};
|
||||
"r" = {set_mode = MODE_RESIZING;};
|
||||
};
|
||||
};
|
||||
|
||||
# Kick move to workspace
|
||||
"super-shift-1" = {launch = switchTileWorkspace "1";};
|
||||
"super-shift-2" = {launch = switchTileWorkspace "2";};
|
||||
"super-shift-3" = {launch = switchTileWorkspace "3";};
|
||||
"super-shift-4" = {launch = switchTileWorkspace "4";};
|
||||
"super-shift-5" = {launch = switchTileWorkspace "5";};
|
||||
"super-shift-6" = {launch = switchTileWorkspace "6";};
|
||||
"super-shift-7" = {launch = switchTileWorkspace "7";};
|
||||
"super-shift-8" = {launch = switchTileWorkspace "8";};
|
||||
"super-shift-9" = {launch = switchTileWorkspace "9";};
|
||||
"super-shift-0" = {launch = switchTileWorkspace "10";};
|
||||
}
|
||||
// movementBinds;
|
||||
mode = MODE_DEFAULT;
|
||||
}
|
||||
{
|
||||
name = "Arregement Keybinds";
|
||||
remap =
|
||||
{
|
||||
# Exit mode mode
|
||||
"esc" = {set_mode = MODE_DEFAULT;};
|
||||
# Switch modes
|
||||
"super-m" = {
|
||||
remap = {
|
||||
"r" = {set_mode = MODE_RESIZING;};
|
||||
};
|
||||
};
|
||||
# Move tiles
|
||||
"h" = {launch = moveTile "l";};
|
||||
"l" = {launch = moveTile "r";};
|
||||
"k" = {launch = moveTile "u";};
|
||||
"j" = {launch = moveTile "d";};
|
||||
# Move tiles to workspace
|
||||
"1" = {launch = switchTileWorkspace "1";};
|
||||
"2" = {launch = switchTileWorkspace "2";};
|
||||
"3" = {launch = switchTileWorkspace "3";};
|
||||
"4" = {launch = switchTileWorkspace "4";};
|
||||
"5" = {launch = switchTileWorkspace "5";};
|
||||
"6" = {launch = switchTileWorkspace "6";};
|
||||
"7" = {launch = switchTileWorkspace "7";};
|
||||
"8" = {launch = switchTileWorkspace "8";};
|
||||
"9" = {launch = switchTileWorkspace "9";};
|
||||
"0" = {launch = switchTileWorkspace "10";};
|
||||
# Switch split
|
||||
"s" = {launch = toggleSplit "";};
|
||||
# Toggle fullscreen
|
||||
"f" = {launch = toggleFullscreen "";};
|
||||
# Toggle floating
|
||||
"shift-f" = {launch = toggleFloating "";};
|
||||
# Close window
|
||||
"c" = {launch = close "";};
|
||||
}
|
||||
// movementBinds;
|
||||
mode = MODE_ARREGEMENT;
|
||||
}
|
||||
{
|
||||
name = "Resizing Keybinds";
|
||||
remap =
|
||||
{
|
||||
# Exit mode mode
|
||||
"esc" = {set_mode = MODE_DEFAULT;};
|
||||
# Switch modes
|
||||
"super-m" = {
|
||||
remap = {
|
||||
"a" = {set_mode = MODE_ARREGEMENT;};
|
||||
};
|
||||
};
|
||||
# Move tiles
|
||||
"h" = {launch = resize "l";};
|
||||
"l" = {launch = resize "r";};
|
||||
"k" = {launch = resize "u";};
|
||||
"j" = {launch = resize "d";};
|
||||
# Switch split
|
||||
"s" = {launch = toggleSplit "";};
|
||||
# Toggle fullscreen
|
||||
"f" = {launch = toggleFullscreen "";};
|
||||
# Toggle floating
|
||||
"shift-f" = {launch = toggleFloating "";};
|
||||
# Close window
|
||||
"c" = {launch = close "";};
|
||||
}
|
||||
// movementBinds;
|
||||
mode = MODE_RESIZING;
|
||||
}
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland.settings.bind = let
|
||||
rofi = lib.getExe config.programs.rofi.finalPackage;
|
||||
grim = lib.getExe pkgs.grim;
|
||||
slurp = lib.getExe pkgs.slurp;
|
||||
in [
|
||||
"SUPER, V, exec, cliphist list | ${rofi} -dmenu | cliphist decode | wl-copy" # For some reason this doesn't work on xremap
|
||||
",Print, exec, ${grim} -g \"$(${slurp} -d)\" - | wl-copy"
|
||||
"SUPER, P, exec, ${lib.getExe pkgs.hyprpicker} | wl-copy"
|
||||
];
|
||||
wayland.windowManager.hyprland.settings.bindm = [
|
||||
# Left-click
|
||||
"$MOD, mouse:272, movewindow"
|
||||
# Right-click
|
||||
"$MOD, mouse:273, resizewindow"
|
||||
];
|
||||
}
|
||||
@@ -1,637 +0,0 @@
|
||||
{
|
||||
"options": {
|
||||
"youtube": {
|
||||
"enabled": true,
|
||||
"redirectType": "main_frame",
|
||||
"frontend": "invidious",
|
||||
"embedFrontend": "invidious",
|
||||
"unsupportedUrls": "bypass",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"invidious": ["https://inv.nadeko.net"],
|
||||
"materialious": ["https://app.materialio.us"],
|
||||
"piped": ["https://pipedapi-libre.kavin.rocks"],
|
||||
"pipedMaterial": ["https://piped-material.xn--17b.net"],
|
||||
"poketube": ["https://poketube.fun"],
|
||||
"cloudtube": ["https://tube.cadence.moe"],
|
||||
"lightTube": ["https://tube.kuylar.dev"],
|
||||
"tuboYoutube": ["https://tubo.media"],
|
||||
"viewtube": ["https://viewtube.io"],
|
||||
"ytify": ["https://ytify.pp.ua"],
|
||||
"youtubeMusic": {
|
||||
"enabled": false,
|
||||
"frontend": "invidiousMusic",
|
||||
"unsupportedUrls": "bypass",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"hyperpipe": ["https://hp.ggtyler.dev"],
|
||||
"invidiousMusic": [],
|
||||
"twitter": {
|
||||
"enabled": true,
|
||||
"redirectType": "main_frame",
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "nitter",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"nitter": [
|
||||
"https://nitter.tiekoetter.com",
|
||||
"https://xcancel.com",
|
||||
"https://nitter.privacyredirect.com"
|
||||
],
|
||||
"chatGpt": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "duckDuckGoAiChat",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"bluesky": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "skyview",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"skyview": ["https://skyview.social"],
|
||||
"reddit": {
|
||||
"enabled": true,
|
||||
"frontend": "redlib",
|
||||
"unsupportedUrls": "bypass",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"libreddit": [],
|
||||
"redlib": [
|
||||
"https://safereddit.com",
|
||||
"https://l.opnxng.com",
|
||||
"https://redlib.thebunny.zone"
|
||||
],
|
||||
"teddit": [],
|
||||
"eddrit": ["https://eddrit.com"],
|
||||
"tumblr": {
|
||||
"enabled": false,
|
||||
"redirectType": "main_frame",
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "priviblur",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"priviblur": ["https://pb.bloat.cat"],
|
||||
"twitch": {
|
||||
"enabled": true,
|
||||
"redirectType": "main_frame",
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "safetwitch",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"safetwitch": [
|
||||
"https://safetwitch.drgns.space",
|
||||
"https://twitch.seitan-ayoub.lol",
|
||||
"https://safetwitch.lunar.icu",
|
||||
"https://safetwitch.privacyredirect.com",
|
||||
"https://safetwitch.darkness.services"
|
||||
],
|
||||
"twineo": ["https://twineo.exozy.me"],
|
||||
"tiktok": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "proxiTok",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"proxiTok": [
|
||||
"https://proxitok.pabloferreiro.es",
|
||||
"https://proxitok.pussthecat.org",
|
||||
"https://tok.habedieeh.re",
|
||||
"https://tok.artemislena.eu",
|
||||
"https://cringe.whatever.social",
|
||||
"https://proxitok.lunar.icu",
|
||||
"https://cringe.seitan-ayoub.lol",
|
||||
"https://proxitok.belloworld.it"
|
||||
],
|
||||
"offtiktok": ["https://www.offtiktok.com"],
|
||||
"instagram": {
|
||||
"enabled": false,
|
||||
"frontend": "proxigram",
|
||||
"unsupportedUrls": "bypass",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"proxigram": ["https://ig.opnxng.com"],
|
||||
"imdb": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "libremdb",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"libremdb": [
|
||||
"https://libremdb.iket.me",
|
||||
"https://libremdb.pussthecat.org",
|
||||
"https://libremdb.lunar.icu",
|
||||
"https://binge.whatever.social",
|
||||
"https://libremdb.r4fo.com",
|
||||
"https://libremdb.catsarch.com",
|
||||
"https://d.opnxng.com",
|
||||
"https://libremdb.ducks.party",
|
||||
"https://lmdb.bloat.cat",
|
||||
"https://libremdb.franklyflawless.org",
|
||||
"https://libremdb-fly.fly.dev"
|
||||
],
|
||||
"bilibili": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "mikuInvidious",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"mikuInvidious": [],
|
||||
"pixiv": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "pixivFe",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"pixivFe": [
|
||||
"https://pixiv.perennialte.ch",
|
||||
"https://pixivfe.thebunny.zone",
|
||||
"https://pixivfe.darkness.services",
|
||||
"https://pixivfe.ducks.party"
|
||||
],
|
||||
"liteXiv": ["https://litexiv.465321.best", "https://litexiv.bloat.cat"],
|
||||
"vixipy": ["https://vx.maid.zone"],
|
||||
"pixivViewer": ["https://pixiv.pictures"],
|
||||
"fandom": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"instance": "public",
|
||||
"frontend": "breezeWiki",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"breezeWiki": [
|
||||
"https://breezewiki.com",
|
||||
"https://breezewiki.pussthecat.org",
|
||||
"https://antifandom.com",
|
||||
"https://bw.artemislena.eu",
|
||||
"https://breeze.hostux.net",
|
||||
"https://z.opnxng.com",
|
||||
"https://breeze.nohost.network",
|
||||
"https://breeze.mint.lgbt",
|
||||
"https://breezewiki.catsarch.com",
|
||||
"https://breezewiki.hyperreal.coffee",
|
||||
"https://breezewiki.4o1x5.dev",
|
||||
"https://fandom.reallyaweso.me",
|
||||
"https://breezewiki.nadeko.net",
|
||||
"https://fan.blitzw.in"
|
||||
],
|
||||
"imgur": {
|
||||
"enabled": true,
|
||||
"redirectType": "main_frame",
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "rimgo",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"rimgo": [
|
||||
"https://rimgo.pussthecat.org",
|
||||
"https://ri.nadeko.net",
|
||||
"https://rimgo.in.projectsegfau.lt",
|
||||
"https://rimgo.us.projectsegfau.lt",
|
||||
"https://rimgo.eu.projectsegfau.lt",
|
||||
"https://rimgo.catsarch.com",
|
||||
"https://rimgo.nohost.network",
|
||||
"https://r.opnxng.com",
|
||||
"https://imgur.fsky.io",
|
||||
"https://rimgo.astrial.org",
|
||||
"https://rimgo.canine.tools",
|
||||
"https://rimgo.thebunny.zone",
|
||||
"https://imgur.nerdvpn.de",
|
||||
"https://rg.kuuro.net"
|
||||
],
|
||||
"pinterest": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"redirectType": "main_frame",
|
||||
"frontend": "binternet",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"binternet": [
|
||||
"https://bn.bloat.cat",
|
||||
"https://binternet.darkness.services",
|
||||
"https://binternet.revvy.de",
|
||||
"https://binternet.lunar.icu",
|
||||
"https://binternet.privacyredirect.com",
|
||||
"https://binternet.4o1x5.dev",
|
||||
"https://binternet.ducks.party",
|
||||
"https://bn.opnxng.com",
|
||||
"https://pin.blitzw.in",
|
||||
"https://bn.kuuro.net"
|
||||
],
|
||||
"painterest": ["https://pt.bloat.cat"],
|
||||
"soundcloud": {
|
||||
"enabled": true,
|
||||
"redirectType": "main_frame",
|
||||
"frontend": "soundcloak",
|
||||
"unsupportedUrls": "bypass",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"tuboSoundcloud": ["https://tubo.media"],
|
||||
"soundcloak": [
|
||||
"https://sc.opnxng.com",
|
||||
"https://sc.bloat.cat",
|
||||
"https://sc.maid.zone",
|
||||
"https://sc.kuuro.net",
|
||||
"https://sc.tijn.dev",
|
||||
"https://sc2.bloat.cat"
|
||||
],
|
||||
"bandcamp": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "tent",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"tent": [
|
||||
"https://tent.sny.sh",
|
||||
"https://tent.bloat.cat",
|
||||
"https://tent.nbh.ax",
|
||||
"https://tent.lab8.cz",
|
||||
"https://tent.deep-swarm.xyz",
|
||||
"https://tn.vern.cc",
|
||||
"https://tn.maid.zone",
|
||||
"https://tn.dc09.ru"
|
||||
],
|
||||
"tekstowo": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "tekstoLibre",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"tekstoLibre": ["https://davilarek.github.io/TekstoLibre"],
|
||||
"genius": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "dumb",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"dumb": [
|
||||
"https://dumb.lunar.icu",
|
||||
"https://dumb.ducks.party",
|
||||
"https://dumb.hyperreal.coffee",
|
||||
"https://db.kuuro.net",
|
||||
"https://lyr.dc09.ru"
|
||||
],
|
||||
"intellectual": ["https://intellectual.insprill.net"],
|
||||
"medium": {
|
||||
"frontend": "scribe",
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"scribe": [
|
||||
"https://scribe.rip",
|
||||
"https://scribe.privacyredirect.com",
|
||||
"https://scribe.r4fo.com",
|
||||
"https://m.opnxng.com",
|
||||
"https://scribe.nixnet.services"
|
||||
],
|
||||
"libMedium": ["https://md.vern.cc"],
|
||||
"small": ["https://small.bloat.cat"],
|
||||
"freedium": ["https://freedium.cfd"],
|
||||
"quora": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "quetre",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"quetre": [
|
||||
"https://quetre.iket.me",
|
||||
"https://quetre.pussthecat.org",
|
||||
"https://q.opnxng.com",
|
||||
"https://quetre.lunar.icu",
|
||||
"https://ask.habedieeh.re",
|
||||
"https://quetre.ducks.party",
|
||||
"https://quetre.drgns.space",
|
||||
"https://qt.bloat.cat",
|
||||
"https://quetre.franklyflawless.org",
|
||||
"https://quetre.privacyredirect.com"
|
||||
],
|
||||
"github": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "gothub",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"gothub": [],
|
||||
"gitlab": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "laboratory",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"laboratory": ["https://lab.vern.cc"],
|
||||
"stackOverflow": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "anonymousOverflow",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"anonymousOverflow": [
|
||||
"https://code.whatever.social",
|
||||
"https://overflow.hostux.net",
|
||||
"https://overflow.adminforge.de",
|
||||
"https://overflow.lunar.icu",
|
||||
"https://ao.owo.si",
|
||||
"https://anonoverflow.frontendfriendly.xyz",
|
||||
"https://ao.bloat.cat",
|
||||
"https://anonoverflow.hyperreal.coffee",
|
||||
"https://exchange.seitan-ayoub.lol"
|
||||
],
|
||||
"reuters": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "neuters",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"neuters": ["https://neuters.de"],
|
||||
"snopes": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "suds",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"suds": ["https://sd.vern.cc"],
|
||||
"ifunny": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "unfunny",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"unfunny": ["https://uf.vern.cc"],
|
||||
"tenor": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "soprano",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"soprano": ["https://sp.vern.cc"],
|
||||
"knowyourmeme": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "meme",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"meme": ["https://mm.vern.cc"],
|
||||
"urbanDictionary": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "ruralDictionary",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"ruralDictionary": [
|
||||
"https://ruraldictionary.franklyflawless.org",
|
||||
"https://rd.thirtysix.pw",
|
||||
"https://rd.bloat.cat"
|
||||
],
|
||||
"goodreads": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "biblioReads",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"biblioReads": [
|
||||
"https://biblioreads.lunar.icu",
|
||||
"https://biblioreads.eu.org",
|
||||
"https://read.seitan-ayoub.lol",
|
||||
"https://biblioreads.ducks.party",
|
||||
"https://biblioreads.privacyredirect.com",
|
||||
"https://br.bloat.cat",
|
||||
"https://biblioreads.franklyflawless.org"
|
||||
],
|
||||
"wolframAlpha": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "wolfreeAlpha",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"wolfreeAlpha": [],
|
||||
"instructables": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "structables",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"structables": ["https://structables.private.coffee"],
|
||||
"destructables": ["https://ds.vern.cc"],
|
||||
"indestructables": ["https://indestructables.private.coffee"],
|
||||
"wikipedia": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "wikiless",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"wikiless": [],
|
||||
"wikimore": ["https://wikimore.private.coffee"],
|
||||
"waybackMachine": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "waybackClassic",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"waybackClassic": ["https://wayback-classic.net"],
|
||||
"pastebin": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "pasted",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"pasted": ["https://pasted.drakeerv.com"],
|
||||
"search": {
|
||||
"enabled": false,
|
||||
"frontend": "searxng",
|
||||
"unsupportedUrls": "bypass",
|
||||
"redirectGoogle": false,
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"searxng": ["https://nyc1.sx.ggtyler.dev"],
|
||||
"searx": [],
|
||||
"whoogle": [],
|
||||
"librey": [],
|
||||
"4get": ["https://4get.ca"],
|
||||
"websurfx": ["https://alamin655-spacex.hf.space"],
|
||||
"translate": {
|
||||
"enabled": true,
|
||||
"frontend": "simplyTranslate",
|
||||
"unsupportedUrls": "bypass",
|
||||
"instance": "public",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"simplyTranslate": [
|
||||
"https://simplytranslate.org",
|
||||
"https://simplytranslate.ducks.party",
|
||||
"https://st.adast.dk"
|
||||
],
|
||||
"mozhi": ["https://mozhi.aryak.me"],
|
||||
"libreTranslate": ["https://libretranslate.com"],
|
||||
"translite": ["https://tl.bloat.cat"],
|
||||
"maps": {
|
||||
"redirectType": "main_frame",
|
||||
"enabled": false,
|
||||
"frontend": "osm",
|
||||
"unsupportedUrls": "bypass",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"osm": ["https://www.openstreetmap.org"],
|
||||
"meet": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "jitsi",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"jitsi": [],
|
||||
"sendFiles": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "send",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"send": [],
|
||||
"textStorage": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "privateBin",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"privateBin": [],
|
||||
"pasty": ["https://pasty.lus.pm"],
|
||||
"office": {
|
||||
"enabled": false,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "cryptPad",
|
||||
"redirectOnlyInIncognito": false
|
||||
},
|
||||
"cryptPad": ["https://cryptpad.org"],
|
||||
"ultimateGuitar": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "freetar",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"freetar": ["https://freetar.de"],
|
||||
"baiduTieba": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "ratAintTieba",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"ratAintTieba": ["https://rat.fis.land"],
|
||||
"threads": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "shoelace",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"shoelace": ["https://shoelace.mint.lgbt"],
|
||||
"deviantArt": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "skunkyArt",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"skunkyArt": [
|
||||
"https://skunky.bloat.cat",
|
||||
"https://da.opnxng.com",
|
||||
"https://sa.dc09.ru",
|
||||
"https://art.bloat.cat",
|
||||
"https://skunkyart.lumaeris.com"
|
||||
],
|
||||
"geeksForGeeks": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "nerdsForNerds",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"nerdsForNerds": ["https://nn.vern.cc"],
|
||||
"ducksForDucks": ["https://ducksforducks.private.coffee"],
|
||||
"coub": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "koub",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"koub": ["https://koub2.bloat.cat", "https://koub.bloat.cat"],
|
||||
"chefkoch": {
|
||||
"enabled": true,
|
||||
"unsupportedUrls": "bypass",
|
||||
"frontend": "gocook",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"redirectType": "main_frame"
|
||||
},
|
||||
"gocook": ["https://cook.adminforge.de"],
|
||||
"exceptions": {
|
||||
"url": [],
|
||||
"regex": []
|
||||
},
|
||||
"theme": "detect",
|
||||
"popupServices": [
|
||||
"youtube",
|
||||
"reddit",
|
||||
"translate",
|
||||
"maps",
|
||||
"stackOverflow",
|
||||
"youtubeMusic",
|
||||
"twitter",
|
||||
"bluesky",
|
||||
"pinterest"
|
||||
],
|
||||
"fetchInstances": "github",
|
||||
"redirectOnlyInIncognito": false,
|
||||
"troddit": ["https://www.troddit.com"],
|
||||
"ultimateTab": ["https://ultimate-tab.com"]
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Rofi themes
|
||||
home.file."${config.xdg.configHome}/rofi/launcher.rasi".source = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/adi1090x/rofi/2e0efe5054ac7eb502a585dd6b3575a65b80ce72/files/launchers/type-1/style-3.rasi";
|
||||
hash = "sha256-6Zj1mxRDkARdIWiin3J7BPp/vqfktvidUK/yqLN+k1o=";
|
||||
};
|
||||
home.file."${config.xdg.configHome}/rofi/shared/colors.rasi".text = with config.lib.stylix.colors; ''
|
||||
* {
|
||||
background: #${base02}FF;
|
||||
background-alt: #${base01}FF;
|
||||
foreground: #${base05}FF;
|
||||
selected: #${base02}FF;
|
||||
active: #${base00}FF;
|
||||
urgent: #${base08}FF;
|
||||
}
|
||||
'';
|
||||
home.file."${config.xdg.configHome}/rofi/shared/fonts.rasi".text = ''
|
||||
* {
|
||||
font: "${config.stylix.fonts.sansSerif.name}";
|
||||
}
|
||||
'';
|
||||
|
||||
# Fonts
|
||||
fonts.fontconfig.enable = true;
|
||||
fonts.fontconfig.defaultFonts = with config.stylix.fonts; {
|
||||
sansSerif = [sansSerif.name];
|
||||
serif = [serif.name];
|
||||
monospace = [monospace.name];
|
||||
emoji = [emoji.name];
|
||||
};
|
||||
stylix.fonts = {
|
||||
monospace = {
|
||||
package = pkgs.nerd-fonts.fira-code;
|
||||
name = "FiraCode Nerd Font";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
/* `ttf-font-awesome` is required to be installed for icons */
|
||||
/* font-family: "Roboto Mono Medium", Helvetica, Arial, sans-serif; */
|
||||
|
||||
/* adjust font-size value to your liking: */
|
||||
font-size: 0.7rem;
|
||||
font-weight: bold;
|
||||
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar,
|
||||
tooltip {
|
||||
background-color: @base01;
|
||||
/* background-color: red; */
|
||||
/* box-shadow: 0px -10px 10px #00000055; */
|
||||
box-shadow: 0px -10px 10px #00ff0055;
|
||||
/* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
|
||||
color: @base05;
|
||||
/* transition-property: background-color; */
|
||||
/* transition-duration: .5s; */
|
||||
/* border-radius: 0; */
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.modules-left #workspaces,
|
||||
.modules-right #workspaces {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.modules-left #workspaces button,
|
||||
.modules-right #workspaces button {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
|
||||
/* Align icons */
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
.modules-left #workspaces button.active,
|
||||
.modules-right #workspaces button.active {
|
||||
border-bottom-style: none;
|
||||
|
||||
/* Align icons */
|
||||
padding-top: 3px;
|
||||
}
|
||||
@@ -1,272 +0,0 @@
|
||||
/* ================================ */
|
||||
/* Common CSS */
|
||||
/* ================================ */
|
||||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
text-shadow: none;
|
||||
transition: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* the whole window */
|
||||
window#waybar {
|
||||
background: #3c3835;
|
||||
color: #fff4d2;
|
||||
padding-right: 9px;
|
||||
padding-left: 5px;
|
||||
margin: 0;
|
||||
border-radius: 19px;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: rgba(255, 244, 210, 0.8);
|
||||
color: #3c3835;
|
||||
border: 2px solid #3c3835;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#custom-rofi,
|
||||
#workspaces button,
|
||||
#workspaces button:hover,
|
||||
#workspaces button.visible,
|
||||
#workspaces button.visible:hover,
|
||||
#workspaces button.active,
|
||||
#workspaces button.active:hover,
|
||||
#workspaces button.urgent,
|
||||
#window,
|
||||
#tray,
|
||||
#disk,
|
||||
#cpu,
|
||||
#temperature,
|
||||
#temperature.critical,
|
||||
#backlight,
|
||||
#custom-memory,
|
||||
#pulseaudio,
|
||||
#pulseaudio.muted,
|
||||
#battery,
|
||||
#battery.critical,
|
||||
#battery.warning,
|
||||
#clock {
|
||||
font-family: JetBrainsMono Nerd Font Propo;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #202020;
|
||||
background: #202020;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
#window,
|
||||
#tray,
|
||||
#disk,
|
||||
#cpu,
|
||||
#temperature,
|
||||
#temperature.critical,
|
||||
#backlight,
|
||||
#custom-memory,
|
||||
#pulseaudio,
|
||||
#pulseaudio.muted,
|
||||
#battery,
|
||||
#battery.critical,
|
||||
#battery.warning,
|
||||
#clock {
|
||||
padding-right: 4px;
|
||||
margin: 5px 0px;
|
||||
}
|
||||
|
||||
#custom-rofi {
|
||||
/* border: 2px solid #458588; */
|
||||
/* border-radius: 5px; */
|
||||
background: #3c3835;
|
||||
padding: 0 6px;
|
||||
margin: 5px 0px;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* workspaces module */
|
||||
/* ================================ */
|
||||
#workspaces {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: #fff4d2;
|
||||
background: #3c3835;
|
||||
/* border: 2px solid #fff4d2; */
|
||||
min-width: 25px;
|
||||
padding: 0 4px;
|
||||
margin: 5px 3px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #3c3835;
|
||||
border: 2px solid #b16286;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
#workspaces button.visible {
|
||||
border: 2px solid #689d6a;
|
||||
border-radius: 12px;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#workspaces button.visible:hover {
|
||||
border: 2px solid #689d6a;
|
||||
border-radius: 12px;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
border: 2px solid #689d6a;
|
||||
border-radius: 12px;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#workspaces button.active:hover {
|
||||
border: 2px solid #689d6a;
|
||||
border-radius: 12px;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
border: 2px solid #cc241d;
|
||||
border-radius: 12px;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* window */
|
||||
/* ================================ */
|
||||
|
||||
#window {
|
||||
color: #a89884;
|
||||
background: #3c3835;
|
||||
/* border: 2px solid #d3869b; */
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* tray */
|
||||
/* ================================ */
|
||||
|
||||
#tray {
|
||||
/* padding: 0 6px; */
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* disk */
|
||||
/* ================================ */
|
||||
|
||||
#disk {
|
||||
color: #ea6962;
|
||||
border: 2px solid #ea6962;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* cpu */
|
||||
/* ================================ */
|
||||
#cpu {
|
||||
color: #e78a4e;
|
||||
border: 2px solid #e78a4e;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* temp */
|
||||
/* ================================ */
|
||||
#temperature {
|
||||
color: #d8a657;
|
||||
border: 2px solid #d8a657;
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
color: #cc241d;
|
||||
border: 2px solid #cc241d;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* backlight */
|
||||
/* ================================ */
|
||||
#custom-backlight {
|
||||
color: #f6c657;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* memory */
|
||||
/* ================================ */
|
||||
#custom-memory {
|
||||
color: #458588;
|
||||
border: 2px solid #458588;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* pulseaudio */
|
||||
/* ================================ */
|
||||
#pulseaudio {
|
||||
color: #fbf1c7;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
color: #ea6962;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* battery */
|
||||
/* ================================ */
|
||||
#battery {
|
||||
color: #fbf1c7;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: #cc241d;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
color: #e78a4e;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
/* ================================ */
|
||||
/* clock */
|
||||
/* ================================ */
|
||||
#clock.time {
|
||||
color: #fbf1c7;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#clock.date {
|
||||
color: #fbf1c7;
|
||||
background: #3c3835;
|
||||
}
|
||||
|
||||
#custom-notification {
|
||||
color: #fbf1c7;
|
||||
font-size: 14px;
|
||||
background: #3c3835;
|
||||
padding: 2px 2px;
|
||||
}
|
||||
|
||||
#custom-player {
|
||||
color: #282828;
|
||||
border: 2px solid #3c3835;
|
||||
border-radius: 21px;
|
||||
background: #fbf1c7;
|
||||
padding-left: 9px;
|
||||
padding-right: 9px;
|
||||
}
|
||||
@@ -1,221 +0,0 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 20,
|
||||
"spacing": 5,
|
||||
"margin-top": 3,
|
||||
"margin-right": 3,
|
||||
"margin-left": 3,
|
||||
"modules-left": [
|
||||
"custom/rofi",
|
||||
"hyprland/workspaces",
|
||||
"custom/paddc",
|
||||
"custom/prefix",
|
||||
"hyprland/window",
|
||||
"custom/paddc",
|
||||
"tray"
|
||||
],
|
||||
"modules-center": [
|
||||
"custom/player"
|
||||
],
|
||||
"modules-right": [
|
||||
"pulseaudio",
|
||||
"custom/backlight",
|
||||
"hyprland/language",
|
||||
"custom/paddc",
|
||||
"custom/paddc",
|
||||
"bluetooth",
|
||||
"battery",
|
||||
"custom/paddc",
|
||||
"custom/notification",
|
||||
"custom/paddc",
|
||||
"custom/wifi",
|
||||
"custom/paddc",
|
||||
"clock#date",
|
||||
"custom/paddc",
|
||||
"clock#time",
|
||||
"custom/paddc"
|
||||
],
|
||||
"custom/rofi": {
|
||||
"format": "<span color='#fbf1c7' ></span>",
|
||||
"on-click": "rofi -show drun",
|
||||
"on-click-right": "wlogout",
|
||||
"escape": true,
|
||||
"tooltip": false
|
||||
},
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"active-only": false,
|
||||
"all-outputs": true,
|
||||
"warp-on-scroll": false,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "<span color='#cc241d' ></span>",
|
||||
"2": "<span color='#98971a' ></span>",
|
||||
"3": "<span color='#d79921' ></span>",
|
||||
"4": "<span color='#458588' ></span>",
|
||||
"5": "<span color='#b16286' ></span>",
|
||||
"6": "<span color='#689d6a' ></span>",
|
||||
"7": "<span color='#fe8019' ></span>",
|
||||
"default": "<span color='#cc241d'></span>"
|
||||
},
|
||||
"persistent-workspaces": {
|
||||
"*": 5
|
||||
}
|
||||
},
|
||||
"hyprland/window": {
|
||||
"format": "{class}",
|
||||
"max-length": 20,
|
||||
"rewrite": {
|
||||
"": "<span foreground= '#458588'></span> hyprland",
|
||||
"~": " terminal",
|
||||
"com.mitchellh.ghostty": "ghostty"
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 15,
|
||||
"spacing": 8
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "<span color='#fbf1c7' > </span>{volume}%",
|
||||
"format-muted": "<span color='#fbf1c7' > </span>{volume}%",
|
||||
"format-bluetooth": "<span color='#fbf1c7' > </span>{volume}%",
|
||||
"format-bluetooth-muted": "<span color='#fbf1c7' > </span>{volume}%",
|
||||
"format-source": "{volume}% ",
|
||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
||||
"tooltip": false,
|
||||
"max-volume": 130
|
||||
},
|
||||
"battery#bat2": {
|
||||
"bat": "BAT2"
|
||||
},
|
||||
"battery": {
|
||||
"interval": 1,
|
||||
"states": {
|
||||
"good": 99,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
},
|
||||
"format-icons": [
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "
|
||||
],
|
||||
"format": "<span color='#8ec07c' > {icon}</span>{capacity}%",
|
||||
"format-critical": "<span color='#cc241d' > {icon}</span>{capacity}%",
|
||||
"format-warning": "<span color='#d8a657' > {icon}</span>{capacity}%",
|
||||
"format-full": "<span color='#8ec07c' > {icon}</span>{capacity}%",
|
||||
"format-charging": "<span color='#8ec07c' > </span>{capacity}%",
|
||||
"format-charging-warning": "<span color='#d8a657' > </span>{capacity}%",
|
||||
"format-charging-critical": "<span color='#cc241d' > </span>{capacity}%",
|
||||
"format-plugged": "<span color='#8ec07c' > </span>{capacity}%",
|
||||
"tooltip": false
|
||||
},
|
||||
"clock#date": {
|
||||
"format": "<span color='#8ec07c' > </span>{:%a %d %b}",
|
||||
"tooltip-format": "<tt>{calendar}</tt>",
|
||||
"calendar": {
|
||||
"mode": "month",
|
||||
"mode-mon-col": 6,
|
||||
"on-click-right": "mode",
|
||||
"format": {
|
||||
"months": "<span color='#3c3835'><b>{}</b></span>",
|
||||
"weekdays": "<span color='#fe8019' font='7'>{}</span>",
|
||||
"today": "<span color='#cc241d'><b>{}</b></span>"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"on-click": "mode",
|
||||
"on-click-right": "mode"
|
||||
},
|
||||
"min-length": 8,
|
||||
"max-length": 20
|
||||
},
|
||||
"clock#time": {
|
||||
"format": "<span color='#cc241d' > </span>{:%I:%M %p}",
|
||||
"tooltip": false,
|
||||
"min-length": 8,
|
||||
"max-length": 12
|
||||
},
|
||||
"custom/backlight": {
|
||||
"exec": "~/.config/waybar/scripts/brightness-control.sh",
|
||||
"return-type": "json",
|
||||
"format": "{}",
|
||||
"tooltip": true,
|
||||
"on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i",
|
||||
"on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d",
|
||||
"interval": 1,
|
||||
"min-length": 6,
|
||||
"max-length": 6
|
||||
},
|
||||
"custom/paddc": {
|
||||
"format": " ",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/prefix": {
|
||||
"format": "<span color='#a89884' > >></span>",
|
||||
"tooltip": false
|
||||
},
|
||||
"hyprland/language": {
|
||||
"format": "{}",
|
||||
"format-en": "US"
|
||||
},
|
||||
"custom/wifi": {
|
||||
"exec": "~/.config/waybar/scripts/wifi-status.sh",
|
||||
"return-type": "json",
|
||||
"format": "{}",
|
||||
"tooltip": true,
|
||||
"on-click": "~/.config/waybar/scripts/wifi-menu.sh",
|
||||
"interval": 1,
|
||||
"min-length": 1,
|
||||
"max-length": 12
|
||||
},
|
||||
"bluetooth": {
|
||||
"format": "<span color='#458588'> </span>",
|
||||
"format-disabled": "<span color='#458588'> </span>",
|
||||
"format-connected": "<span color='#458588'> </span>",
|
||||
"format-connected-battery": "<span color='#458588'> </span>",
|
||||
"tooltip-format": "{num_connections} connected",
|
||||
"tooltip-format-disabled": "Bluetooth Disabled",
|
||||
"tooltip-format-connected": "{num_connections} connected\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}: {device_battery_percentage}%",
|
||||
"on-click": "~/.config/waybar/scripts/bluetooth-menu.sh",
|
||||
"interval": 1,
|
||||
"min-length": 1,
|
||||
"max-length": 10
|
||||
},
|
||||
"custom/notification": {
|
||||
"tooltip": false,
|
||||
"rotate": 0,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"notification": " ",
|
||||
"none": " ",
|
||||
"dnd-notification": " ",
|
||||
"dnd-none": " ",
|
||||
"inhibited-notification": " ",
|
||||
"inhibited-none": " ",
|
||||
"dnd-inhibited-notification": " ",
|
||||
"dnd-inhibited-none": " "
|
||||
},
|
||||
"return-type": "json",
|
||||
"exec-if": "which swaync-client",
|
||||
"exec": "swaync-client -swb",
|
||||
"on-click-right": "swaync-client -d -sw",
|
||||
"on-click": "swaync-client -t -sw",
|
||||
"escape": true
|
||||
},
|
||||
"custom/player": {
|
||||
"exec": "~/.config/waybar/scripts/player.sh",
|
||||
"format": "{}",
|
||||
"interval": 1,
|
||||
"max-length": 35,
|
||||
"tooltip": false,
|
||||
"on-click-right": "playerctl next",
|
||||
"on-click-left": "playerctl previous",
|
||||
"on-click": "playerctl play-pause"
|
||||
}
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
pkgs-unstable,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
services.flatpak.packages = [
|
||||
# Management
|
||||
"com.bitwarden.desktop"
|
||||
"com.rustdesk.RustDesk"
|
||||
|
||||
# Services
|
||||
"app.moosync.moosync"
|
||||
|
||||
# Games
|
||||
# "org.prismlauncher.PrismLauncher"
|
||||
# "net.pcsx2.PCSX2" Currently borked, mising qt plugin/platform
|
||||
"org.vinegarhq.Sober"
|
||||
|
||||
# Office
|
||||
"org.libreoffice.LibreOffice"
|
||||
|
||||
# Media creation
|
||||
"com.nextcloud.desktopclient.nextcloud"
|
||||
"fr.natron.Natron"
|
||||
"org.beeref.BeeRef"
|
||||
"com.github.vikdevelop.photopea_app"
|
||||
"org.darktable.Darktable"
|
||||
"org.inkscape.Inkscape"
|
||||
# "org.kde.krita" Currently borked, mising qt plugin/platform
|
||||
"com.obsproject.Studio"
|
||||
"org.kde.kdenlive"
|
||||
# "fm.reaper.Reaper"
|
||||
|
||||
# 3D modeling
|
||||
"net.blockbench.Blockbench"
|
||||
];
|
||||
services.flatpak.overrides = {
|
||||
"net.blockbench.Blockbench" = {Context.sockets = ["x11"];};
|
||||
"com.bitwarden.desktop" = {Context.sockets = ["x11"];};
|
||||
"fr.natron.Natron" = {Context.sockets = ["x11"];};
|
||||
"com.github.vikdevelop.photopea_app" = {Context.sockets = ["x11"];};
|
||||
"org.prismlauncher.PrismLauncher" = {Context.sockets = ["x11"];};
|
||||
"org.vinegarhq.Sober" = {Context.device = "input";};
|
||||
"dev.vencord.Vesktop" = {Context.sockets = ["x11"];};
|
||||
};
|
||||
|
||||
services.kdeconnect.enable = true;
|
||||
services.kdeconnect.indicator = true;
|
||||
|
||||
qt.enable = true;
|
||||
home.packages =
|
||||
(with pkgs; [
|
||||
|
||||
# Games
|
||||
lutris
|
||||
winePackages.waylandFull
|
||||
pcsx2
|
||||
prismlauncher
|
||||
mono # For city skylines mods
|
||||
|
||||
# Social
|
||||
webcord
|
||||
|
||||
# Keyboard
|
||||
vial
|
||||
|
||||
pkgs-unstable.davinci-resolve
|
||||
|
||||
blender
|
||||
(callPackage ({
|
||||
pkgs,
|
||||
makeWrapper,
|
||||
symlinkJoin,
|
||||
...
|
||||
}:
|
||||
symlinkJoin {
|
||||
inherit (pkgs.godot) name pname meta man;
|
||||
paths = [pkgs.godot];
|
||||
nativeBuildInputs = [makeWrapper];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/godot \
|
||||
--add-flags '--single-window'
|
||||
'';
|
||||
}) {})
|
||||
|
||||
android-studio
|
||||
android-tools
|
||||
androidenv.androidPkgs.androidsdk
|
||||
androidenv.androidPkgs.emulator
|
||||
androidenv.androidPkgs.ndk-bundle
|
||||
])
|
||||
++ (with self.packages.${pkgs.system}; [
|
||||
davincify
|
||||
audacity4
|
||||
untrack
|
||||
]);
|
||||
|
||||
home.file = let
|
||||
templates = pkgs.godot-export-templates-bin;
|
||||
name = builtins.replaceStrings ["-"] ["."] templates.version;
|
||||
in {
|
||||
".bin/blender" = {
|
||||
source = lib.getExe pkgs.blender;
|
||||
};
|
||||
".local/share/godot/export_templates/${name}" = {
|
||||
source = "${templates}/share/godot/export_templates/${name}";
|
||||
};
|
||||
};
|
||||
|
||||
neovim.integrations.godot.enable = true;
|
||||
|
||||
xdg.desktopEntries."davinci-resolve-zsh" = rec {
|
||||
name = "Davinci Resolve (Zsh)";
|
||||
genericName = name;
|
||||
mimeType = ["application/x-resolveproj"];
|
||||
# INFO: For some reason this works and removes the "Unsupported GPU" error
|
||||
exec = "${lib.getExe config.programs.zsh.package} -c ${lib.getExe pkgs-unstable.davinci-resolve}";
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
windowrulev2 = [
|
||||
# Godot
|
||||
"tile,initialTitle:^(Godot)$,initialClass:^(Godot)$" # Main editor tiled
|
||||
# Everything else float
|
||||
"float,title:^((.*)(DEBUG)),initialClass:^(Godot)$,initialTitle:^(.*)(DEBUG)(.*)$,class:^(Godot)$"
|
||||
];
|
||||
};
|
||||
|
||||
services.easyeffects.enable = true;
|
||||
|
||||
# TODO: Remove this
|
||||
programs.distrobox.enable = true;
|
||||
programs.distrobox.containers = {
|
||||
"davincibox" = {
|
||||
image = "ghcr.io/zelikos/davincibox-opencl:latest";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{config, ...}: {
|
||||
programs.qutebrowser.profiles = let
|
||||
art = config.programs.qutebrowser.profiles."art";
|
||||
work = config.programs.qutebrowser.profiles."work";
|
||||
in {
|
||||
# HACK: `inherit` is being used to prevent infinite recursion
|
||||
"art-2" = {inherit (art) settings searchEngines;};
|
||||
"art-3" = {inherit (art) settings searchEngines;};
|
||||
"work-2" = {inherit (work) settings searchEngines;};
|
||||
"work-3" = {inherit (work) settings searchEngines;};
|
||||
};
|
||||
|
||||
# The *state version* indicates which default
|
||||
# settings are in effect and will therefore help avoid breaking
|
||||
# program configurations. Switching to a higher state version
|
||||
# typically requires performing some manual steps, such as data
|
||||
# conversion or moving files.
|
||||
home.stateVersion = "24.11";
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Home-manager configurations for when it is used as a NixOS module.
|
||||
|
||||
imports = [
|
||||
../guz-lite/configuration.nix
|
||||
];
|
||||
|
||||
home-manager.users.guz = import ./default.nix;
|
||||
|
||||
# Steam
|
||||
programs.steam.enable = true;
|
||||
programs.steam.gamescopeSession.enable = true;
|
||||
programs.steam.extraCompatPackages = with pkgs; [
|
||||
proton-ge-bin
|
||||
];
|
||||
|
||||
# Backup environment
|
||||
services.desktopManager.gnome.enable = true;
|
||||
|
||||
programs.java.enable = true;
|
||||
|
||||
virtualisation.podman.enable = true;
|
||||
|
||||
# Xbox Controller driver
|
||||
hardware.xone.enable = true;
|
||||
hardware.xpad-noone.enable = lib.mkForce false; # Build failure https://github.com/NixOS/nixpkgs/issues/467803
|
||||
|
||||
# OpenTabletDriver
|
||||
hardware.opentabletdriver.enable = true;
|
||||
services.udev.extraRules = ''
|
||||
KERNEL=="hidraw", SUBSYSTEM=="hidraw", MODE="0660", GROUP="plugdev"
|
||||
'';
|
||||
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"davinci-resolve"
|
||||
"reaper"
|
||||
"steam"
|
||||
"steam-unwrapped"
|
||||
"xow_dongle-firmware"
|
||||
];
|
||||
|
||||
nixpkgs.config.android_sdk.accept_license = true;
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{...}: {
|
||||
home.username = "guz";
|
||||
home.homeDirectory = "/home/guz";
|
||||
|
||||
imports = [
|
||||
../guz-lite/default.nix
|
||||
|
||||
./apps.nix
|
||||
./browser.nix
|
||||
./media.nix
|
||||
];
|
||||
|
||||
# The *state version* indicates which default
|
||||
# settings are in effect and will therefore help avoid breaking
|
||||
# program configurations. Switching to a higher state version
|
||||
# typically requires performing some manual steps, such as data
|
||||
# conversion or moving files.
|
||||
home.stateVersion = "24.11";
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
osConfig,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [
|
||||
exiftool
|
||||
ffmpeg
|
||||
krita
|
||||
reaper
|
||||
];
|
||||
|
||||
xdg.configFile."OpenTabletDriver/settings.json" = lib.mkIf osConfig.hardware.opentabletdriver.enable {
|
||||
force = true;
|
||||
text = builtins.toJSON {
|
||||
Profiles = let
|
||||
mkBinding = k: {
|
||||
Path = "OpenTabletDriver.Desktop.Binding.${
|
||||
if lib.hasInfix "+" k
|
||||
then "MultiKeyBinding"
|
||||
else "KeyBinding"
|
||||
}";
|
||||
Settings = [
|
||||
{
|
||||
Property =
|
||||
if lib.hasInfix "+" k
|
||||
then "Keys"
|
||||
else "Key";
|
||||
Value = k;
|
||||
}
|
||||
];
|
||||
Enable = true;
|
||||
};
|
||||
in [
|
||||
{
|
||||
Tablet = "Huion HS610";
|
||||
OutputMode.Path = "OpenTabletDriver.Desktop.Output.LinuxArtistMode";
|
||||
OutputMode.Settings = [];
|
||||
OutputMode.Enable = true;
|
||||
Filters = [];
|
||||
AbsoluteModeSettings.Display = {
|
||||
Width = 1720.0;
|
||||
Height = 1080.0;
|
||||
X = 1280.0;
|
||||
Y = 540.0;
|
||||
Rotation = 0.0;
|
||||
};
|
||||
AbsoluteModeSettings.Tablet = {
|
||||
Width = 254.0;
|
||||
Height = 158.75;
|
||||
X = 127.0;
|
||||
Y = 79.375;
|
||||
Rotation = 0;
|
||||
};
|
||||
AbsoluteModeSettings.EnableClipping = true;
|
||||
AbsoluteModeSettings. EnableAreaLimiting = false;
|
||||
AbsoluteModeSettings. LockAspectRatio = false;
|
||||
RelativeModeSettings = {
|
||||
XSensitivity = 10.0;
|
||||
YSensitivity = 10.0;
|
||||
RelativeRotation = 0.0;
|
||||
RelativeResetDelay = "00:00:00.1000000";
|
||||
};
|
||||
Bindings.TipActivationThreshold = 1.0;
|
||||
Bindings.TipButton = {
|
||||
Path = "OpenTabletDriver.Desktop.Binding.MouseBinding";
|
||||
Settings = [
|
||||
{
|
||||
Property = "Button";
|
||||
Value = "Left";
|
||||
}
|
||||
];
|
||||
};
|
||||
Bindings.EraserActivationThreshold = 1.0;
|
||||
Bindings.EraserButton = null;
|
||||
Bindings.PenButtons = [
|
||||
(mkBinding "Space")
|
||||
(mkBinding "Control+K")
|
||||
];
|
||||
Bindings.AuxButtons = [
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
(mkBinding "D5")
|
||||
null
|
||||
(mkBinding "LeftControl")
|
||||
(mkBinding "LeftShift")
|
||||
(mkBinding "Control+Z")
|
||||
(mkBinding "Control+Shift+Z")
|
||||
(mkBinding "B")
|
||||
(mkBinding "E")
|
||||
];
|
||||
Bindings.MouseButtons = [];
|
||||
Bindings.MouseScrollUp = null;
|
||||
Bindings.MouseScrollDown = null;
|
||||
}
|
||||
];
|
||||
LockUsableAreaDisplay = true;
|
||||
LockUsableAreaTablet = true;
|
||||
Tools = [];
|
||||
};
|
||||
};
|
||||
|
||||
# Easier access to krita
|
||||
home.file.".bin/ffmpeg" = {
|
||||
executable = true;
|
||||
source = lib.getExe pkgs.ffmpeg;
|
||||
};
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
osConfig,
|
||||
pkgs,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
self.homeManagerModules.zen-browser
|
||||
inputs.zen-browser.homeModules.twilight
|
||||
];
|
||||
|
||||
xdg.mimeApps.defaultApplications = with lib;
|
||||
@@ -214,24 +214,24 @@
|
||||
then v.Value
|
||||
else v)
|
||||
settings;
|
||||
shortcuts = {
|
||||
"key_search" = {key = "";};
|
||||
"key_search2" = {key = "";};
|
||||
"zen-workspace-forward" = {
|
||||
key = "j";
|
||||
modifiers = {
|
||||
control = true;
|
||||
};
|
||||
action = "cmd_zenWorkspaceForward";
|
||||
};
|
||||
"zen-workspace-backward" = {
|
||||
key = "k";
|
||||
modifiers = {
|
||||
control = true;
|
||||
};
|
||||
action = "cmd_zenWorkspaceBackward";
|
||||
};
|
||||
};
|
||||
# shortcuts = {
|
||||
# "key_search" = {key = "";};
|
||||
# "key_search2" = {key = "";};
|
||||
# "zen-workspace-forward" = {
|
||||
# key = "j";
|
||||
# modifiers = {
|
||||
# control = true;
|
||||
# };
|
||||
# action = "cmd_zenWorkspaceForward";
|
||||
# };
|
||||
# "zen-workspace-backward" = {
|
||||
# key = "k";
|
||||
# modifiers = {
|
||||
# control = true;
|
||||
# };
|
||||
# action = "cmd_zenWorkspaceBackward";
|
||||
# };
|
||||
# };
|
||||
spacesForce = true;
|
||||
spaces = let
|
||||
containers = config.programs.zen-browser.profiles."default".containers;
|
||||
|
||||
@@ -18,10 +18,12 @@
|
||||
users."guz" = ./home.nix;
|
||||
};
|
||||
|
||||
# Users
|
||||
users.users."guz" = {
|
||||
extraGroups = ["wheel" "guz"];
|
||||
isNormalUser = true;
|
||||
hashedPasswordFile = builtins.toString config.sops.secrets."guz/password".path;
|
||||
password = "1313";
|
||||
# hashedPasswordFile = builtins.toString config.sops.secrets."guz/password".path;
|
||||
shell = self.packages.${pkgs.stdenv.hostPlatform.system}.devkit.zsh;
|
||||
};
|
||||
users.groups."guz" = {};
|
||||
@@ -29,14 +31,10 @@
|
||||
# Shell
|
||||
programs.zsh.enable = true;
|
||||
|
||||
# SDDM (Display Manager)
|
||||
services.displayManager.sddm = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
kdePackages.qtmultimedia
|
||||
kdePackages.qtsvg
|
||||
kdePackages.qtvirtualkeyboard
|
||||
];
|
||||
theme = "${pkgs.sddm-astronaut.override {embeddedTheme = "hyprland_kath";}}/share/sddm/themes/sddm-astronaut-theme";
|
||||
theme = "${pkgs.sddm-sugar-dark.override {}}/share/sddm/themes/sugar-dark";
|
||||
wayland.enable = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
pkgs,
|
||||
pkgs-unstable,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
# Users
|
||||
users.users."guz" = {
|
||||
useDefaultShell = true;
|
||||
isNormalUser = true;
|
||||
|
||||
hashedPasswordFile = builtins.toString config.sops.secrets."guz/password".path;
|
||||
extraGroups = ["wheel" "guz"];
|
||||
};
|
||||
users.groups."guz" = {};
|
||||
|
||||
# Home-manager configurations for when it is used as a NixOS module.
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.backupFileExtension = "bkp";
|
||||
home-manager.extraSpecialArgs = {inherit inputs self pkgs-unstable;};
|
||||
home-manager.users.guz = lib.mkDefault (import ./default.nix);
|
||||
|
||||
programs.zsh.enable = true;
|
||||
users.users."guz".shell = pkgs.zsh;
|
||||
environment.pathsToLink = ["/share/zsh"];
|
||||
|
||||
# Podman (not necessarily user-specific, but environment specific)
|
||||
virtualisation.podman.enable = true;
|
||||
virtualisation.podman.dockerCompat = true;
|
||||
virtualisation.podman.dockerSocket.enable = true;
|
||||
virtualisation.podman.extraPackages = with pkgs; [
|
||||
podman-compose
|
||||
];
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
{
|
||||
self,
|
||||
lib,
|
||||
pkgs,
|
||||
osConfig,
|
||||
...
|
||||
}: {
|
||||
home.username = "guz";
|
||||
home.homeDirectory = "/home/guz";
|
||||
|
||||
imports = [
|
||||
self.homeManagerModules.devkit
|
||||
];
|
||||
|
||||
devkit.enable = true;
|
||||
devkit.git.wrapper = lib.mkIf (osConfig.context.job) (pkgs.writeShellScriptBin "git-envs" ''
|
||||
source ${osConfig.sops.secrets."guz/git-envs".path}
|
||||
"$@"
|
||||
'');
|
||||
|
||||
# The *state version* indicates which default
|
||||
# settings are in effect and will therefore help avoid breaking
|
||||
# program configurations. Switching to a higher state version
|
||||
# typically requires performing some manual steps, such as data
|
||||
# conversion or moving files.
|
||||
home.stateVersion = "24.11";
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
../../secrets.nix
|
||||
./gpu.nix
|
||||
|
||||
./impermanence.nix
|
||||
inputs.disko.nixosModules.disko
|
||||
./disko.nix
|
||||
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# GnuPG keyring
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-gtk2;
|
||||
settings.default-cache-ttl = 3600 * 24;
|
||||
};
|
||||
|
||||
# Yet another nix cli helper
|
||||
programs.nh = {
|
||||
enable = true;
|
||||
clean.enable = true;
|
||||
clean.extraArgs = "--keep-since 7d --keep 3";
|
||||
flake = "/home/guz/Projects/dot013-nix";
|
||||
};
|
||||
|
||||
# QMK keyboard
|
||||
hardware.keyboard.qmk.enable = true;
|
||||
services.udev.packages = with pkgs; [via vial];
|
||||
|
||||
# Pipewire
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
# Tailscale
|
||||
services.tailscale.enable = true;
|
||||
|
||||
# Networking
|
||||
networking.hostName = "battleship";
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Locale
|
||||
time.timeZone = "America/Sao_Paulo";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = let
|
||||
locale = "pt_BR.UTF-8";
|
||||
in {
|
||||
LC_ADDRESS = locale;
|
||||
LC_IDENTIFICATION = locale;
|
||||
LC_MEASUREMENT = locale;
|
||||
LC_MONETARY = locale;
|
||||
LC_NAME = locale;
|
||||
LC_NUMERIC = locale;
|
||||
LC_PAPER = locale;
|
||||
LC_TELEPHONE = locale;
|
||||
LC_TIME = locale;
|
||||
};
|
||||
|
||||
# Keyboard
|
||||
services.xserver.xkb.layout = "br";
|
||||
console.keyMap = "br-abnt2";
|
||||
|
||||
security.polkit.enable = true;
|
||||
|
||||
# Nix
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"obsidian"
|
||||
"steam"
|
||||
"steam-unwrapped"
|
||||
"via"
|
||||
"vivaldi"
|
||||
];
|
||||
|
||||
# Bootloader
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It's perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "25.11"; # Did you read the comment?
|
||||
}
|
||||
@@ -1,21 +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,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "sd_mod"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = ["kvm-amd"];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1,29 +1,111 @@
|
||||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
../../secrets.nix
|
||||
./gpu.nix
|
||||
|
||||
./impermanence.nix
|
||||
inputs.disko.nixosModules.disko
|
||||
./disko.nix
|
||||
|
||||
./hardware-configuration.nix
|
||||
./gpu-configuration.nix
|
||||
../../configuration.nix
|
||||
|
||||
./home.nix
|
||||
|
||||
./services.nix
|
||||
];
|
||||
|
||||
users.users."guz" = {
|
||||
openssh.authorizedKeys.keyFiles = [
|
||||
../../.ssh/guz-battleship.pub
|
||||
# GnuPG keyring
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-gtk2;
|
||||
settings.default-cache-ttl = 3600 * 24;
|
||||
};
|
||||
|
||||
# Yet another nix cli helper
|
||||
programs.nh = {
|
||||
enable = true;
|
||||
clean.enable = true;
|
||||
clean.extraArgs = "--keep-since 7d --keep 3";
|
||||
flake = "/home/guz/Projects/dot013-nix";
|
||||
};
|
||||
|
||||
# QMK keyboard
|
||||
hardware.keyboard.qmk.enable = true;
|
||||
services.udev.packages = with pkgs; [via vial];
|
||||
|
||||
# Pipewire
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
# Tailscale
|
||||
services.tailscale.enable = true;
|
||||
|
||||
# Networking
|
||||
networking.hostName = "battleship";
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Firewall
|
||||
networking.firewall.enable = true;
|
||||
networking.firewall.allowedUDPPorts = [53];
|
||||
networking.firewall.allowedTCPPorts = [80 433];
|
||||
|
||||
# SSH
|
||||
services.openssh.enable = true;
|
||||
services.openssh.settings = {
|
||||
PasswordAuthentication = false;
|
||||
PermitRootLogin = "forced-commands-only";
|
||||
};
|
||||
|
||||
# Locale
|
||||
time.timeZone = "America/Sao_Paulo";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = let
|
||||
locale = "pt_BR.UTF-8";
|
||||
in {
|
||||
LC_ADDRESS = locale;
|
||||
LC_IDENTIFICATION = locale;
|
||||
LC_MEASUREMENT = locale;
|
||||
LC_MONETARY = locale;
|
||||
LC_NAME = locale;
|
||||
LC_NUMERIC = locale;
|
||||
LC_PAPER = locale;
|
||||
LC_TELEPHONE = locale;
|
||||
LC_TIME = locale;
|
||||
};
|
||||
|
||||
# Keyboard
|
||||
services.xserver.xkb.layout = "br";
|
||||
console.keyMap = "br-abnt2";
|
||||
|
||||
security.polkit.enable = true;
|
||||
|
||||
# Nix
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"obsidian"
|
||||
"steam"
|
||||
"steam-unwrapped"
|
||||
"via"
|
||||
"vivaldi"
|
||||
];
|
||||
};
|
||||
|
||||
# Network
|
||||
networking = {
|
||||
hostName = lib.mkForce "battleship";
|
||||
# nameservers = ["192.168.0.110"];
|
||||
};
|
||||
|
||||
# Bootloader
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It's perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "25.11"; # Did you read the comment?
|
||||
}
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
{pkgs, ...}: {
|
||||
imports = [];
|
||||
|
||||
boot.kernelModules = ["amdgpu"];
|
||||
boot.initrd.kernelModules = ["amdgpu"];
|
||||
|
||||
# services.xserver.enable = true;
|
||||
services.xserver.videoDrivers = ["amdgpu"];
|
||||
|
||||
# Configuration for davinci resolve based on
|
||||
# https://wiki.nixos.org/wiki/DaVinci_Resolve
|
||||
environment.variables = {
|
||||
RUSTICL_ENABLE = "radeonsi";
|
||||
ROC_ENABLE_PRE_VEGA = "1";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
mesa-demos
|
||||
vulkan-tools
|
||||
clinfo
|
||||
];
|
||||
|
||||
hardware.graphics.enable = true;
|
||||
hardware.graphics.enable32Bit = true;
|
||||
hardware.graphics.extraPackages = with pkgs; [
|
||||
mesa
|
||||
libva
|
||||
libvdpau-va-gl
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
mesa.opencl
|
||||
];
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
||||
];
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
@@ -12,33 +11,11 @@
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"];
|
||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "sd_mod"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = ["kvm-amd"];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/787210de-28e8-47a8-9481-b4563698ee35";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/85F0-E176";
|
||||
fsType = "vfat";
|
||||
options = ["fmask=0077" "dmask=0077"];
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{device = "/dev/disk/by-uuid/040b66b0-874b-41e0-b13b-4e293560ec50";}
|
||||
];
|
||||
|
||||
# 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.enp6s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
|
||||
@@ -1,40 +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" "usbhid" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/586b0998-30b6-4cc8-be41-1b8b4f77b3b0";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/1D67-5492";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/3b5ff4ea-39dc-4882-ba6d-a5864fc5ec39"; }
|
||||
];
|
||||
|
||||
# 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.enp6s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Host specific overrides of the root home
|
||||
home-manager.users.guz = let
|
||||
cfg = config.home-manager.users.guz;
|
||||
hyprcfg = cfg.wayland.windowManager.hyprland.settings;
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
"$MONITOR-1" = lib.mkForce "HDMI-A-1";
|
||||
"$MONITOR-2" = lib.mkForce "DVI-D-1";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
pkgs-unstable,
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.nix-minecraft.nixosModules.minecraft-servers
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
inputs.nix-minecraft.overlay
|
||||
];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"minecraft-server"
|
||||
"minecraft-server-1.21.8"
|
||||
];
|
||||
|
||||
services.minecraft-servers = {
|
||||
enable = true;
|
||||
eula = true;
|
||||
dataDir = "/var/lib/minecraft-servers";
|
||||
managementSystem = {
|
||||
tmux.enable = false;
|
||||
systemd-socket.enable = true;
|
||||
};
|
||||
openFirewall = true;
|
||||
servers = {
|
||||
"heart-smp" = let
|
||||
modpack = inputs.heart-modpack.packages.${pkgs.system}.default;
|
||||
mcVersion = modpack.manifest.versions.minecraft;
|
||||
fabricVersion = modpack.manifest.versions.fabric;
|
||||
serverVersion = lib.replaceStrings ["."] ["_"] "fabric-${mcVersion}";
|
||||
in {
|
||||
enable = true;
|
||||
autoStart = false;
|
||||
package = pkgs.fabricServers.${serverVersion}.override {loaderVersion = "0.17.3";};
|
||||
symlinks = {
|
||||
"mods" = "${modpack}/mods";
|
||||
};
|
||||
files = {
|
||||
"config" = "${modpack}/config";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.gitea = {
|
||||
enable = false;
|
||||
settings = {
|
||||
server = rec {
|
||||
HTTP_PORT = 3617;
|
||||
DOMAIN = "localhost:${toString HTTP_PORT}";
|
||||
|
||||
ROOT_URL = "http://${DOMAIN}";
|
||||
};
|
||||
service = {
|
||||
ENABLE_USER_HEATMAP = true;
|
||||
};
|
||||
ui = {
|
||||
DEFAULT_THEME = "capytal-dark";
|
||||
THEMES = lib.concatStringsSep "," [
|
||||
"lored-dark"
|
||||
"lored-light"
|
||||
"forgejo-dark"
|
||||
];
|
||||
FILE_ICON_THEME = "material";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
../../configuration.nix
|
||||
|
||||
./home.nix
|
||||
];
|
||||
|
||||
users.users."guz" = {
|
||||
openssh.authorizedKeys.keyFiles = [
|
||||
../../.ssh/guz-figther.pub
|
||||
];
|
||||
};
|
||||
|
||||
# Xremap run-as-user
|
||||
hardware.uinput.enable = true;
|
||||
users.groups.uinput.members = ["guz"];
|
||||
users.groups.input.members = ["guz"];
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.graphics.enable = true;
|
||||
hardware.graphics.extraPackages = with pkgs; [
|
||||
vpl-gpu-rt
|
||||
];
|
||||
|
||||
# Laptop features
|
||||
services.logind.lidSwitch = "suspend";
|
||||
services.logind.lidSwitchExternalPower = "lock";
|
||||
|
||||
# Network
|
||||
networking = {
|
||||
hostName = lib.mkForce "figther";
|
||||
nameservers = ["192.168.0.110"];
|
||||
# wireless.enable = lib.mkForce true;
|
||||
};
|
||||
}
|
||||
@@ -1,43 +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 = [];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/bcd5d809-c81d-4d42-8496-07a70e3b1ffc";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/9444-2967";
|
||||
fsType = "vfat";
|
||||
options = ["fmask=0077" "dmask=0077"];
|
||||
};
|
||||
|
||||
swapDevices = [];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1,39 +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" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/e83d1c3a-9786-4c5d-839f-1fa25718990a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/541A-AD6D";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Host specific overrides of the root home
|
||||
home-manager.users.guz = let
|
||||
cfg = config.home-manager.users.guz;
|
||||
hyprcfg = cfg.wayland.windowManager.hyprland.settings;
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
"$MONITOR-1" = lib.mkForce "eDP-1";
|
||||
};
|
||||
|
||||
programs.waybar.settings.single = {
|
||||
layer = "top";
|
||||
position = "top";
|
||||
height = 25;
|
||||
spacing = 5;
|
||||
|
||||
margin-top = 5;
|
||||
margin-right = 10;
|
||||
margin-left = 10;
|
||||
|
||||
modules-left = [
|
||||
"hyprland/workspaces"
|
||||
"hyprland/window"
|
||||
];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
active-only = false;
|
||||
persistent-workspaces = {
|
||||
"${hyprcfg."$MONITOR-1"}" = [1 2 3 4 5];
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
default = "";
|
||||
active = "";
|
||||
};
|
||||
};
|
||||
|
||||
"hyprland/window" = {
|
||||
format = "{title}";
|
||||
};
|
||||
|
||||
modules-center = [
|
||||
"clock"
|
||||
];
|
||||
|
||||
"clock" = {
|
||||
format = "{:%d %R}";
|
||||
format-alt = "{:%B %d, 12.0%y (%A)}";
|
||||
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||
calendar = {
|
||||
mode = "year";
|
||||
mode-mon-col = 3;
|
||||
weeks-pos = "left";
|
||||
on-scroll = 1;
|
||||
format = with config.lib.stylix.colors.withHashtag; {
|
||||
months = "<span color='${base09}'><b>{}</b></span>";
|
||||
days = "<span color='${base05}'><b>{}</b></span>";
|
||||
weeks = "<span color='${base09}'><b>W{}</b></span>";
|
||||
weeksdays = "<span color='${base09}'><b>{}</b></span>";
|
||||
today = "<span color='${base07}'><b>{}</b></span>";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
modules-right = [
|
||||
"battery"
|
||||
"pulseaudio"
|
||||
"cpu"
|
||||
"memory"
|
||||
"disk"
|
||||
];
|
||||
|
||||
"battery" = {
|
||||
format-icons = ["" "" "" "" ""];
|
||||
format = "{icon} {capacity}%";
|
||||
};
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = "";
|
||||
format-icons = {
|
||||
default = ["" ""];
|
||||
};
|
||||
onclick = "${lib.getExe pkgs.pwvucontrol}";
|
||||
};
|
||||
|
||||
"cpu" = {
|
||||
format = " {usage}%";
|
||||
};
|
||||
|
||||
"memory" = {
|
||||
format = " {percentage}%";
|
||||
};
|
||||
|
||||
"disk" = {
|
||||
interval = 30;
|
||||
format = " {specific_free:0.2f}";
|
||||
unit = "GB";
|
||||
};
|
||||
};
|
||||
|
||||
services.xremap.config.modmap = [
|
||||
{
|
||||
name = "laptop remaps";
|
||||
remap = {
|
||||
# Capslock as esc and ctrl on hold
|
||||
"CapsLock" = {
|
||||
held = "leftctrl";
|
||||
alone = "esc";
|
||||
alone_timeout_millis = 150;
|
||||
};
|
||||
# "S" = {
|
||||
# held = "leftalt";
|
||||
# alone = "s";
|
||||
# alone_timeout_millis = 150;
|
||||
# };
|
||||
# "D" = {
|
||||
# held = "leftctrl";
|
||||
# alone = "d";
|
||||
# alone_timeout_millis = 150;
|
||||
# };
|
||||
# "F" = {
|
||||
# held = "leftshift";
|
||||
# alone = "f";
|
||||
# alone_timeout_millis = 150;
|
||||
# };
|
||||
# "J" = {
|
||||
# held = "rightshift";
|
||||
# alone = "j";
|
||||
# alone_timeout_millis = 150;
|
||||
# };
|
||||
# "K" = {
|
||||
# held = "rightctrl";
|
||||
# alone = "k";
|
||||
# alone_timeout_millis = 150;
|
||||
# };
|
||||
# "L" = {
|
||||
# held = "rightalt";
|
||||
# alone = "l";
|
||||
# alone_timeout_millis = 150;
|
||||
# };
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,146 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
../../secrets.nix
|
||||
];
|
||||
|
||||
context = {
|
||||
job = false;
|
||||
};
|
||||
|
||||
# GnuPG keyring
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-gtk2;
|
||||
settings = {default-cache-ttl = 3600 * 24;};
|
||||
};
|
||||
services.pcscd.enable = true;
|
||||
|
||||
# Yet another nix cli helper
|
||||
programs.nh = {
|
||||
enable = true;
|
||||
clean.enable = true;
|
||||
clean.extraArgs = "--keep-since 7d --keep 3";
|
||||
flake = "/home/guz/.projects/dot013-nix";
|
||||
};
|
||||
|
||||
# QMK keyboard
|
||||
hardware.keyboard.qmk.enable = true;
|
||||
services.udev.packages = with pkgs; [via vial];
|
||||
|
||||
# Enable Nix-LD for standalone binaries (useful for development)
|
||||
programs.nix-ld.enable = true;
|
||||
|
||||
# Bluetooth
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
services.blueman.enable = true;
|
||||
|
||||
# Audio
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
|
||||
wireplumber.enable = true;
|
||||
|
||||
extraConfig = {
|
||||
pipewire-pulse."switch-on-connect.conf" = {
|
||||
"pulse.cmd" = [
|
||||
{
|
||||
cmd = "load-module";
|
||||
args = "module-switch-on-connect";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
security.rtkit.enable = true;
|
||||
services.pulseaudio.enable = lib.mkForce false;
|
||||
environment.systemPackages = with pkgs; [
|
||||
pwvucontrol
|
||||
via
|
||||
vial
|
||||
];
|
||||
|
||||
# Networking
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
nameservers = [
|
||||
/*
|
||||
"192.168.0.1"
|
||||
*/
|
||||
"8.8.8.8"
|
||||
# "1.1.1.1"
|
||||
# "9.9.9.9"
|
||||
];
|
||||
};
|
||||
|
||||
# Firewall
|
||||
networking.firewall.enable = true;
|
||||
networking.firewall.allowedUDPPorts = [53];
|
||||
networking.firewall.allowedTCPPorts = [80 433];
|
||||
|
||||
# SSH
|
||||
services.openssh.enable = true;
|
||||
services.openssh.settings = {
|
||||
PasswordAuthentication = false;
|
||||
PermitRootLogin = "forced-commands-only";
|
||||
};
|
||||
|
||||
# Mosh
|
||||
programs.mosh.enable = true;
|
||||
programs.mosh.openFirewall = true;
|
||||
|
||||
# Tailscale
|
||||
services.tailscale.enable = true;
|
||||
|
||||
# Locale
|
||||
time.timeZone = "America/Sao_Paulo";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = let
|
||||
locale = "pt_BR.UTF-8";
|
||||
in {
|
||||
LC_ADDRESS = locale;
|
||||
LC_IDENTIFICATION = locale;
|
||||
LC_MEASUREMENT = locale;
|
||||
LC_MONETARY = locale;
|
||||
LC_NAME = locale;
|
||||
LC_NUMERIC = locale;
|
||||
LC_PAPER = locale;
|
||||
LC_TELEPHONE = locale;
|
||||
LC_TIME = locale;
|
||||
};
|
||||
|
||||
# Keyboard
|
||||
services.xserver.xkb = {
|
||||
layout = "br";
|
||||
};
|
||||
console.keyMap = "br-abnt2";
|
||||
|
||||
security.polkit.enable = true;
|
||||
|
||||
# Bootloader
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.kernel.sysctl."kernel.yama.ptrace_scope" = lib.mkForce 0;
|
||||
|
||||
# Nix
|
||||
nix.settings = {
|
||||
experimental-features = ["nix-command" "flakes"];
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It's perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "24.11"; # Did you read the comment?
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./base.nix
|
||||
|
||||
../../home/worm/configuration.nix
|
||||
|
||||
inputs.disko-2505.nixosModules.disko
|
||||
./disks.nix
|
||||
# ./impermanence.nix
|
||||
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
users.users."guz" = {
|
||||
openssh.authorizedKeys.keyFiles = [
|
||||
../../.ssh/guz-figther.pub
|
||||
];
|
||||
};
|
||||
|
||||
# Network
|
||||
networking = {
|
||||
hostName = lib.mkForce "rusty";
|
||||
#wireless.enable = lib.mkForce true;
|
||||
};
|
||||
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"via"
|
||||
];
|
||||
|
||||
# Laptop features
|
||||
services.logind.lidSwitch = "suspend";
|
||||
services.logind.lidSwitchExternalPower = "lock";
|
||||
|
||||
# HACK: Acer Aspire is a Bitch
|
||||
boot.loader.systemd-boot.enable = lib.mkForce true;
|
||||
boot.loader.efi.canTouchEfiVariables = lib.mkForce false;
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
{
|
||||
disko.devices = {
|
||||
disk.main = {
|
||||
device = "/dev/sda"; # This will be overwritten by disko-install
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
label = "boot";
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = ["defaults"];
|
||||
};
|
||||
};
|
||||
luks = {
|
||||
end = "-4G";
|
||||
label = "luks";
|
||||
content = {
|
||||
type = "luks";
|
||||
name = "cryptroot";
|
||||
settings = {crypttabExtraOpts = ["fido2-device=auto" "token-timeout=10"];};
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/";
|
||||
};
|
||||
};
|
||||
};
|
||||
swap = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "swap";
|
||||
randomEncryption = true;
|
||||
priority = 100;
|
||||
resumeDevice = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
{
|
||||
disko.devices = {
|
||||
disk.main = {
|
||||
device = "/dev/sda"; # This will be overwritten by disko-install
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
label = "boot";
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = ["defaults"];
|
||||
};
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = ["-L" "nixos" "-f"];
|
||||
subvolumes = {
|
||||
"/root" = {
|
||||
mountpoint = "/";
|
||||
mountOptions = ["subvol=root" "compress=zstd" "noatime"];
|
||||
};
|
||||
"/home" = {
|
||||
mountpoint = "/home";
|
||||
mountOptions = ["subvol=home" "compress=zstd" "noatime"];
|
||||
};
|
||||
"/nix" = {
|
||||
mountpoint = "/nix";
|
||||
mountOptions = ["subvol=nix" "compress=zstd" "noatime"];
|
||||
};
|
||||
"/persist" = {
|
||||
mountpoint = "/persist";
|
||||
mountOptions = ["subvol=persist" "compress=zstd" "noatime"];
|
||||
};
|
||||
"/log" = {
|
||||
mountpoint = "/var/log";
|
||||
mountOptions = ["subvol=log" "compress=zstd" "noatime"];
|
||||
};
|
||||
"/swap" = {
|
||||
mountpoint = "/swap";
|
||||
swap.swapfile.size = "4G";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
# luks = {
|
||||
# size = "100%";
|
||||
# label = "luks";
|
||||
# content = {
|
||||
# type = "luks";
|
||||
# name = "cryptroot";
|
||||
# extraOpenArgs = [
|
||||
# "--allow-discards"
|
||||
# "--perf-no_read_workqueue"
|
||||
# "--perf-no_write_workqueue"
|
||||
# ];
|
||||
# settings = {crypttabExtraOpts = ["fido2-device=auto" "token-timeout=10"];};
|
||||
# content = {
|
||||
# type = "btrfs";
|
||||
# extraArgs = ["-L" "nixos" "-f"];
|
||||
# subvolumes = {
|
||||
# "/root" = {
|
||||
# mountpoint = "/";
|
||||
# mountOptions = ["subvol=root" "compress=zstd" "noatime"];
|
||||
# };
|
||||
# "/home" = {
|
||||
# mountpoint = "/home";
|
||||
# mountOptions = ["subvol=home" "compress=zstd" "noatime"];
|
||||
# };
|
||||
# "/nix" = {
|
||||
# mountpoint = "/nix";
|
||||
# mountOptions = ["subvol=nix" "compress=zstd" "noatime"];
|
||||
# };
|
||||
# "/persist" = {
|
||||
# mountpoint = "/persist";
|
||||
# mountOptions = ["subvol=persist" "compress=zstd" "noatime"];
|
||||
# };
|
||||
# "/log" = {
|
||||
# mountpoint = "/var/log";
|
||||
# mountOptions = ["subvol=log" "compress=zstd" "noatime"];
|
||||
# };
|
||||
# "/swap" = {
|
||||
# mountpoint = "/swap";
|
||||
# swap.swapfile.size = "4G";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems."/persist".neededForBoot = true;
|
||||
fileSystems."/var/log".neededForBoot = true;
|
||||
}
|
||||
@@ -1,22 +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 = ["ahci" "xhci_pci" "usb_storage" "sd_mod" "sdhci_pci" "rtsx_usb_sdmmc"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = ["kvm-intel"];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.impermanence.nixosModules.impermanence
|
||||
];
|
||||
|
||||
environment.persistence."/persist" = {
|
||||
enable = true;
|
||||
hideMounts = true;
|
||||
directories = [
|
||||
"/etc/nixos"
|
||||
"/etc/NetworkManager/system-connections"
|
||||
"/etc/secureboot"
|
||||
"/var/db/sudo"
|
||||
"/var/log"
|
||||
"/var/lib/bluetooth"
|
||||
"/var/lib/nixos"
|
||||
"/var/lib/systemd/coredump"
|
||||
{
|
||||
directory = "/var/lib/colord";
|
||||
user = "colord";
|
||||
group = "colord";
|
||||
mode = "u=rwx,g=rx,o=";
|
||||
}
|
||||
];
|
||||
files = [
|
||||
"/etc/machine-id"
|
||||
{
|
||||
file = "/var/keys/secret_file";
|
||||
parentDirectory = {mode = "u=rwx,g=,o=";};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
boot.initrd.systemd = {
|
||||
enable = true;
|
||||
services.roolback = {
|
||||
description = "Roolback BTRFS root subvolume to a pristine state";
|
||||
wantedBy = ["initrd.target"];
|
||||
|
||||
after = ["systemd-cryptsetup@cryptroot.service"];
|
||||
|
||||
before = ["sysroot.mount"];
|
||||
|
||||
unitConfig.DefaultDependencies = "no";
|
||||
serviceConfig.Type = "oneshot";
|
||||
|
||||
script = ''
|
||||
mkdir -p /mnt
|
||||
|
||||
# Mount BTRFS root to manipulate it's volumes
|
||||
mount -o subvol=/ /dev/mapper/cryptroot /mnt
|
||||
|
||||
btrfs subvolume list -o /mnt/root |
|
||||
cut -f9 -d' ' |
|
||||
while read subvolume; do
|
||||
echo "deleting /$subvolume subvolume..."
|
||||
btrfs subvolume delete "/mnt/$subvolume"
|
||||
done &&
|
||||
echo "deleting /root subvolume..." &&
|
||||
btrfs subvolume delete /mnt/root
|
||||
|
||||
echo "restoring blank /root subvolume..."
|
||||
btrfs subvolume snapshot /mnt/root-blank /mnt/root
|
||||
|
||||
umount /mnt
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
config,
|
||||
modulesPath,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
||||
];
|
||||
|
||||
# Users
|
||||
users.users."guz" = {
|
||||
useDefaultShell = true;
|
||||
isNormalUser = true;
|
||||
|
||||
password = null;
|
||||
extraGroups = ["wheel" "guz"];
|
||||
};
|
||||
users.groups."guz" = {};
|
||||
|
||||
environment.systemPackages =
|
||||
[
|
||||
inputs.disko.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||
]
|
||||
++ (with self.packages.${pkgs.stdenv.hostPlatform.system}.devkit; [
|
||||
git
|
||||
lazygit
|
||||
neovim
|
||||
starship
|
||||
tmux
|
||||
yazi
|
||||
zellij
|
||||
zsh
|
||||
]);
|
||||
|
||||
# Locale
|
||||
time.timeZone = "America/Sao_Paulo";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = let
|
||||
locale = "pt_BR.UTF-8";
|
||||
in {
|
||||
LC_ADDRESS = locale;
|
||||
LC_IDENTIFICATION = locale;
|
||||
LC_MEASUREMENT = locale;
|
||||
LC_MONETARY = locale;
|
||||
LC_NAME = locale;
|
||||
LC_NUMERIC = locale;
|
||||
LC_PAPER = locale;
|
||||
LC_TELEPHONE = locale;
|
||||
LC_TIME = locale;
|
||||
};
|
||||
|
||||
# Keyboard
|
||||
services.xserver.xkb = {
|
||||
layout = "br";
|
||||
};
|
||||
console.keyMap = "br-abnt2";
|
||||
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/var/lib/swapfile";
|
||||
size = 16 * 1024;
|
||||
}
|
||||
];
|
||||
|
||||
# Nix
|
||||
nix.settings = {
|
||||
experimental-features = ["nix-command" "flakes"];
|
||||
};
|
||||
|
||||
nixpkgs.config.allowBroken = true;
|
||||
|
||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
}
|
||||
@@ -1,307 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit
|
||||
(lib)
|
||||
concatStringsSep
|
||||
literalExpression
|
||||
mapAttrsToList
|
||||
mkIf
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
cfg = config.programs.qutebrowser;
|
||||
|
||||
profileType = with lib;
|
||||
with types;
|
||||
submodule ({
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
scfg = config;
|
||||
in {
|
||||
options = with lib; {
|
||||
name = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
};
|
||||
extendDefault = mkOption {
|
||||
type = with types; bool;
|
||||
default = true;
|
||||
};
|
||||
titleFormat = mkOption {
|
||||
type = with types; str;
|
||||
default = "{perc}{current_title}{title_sep} qutebrowser ({profile_name})";
|
||||
};
|
||||
desktopName = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
};
|
||||
aliases = mkOption {
|
||||
type = with types; attrsOf str;
|
||||
default = {};
|
||||
};
|
||||
loadAutoconfig = mkOption {
|
||||
type = with types; bool;
|
||||
default = cfg.loadAutoconfig;
|
||||
};
|
||||
searchEngines = mkOption {
|
||||
type = with types; attrsOf str;
|
||||
default = {};
|
||||
};
|
||||
settings = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
default = {};
|
||||
};
|
||||
keyMappings = mkOption {
|
||||
type = with types; attrsOf str;
|
||||
default = {};
|
||||
};
|
||||
enableDefaultBindings = mkOption {
|
||||
type = with types; bool;
|
||||
default = cfg.enableDefaultBindings;
|
||||
};
|
||||
keyBindings = mkOption {
|
||||
type = with types; attrsOf (attrsOf (nullOr (separatedString " ;; ")));
|
||||
default = {};
|
||||
};
|
||||
quickmarks = mkOption {
|
||||
type = with types; attrsOf str;
|
||||
default = {};
|
||||
apply = v:
|
||||
if scfg.extendDefault
|
||||
then cfg.quickmarks // v
|
||||
else v;
|
||||
};
|
||||
greasemonkey = mkOption {
|
||||
type = with types; listOf package;
|
||||
default = [];
|
||||
apply = v:
|
||||
if scfg.extendDefault
|
||||
then cfg.greasemonkey ++ v
|
||||
else v;
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = with types; lines;
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
formatLine = o: n: v: let
|
||||
formatValue = v:
|
||||
if v == null
|
||||
then "None"
|
||||
else if builtins.isBool v
|
||||
then
|
||||
(
|
||||
if v
|
||||
then "True"
|
||||
else "False"
|
||||
)
|
||||
else if builtins.isString v
|
||||
then ''"${v}"''
|
||||
else if builtins.isList v
|
||||
then "[${concatStringsSep ", " (map formatValue v)}]"
|
||||
else builtins.toString v;
|
||||
in
|
||||
if builtins.isAttrs v
|
||||
then concatStringsSep "\n" (mapAttrsToList (formatLine "${o}${n}.") v)
|
||||
else "${o}${n} = ${formatValue v}";
|
||||
|
||||
formatDictLine = o: n: v: ''${o}['${n}'] = "${v}"'';
|
||||
|
||||
formatKeyBindings = m: b: let
|
||||
formatKeyBinding = m: k: c:
|
||||
if c == null
|
||||
then ''config.unbind("${k}", mode="${m}")''
|
||||
else ''config.bind("${k}", "${lib.escape [''"''] c}", mode="${m}")'';
|
||||
in
|
||||
concatStringsSep "\n" (mapAttrsToList (formatKeyBinding m) b);
|
||||
|
||||
formatQuickmarks = n: s: "${n} ${s}";
|
||||
in
|
||||
with lib; {
|
||||
options.programs.qutebrowser = {
|
||||
profileChooser = mkOption {
|
||||
type = with types; either bool (enum ["override"]);
|
||||
default = "override";
|
||||
};
|
||||
profileChooserDMenu = mkOption {
|
||||
type = with types; package;
|
||||
default = pkgs.writeShellScriptBin "rofi" "${getExe config.programs.rofi.finalPackage} -dmenu $@";
|
||||
};
|
||||
profileChooserUserscript = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = "W";
|
||||
};
|
||||
profiles = mkOption {
|
||||
type = with types; attrsOf profileType;
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
config = let
|
||||
profiles = mapAttrsToList (n: v: n) cfg.profiles;
|
||||
profilesFile = pkgs.writeText "qutebrowser-profiles" (concatStringsSep "\n" (["DEFAULT"] ++ profiles));
|
||||
|
||||
chooser = pkgs.writeShellScriptBin "qutebrowser-chooser" ''
|
||||
profile="$(cat ${profilesFile} | ${getExe cfg.profileChooserDMenu})"
|
||||
case "$profile" in
|
||||
"DEFAULT")
|
||||
${getExe pkgs.qutebrowser} $@
|
||||
;;
|
||||
${concatMapStringsSep "\n" (n: let
|
||||
profileDir = "${config.xdg.dataHome}/qutebrowser-profiles/${n}";
|
||||
in ''
|
||||
"${n}")
|
||||
${getExe pkgs.qutebrowser} -B ${profileDir} -C ${profileDir}/config.py --desktop-file-name qutebrowser-profile-${n} $@
|
||||
;;
|
||||
'')
|
||||
profiles}
|
||||
esac
|
||||
'';
|
||||
userscript = pkgs.writeShellScriptBin "qutebrowser-profiles-userscript" ''
|
||||
function close() {
|
||||
echo "close" >> "$QUTE_FIFO"
|
||||
}
|
||||
${getExe chooser} & close
|
||||
'';
|
||||
in
|
||||
mkIf (cfg.enable && cfg.profiles != {}) {
|
||||
programs.qutebrowser.package = pkgs.stdenv.mkDerivation {
|
||||
inherit (pkgs.qutebrowser) name pname;
|
||||
buildCommand = let
|
||||
desktopEntry = pkgs.makeDesktopItem {
|
||||
name = "qutebrowser";
|
||||
desktopName = "qutebrowser";
|
||||
exec = "${getExe (
|
||||
if cfg.profileChooser == "override"
|
||||
then chooser
|
||||
else pkgs.package
|
||||
)} %u";
|
||||
};
|
||||
chooserDesktopEntry = pkgs.makeDesktopItem {
|
||||
name = "qutebrowser chooser";
|
||||
desktopName = "qutebrowser-chooser";
|
||||
exec = "${getExe chooser} %u";
|
||||
};
|
||||
in ''
|
||||
mkdir -p $out/bin
|
||||
cp ${getExe pkgs.qutebrowser} $out/bin
|
||||
${
|
||||
if cfg.profileChooser != false
|
||||
then "cp ${getExe chooser} $out/bin"
|
||||
else ""
|
||||
}
|
||||
|
||||
mkdir -p $out/share/applications
|
||||
cp ${desktopEntry}/share/applications/qutebrowser.desktop $out/share/applications/qutebrowser.desktop
|
||||
${
|
||||
if cfg.profileChooser == true
|
||||
then "cp ${chooserDesktopEntry}/share/applications/qutebrowser-chooser.desktop $out/share/applications/qutebrowser-chooser.desktop"
|
||||
else ""
|
||||
}
|
||||
'';
|
||||
dontBuild = true;
|
||||
meta =
|
||||
meta
|
||||
// {
|
||||
desktopFileName = "qutebrowser.desktop";
|
||||
};
|
||||
};
|
||||
|
||||
xdg.desktopEntries = mergeAttrsList (mapAttrsToList (n: v: let
|
||||
profileDir = "qutebrowser-profiles/${n}";
|
||||
in {
|
||||
"qutebrowser-profile-${n}" = {
|
||||
name =
|
||||
if isNull v.desktopName
|
||||
then "${
|
||||
if isNull v.name
|
||||
then n
|
||||
else v.name
|
||||
} (qutebrowser profile)"
|
||||
else v.desktopName;
|
||||
exec =
|
||||
"${getExe pkgs.qutebrowser}"
|
||||
+ " -B ${config.xdg.dataHome}/${profileDir}"
|
||||
+ " -C ${config.xdg.dataHome}/${profileDir}/config.py"
|
||||
+ " --desktop-file-name qutebrowser-profile-${n}"
|
||||
+ " %u";
|
||||
};
|
||||
})
|
||||
cfg.profiles);
|
||||
|
||||
xdg.dataFile = mergeAttrsList (mapAttrsToList (n: v: let
|
||||
profileDir = "qutebrowser-profiles/${n}";
|
||||
in {
|
||||
"${profileDir}/config.py" = {
|
||||
text = concatStringsSep "\n" (
|
||||
[
|
||||
(
|
||||
if v.loadAutoconfig
|
||||
then "config.load_autoconfig()"
|
||||
else "config.load_autoconfig(False)"
|
||||
)
|
||||
]
|
||||
++ lib.optional (v.titleFormat != "") ''
|
||||
c.window.title_format = '${replaceStrings ["{profile}" "{profile_name}"] [
|
||||
n
|
||||
(
|
||||
if isNull v.name
|
||||
then n
|
||||
else v.name
|
||||
)
|
||||
]
|
||||
v.titleFormat}'
|
||||
''
|
||||
++ lib.optional (v.extendDefault) ''
|
||||
config.source(r'${config.xdg.configHome}/qutebrowser/config.py')
|
||||
''
|
||||
++ mapAttrsToList (formatLine "c.") v.settings
|
||||
++ mapAttrsToList (formatDictLine "c.aliases") v.aliases
|
||||
++ mapAttrsToList (formatDictLine "c.url.searchengines") v.searchEngines
|
||||
++ mapAttrsToList (formatDictLine "c.bindings.key_mappings") v.keyMappings
|
||||
++ lib.optional (!v.enableDefaultBindings) "c.bindings.default = {}"
|
||||
++ mapAttrsToList formatKeyBindings v.keyBindings
|
||||
++ lib.optional (cfg.profileChooserUserscript != "" && !(isNull cfg.profileChooserUserscript))
|
||||
"config.bind(\"${cfg.profileChooserUserscript}\", \"spawn --userscript ${getExe userscript}\", mode=\"normal\")"
|
||||
++ lib.optional (v.extraConfig != "") cfg.extraConfig
|
||||
);
|
||||
onChange = ''
|
||||
hash="$(echo -n "$USER" | md5sum | cut -d' ' -f1)"
|
||||
socket="''${XDG_RUNTIME_DIR:-/run/user/$UID}/qutebrowser/ipc-$hash"
|
||||
if [[ -S $socket ]]; then
|
||||
command=${
|
||||
lib.escapeShellArg (
|
||||
builtins.toJSON {
|
||||
args = [":config-source"];
|
||||
target_arg = null;
|
||||
protocol_version = 1;
|
||||
}
|
||||
)
|
||||
}
|
||||
echo "$command" | ${pkgs.socat}/bin/socat -lf /dev/null - UNIX-CONNECT:"$socket"
|
||||
fi
|
||||
unset hash socket command
|
||||
'';
|
||||
};
|
||||
|
||||
"${profileDir}/quickmarks" = mkIf (v.quickmarks != {}) {
|
||||
text = concatStringsSep "\n" (
|
||||
mapAttrsToList formatQuickmarks v.quickmarks
|
||||
);
|
||||
};
|
||||
|
||||
"${profileDir}/data/greasemonkey" = mkIf (v.greasemonkey != []) {
|
||||
source = pkgs.linkFarmFromDrvs "greasemonkey-userscripts" v.greasemonkey;
|
||||
};
|
||||
})
|
||||
cfg.profiles);
|
||||
};
|
||||
}
|
||||
@@ -1,190 +0,0 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.programs.zen-browser;
|
||||
configDir = "${config.home.homeDirectory}/.zen";
|
||||
|
||||
# INFO: Read default shortcuts and transform them to the same attrsOf submodule structure.
|
||||
defaultShortcuts = pipe (with builtins; (fromJSON (readFile ./default_shortcuts.json)).shortcuts) [
|
||||
(map (v:
|
||||
nameValuePair (
|
||||
# HACK: Since some of the default shortcuts have a null ID, we create
|
||||
# a ID with null + group + (key or keycode). This ID will not be used
|
||||
# in the final JSON file, and is just here since Nix can't have
|
||||
# multiple attributes with the same name.
|
||||
if isNull v.id
|
||||
then "${toString v.id}-${v.action}-${v.group}-${
|
||||
if v?key
|
||||
then v.key
|
||||
else v.keycode
|
||||
}"
|
||||
else v.id
|
||||
)
|
||||
v))
|
||||
listToAttrs
|
||||
];
|
||||
in {
|
||||
imports = [inputs.zen-browser.homeModules.twilight];
|
||||
options.programs.zen-browser = {
|
||||
profiles = mkOption {
|
||||
type = with types;
|
||||
attrsOf (submodule ({...}: {
|
||||
options = {
|
||||
shortcutsForce = mkEnableOption "";
|
||||
shortcuts = mkOption {
|
||||
type = attrsOf (submodule ({
|
||||
config,
|
||||
name,
|
||||
...
|
||||
}: let
|
||||
default = defaultShortcuts.${name};
|
||||
in {
|
||||
options = {
|
||||
id = mkOption {
|
||||
type = nullOr str;
|
||||
default = name;
|
||||
};
|
||||
key = mkOption {
|
||||
type = nullOr str;
|
||||
default = optionalString (config.keycode == "") default.key;
|
||||
apply = v:
|
||||
if isNull v
|
||||
then ""
|
||||
else v;
|
||||
};
|
||||
keycode = mkOption {
|
||||
type = nullOr str;
|
||||
default = optionalString (config.key == "") default.keycode;
|
||||
apply = v:
|
||||
if isNull v
|
||||
then ""
|
||||
else v;
|
||||
};
|
||||
group = mkOption {
|
||||
type = enum (lib.unique (mapAttrsToList (_: s: s.group) defaultShortcuts));
|
||||
default = default.group;
|
||||
};
|
||||
l10nId = mkOption {
|
||||
type = enum (lib.unique (mapAttrsToList (_: s: s.l10nId) defaultShortcuts));
|
||||
default = default.l10nId;
|
||||
};
|
||||
modifiers = {
|
||||
control = mkEnableOption "";
|
||||
alt = mkEnableOption "";
|
||||
shift = mkEnableOption "";
|
||||
meta = mkEnableOption "";
|
||||
accel = mkEnableOption "";
|
||||
};
|
||||
action = mkOption {
|
||||
type = enum (lib.unique (mapAttrsToList (_: s: s.action) defaultShortcuts));
|
||||
default = default.action;
|
||||
};
|
||||
disabled = mkOption {
|
||||
type = bool;
|
||||
default = default.disabled;
|
||||
};
|
||||
reserved = mkOption {
|
||||
type = bool;
|
||||
default = default.reserved;
|
||||
};
|
||||
internal = mkOption {
|
||||
type = bool;
|
||||
default = default.internal;
|
||||
};
|
||||
};
|
||||
}));
|
||||
default = {};
|
||||
};
|
||||
# FIXME: Zen does not update zen-themes.css
|
||||
# modsForce = mkEnableOption "";
|
||||
# mods = mkOption {
|
||||
# type = attrsOf (
|
||||
# either
|
||||
# path
|
||||
# (submodule ({name, ...}: {
|
||||
# options = {
|
||||
# id = mkOption {
|
||||
# type = str;
|
||||
# default = name;
|
||||
# };
|
||||
# name = mkOption {
|
||||
# type = str;
|
||||
# };
|
||||
# description = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# homepage = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# style = mkOption {
|
||||
# type = str;
|
||||
# };
|
||||
# readme = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# image = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# author = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# version = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# tags = mkOption {
|
||||
# type = listOf str;
|
||||
# default = [];
|
||||
# };
|
||||
# createdAt = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# updatedAt = mkOption {
|
||||
# type = str;
|
||||
# default = "";
|
||||
# };
|
||||
# enabled = mkOption {
|
||||
# type = bool;
|
||||
# default = true;
|
||||
# };
|
||||
# };
|
||||
# }))
|
||||
# );
|
||||
# apply = with builtins;
|
||||
# v:
|
||||
# mapAttrs (n: v:
|
||||
# if (isPath v || isStringLike v)
|
||||
# then fromJSON (readFile v)
|
||||
# else v)
|
||||
# v;
|
||||
# default = {};
|
||||
# };
|
||||
};
|
||||
}));
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
home.file =
|
||||
concatMapAttrs (profileName: profile: {
|
||||
"${configDir}/${profileName}/zen-keyboard-shortcuts.json" = mkIf (profile.shortcuts != {}) {
|
||||
text = builtins.toJSON {shortcuts = mapAttrsToList (_: v: v) (defaultShortcuts // profile.shortcuts);};
|
||||
force = profile.shortcutsForce;
|
||||
};
|
||||
# "${configDir}/${profileName}/zen-themes.json" = mkIf (profile.mods != {}) {
|
||||
# text = builtins.toJSON profile.mods;
|
||||
# force = profile.modsForce;
|
||||
# };
|
||||
})
|
||||
cfg.profiles;
|
||||
};
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,17 +0,0 @@
|
||||
{lib, ...}:
|
||||
with lib; {
|
||||
options.context = mkOption {
|
||||
type = with types; let
|
||||
primitive = oneOf [
|
||||
bool
|
||||
int
|
||||
str
|
||||
path
|
||||
(attrsOf primitive)
|
||||
(listOf primitive)
|
||||
];
|
||||
in
|
||||
attrsOf primitive;
|
||||
default = {};
|
||||
};
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
./vm.nix
|
||||
];
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
virtualisation.virtualbox.host.enableExtensionPack = true;
|
||||
users.extraGroups.vboxusers.members = ["guz"];
|
||||
|
||||
boot.kernelParams = ["kvm.enable_virt_at_load=0"];
|
||||
|
||||
programs.dconf.enable = true;
|
||||
|
||||
users.users."guz".extraGroups = ["libvirtd"];
|
||||
users.users."guz".packages = with pkgs; [
|
||||
virt-manager
|
||||
virt-viewer
|
||||
spice
|
||||
spice-gtk
|
||||
spice-protocol
|
||||
win-virtio
|
||||
win-spice
|
||||
adwaita-icon-theme
|
||||
quickemu
|
||||
];
|
||||
|
||||
# virtualisation.libvirtd = {
|
||||
# enable = true;
|
||||
# qemu = {
|
||||
# swtpm.enable = true;
|
||||
# ovmf.enable = true;
|
||||
# ovmf.packages = [pkgs.OVMFFull.fd];
|
||||
# };
|
||||
# };
|
||||
# virtualisation.spiceUSBRedirection.enable = true;
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"hello": 2
|
||||
}
|
||||
Reference in New Issue
Block a user