format with alejandra

okay i'm not a big fan of nixfmt in the end
This commit is contained in:
Gabriel Fontes
2024-04-07 14:21:47 -03:00
parent 0048d1d8da
commit 7885b414a4
202 changed files with 2493 additions and 2486 deletions
+128 -131
View File
@@ -81,152 +81,149 @@
};
};
outputs =
{
self,
nixpkgs,
home-manager,
...
}@inputs:
let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
systems = [
"x86_64-linux"
"aarch64-linux"
];
forEachSystem = f: lib.genAttrs systems (system: f pkgsFor.${system});
pkgsFor = lib.genAttrs systems (
system:
outputs = {
self,
nixpkgs,
home-manager,
...
} @ inputs: let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
systems = [
"x86_64-linux"
"aarch64-linux"
];
forEachSystem = f: lib.genAttrs systems (system: f pkgsFor.${system});
pkgsFor = lib.genAttrs systems (
system:
import nixpkgs {
inherit system;
config.allowUnfree = true;
}
);
in
{
inherit lib;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
templates = import ./templates;
);
in {
inherit lib;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
templates = import ./templates;
overlays = import ./overlays { inherit inputs outputs; };
hydraJobs = import ./hydra.nix { inherit inputs outputs; };
overlays = import ./overlays {inherit inputs outputs;};
hydraJobs = import ./hydra.nix {inherit inputs outputs;};
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
formatter = forEachSystem (pkgs: pkgs.nixfmt-rfc-style);
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
formatter = forEachSystem (pkgs: pkgs.alejandra);
nixosConfigurations = {
# Main desktop
atlas = lib.nixosSystem {
modules = [ ./hosts/atlas ];
specialArgs = {
inherit inputs outputs;
};
};
# Secondary desktop
maia = lib.nixosSystem {
modules = [ ./hosts/maia ];
specialArgs = {
inherit inputs outputs;
};
};
# Personal laptop
pleione = lib.nixosSystem {
modules = [ ./hosts/pleione ];
specialArgs = {
inherit inputs outputs;
};
};
# Work laptop
electra = lib.nixosSystem {
modules = [ ./hosts/electra ];
specialArgs = {
inherit inputs outputs;
};
};
# Core server (Vultr)
alcyone = lib.nixosSystem {
modules = [ ./hosts/alcyone ];
specialArgs = {
inherit inputs outputs;
};
};
# Build and game server (Oracle)
celaeno = lib.nixosSystem {
modules = [ ./hosts/celaeno ];
specialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
merope = lib.nixosSystem {
modules = [ ./hosts/merope ];
specialArgs = {
inherit inputs outputs;
};
nixosConfigurations = {
# Main desktop
atlas = lib.nixosSystem {
modules = [./hosts/atlas];
specialArgs = {
inherit inputs outputs;
};
};
homeConfigurations = {
# Desktops
"misterio@atlas" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/atlas.nix ];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
# Secondary desktop
maia = lib.nixosSystem {
modules = [./hosts/maia];
specialArgs = {
inherit inputs outputs;
};
"misterio@maia" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/maia.nix ];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Personal laptop
pleione = lib.nixosSystem {
modules = [./hosts/pleione];
specialArgs = {
inherit inputs outputs;
};
"misterio@pleione" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/pleione.nix ];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Work laptop
electra = lib.nixosSystem {
modules = [./hosts/electra];
specialArgs = {
inherit inputs outputs;
};
"misterio@electra" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/electra.nix ];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Core server (Vultr)
alcyone = lib.nixosSystem {
modules = [./hosts/alcyone];
specialArgs = {
inherit inputs outputs;
};
"misterio@alcyone" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/alcyone.nix ];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Build and game server (Oracle)
celaeno = lib.nixosSystem {
modules = [./hosts/celaeno];
specialArgs = {
inherit inputs outputs;
};
"misterio@merope" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/merope.nix ];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@celaeno" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/celaeno.nix ];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@generic" = lib.homeManagerConfiguration {
modules = [ ./home/misterio/generic.nix ];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
merope = lib.nixosSystem {
modules = [./hosts/merope];
specialArgs = {
inherit inputs outputs;
};
};
};
homeConfigurations = {
# Desktops
"misterio@atlas" = lib.homeManagerConfiguration {
modules = [./home/misterio/atlas.nix];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@maia" = lib.homeManagerConfiguration {
modules = [./home/misterio/maia.nix];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@pleione" = lib.homeManagerConfiguration {
modules = [./home/misterio/pleione.nix];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@electra" = lib.homeManagerConfiguration {
modules = [./home/misterio/electra.nix];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@alcyone" = lib.homeManagerConfiguration {
modules = [./home/misterio/alcyone.nix];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@merope" = lib.homeManagerConfiguration {
modules = [./home/misterio/merope.nix];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@celaeno" = lib.homeManagerConfiguration {
modules = [./home/misterio/celaeno.nix];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"misterio@generic" = lib.homeManagerConfiguration {
modules = [./home/misterio/generic.nix];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
};
};
}
+2 -3
View File
@@ -1,5 +1,4 @@
{ inputs, ... }:
{
imports = [ ./global ];
{inputs, ...}: {
imports = [./global];
colorscheme = inputs.nix-colors.colorSchemes.equilibrium-dark;
}
+2 -4
View File
@@ -3,11 +3,9 @@
lib,
pkgs,
...
}:
let
}: let
inherit (inputs.nix-colors) colorSchemes;
in
{
in {
imports = [
./global
./features/desktop/hyprland
+2 -3
View File
@@ -1,5 +1,4 @@
{ inputs, ... }:
{
imports = [ ./global ];
{inputs, ...}: {
imports = [./global];
colorscheme = inputs.nix-colors.colorSchemes.unikitty-dark;
}
+2 -4
View File
@@ -4,11 +4,9 @@
lib,
pkgs,
...
}:
let
}: let
inherit (inputs.nix-colors) colorSchemes;
in
{
in {
imports = [
./global
./features/desktop/wireless
+1 -2
View File
@@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
imports = [
./bash.nix
./bat.nix
+25 -18
View File
@@ -3,8 +3,7 @@
lib,
config,
...
}:
let
}: let
inherit (lib) mkIf;
packageNames = map (p: p.pname or p.name or null) config.home.packages;
hasPackage = name: lib.any (x: x == name) packageNames;
@@ -18,8 +17,7 @@ let
hasShellColor = config.programs.shellcolor.enable;
hasKitty = config.programs.kitty.enable;
shellcolor = "${pkgs.shellcolord}/bin/shellcolor";
in
{
in {
programs.fish = {
enable = true;
plugins = [
@@ -33,7 +31,9 @@ in
hash = "sha256-l17v/aJ4PkjYM8kJDA0zUo87UTsfFqq+Prei/Qq0DRA=";
};
patches = [
(builtins.toFile "fix-complete.diff" # diff
(
builtins.toFile "fix-complete.diff" # diff
''
diff --git a/completions/aws.fish b/completions/aws.fish
index fc75188..1e8d931 100644
@@ -104,7 +104,10 @@ in
nvimrg = mkIf (hasNeovim && hasRipgrep) "nvim -q (rg --vimgrep $argv | psub)";
# Merge history upon doing up-or-search
# This lets multiple fish instances share history
up-or-search = /* fish */
up-or-search =
/*
fish
*/
''
if commandline --search-mode
commandline -f history-search-backward
@@ -126,19 +129,23 @@ in
# Integrate ssh with shellcolord
ssh =
mkIf hasShellColor # fish
''
${shellcolor} disable $fish_pid
# Check if kitty is available
if set -q KITTY_PID && set -q KITTY_WINDOW_ID && type -q -f kitty
kitty +kitten ssh $argv
else
command ssh $argv
end
${shellcolor} enable $fish_pid
${shellcolor} apply $fish_pid
'';
''
${shellcolor} disable $fish_pid
# Check if kitty is available
if set -q KITTY_PID && set -q KITTY_WINDOW_ID && type -q -f kitty
kitty +kitten ssh $argv
else
command ssh $argv
end
${shellcolor} enable $fish_pid
${shellcolor} apply $fish_pid
'';
};
interactiveShellInit = /* fish */
interactiveShellInit =
/*
fish
*/
''
# Open command buffer in vim when alt+e is pressed
bind \ee edit_command_buffer
+1 -1
View File
@@ -1,6 +1,6 @@
{
programs.fzf = {
enable = true;
defaultOptions = [ "--color 16" ];
defaultOptions = ["--color 16"];
};
}
+3 -4
View File
@@ -1,8 +1,7 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
programs.gh = {
enable = true;
extensions = with pkgs; [ gh-markdown-preview ];
extensions = with pkgs; [gh-markdown-preview];
settings = {
version = "1";
git_protocol = "ssh";
@@ -10,6 +9,6 @@
};
};
home.persistence = {
"/persist/home/misterio".directories = [ ".config/gh" ];
"/persist/home/misterio".directories = [".config/gh"];
};
}
+2 -4
View File
@@ -3,8 +3,7 @@
lib,
config,
...
}:
let
}: let
ssh = "${pkgs.openssh}/bin/ssh";
git-m7 = pkgs.writeShellScriptBin "git-m7" ''
@@ -33,8 +32,7 @@ let
git commit --fixup "$@"
GIT_SEQUENCE_EDITOR=true git rebase -i --autostash --autosquash $rev^
'';
in
{
in {
home.packages = [
git-m7
git-fixup
+2 -5
View File
@@ -1,10 +1,7 @@
{ pkgs, ... }:
let
{pkgs, ...}: let
ssh = "${pkgs.openssh}/bin/ssh";
gpg-connect-agent = "${pkgs.gnupg}/bin/gpg-connect-agent";
in
{
in {
isUnlocked = "${pkgs.procps}/bin/pgrep 'gpg-agent' &> /dev/null && ${gpg-connect-agent} 'scd getinfo card_list' /bye | ${pkgs.gnugrep}/bin/grep SERIALNO -q";
unlock = "${ssh} -T localhost -o StrictHostKeyChecking=no exit";
}
+34 -30
View File
@@ -3,46 +3,49 @@
config,
lib,
...
}:
{
}: {
services.gpg-agent = {
enable = true;
enableSshSupport = true;
sshKeys = [ "149F16412997785363112F3DBD713BC91D51B831" ];
sshKeys = ["149F16412997785363112F3DBD713BC91D51B831"];
enableExtraSocket = true;
pinentryPackage = if config.gtk.enable then pkgs.pinentry-gnome3 else pkgs.pinentry-tty;
pinentryPackage =
if config.gtk.enable
then pkgs.pinentry-gnome3
else pkgs.pinentry-tty;
};
home.packages = lib.optional config.gtk.enable pkgs.gcr;
programs =
let
fixGpg = /* bash */
''
gpgconf --launch gpg-agent
'';
in
{
# Start gpg-agent if it's not running or tunneled in
# SSH does not start it automatically, so this is needed to avoid having to use a gpg command at startup
# https://www.gnupg.org/faq/whats-new-in-2.1.html#autostart
bash.profileExtra = fixGpg;
fish.loginShellInit = fixGpg;
zsh.loginExtra = fixGpg;
programs = let
fixGpg =
/*
bash
*/
''
gpgconf --launch gpg-agent
'';
in {
# Start gpg-agent if it's not running or tunneled in
# SSH does not start it automatically, so this is needed to avoid having to use a gpg command at startup
# https://www.gnupg.org/faq/whats-new-in-2.1.html#autostart
bash.profileExtra = fixGpg;
fish.loginShellInit = fixGpg;
zsh.loginExtra = fixGpg;
gpg = {
enable = true;
settings = {
trust-model = "tofu+pgp";
};
publicKeys = [
{
source = ../../pgp.asc;
trust = 5;
}
];
gpg = {
enable = true;
settings = {
trust-model = "tofu+pgp";
};
publicKeys = [
{
source = ../../pgp.asc;
trust = 5;
}
];
};
};
systemd.user.services = {
# Link /run/user/$UID/gnupg to ~/.gnupg-sockets
@@ -57,8 +60,9 @@
ExecStop = "${pkgs.coreutils}/bin/rm $HOME/.gnupg-sockets";
RemainAfterExit = true;
};
Install.WantedBy = [ "default.target" ];
Install.WantedBy = ["default.target"];
};
};
}
# vim: filetype=nix
+1 -2
View File
@@ -1,5 +1,4 @@
{ config, ... }:
{
{config, ...}: {
programs.jujutsu = {
enable = true;
settings = {
+6 -4
View File
@@ -1,7 +1,9 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.lyrics ];
xdg.configFile."lyrics-in-terminal/lyrics.cfg".text = /* ini */
{pkgs, ...}: {
home.packages = [pkgs.lyrics];
xdg.configFile."lyrics-in-terminal/lyrics.cfg".text =
/*
ini
*/
''
[OPTIONS]
alignment=left
+5 -2
View File
@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
{
pkgs,
lib,
...
}: {
programs.nix-index.enable = true;
systemd.user.services.nix-index-database-sync = {
@@ -32,6 +35,6 @@
OnBootSec = "10m";
OnUnitActiveSec = "24h";
};
Install.WantedBy = [ "timers.target" ];
Install.WantedBy = ["timers.target"];
};
}
+2 -3
View File
@@ -1,7 +1,6 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
home = {
packages = with pkgs; [ pfetch ];
packages = with pkgs; [pfetch];
sessionVariables.PF_INFO = "ascii title os kernel uptime shell term desktop scheme palette";
};
}
+2 -3
View File
@@ -1,4 +1,3 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ ranger ];
{pkgs, ...}: {
home.packages = with pkgs; [ranger];
}
+2 -3
View File
@@ -1,6 +1,5 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.screen ];
{pkgs, ...}: {
home.packages = [pkgs.screen];
home.file.".screenrc".text = ''
startup_message off
defbce on
+2 -4
View File
@@ -1,8 +1,6 @@
{ config, ... }:
let
{config, ...}: let
inherit (config.colorscheme) colors;
in
{
in {
programs.shellcolor = {
enable = true;
settings = {
+8 -6
View File
@@ -1,8 +1,10 @@
{ outputs, lib, ... }:
let
hostnames = builtins.attrNames outputs.nixosConfigurations;
in
{
outputs,
lib,
...
}: let
hostnames = builtins.attrNames outputs.nixosConfigurations;
in {
programs.ssh = {
enable = true;
matchBlocks = {
@@ -16,7 +18,7 @@ in
}
];
};
trusted = lib.hm.dag.entryBefore [ "net" ] {
trusted = lib.hm.dag.entryBefore ["net"] {
host = "m7.rs *.m7.rs *.ts.m7.rs";
forwardAgent = true;
};
@@ -24,6 +26,6 @@ in
};
home.persistence = {
"/persist/home/misterio".directories = [ ".ssh" ];
"/persist/home/misterio".directories = [".ssh"];
};
}
+27 -28
View File
@@ -1,18 +1,19 @@
{ pkgs, lib, ... }:
{
pkgs,
lib,
...
}: {
programs.starship = {
enable = true;
settings = {
format =
let
git = "$git_branch$git_commit$git_state$git_status";
cloud = "$aws$gcloud$openstack";
in
''
$username$hostname($shlvl)($cmd_duration) $fill ($nix_shell)$custom
$directory(${git})(${cloud}) $fill $time
$jobs$character
'';
format = let
git = "$git_branch$git_commit$git_state$git_status";
cloud = "$aws$gcloud$openstack";
in ''
$username$hostname($shlvl)($cmd_duration) $fill ($nix_shell)$custom
$directory(${git})(${cloud}) $fill $time
$jobs$character
'';
fill = {
symbol = " ";
@@ -50,23 +51,21 @@
style = "bold red";
};
custom = {
nix_inspect =
let
excluded = [
"kitty"
"imagemagick"
"ncurses"
"user-environment"
];
in
{
disabled = false;
when = "test -z $IN_NIX_SHELL";
command = "${(lib.getExe pkgs.nix-inspect)} ${(lib.concatStringsSep " " excluded)}";
format = "[($output <- )$symbol]($style) ";
symbol = " ";
style = "bold blue";
};
nix_inspect = let
excluded = [
"kitty"
"imagemagick"
"ncurses"
"user-environment"
];
in {
disabled = false;
when = "test -z $IN_NIX_SHELL";
command = "${(lib.getExe pkgs.nix-inspect)} ${(lib.concatStringsSep " " excluded)}";
format = "[($output <- )$symbol]($style) ";
symbol = " ";
style = "bold blue";
};
};
character = {
@@ -3,8 +3,7 @@
pkgs,
config,
...
}:
{
}: {
imports = [
./deluge.nix
./discord.nix
@@ -22,12 +21,11 @@
# Also sets org.freedesktop.appearance color-scheme
dconf.settings."org/gnome/desktop/interface".color-scheme =
if config.colorscheme.variant == "dark" then
"prefer-dark"
else if config.colorscheme.variant == "light" then
"prefer-light"
else
"default";
if config.colorscheme.variant == "dark"
then "prefer-dark"
else if config.colorscheme.variant == "light"
then "prefer-light"
else "default";
xdg.portal.enable = true;
}
@@ -1,4 +1,3 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ deluge ];
{pkgs, ...}: {
home.packages = with pkgs; [deluge];
}
@@ -1,16 +1,20 @@
{ config, pkgs, ... }:
let
c = config.colorscheme.palette;
in
{
home.packages = with pkgs; [ vesktop ];
config,
pkgs,
...
}: let
c = config.colorscheme.palette;
in {
home.packages = with pkgs; [vesktop];
home.persistence = {
"/persist/home/misterio".directories = [ ".config/vesktop" ];
"/persist/home/misterio".directories = [".config/vesktop"];
};
xdg.configFile."vesktop/themes/base16.css".text = /* css */
xdg.configFile."vesktop/themes/base16.css".text =
/*
css
*/
''
@import url("https://slowstab.github.io/dracula/BetterDiscord/source.css");
@import url("https://mulverinex.github.io/legacy-settings-icons/dist-native.css");
@@ -1,4 +1,3 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ xdragon ];
{pkgs, ...}: {
home.packages = with pkgs; [xdragon];
}
@@ -1,16 +1,14 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
programs.browserpass.enable = true;
programs.firefox = {
enable = true;
profiles.misterio = {
bookmarks = { };
bookmarks = {};
extensions = with pkgs.inputs.firefox-addons; [
ublock-origin
browserpass
];
bookmarks = { };
bookmarks = {};
settings = {
"browser.disableResetPrompt" = true;
"browser.download.panel.shown" = true;
@@ -36,9 +34,9 @@
};
xdg.mimeApps.defaultApplications = {
"text/html" = [ "firefox.desktop" ];
"text/xml" = [ "firefox.desktop" ];
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"text/html" = ["firefox.desktop"];
"text/xml" = ["firefox.desktop"];
"x-scheme-handler/http" = ["firefox.desktop"];
"x-scheme-handler/https" = ["firefox.desktop"];
};
}
@@ -1,10 +1,9 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
fontProfiles = {
enable = true;
monospace = {
family = "FiraCode Nerd Font";
package = pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; };
package = pkgs.nerdfonts.override {fonts = ["FiraCode"];};
};
regular = {
family = "Fira Sans";
@@ -3,12 +3,9 @@
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
in
rec {
}: let
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
in rec {
gtk = {
enable = true;
font = {
@@ -17,7 +14,7 @@ rec {
};
theme = {
name = "${config.colorscheme.slug}";
package = gtkThemeFromScheme { scheme = config.colorscheme; };
package = gtkThemeFromScheme {scheme = config.colorscheme;};
};
iconTheme = {
name = "Papirus";
@@ -33,5 +30,5 @@ rec {
};
};
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
}
@@ -1,15 +1,15 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
kdeconnect-cli = "${pkgs.plasma5Packages.kdeconnect-kde}/bin/kdeconnect-cli";
fortune = "${pkgs.fortune}/bin/fortune";
script-fortune = pkgs.writeShellScriptBin "fortune" ''
${kdeconnect-cli} -d $(${kdeconnect-cli} --list-available --id-only) --ping-msg "$(${fortune})"
'';
in
{
in {
# Hide all .desktop, except for org.kde.kdeconnect.settings
xdg.desktopEntries = {
"org.kde.kdeconnect.sms" = {
@@ -39,6 +39,6 @@ in
};
home.persistence = {
"/persist/home/misterio".directories = [ ".config/kdeconnect" ];
"/persist/home/misterio".directories = [".config/kdeconnect"];
};
}
@@ -1,4 +1,3 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ pavucontrol ];
{pkgs, ...}: {
home.packages = with pkgs; [pavucontrol];
}
@@ -1,6 +1,5 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ playerctl ];
{pkgs, ...}: {
home.packages = with pkgs; [playerctl];
services.playerctld = {
enable = true;
};
+4 -1
View File
@@ -1,5 +1,8 @@
{ pkgs, config, ... }:
{
pkgs,
config,
...
}: {
qt = {
enable = true;
platformTheme = "gtk";
@@ -1,7 +1,6 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/slack" = "slack.desktop";
};
home.packages = [ pkgs.slack ];
home.packages = [pkgs.slack];
}
@@ -1,7 +1,10 @@
{ pkgs, lib, ... }:
{
home.packages = [ pkgs.sublime-music ];
pkgs,
lib,
...
}: {
home.packages = [pkgs.sublime-music];
home.persistence = {
"/persist/home/misterio".directories = [ ".config/sublime-music" ];
"/persist/home/misterio".directories = [".config/sublime-music"];
};
}
@@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
imports = [
./hyprland-vnc.nix
./gammastep.nix
@@ -37,5 +36,5 @@
LIBSEAT_BACKEND = "logind";
};
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-wlr];
}
@@ -3,8 +3,7 @@
lib,
config,
...
}:
let
}: let
enabledMonitors = lib.filter (m: m.enabled) config.monitors;
# A nice VNC script for remotes running hyprland
vncsh = pkgs.writeShellScriptBin "vnc.sh" ''
@@ -16,16 +15,16 @@ let
xpos="$(hyprctl monitors -j | jq -r 'sort_by(.x)[-1] | .x + .width')"
${
lib.concatLines (
lib.forEach enabledMonitors (m: ''
hyprctl output create headless
monitor="$(hyprctl monitors -j | jq -r 'map(.name)[-1]')"
hyprctl keyword monitor $monitor,${toString m.width}x${toString m.height}@${toString m.refreshRate},$(($xpos + ${toString m.x}))x${toString m.y},1
screen -d -m wayvnc -k br -S /tmp/vnc-${m.workspace} -f 60 -o $monitor $ip 590${m.workspace}
sudo iptables -I INPUT -j ACCEPT -p tcp --dport 590${m.workspace}
'')
)
}
lib.concatLines (
lib.forEach enabledMonitors (m: ''
hyprctl output create headless
monitor="$(hyprctl monitors -j | jq -r 'map(.name)[-1]')"
hyprctl keyword monitor $monitor,${toString m.width}x${toString m.height}@${toString m.refreshRate},$(($xpos + ${toString m.x}))x${toString m.y},1
screen -d -m wayvnc -k br -S /tmp/vnc-${m.workspace} -f 60 -o $monitor $ip 590${m.workspace}
sudo iptables -I INPUT -j ACCEPT -p tcp --dport 590${m.workspace}
'')
)
}
EOF
${lib.concatLines (
@@ -36,8 +35,7 @@ let
wait
'';
in
{
in {
home.packages = with pkgs; [
vncsh
wayvnc
@@ -1,14 +1,15 @@
{ config, pkgs, ... }:
let
{
config,
pkgs,
...
}: let
inherit (config.colorscheme) colors;
kitty-xterm = pkgs.writeShellScriptBin "xterm" ''
${config.programs.kitty.package}/bin/kitty "$@"
'';
in
{
in {
home = {
packages = [ kitty-xterm ];
packages = [kitty-xterm];
sessionVariables = {
TERMINAL = "kitty -1";
};
@@ -1,15 +1,12 @@
{ config, ... }:
let
{config, ...}: let
inherit (config.colorscheme) colors kind;
in
{
in {
services.mako = {
enable = true;
iconPath =
if kind == "dark" then
"${config.gtk.iconTheme.package}/share/icons/Papirus-Dark"
else
"${config.gtk.iconTheme.package}/share/icons/Papirus-Light";
if kind == "dark"
then "${config.gtk.iconTheme.package}/share/icons/Papirus-Dark"
else "${config.gtk.iconTheme.package}/share/icons/Papirus-Light";
font = "${config.fontProfiles.regular.family} 12";
padding = "10,20";
anchor = "top-center";
@@ -1,9 +1,10 @@
{ config, pkgs, ... }:
let
inherit (config.colorscheme) colors kind;
in
{
config,
pkgs,
...
}: let
inherit (config.colorscheme) colors kind;
in {
home.persistence = {
"/persist/home/misterio".directories = [
".config/qutebrowser/bookmarks"
@@ -13,11 +14,11 @@ in
};
xdg.mimeApps.defaultApplications = {
"text/html" = [ "org.qutebrowser.qutebrowser.desktop" ];
"text/xml" = [ "org.qutebrowser.qutebrowser.desktop" ];
"x-scheme-handler/http" = [ "org.qutebrowser.qutebrowser.desktop" ];
"x-scheme-handler/https" = [ "org.qutebrowser.qutebrowser.desktop" ];
"x-scheme-handler/qute" = [ "org.qutebrowser.qutebrowser.desktop" ];
"text/html" = ["org.qutebrowser.qutebrowser.desktop"];
"text/xml" = ["org.qutebrowser.qutebrowser.desktop"];
"x-scheme-handler/http" = ["org.qutebrowser.qutebrowser.desktop"];
"x-scheme-handler/https" = ["org.qutebrowser.qutebrowser.desktop"];
"x-scheme-handler/qute" = ["org.qutebrowser.qutebrowser.desktop"];
};
programs.qutebrowser = {
@@ -3,9 +3,7 @@
lib,
config,
...
}:
let
}: let
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
pgrep = "${pkgs.procps}/bin/pgrep";
pactl = "${pkgs.pulseaudio}/bin/pactl";
@@ -16,24 +14,21 @@ let
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
afterLockTimeout =
afterLockTimeout = {
timeout,
command,
resumeCommand ? null,
}: [
{
timeout,
command,
resumeCommand ? null,
}:
[
{
timeout = lockTime + timeout;
inherit command resumeCommand;
}
{
command = "${isLocked} && ${command}";
inherit resumeCommand timeout;
}
];
in
{
timeout = lockTime + timeout;
inherit command resumeCommand;
}
{
command = "${isLocked} && ${command}";
inherit resumeCommand timeout;
}
];
in {
services.swayidle = {
enable = true;
systemdTarget = "graphical-session.target";
@@ -53,25 +48,25 @@ in
resumeCommand = "${pactl} set-source-mute @DEFAULT_SOURCE@ no";
})
++
# Turn off RGB
(lib.optionals config.services.rgbdaemon.enable (afterLockTimeout {
timeout = 20;
command = "systemctl --user stop rgbdaemon";
resumeCommand = "systemctl --user start rgbdaemon";
}))
# Turn off RGB
(lib.optionals config.services.rgbdaemon.enable (afterLockTimeout {
timeout = 20;
command = "systemctl --user stop rgbdaemon";
resumeCommand = "systemctl --user start rgbdaemon";
}))
++
# Turn off displays (hyprland)
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
timeout = 40;
command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on";
}))
# Turn off displays (hyprland)
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
timeout = 40;
command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on";
}))
++
# Turn off displays (sway)
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
timeout = 40;
command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on'";
}));
# Turn off displays (sway)
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
timeout = 40;
command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on'";
}));
};
}
@@ -1,9 +1,10 @@
{ config, pkgs, ... }:
let
inherit (config.colorscheme) colors;
in
{
config,
pkgs,
...
}: let
inherit (config.colorscheme) colors;
in {
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
@@ -5,9 +5,7 @@
pkgs,
inputs,
...
}:
let
}: let
# Dependencies
cat = "${pkgs.coreutils}/bin/cat";
cut = "${pkgs.coreutils}/bin/cut";
@@ -29,34 +27,30 @@ let
wofi = "${pkgs.wofi}/bin/wofi";
# Function to simplify making waybar outputs
jsonOutput =
name:
{
pre ? "",
text ? "",
tooltip ? "",
alt ? "",
class ? "",
percentage ? "",
}:
"${pkgs.writeShellScriptBin "waybar-${name}" ''
set -euo pipefail
${pre}
${jq} -cn \
--arg text "${text}" \
--arg tooltip "${tooltip}" \
--arg alt "${alt}" \
--arg class "${class}" \
--arg percentage "${percentage}" \
'{text:$text,tooltip:$tooltip,alt:$alt,class:$class,percentage:$percentage}'
''}/bin/waybar-${name}";
jsonOutput = name: {
pre ? "",
text ? "",
tooltip ? "",
alt ? "",
class ? "",
percentage ? "",
}: "${pkgs.writeShellScriptBin "waybar-${name}" ''
set -euo pipefail
${pre}
${jq} -cn \
--arg text "${text}" \
--arg tooltip "${tooltip}" \
--arg alt "${alt}" \
--arg class "${class}" \
--arg percentage "${percentage}" \
'{text:$text,tooltip:$tooltip,alt:$alt,class:$class,percentage:$percentage}'
''}/bin/waybar-${name}";
hasSway = config.wayland.windowManager.sway.enable;
sway = config.wayland.windowManager.sway.package;
hasHyprland = config.wayland.windowManager.hyprland.enable;
hyprland = config.wayland.windowManager.hyprland.package;
in
{
in {
# Let it try to start a few more times
systemd.user.services.waybar = {
Unit.StartLimitBurst = 30;
@@ -64,7 +58,7 @@ in
programs.waybar = {
enable = true;
package = pkgs.waybar.overrideAttrs (oa: {
mesonFlags = (oa.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
mesonFlags = (oa.mesonFlags or []) ++ ["-Dexperimental=true"];
});
systemd.enable = true;
settings = {
@@ -75,7 +69,7 @@ in
margin = "6";
position = "top";
modules-left =
[ "custom/menu" ]
["custom/menu"]
++ (lib.optionals hasSway [
"sway/workspaces"
"sway/mode"
@@ -190,13 +184,12 @@ in
"custom/tailscale-ping" = {
interval = 10;
return-type = "json";
exec =
let
inherit (builtins) concatStringsSep attrNames;
hosts = attrNames outputs.nixosConfigurations;
homeMachine = "merope";
remoteMachine = "alcyone";
in
exec = let
inherit (builtins) concatStringsSep attrNames;
hosts = attrNames outputs.nixosConfigurations;
homeMachine = "merope";
remoteMachine = "alcyone";
in
jsonOutput "tailscale-ping" {
# Build variables for each host
pre = ''
@@ -204,7 +197,8 @@ in
${concatStringsSep "\n" (
map (host: ''
ping_${host}="$(${timeout} 2 ${ping} -c 1 -q ${host} 2>/dev/null | ${tail} -1 | ${cut} -d '/' -f5 | ${cut} -d '.' -f1)ms" || ping_${host}="Disconnected"
'') hosts
'')
hosts
)}
'';
# Access a remote machine's and a home machine's ping
@@ -215,28 +209,25 @@ in
format = "{}";
on-click = "";
};
"custom/menu" =
let
isFullScreen =
if hasHyprland then
"${hyprland}/bin/hyprctl activewindow -j | ${jq} -e '.fullscreen' &>/dev/null"
else
"false";
in
{
interval = 1;
return-type = "json";
exec = jsonOutput "menu" {
text = "";
tooltip = ''$(${cat} /etc/os-release | ${grep} PRETTY_NAME | ${cut} -d '"' -f2)'';
class = "$(if ${isFullScreen}; then echo fullscreen; fi)";
};
on-click-left = "${wofi} -S drun -x 10 -y 10 -W 25% -H 60%";
on-click-right = lib.concatStringsSep ";" (
(lib.optional hasHyprland "${hyprland}/bin/hyprctl dispatch togglespecialworkspace")
++ (lib.optional hasSway "${sway}/bin/swaymsg scratchpad show")
);
"custom/menu" = let
isFullScreen =
if hasHyprland
then "${hyprland}/bin/hyprctl activewindow -j | ${jq} -e '.fullscreen' &>/dev/null"
else "false";
in {
interval = 1;
return-type = "json";
exec = jsonOutput "menu" {
text = "";
tooltip = ''$(${cat} /etc/os-release | ${grep} PRETTY_NAME | ${cut} -d '"' -f2)'';
class = "$(if ${isFullScreen}; then echo fullscreen; fi)";
};
on-click-left = "${wofi} -S drun -x 10 -y 10 -W 25% -H 60%";
on-click-right = lib.concatStringsSep ";" (
(lib.optional hasHyprland "${hyprland}/bin/hyprctl dispatch togglespecialworkspace")
++ (lib.optional hasSway "${sway}/bin/swaymsg scratchpad show")
);
};
"custom/hostname" = {
exec = "echo $USER@$HOSTNAME";
on-click = "${systemctl} --user restart waybar";
@@ -269,10 +260,9 @@ in
"custom/gpg-agent" = {
interval = 2;
return-type = "json";
exec =
let
gpgCmds = import ../../../cli/gpg-commands.nix { inherit pkgs; };
in
exec = let
gpgCmds = import ../../../cli/gpg-commands.nix {inherit pkgs;};
in
jsonOutput "gpg-agent" {
pre = ''status=$(${gpgCmds.isUnlocked} && echo "unlocked" || echo "locked")'';
alt = "$status";
@@ -369,13 +359,14 @@ in
# x y -> vertical, horizontal
# x y z -> top, horizontal, bottom
# w x y z -> top, right, bottom, left
style =
let
inherit (inputs.nix-colors.lib.conversions) hexToRGBString;
inherit (config.colorscheme) colors;
toRGBA = color: opacity: "rgba(${hexToRGBString "," color},${opacity})";
in
# css
style = let
inherit (inputs.nix-colors.lib.conversions) hexToRGBString;
inherit (config.colorscheme) colors;
toRGBA = color: opacity: "rgba(${hexToRGBString "," color},${opacity})";
in
/*
css
*/
''
* {
font-family: ${config.fontProfiles.regular.family}, ${config.fontProfiles.monospace.family};
@@ -1,10 +1,11 @@
{ config, pkgs, ... }:
let
{
config,
pkgs,
...
}: let
inherit (config) colorscheme;
inherit (colorscheme) colors;
in
{
in {
programs.wezterm = {
enable = true;
colorSchemes = {
@@ -38,7 +39,10 @@ in
selection_bg = "#${colors.base05}";
};
};
extraConfig = /* lua */
extraConfig =
/*
lua
*/
''
return {
font = wezterm.font("${config.fontProfiles.monospace.family}"),
@@ -3,14 +3,15 @@
lib,
pkgs,
...
}:
{
}: {
programs.wofi = {
enable = true;
package = pkgs.wofi.overrideAttrs (oa: {
patches = (oa.patches or [ ]) ++ [
./wofi-run-shell.patch # Fix for https://todo.sr.ht/~scoopta/wofi/174
];
patches =
(oa.patches or [])
++ [
./wofi-run-shell.patch # Fix for https://todo.sr.ht/~scoopta/wofi/174
];
});
settings = {
image_size = 48;
@@ -23,9 +24,8 @@
};
};
home.packages =
let
inherit (config.programs.password-store) package enable;
in
lib.optional enable (pkgs.pass-wofi.override { pass = package; });
home.packages = let
inherit (config.programs.password-store) package enable;
in
lib.optional enable (pkgs.pass-wofi.override {pass = package;});
}
@@ -1,8 +1,6 @@
{ config, ... }:
let
{config, ...}: let
inherit (config.colorscheme) colors;
in
{
in {
programs.zathura = {
enable = true;
options = {
@@ -1 +1 @@
{ imports = [ ../common ]; }
{imports = [../common];}
@@ -1,49 +1,47 @@
{ lib, ... }:
{
{lib, ...}: {
wayland.windowManager.hyprland.settings = {
bindm = [
"SUPER,mouse:272,movewindow"
"SUPER,mouse:273,resizewindow"
];
bind =
let
workspaces = [
"0"
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"9"
"F1"
"F2"
"F3"
"F4"
"F5"
"F6"
"F7"
"F8"
"F9"
"F10"
"F11"
"F12"
];
# Map keys (arrows and hjkl) to hyprland directions (l, r, u, d)
directions = rec {
left = "l";
right = "r";
up = "u";
down = "d";
h = left;
l = right;
k = up;
j = down;
};
in
bind = let
workspaces = [
"0"
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"9"
"F1"
"F2"
"F3"
"F4"
"F5"
"F6"
"F7"
"F8"
"F9"
"F10"
"F11"
"F12"
];
# Map keys (arrows and hjkl) to hyprland directions (l, r, u, d)
directions = rec {
left = "l";
right = "r";
up = "u";
down = "d";
h = left;
l = right;
k = up;
j = down;
};
in
[
"SUPERSHIFT,q,killactive"
"SUPERSHIFT,e,exit"
@@ -71,29 +69,31 @@
"SUPER,i,pseudo"
]
++
# Change workspace
(map (n: "SUPER,${n},workspace,name:${n}") workspaces)
# Change workspace
(map (n: "SUPER,${n},workspace,name:${n}") workspaces)
++
# Move window to workspace
(map (n: "SUPERSHIFT,${n},movetoworkspacesilent,name:${n}") workspaces)
# Move window to workspace
(map (n: "SUPERSHIFT,${n},movetoworkspacesilent,name:${n}") workspaces)
++
# Move focus
(lib.mapAttrsToList (key: direction: "SUPER,${key},movefocus,${direction}") directions)
# Move focus
(lib.mapAttrsToList (key: direction: "SUPER,${key},movefocus,${direction}") directions)
++
# Swap windows
(lib.mapAttrsToList (key: direction: "SUPERSHIFT,${key},swapwindow,${direction}") directions)
# Swap windows
(lib.mapAttrsToList (key: direction: "SUPERSHIFT,${key},swapwindow,${direction}") directions)
++
# Move windows
(lib.mapAttrsToList (
# Move windows
(lib.mapAttrsToList (
key: direction: "SUPERCONTROL,${key},movewindoworgroup,${direction}"
) directions)
)
directions)
++
# Move monitor focus
(lib.mapAttrsToList (key: direction: "SUPERALT,${key},focusmonitor,${direction}") directions)
# Move monitor focus
(lib.mapAttrsToList (key: direction: "SUPERALT,${key},focusmonitor,${direction}") directions)
++
# Move workspace to other monitor
(lib.mapAttrsToList (
# Move workspace to other monitor
(lib.mapAttrsToList (
key: direction: "SUPERALTSHIFT,${key},movecurrentworkspacetomonitor,${direction}"
) directions);
)
directions);
};
}
@@ -3,12 +3,10 @@
config,
pkgs,
...
}:
let
hyprland = pkgs.inputs.hyprland.hyprland.override { wrapRuntimeDeps = false; };
xdph = pkgs.inputs.hyprland.xdg-desktop-portal-hyprland.override { inherit hyprland; };
in
{
}: let
hyprland = pkgs.inputs.hyprland.hyprland.override {wrapRuntimeDeps = false;};
xdph = pkgs.inputs.hyprland.xdg-desktop-portal-hyprland.override {inherit hyprland;};
in {
imports = [
../common
../common/wayland-wm
@@ -18,8 +16,8 @@ in
];
xdg.portal = {
extraPortals = [ xdph ];
configPackages = [ hyprland ];
extraPortals = [xdph];
configPackages = [hyprland];
};
home.packages = with pkgs; [
@@ -40,228 +38,220 @@ in
];
};
settings =
let
active = "0xaa${config.colorscheme.colors.base0C}";
inactive = "0xaa${config.colorscheme.colors.base02}";
in
{
general = {
cursor_inactive_timeout = 4;
gaps_in = 15;
gaps_out = 20;
border_size = 2;
"col.active_border" = active;
"col.inactive_border" = inactive;
settings = let
active = "0xaa${config.colorscheme.colors.base0C}";
inactive = "0xaa${config.colorscheme.colors.base02}";
in {
general = {
cursor_inactive_timeout = 4;
gaps_in = 15;
gaps_out = 20;
border_size = 2;
"col.active_border" = active;
"col.inactive_border" = inactive;
};
group = {
"col.border_active" = active;
"col.border_inactive" = inactive;
groupbar.font_size = 11;
};
binds = {
movefocus_cycles_fullscreen = false;
};
input = {
kb_layout = "br,us";
touchpad.disable_while_typing = false;
};
dwindle = {
split_width_multiplier = 1.35;
pseudotile = true;
};
misc = {
vfr = true;
close_special_on_empty = true;
focus_on_activate = true;
# Unfullscreen when opening something
new_window_takes_over_fullscreen = 2;
};
windowrulev2 = let
sweethome3d-tooltips = "title:^(win[0-9])$,class:^(com-eteks-sweethome3d-SweetHome3DBootstrap)$";
steam = "title:^()$,class:^(steam)$";
in [
"nofocus, ${sweethome3d-tooltips}"
"stayfocused, ${steam}"
"minsize 1 1, ${steam}"
];
layerrule = [
"blur,waybar"
"ignorezero,waybar"
"blur,notifications"
"ignorezero,notifications"
"blur,wofi"
"ignorezero,wofi"
];
decoration = {
active_opacity = 0.97;
inactive_opacity = 0.77;
fullscreen_opacity = 1.0;
rounding = 7;
blur = {
enabled = true;
size = 5;
passes = 3;
new_optimizations = true;
ignore_opacity = true;
popups = true;
};
group = {
"col.border_active" = active;
"col.border_inactive" = inactive;
groupbar.font_size = 11;
};
binds = {
movefocus_cycles_fullscreen = false;
};
input = {
kb_layout = "br,us";
touchpad.disable_while_typing = false;
};
dwindle = {
split_width_multiplier = 1.35;
pseudotile = true;
};
misc = {
vfr = true;
close_special_on_empty = true;
focus_on_activate = true;
# Unfullscreen when opening something
new_window_takes_over_fullscreen = 2;
};
windowrulev2 =
let
sweethome3d-tooltips = "title:^(win[0-9])$,class:^(com-eteks-sweethome3d-SweetHome3DBootstrap)$";
steam = "title:^()$,class:^(steam)$";
in
[
"nofocus, ${sweethome3d-tooltips}"
"stayfocused, ${steam}"
"minsize 1 1, ${steam}"
];
layerrule = [
"blur,waybar"
"ignorezero,waybar"
"blur,notifications"
"ignorezero,notifications"
"blur,wofi"
"ignorezero,wofi"
drop_shadow = true;
shadow_range = 12;
shadow_offset = "3 3";
"col.shadow" = "0x44000000";
"col.shadow_inactive" = "0x66000000";
};
animations = {
enabled = true;
bezier = [
"easein,0.11, 0, 0.5, 0"
"easeout,0.5, 1, 0.89, 1"
"easeinout,0.45, 0, 0.55, 1"
"easeinback,0.36, 0, 0.66, -0.56"
"easeoutback,0.34, 1.56, 0.64, 1"
"easeinoutback,0.68, -0.6, 0.32, 1.6"
];
decoration = {
active_opacity = 0.97;
inactive_opacity = 0.77;
fullscreen_opacity = 1.0;
rounding = 7;
blur = {
enabled = true;
size = 5;
passes = 3;
new_optimizations = true;
ignore_opacity = true;
popups = true;
};
drop_shadow = true;
shadow_range = 12;
shadow_offset = "3 3";
"col.shadow" = "0x44000000";
"col.shadow_inactive" = "0x66000000";
};
animations = {
enabled = true;
bezier = [
"easein,0.11, 0, 0.5, 0"
"easeout,0.5, 1, 0.89, 1"
"easeinout,0.45, 0, 0.55, 1"
"easeinback,0.36, 0, 0.66, -0.56"
"easeoutback,0.34, 1.56, 0.64, 1"
"easeinoutback,0.68, -0.6, 0.32, 1.6"
];
animation = [
"border,1,3,easeout"
"workspaces,1,2,easeoutback,slide"
"windowsIn,1,3,easeoutback,slide"
"windowsOut,1,3,easeinback,slide"
"windowsMove,1,3,easeoutback"
"fadeIn,1,3,easeout"
"fadeOut,1,3,easein"
"fadeSwitch,1,3,easeinout"
"fadeShadow,1,3,easeinout"
"fadeDim,1,3,easeinout"
"fadeLayersIn,1,3,easeoutback"
"fadeLayersOut,1,3,easeinback"
"layersIn,1,3,easeoutback,slide"
"layersOut,1,3,easeinback,slide"
];
};
animation = [
"border,1,3,easeout"
"workspaces,1,2,easeoutback,slide"
"windowsIn,1,3,easeoutback,slide"
"windowsOut,1,3,easeinback,slide"
"windowsMove,1,3,easeoutback"
"fadeIn,1,3,easeout"
"fadeOut,1,3,easein"
"fadeSwitch,1,3,easeinout"
"fadeShadow,1,3,easeinout"
"fadeDim,1,3,easeinout"
"fadeLayersIn,1,3,easeoutback"
"fadeLayersOut,1,3,easeinback"
"layersIn,1,3,easeoutback,slide"
"layersOut,1,3,easeinback,slide"
];
};
exec = ["${pkgs.swaybg}/bin/swaybg -i ${config.wallpaper} --mode fill"];
exec = [ "${pkgs.swaybg}/bin/swaybg -i ${config.wallpaper} --mode fill" ];
bind = let
grimblast = lib.getExe pkgs.inputs.hyprwm-contrib.grimblast;
tesseract = lib.getExe pkgs.tesseract;
pactl = lib.getExe' pkgs.pulseaudio "pactl";
tly = lib.getExe pkgs.tly;
gtk-play = lib.getExe' pkgs.libcanberra-gtk3 "canberra-gtk-play";
notify-send = lib.getExe' pkgs.libnotify "notify-send";
bind =
terminal = config.home.sessionVariables.TERMINAL;
defaultApp = type: "${lib.getExe' pkgs.gtk3 "gtk-launch"} $(${lib.getExe' pkgs.xdg-utils "xdg-mime"} query default ${type})";
browser = defaultApp "x-scheme-handler/https";
editor = defaultApp "text/plain";
in
[
# Program bindings
"SUPER,Return,exec,${terminal}"
"SUPER,e,exec,${editor}"
"SUPER,v,exec,${editor}"
"SUPER,b,exec,${browser}"
# Brightness control (only works if the system has lightd)
",XF86MonBrightnessUp,exec,light -A 10"
",XF86MonBrightnessDown,exec,light -U 10"
# Volume
",XF86AudioRaiseVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ +5%"
",XF86AudioLowerVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ -5%"
",XF86AudioMute,exec,${pactl} set-sink-mute @DEFAULT_SINK@ toggle"
"SHIFT,XF86AudioMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
",XF86AudioMicMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
# Screenshotting
",Print,exec,${grimblast} --notify --freeze copy output"
"SUPER,Print,exec,${grimblast} --notify --freeze copy area"
# To OCR
"ALT,Print,exec,${grimblast} --freeze save area - | ${tesseract} - - | wl-copy && ${notify-send} -t 3000 'OCR result copied to buffer'"
# Tally counter
"SUPER,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} add && ${gtk-play} -i dialog-information" # Add new entry
"SUPERCONTROL,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} undo && ${gtk-play} -i dialog-warning" # Undo last entry
"SUPERCONTROLSHIFT,z,exec,${tly} reset && ${gtk-play} -i complete" # Reset
"SUPERSHIFT,z,exec,${notify-send} -t 1000 $(${tly} time)" # Show current time
]
++ (
let
grimblast = lib.getExe pkgs.inputs.hyprwm-contrib.grimblast;
tesseract = lib.getExe pkgs.tesseract;
pactl = lib.getExe' pkgs.pulseaudio "pactl";
tly = lib.getExe pkgs.tly;
gtk-play = lib.getExe' pkgs.libcanberra-gtk3 "canberra-gtk-play";
notify-send = lib.getExe' pkgs.libnotify "notify-send";
terminal = config.home.sessionVariables.TERMINAL;
defaultApp =
type:
"${lib.getExe' pkgs.gtk3 "gtk-launch"} $(${lib.getExe' pkgs.xdg-utils "xdg-mime"} query default ${type})";
browser = defaultApp "x-scheme-handler/https";
editor = defaultApp "text/plain";
playerctl = lib.getExe' config.services.playerctld.package "playerctl";
playerctld = lib.getExe' config.services.playerctld.package "playerctld";
in
[
# Program bindings
"SUPER,Return,exec,${terminal}"
"SUPER,e,exec,${editor}"
"SUPER,v,exec,${editor}"
"SUPER,b,exec,${browser}"
# Brightness control (only works if the system has lightd)
",XF86MonBrightnessUp,exec,light -A 10"
",XF86MonBrightnessDown,exec,light -U 10"
# Volume
",XF86AudioRaiseVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ +5%"
",XF86AudioLowerVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ -5%"
",XF86AudioMute,exec,${pactl} set-sink-mute @DEFAULT_SINK@ toggle"
"SHIFT,XF86AudioMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
",XF86AudioMicMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
# Screenshotting
",Print,exec,${grimblast} --notify --freeze copy output"
"SUPER,Print,exec,${grimblast} --notify --freeze copy area"
# To OCR
"ALT,Print,exec,${grimblast} --freeze save area - | ${tesseract} - - | wl-copy && ${notify-send} -t 3000 'OCR result copied to buffer'"
# Tally counter
"SUPER,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} add && ${gtk-play} -i dialog-information" # Add new entry
"SUPERCONTROL,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} undo && ${gtk-play} -i dialog-warning" # Undo last entry
"SUPERCONTROLSHIFT,z,exec,${tly} reset && ${gtk-play} -i complete" # Reset
"SUPERSHIFT,z,exec,${notify-send} -t 1000 $(${tly} time)" # Show current time
]
++
(
lib.optionals config.services.playerctld.enable [
# Media control
",XF86AudioNext,exec,${playerctl} next"
",XF86AudioPrev,exec,${playerctl} previous"
",XF86AudioPlay,exec,${playerctl} play-pause"
",XF86AudioStop,exec,${playerctl} stop"
"ALT,XF86AudioNext,exec,${playerctld} shift"
"ALT,XF86AudioPrev,exec,${playerctld} unshift"
"ALT,XF86AudioPlay,exec,systemctl --user restart playerctld"
]
)
++
# Screen lock
(
let
swaylock = lib.getExe config.programs.swaylock.package;
in
lib.optionals config.programs.swaylock.enable [
",XF86Launch5,exec,${swaylock} -S --grace 2"
",XF86Launch4,exec,${swaylock} -S --grace 2"
"SUPER,backspace,exec,${swaylock} -S --grace 2"
]
)
++
# Notification manager
(
let
makoctl = lib.getExe' config.services.mako.package "makoctl";
in
lib.optionals config.services.mako.enable ["SUPER,w,exec,${makoctl} dismiss"]
)
++
# Launcher
(
let
wofi = lib.getExe config.programs.wofi.package;
in
lib.optionals config.programs.wofi.enable [
"SUPER,x,exec,${wofi} -S drun -x 10 -y 10 -W 25% -H 60%"
"SUPER,d,exec,${wofi} -S run"
]
++ (
let
playerctl = lib.getExe' config.services.playerctld.package "playerctl";
playerctld = lib.getExe' config.services.playerctld.package "playerctld";
pass-wofi = lib.getExe (pkgs.pass-wofi.override {pass = config.programs.password-store.package;});
in
lib.optionals config.services.playerctld.enable [
# Media control
",XF86AudioNext,exec,${playerctl} next"
",XF86AudioPrev,exec,${playerctl} previous"
",XF86AudioPlay,exec,${playerctl} play-pause"
",XF86AudioStop,exec,${playerctl} stop"
"ALT,XF86AudioNext,exec,${playerctld} shift"
"ALT,XF86AudioPrev,exec,${playerctld} unshift"
"ALT,XF86AudioPlay,exec,systemctl --user restart playerctld"
]
)
++
# Screen lock
(
let
swaylock = lib.getExe config.programs.swaylock.package;
in
lib.optionals config.programs.swaylock.enable [
",XF86Launch5,exec,${swaylock} -S --grace 2"
",XF86Launch4,exec,${swaylock} -S --grace 2"
"SUPER,backspace,exec,${swaylock} -S --grace 2"
]
)
++
# Notification manager
(
let
makoctl = lib.getExe' config.services.mako.package "makoctl";
in
lib.optionals config.services.mako.enable [ "SUPER,w,exec,${makoctl} dismiss" ]
)
++
# Launcher
(
let
wofi = lib.getExe config.programs.wofi.package;
in
lib.optionals config.programs.wofi.enable [
"SUPER,x,exec,${wofi} -S drun -x 10 -y 10 -W 25% -H 60%"
"SUPER,d,exec,${wofi} -S run"
]
++ (
let
pass-wofi = lib.getExe (pkgs.pass-wofi.override { pass = config.programs.password-store.package; });
in
lib.optionals config.programs.password-store.enable [
",Scroll_Lock,exec,${pass-wofi}" # fn+k
",XF86Calculator,exec,${pass-wofi}" # fn+f12
"SUPER,semicolon,exec,pass-wofi"
]
)
);
monitor = map (
m:
let
resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}";
position = "${toString m.x}x${toString m.y}";
in
"${m.name},${if m.enabled then "${resolution},${position},1" else "disable"}"
) (config.monitors);
workspace = map (m: "${m.name},${m.workspace}") (
lib.filter (m: m.enabled && m.workspace != null) config.monitors
)
);
};
monitor = map (
m: let
resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}";
position = "${toString m.x}x${toString m.y}";
in "${m.name},${
if m.enabled
then "${resolution},${position},1"
else "disable"
}"
) (config.monitors);
workspace = map (m: "${m.name},${m.workspace}") (
lib.filter (m: m.enabled && m.workspace != null) config.monitors
);
};
# This is order sensitive, so it has to come here.
extraConfig = ''
# Passthrough mode (e.g. for VNC)
@@ -3,25 +3,24 @@
pkgs,
lib,
...
}:
let
}: let
hyprbars =
(pkgs.inputs.hyprland-plugins.hyprbars.override {
# Make sure it's using the same hyprland package as we are
hyprland = config.wayland.windowManager.hyprland.package;
}).overrideAttrs
(old: {
# Yeet the initialization notification (I hate it)
postPatch =
(old.postPatch or "")
+ ''
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
'';
});
in
{
})
.overrideAttrs
(old: {
# Yeet the initialization notification (I hate it)
postPatch =
(old.postPatch or "")
+ ''
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
'';
});
in {
wayland.windowManager.hyprland = {
plugins = [ hyprbars ];
plugins = [hyprbars];
settings = {
"plugin:hyprbars" = {
bar_height = 25;
@@ -30,34 +29,30 @@ in
bar_text_font = config.fontProfiles.regular.family;
bar_text_size = 12;
bar_part_of_window = true;
hyprbars-button =
let
closeAction = "hyprctl dispatch killactive";
hyprbars-button = let
closeAction = "hyprctl dispatch killactive";
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
maximizeAction = "hyprctl dispatch togglefloating";
in
[
# Red close button
"rgb(${config.colorscheme.colors.base08}),12,,${closeAction}"
# Yellow "minimize" (send to special workspace) button
"rgb(${config.colorscheme.colors.base0A}),12,,${minimizeAction}"
# Green "maximize" (togglefloating) button
"rgb(${config.colorscheme.colors.base0B}),12,,${maximizeAction}"
];
maximizeAction = "hyprctl dispatch togglefloating";
in [
# Red close button
"rgb(${config.colorscheme.colors.base08}),12,,${closeAction}"
# Yellow "minimize" (send to special workspace) button
"rgb(${config.colorscheme.colors.base0A}),12,,${minimizeAction}"
# Green "maximize" (togglefloating) button
"rgb(${config.colorscheme.colors.base0B}),12,,${maximizeAction}"
];
};
bind =
let
barsEnabled = "hyprctl -j getoption plugin:hyprbars:bar_height | ${lib.getExe pkgs.jq} -re '.int != 0'";
setBarHeight = height: "hyprctl keyword plugin:hyprbars:bar_height ${toString height}";
toggleOn = setBarHeight config.wayland.windowManager.hyprland.settings."plugin:hyprbars".bar_height;
toggleOff = setBarHeight 0;
in
[ "SUPER,m,exec,${barsEnabled} && ${toggleOff} || ${toggleOn}" ];
bind = let
barsEnabled = "hyprctl -j getoption plugin:hyprbars:bar_height | ${lib.getExe pkgs.jq} -re '.int != 0'";
setBarHeight = height: "hyprctl keyword plugin:hyprbars:bar_height ${toString height}";
toggleOn = setBarHeight config.wayland.windowManager.hyprland.settings."plugin:hyprbars".bar_height;
toggleOff = setBarHeight 0;
in ["SUPER,m,exec,${barsEnabled} && ${toggleOff} || ${toggleOn}"];
};
};
}
@@ -1 +1 @@
{ imports = [ ./wpa-gui.nix ]; }
{imports = [./wpa-gui.nix];}
@@ -1,4 +1,3 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.wpa_supplicant_gui ];
{pkgs, ...}: {
home.packages = [pkgs.wpa_supplicant_gui];
}
+7 -4
View File
@@ -1,12 +1,15 @@
{ pkgs, config, ... }:
{
pkgs,
config,
...
}: {
programs.emacs = {
enable = true;
package = pkgs.emacs-gtk;
overrides = final: _prev: { nix-theme = final.callPackage ./theme.nix { inherit config; }; };
extraPackages =
epkgs: with epkgs; [
overrides = final: _prev: {nix-theme = final.callPackage ./theme.nix {inherit config;};};
extraPackages = epkgs:
with epkgs; [
nix-theme
nix-mode
+8 -8
View File
@@ -3,15 +3,15 @@
writeText,
config,
...
}:
let
}: let
emacsPackages = emacsPackagesFor config.programs.emacs.package;
scheme = config.colorscheme;
in
emacsPackages.trivialBuild {
pname = "theme";
src =
writeText "nix-${scheme.slug}.el" # commonlisp
emacsPackages.trivialBuild {
pname = "theme";
src =
writeText "nix-${scheme.slug}.el" # commonlisp
''
(require 'base16-theme)
@@ -45,5 +45,5 @@ emacsPackages.trivialBuild {
(provide 'base16-${scheme.slug}-theme)
'';
packageRequires = [ emacsPackages.base16-theme ];
}
packageRequires = [emacsPackages.base16-theme];
}
+2 -3
View File
@@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
imports = [
./lutris.nix
./steam.nix
@@ -7,7 +6,7 @@
./runescape.nix
];
home = {
packages = with pkgs; [ gamescope ];
packages = with pkgs; [gamescope];
persistence = {
"/persist/home/misterio" = {
allowOther = true;
+6 -3
View File
@@ -1,11 +1,14 @@
{ lib, pkgs, ... }:
{
lib,
pkgs,
...
}: {
home = {
packages = [ pkgs.factorio ];
packages = [pkgs.factorio];
persistence = {
"/persist/home/misterio" = {
allowOther = true;
directories = [ ".factorio" ];
directories = [".factorio"];
};
};
};
+4 -1
View File
@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
{
pkgs,
lib,
...
}: {
home.packages = [
(pkgs.lutris.override {
extraPkgs = p: [
+6 -3
View File
@@ -1,8 +1,11 @@
{ pkgs, lib, ... }:
{
home.packages = [ pkgs.osu-lazer ];
pkgs,
lib,
...
}: {
home.packages = [pkgs.osu-lazer];
home.persistence = {
"/persist/home/misterio".directories = [ ".local/share/osu" ];
"/persist/home/misterio".directories = [".local/share/osu"];
};
}
@@ -1,8 +1,11 @@
{ pkgs, lib, ... }:
{
home.packages = [ pkgs.prismlauncher-qt5 ];
pkgs,
lib,
...
}: {
home.packages = [pkgs.prismlauncher-qt5];
home.persistence = {
"/persist/home/misterio".directories = [ ".local/share/PrismLauncher" ];
"/persist/home/misterio".directories = [".local/share/PrismLauncher"];
};
}
+14 -9
View File
@@ -1,33 +1,38 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
# Add PULSE_LATENCY_MSEC to .desktop file
pulse_latency = 100;
runescape = pkgs.runescape.overrideAttrs (oa: {
nativeBuildInputs = (oa.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ];
nativeBuildInputs = (oa.nativeBuildInputs or []) ++ [pkgs.makeWrapper];
buildCommand =
(oa.buildCommand or "")
# bash
+ ''
+
/*
bash
*/
''
wrapProgram "$out/bin/RuneScape" \
--set PULSE_LATENCY_MSEC ${toString pulse_latency} \
--run 'echo $PULSE_LATENCY_MSEC'
'';
});
openssl = lib.head (lib.filter (p: p.pname == "openssl") runescape.fhsenv.targetPaths);
in
{
in {
home.packages = [
runescape
# TODO: Broken
# pkgs.runelite
];
nixpkgs.config.permittedInsecurePackages = [ openssl.name ];
nixpkgs.config.permittedInsecurePackages = [openssl.name];
home.persistence = {
"/persist/home/misterio" = {
allowOther = true;
directories = [ "Jagex" ];
directories = ["Jagex"];
};
};
}
@@ -1,4 +1,3 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.inputs.nix-gaming.star-citizen ];
{pkgs, ...}: {
home.packages = [pkgs.inputs.nix-gaming.star-citizen];
}
+28 -30
View File
@@ -3,11 +3,10 @@
lib,
config,
...
}:
let
}: let
steam-with-pkgs = pkgs.steam.override {
extraPkgs =
pkgs: with pkgs; [
extraPkgs = pkgs:
with pkgs; [
xorg.libXcursor
xorg.libXi
xorg.libXinerama
@@ -24,33 +23,32 @@ let
};
monitor = lib.head (lib.filter (m: m.primary) config.monitors);
steam-session =
let
gamescope = lib.concatStringsSep " " [
(lib.getExe pkgs.gamescope)
"--output-width ${toString monitor.width}"
"--output-height ${toString monitor.height}"
"--framerate-limit ${toString monitor.refreshRate}"
"--prefer-output ${monitor.name}"
"--adaptive-sync"
"--expose-wayland"
"--hdr-enabled"
"--steam"
];
steam = lib.concatStringsSep " " [
"steam"
"steam://open/bigpicture"
];
in
steam-session = let
gamescope = lib.concatStringsSep " " [
(lib.getExe pkgs.gamescope)
"--output-width ${toString monitor.width}"
"--output-height ${toString monitor.height}"
"--framerate-limit ${toString monitor.refreshRate}"
"--prefer-output ${monitor.name}"
"--adaptive-sync"
"--expose-wayland"
"--hdr-enabled"
"--steam"
];
steam = lib.concatStringsSep " " [
"steam"
"steam://open/bigpicture"
];
in
pkgs.writeTextDir "share/wayland-sessions/steam-sesson.desktop" # ini
''
[Desktop Entry]
Name=Steam Session
Exec=${gamescope} -- ${steam}
Type=Application
'';
in
{
''
[Desktop Entry]
Name=Steam Session
Exec=${gamescope} -- ${steam}
Type=Application
'';
in {
home.packages = with pkgs; [
steam-with-pkgs
steam-session
+4 -1
View File
@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
{
pkgs,
lib,
...
}: {
# Temporarily disabled while I wait for nixpkgs to package a fork (e.g. suyu)
# home.packages = [ pkgs.yuzu-mainline ];
+3 -5
View File
@@ -1,8 +1,6 @@
{ config, ... }:
let
{config, ...}: let
inherit (config) colorscheme;
in
{
in {
home.sessionVariables.COLORTERM = "truecolor";
programs.helix = {
enable = true;
@@ -19,6 +17,6 @@ in
};
};
};
themes = import ./theme.nix { inherit colorscheme; };
themes = import ./theme.nix {inherit colorscheme;};
};
}
+13 -14
View File
@@ -1,11 +1,10 @@
{ colorscheme }:
{
{colorscheme}: {
"${colorscheme.slug}" = {
palette = builtins.mapAttrs (name: value: "#${value}") colorscheme.colors; # Add leading '#'
"attributes" = "base09";
"comment" = {
fg = "base03";
modifiers = [ "italic" ];
modifiers = ["italic"];
};
"constant" = "base09";
"constant.character.escape" = "base0C";
@@ -13,7 +12,7 @@
"constructor" = "base0D";
"debug" = "base03";
"diagnostic" = {
modifiers = [ "underlined" ];
modifiers = ["underlined"];
};
"diagnostic.error" = {
underline = {
@@ -46,23 +45,23 @@
"label" = "base0E";
"markup.bold" = {
fg = "base0A";
modifiers = [ "bold" ];
modifiers = ["bold"];
};
"markup.heading" = "base0D";
"markup.italic" = {
fg = "base0E";
modifiers = [ "italic" ];
modifiers = ["italic"];
};
"markup.link.text" = "base08";
"markup.link.url" = {
fg = "base09";
modifiers = [ "underlined" ];
modifiers = ["underlined"];
};
"markup.list" = "base08";
"markup.quote" = "base0C";
"markup.raw" = "base0B";
"markup.strikethrough" = {
modifiers = [ "crossed_out" ];
modifiers = ["crossed_out"];
};
"namespace" = "base0E";
"operator" = "base05";
@@ -79,23 +78,23 @@
"ui.bufferline.active" = {
fg = "base00";
bg = "base03";
modifiers = [ "bold" ];
modifiers = ["bold"];
};
"ui.cursor" = {
fg = "base04";
modifiers = [ "reversed" ];
modifiers = ["reversed"];
};
"ui.cursor.insert" = {
fg = "base0A";
modifiers = [ "underlined" ];
modifiers = ["underlined"];
};
"ui.cursor.match" = {
fg = "base0A";
modifiers = [ "underlined" ];
modifiers = ["underlined"];
};
"ui.cursor.select" = {
fg = "base0A";
modifiers = [ "underlined" ];
modifiers = ["underlined"];
};
"ui.cursorline.primary" = {
fg = "base05";
@@ -115,7 +114,7 @@
"ui.linenr.selected" = {
fg = "base04";
bg = "base01";
modifiers = [ "bold" ];
modifiers = ["bold"];
};
"ui.menu" = {
fg = "base05";
+3 -4
View File
@@ -1,9 +1,8 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ alsa-utils ];
{pkgs, ...}: {
home.packages = with pkgs; [alsa-utils];
services.fluidsynth = {
enable = true;
soundService = "pipewire-pulse";
extraOptions = [ "-g 2" ];
extraOptions = ["-g 2"];
};
}
+22 -8
View File
@@ -1,8 +1,10 @@
{ config, pkgs, ... }:
let
color = pkgs.writeText "color.vim" (import ./theme.nix config.colorscheme);
in
{
config,
pkgs,
...
}: let
color = pkgs.writeText "color.vim" (import ./theme.nix config.colorscheme);
in {
imports = [
./lsp.nix
./syntaxes.nix
@@ -13,7 +15,10 @@ in
programs.neovim = {
enable = true;
extraConfig = /* vim */
extraConfig =
/*
vim
*/
''
"Use system clipboard
set clipboard=unnamedplus
@@ -112,7 +117,10 @@ in
"Sudo save
cmap w!! w !sudo tee > /dev/null %
'';
extraLuaConfig = /* lua */
extraLuaConfig =
/*
lua
*/
''
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "Go to declaration" })
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Go to definition" })
@@ -145,7 +153,10 @@ in
{
plugin = nvim-autopairs;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('nvim-autopairs').setup{}
'';
@@ -153,7 +164,10 @@ in
];
};
xdg.configFile."nvim/init.lua".onChange = /* bash */
xdg.configFile."nvim/init.lua".onChange =
/*
bash
*/
''
XDG_RUNTIME_DIR=''${XDG_RUNTIME_DIR:-/run/user/$(id -u)}
for server in $XDG_RUNTIME_DIR/nvim.*; do
+21 -7
View File
@@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
programs.neovim.plugins = with pkgs.vimPlugins; [
# LSP and completions for injected langs
otter-nvim
@@ -8,7 +7,10 @@
{
plugin = nvim-lspconfig;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
local lspconfig = require('lspconfig')
function add_lsp(server, options)
@@ -51,7 +53,10 @@
{
plugin = ltex_extra-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
local ltex_extra = require('ltex_extra')
add_lsp(lspconfig.ltex, {
@@ -66,7 +71,10 @@
{
plugin = rust-tools-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
local rust_tools = require('rust-tools')
add_lsp(rust_tools, {
@@ -89,7 +97,10 @@
{
plugin = cmp-git;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require("cmp_git").setup({})
'';
@@ -99,7 +110,10 @@
{
plugin = nvim-cmp;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
local cmp = require('cmp')
+24 -14
View File
@@ -3,21 +3,21 @@
config,
lib,
...
}:
{
}: {
programs.neovim = {
extraConfig =
lib.mkAfter # vim
''
function! SetCustomKeywords()
syn match Todo /TODO/
syn match Done /DONE/
syn match Start /START/
syn match End /END/
endfunction
autocmd Syntax * call SetCustomKeywords()
'';
''
function! SetCustomKeywords()
syn match Todo /TODO/
syn match Done /DONE/
syn match Start /START/
syn match End /END/
endfunction
autocmd Syntax * call SetCustomKeywords()
'';
plugins = with pkgs.vimPlugins; [
rust-vim
dart-vim-plugin
@@ -37,9 +37,16 @@
{
plugin = vimtex;
config = /* vim */
config =
/*
vim
*/
''
let g:vimtex_view_method = '${if config.programs.zathura.enable then "zathura" else "general"}'
let g:vimtex_view_method = '${
if config.programs.zathura.enable
then "zathura"
else "general"
}'
'';
}
@@ -47,7 +54,10 @@
{
plugin = nvim-treesitter.withAllGrammars;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('nvim-treesitter.configs').setup{
highlight = {
+306 -305
View File
@@ -1,332 +1,333 @@
scheme:
let
scheme: let
c = scheme.colors;
in
# vim
''
let g:colors_name="nix-${scheme.slug}"
/*
vim
*/
''
let g:colors_name="nix-${scheme.slug}"
set termguicolors
set termguicolors
if exists("syntax_on")
syntax reset
endif
if exists("syntax_on")
syntax reset
endif
hi clear
hi clear
hi Normal guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi Bold guifg=NONE guibg=NONE gui=bold guisp=NONE
hi Debug guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Directory guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Error guifg=#${c.base00} guibg=#${c.base08} gui=NONE guisp=NONE
hi ErrorMsg guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi Exception guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi FoldColumn guifg=#${c.base0C} guibg=#${c.base00} gui=NONE guisp=NONE
hi Folded guifg=#${c.base03} guibg=#${c.base01} gui=NONE guisp=NONE
hi IncSearch guifg=#${c.base01} guibg=#${c.base09} gui=NONE guisp=NONE
hi Italic guifg=NONE guibg=NONE gui=NONE guisp=NONE
hi Macro guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi MatchParen guifg=NONE guibg=#${c.base03} gui=NONE guisp=NONE
hi ModeMsg guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi MoreMsg guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi Question guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Search guifg=#${c.base01} guibg=#${c.base0A} gui=NONE guisp=NONE
hi Substitute guifg=#${c.base01} guibg=#${c.base0A} gui=NONE guisp=NONE
hi SpecialKey guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi TooLong guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Underlined guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Visual guifg=NONE guibg=#${c.base02} gui=NONE guisp=NONE
hi VisualNOS guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi WarningMsg guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi WildMenu guifg=#${c.base08} guibg=#${c.base0A} gui=NONE guisp=NONE
hi Title guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Conceal guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi Cursor guifg=#${c.base00} guibg=#${c.base05} gui=NONE guisp=NONE
hi NonText guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi LineNr guifg=#${c.base04} guibg=#${c.base00} gui=NONE guisp=NONE
hi SignColumn guifg=#${c.base04} guibg=#${c.base00} gui=NONE guisp=NONE
hi StatusLine guifg=#${c.base0B} guibg=#${c.base02} gui=NONE guisp=NONE
hi StatusLineNC guifg=#${c.base04} guibg=#${c.base01} gui=NONE guisp=NONE
hi VertSplit guifg=#${c.base01} guibg=#${c.base00} gui=NONE guisp=NONE
hi ColorColumn guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi CursorColumn guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi CursorLine guifg=NONE guibg=#${c.base02} gui=NONE guisp=NONE
hi CursorLineNr guifg=#${c.base0B} guibg=#${c.base01} gui=NONE guisp=NONE
hi QuickFixLine guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi PMenu guifg=#${c.base05} guibg=#${c.base01} gui=NONE guisp=NONE
hi PMenuSel guifg=#${c.base01} guibg=#${c.base05} gui=NONE guisp=NONE
hi TabLine guifg=#${c.base03} guibg=#${c.base01} gui=NONE guisp=NONE
hi TabLineFill guifg=#${c.base03} guibg=#${c.base02} gui=NONE guisp=NONE
hi TabLineSel guifg=#${c.base0B} guibg=#${c.base01} gui=NONE guisp=NONE
hi EndOfBuffer guifg=#${c.base00} guibg=NONE gui=NONE guisp=NONE
hi Normal guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi Bold guifg=NONE guibg=NONE gui=bold guisp=NONE
hi Debug guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Directory guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Error guifg=#${c.base00} guibg=#${c.base08} gui=NONE guisp=NONE
hi ErrorMsg guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi Exception guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi FoldColumn guifg=#${c.base0C} guibg=#${c.base00} gui=NONE guisp=NONE
hi Folded guifg=#${c.base03} guibg=#${c.base01} gui=NONE guisp=NONE
hi IncSearch guifg=#${c.base01} guibg=#${c.base09} gui=NONE guisp=NONE
hi Italic guifg=NONE guibg=NONE gui=NONE guisp=NONE
hi Macro guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi MatchParen guifg=NONE guibg=#${c.base03} gui=NONE guisp=NONE
hi ModeMsg guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi MoreMsg guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi Question guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Search guifg=#${c.base01} guibg=#${c.base0A} gui=NONE guisp=NONE
hi Substitute guifg=#${c.base01} guibg=#${c.base0A} gui=NONE guisp=NONE
hi SpecialKey guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi TooLong guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Underlined guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Visual guifg=NONE guibg=#${c.base02} gui=NONE guisp=NONE
hi VisualNOS guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi WarningMsg guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi WildMenu guifg=#${c.base08} guibg=#${c.base0A} gui=NONE guisp=NONE
hi Title guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Conceal guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi Cursor guifg=#${c.base00} guibg=#${c.base05} gui=NONE guisp=NONE
hi NonText guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi LineNr guifg=#${c.base04} guibg=#${c.base00} gui=NONE guisp=NONE
hi SignColumn guifg=#${c.base04} guibg=#${c.base00} gui=NONE guisp=NONE
hi StatusLine guifg=#${c.base0B} guibg=#${c.base02} gui=NONE guisp=NONE
hi StatusLineNC guifg=#${c.base04} guibg=#${c.base01} gui=NONE guisp=NONE
hi VertSplit guifg=#${c.base01} guibg=#${c.base00} gui=NONE guisp=NONE
hi ColorColumn guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi CursorColumn guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi CursorLine guifg=NONE guibg=#${c.base02} gui=NONE guisp=NONE
hi CursorLineNr guifg=#${c.base0B} guibg=#${c.base01} gui=NONE guisp=NONE
hi QuickFixLine guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi PMenu guifg=#${c.base05} guibg=#${c.base01} gui=NONE guisp=NONE
hi PMenuSel guifg=#${c.base01} guibg=#${c.base05} gui=NONE guisp=NONE
hi TabLine guifg=#${c.base03} guibg=#${c.base01} gui=NONE guisp=NONE
hi TabLineFill guifg=#${c.base03} guibg=#${c.base02} gui=NONE guisp=NONE
hi TabLineSel guifg=#${c.base0B} guibg=#${c.base01} gui=NONE guisp=NONE
hi EndOfBuffer guifg=#${c.base00} guibg=NONE gui=NONE guisp=NONE
hi Boolean guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Character guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Comment guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi Conditional guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Constant guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Define guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Delimiter guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi Float guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Function guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Identifier guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Include guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Keyword guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Label guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Number guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Operator guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi PreProc guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Repeat guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Special guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi SpecialChar guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi Statement guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi StorageClass guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi String guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi Structure guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Tag guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Type guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Typedef guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Boolean guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Character guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Comment guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi Conditional guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Constant guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Define guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Delimiter guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi Float guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Function guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Identifier guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi Include guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi Keyword guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Label guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Number guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi Operator guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi PreProc guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Repeat guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Special guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi SpecialChar guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi Statement guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi StorageClass guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi String guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi Structure guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi Tag guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Type guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Typedef guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi Todo guifg=#${c.base01} guibg=#${c.base0A} gui=NONE guisp=NONE
hi Done guifg=#${c.base01} guibg=#${c.base0B} gui=NONE guisp=NONE
hi Start guifg=#${c.base01} guibg=#${c.base0D} gui=NONE guisp=NONE
hi End guifg=#${c.base01} guibg=#${c.base0E} gui=NONE guisp=NONE
hi Todo guifg=#${c.base01} guibg=#${c.base0A} gui=NONE guisp=NONE
hi Done guifg=#${c.base01} guibg=#${c.base0B} gui=NONE guisp=NONE
hi Start guifg=#${c.base01} guibg=#${c.base0D} gui=NONE guisp=NONE
hi End guifg=#${c.base01} guibg=#${c.base0E} gui=NONE guisp=NONE
hi DiffAdd guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffChange guifg=#${c.base03} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffDelete guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffText guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffAdded guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffFile guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffNewFile guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffLine guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffRemoved guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffAdd guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffChange guifg=#${c.base03} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffDelete guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffText guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffAdded guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffFile guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffNewFile guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffLine guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi DiffRemoved guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi gitcommitOverflow guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi gitcommitSummary guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi gitcommitComment guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitUntracked guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitDiscarded guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitSelected guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitHeader guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi gitcommitSelectedType guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi gitcommitUnmergedType guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi gitcommitDiscardedType guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi gitcommitBranch guifg=#${c.base09} guibg=NONE gui=bold guisp=NONE
hi gitcommitUntrackedFile guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi gitcommitUnmergedFile guifg=#${c.base08} guibg=NONE gui=bold guisp=NONE
hi gitcommitDiscardedFile guifg=#${c.base08} guibg=NONE gui=bold guisp=NONE
hi gitcommitSelectedFile guifg=#${c.base0B} guibg=NONE gui=bold guisp=NONE
hi gitcommitOverflow guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi gitcommitSummary guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi gitcommitComment guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitUntracked guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitDiscarded guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitSelected guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi gitcommitHeader guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi gitcommitSelectedType guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi gitcommitUnmergedType guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi gitcommitDiscardedType guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi gitcommitBranch guifg=#${c.base09} guibg=NONE gui=bold guisp=NONE
hi gitcommitUntrackedFile guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi gitcommitUnmergedFile guifg=#${c.base08} guibg=NONE gui=bold guisp=NONE
hi gitcommitDiscardedFile guifg=#${c.base08} guibg=NONE gui=bold guisp=NONE
hi gitcommitSelectedFile guifg=#${c.base0B} guibg=NONE gui=bold guisp=NONE
hi GitGutterAdd guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi GitGutterChange guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi GitGutterDelete guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi GitGutterChangeDelete guifg=#${c.base0E} guibg=#${c.base00} gui=NONE guisp=NONE
hi GitGutterAdd guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi GitGutterChange guifg=#${c.base0D} guibg=#${c.base00} gui=NONE guisp=NONE
hi GitGutterDelete guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi GitGutterChangeDelete guifg=#${c.base0E} guibg=#${c.base00} gui=NONE guisp=NONE
hi SpellBad guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base08}
hi SpellLocal guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0C}
hi SpellCap guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0D}
hi SpellRare guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0E}
hi SpellBad guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base08}
hi SpellLocal guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0C}
hi SpellCap guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0D}
hi SpellRare guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0E}
hi DiagnosticError guifg=#${c.base08} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticWarn guifg=#${c.base0E} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticInfo guifg=#${c.base05} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticHint guifg=#${c.base0C} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticUnderlineError guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base08}
hi DiagnosticUnderlineWarning guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0E}
hi DiagnosticUnderlineWarn guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0E}
hi DiagnosticUnderlineInformation guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0F}
hi DiagnosticUnderlineHint guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0C}
hi DiagnosticError guifg=#${c.base08} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticWarn guifg=#${c.base0E} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticInfo guifg=#${c.base05} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticHint guifg=#${c.base0C} guibg=#${c.base01} gui=NONE guisp=NONE
hi DiagnosticUnderlineError guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base08}
hi DiagnosticUnderlineWarning guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0E}
hi DiagnosticUnderlineWarn guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0E}
hi DiagnosticUnderlineInformation guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0F}
hi DiagnosticUnderlineHint guifg=NONE guibg=NONE gui=undercurl guisp=#${c.base0C}
hi LspReferenceText guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi LspReferenceRead guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi LspReferenceWrite guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi LspReferenceText guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi LspReferenceRead guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi LspReferenceWrite guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi link LspDiagnosticsDefaultError DiagnosticError
hi link LspDiagnosticsDefaultWarning DiagnosticWarn
hi link LspDiagnosticsDefaultInformation DiagnosticInfo
hi link LspDiagnosticsDefaultHint DiagnosticHint
hi link LspDiagnosticsUnderlineError DiagnosticUnderlineError
hi link LspDiagnosticsUnderlineWarning DiagnosticUnderlineWarning
hi link LspDiagnosticsUnderlineInformation DiagnosticUnderlineInformation
hi link LspDiagnosticsUnderlineHint DiagnosticUnderlineHint
hi link LspDiagnosticsDefaultError DiagnosticError
hi link LspDiagnosticsDefaultWarning DiagnosticWarn
hi link LspDiagnosticsDefaultInformation DiagnosticInfo
hi link LspDiagnosticsDefaultHint DiagnosticHint
hi link LspDiagnosticsUnderlineError DiagnosticUnderlineError
hi link LspDiagnosticsUnderlineWarning DiagnosticUnderlineWarning
hi link LspDiagnosticsUnderlineInformation DiagnosticUnderlineInformation
hi link LspDiagnosticsUnderlineHint DiagnosticUnderlineHint
hi TSAnnotation guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi TSAttribute guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSBoolean guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSCharacter guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSComment guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSConstructor guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSConditional guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSConstant guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSConstBuiltin guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSConstMacro guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSError guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSException guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSField guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSFloat guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSFunction guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSFuncBuiltin guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSFuncMacro guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSInclude guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSKeyword guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSKeywordFunction guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSKeywordOperator guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSLabel guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSMethod guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSNamespace guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSNone guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSNumber guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSOperator guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSParameter guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSParameterReference guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSProperty guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSPunctDelimiter guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi TSPunctBracket guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSPunctSpecial guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSRepeat guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSString guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi TSStringRegex guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi TSStringEscape guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi TSSymbol guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi TSTag guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSTagDelimiter guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi TSText guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSStrong guifg=NONE guibg=NONE gui=bold guisp=NONE
hi TSEmphasis guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSUnderline guifg=#${c.base00} guibg=NONE gui=underline guisp=NONE
hi TSStrike guifg=#${c.base00} guibg=NONE gui=strikethrough guisp=NONE
hi TSTitle guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSLiteral guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSURI guifg=#${c.base09} guibg=NONE gui=underline guisp=NONE
hi TSType guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSTypeBuiltin guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSVariable guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSVariableBuiltin guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSAnnotation guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi TSAttribute guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSBoolean guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSCharacter guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSComment guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSConstructor guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSConditional guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSConstant guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSConstBuiltin guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSConstMacro guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSError guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSException guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSField guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSFloat guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSFunction guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSFuncBuiltin guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSFuncMacro guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSInclude guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSKeyword guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSKeywordFunction guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSKeywordOperator guifg=#${c.base0E} guibg=NONE gui=NONE guisp=NONE
hi TSLabel guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSMethod guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSNamespace guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSNone guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSNumber guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSOperator guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSParameter guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSParameterReference guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSProperty guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSPunctDelimiter guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi TSPunctBracket guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSPunctSpecial guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSRepeat guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSString guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi TSStringRegex guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi TSStringEscape guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi TSSymbol guifg=#${c.base0B} guibg=NONE gui=NONE guisp=NONE
hi TSTag guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSTagDelimiter guifg=#${c.base0F} guibg=NONE gui=NONE guisp=NONE
hi TSText guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi TSStrong guifg=NONE guibg=NONE gui=bold guisp=NONE
hi TSEmphasis guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSUnderline guifg=#${c.base00} guibg=NONE gui=underline guisp=NONE
hi TSStrike guifg=#${c.base00} guibg=NONE gui=strikethrough guisp=NONE
hi TSTitle guifg=#${c.base0D} guibg=NONE gui=NONE guisp=NONE
hi TSLiteral guifg=#${c.base09} guibg=NONE gui=NONE guisp=NONE
hi TSURI guifg=#${c.base09} guibg=NONE gui=underline guisp=NONE
hi TSType guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE
hi TSTypeBuiltin guifg=#${c.base0A} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSVariable guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE
hi TSVariableBuiltin guifg=#${c.base08} guibg=NONE gui=NONE guisp=NONE "was italic
hi TSDefinition guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi TSDefinitionUsage guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi TSCurrentScope guifg=NONE guibg=NONE gui=bold guisp=NONE
if has('nvim-0.8.0')
highlight! link @annotation TSAnnotation
highlight! link @attribute TSAttribute
highlight! link @boolean TSBoolean
highlight! link @character TSCharacter
highlight! link @comment TSComment
highlight! link @conditional TSConditional
highlight! link @constant TSConstant
highlight! link @constant.builtin TSConstBuiltin
highlight! link @constant.macro TSConstMacro
highlight! link @constructor TSConstructor
highlight! link @exception TSException
highlight! link @field TSField
highlight! link @float TSFloat
highlight! link @function TSFunction
highlight! link @function.builtin TSFuncBuiltin
highlight! link @function.macro TSFuncMacro
highlight! link @include TSInclude
highlight! link @keyword TSKeyword
highlight! link @keyword.function TSKeywordFunction
highlight! link @keyword.operator TSKeywordOperator
highlight! link @label TSLabel
highlight! link @method TSMethod
highlight! link @namespace TSNamespace
highlight! link @none TSNone
highlight! link @number TSNumber
highlight! link @operator TSOperator
highlight! link @parameter TSParameter
highlight! link @parameter.reference TSParameterReference
highlight! link @property TSProperty
highlight! link @punctuation.bracket TSPunctBracket
highlight! link @punctuation.delimiter TSPunctDelimiter
highlight! link @punctuation.special TSPunctSpecial
highlight! link @repeat TSRepeat
highlight! link @storageclass TSStorageClass
highlight! link @string TSString
highlight! link @string.escape TSStringEscape
highlight! link @string.regex TSStringRegex
highlight! link @symbol TSSymbol
highlight! link @tag TSTag
highlight! link @tag.delimiter TSTagDelimiter
highlight! link @text TSText
highlight! link @strike TSStrike
highlight! link @math TSMath
highlight! link @type TSType
highlight! link @type.builtin TSTypeBuiltin
highlight! link @uri TSURI
highlight! link @variable TSVariable
highlight! link @variable.builtin TSVariableBuiltin
endif
hi TSDefinition guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi TSDefinitionUsage guifg=NONE guibg=NONE gui=underline guisp=#${c.base04}
hi TSCurrentScope guifg=NONE guibg=NONE gui=bold guisp=NONE
if has('nvim-0.8.0')
highlight! link @annotation TSAnnotation
highlight! link @attribute TSAttribute
highlight! link @boolean TSBoolean
highlight! link @character TSCharacter
highlight! link @comment TSComment
highlight! link @conditional TSConditional
highlight! link @constant TSConstant
highlight! link @constant.builtin TSConstBuiltin
highlight! link @constant.macro TSConstMacro
highlight! link @constructor TSConstructor
highlight! link @exception TSException
highlight! link @field TSField
highlight! link @float TSFloat
highlight! link @function TSFunction
highlight! link @function.builtin TSFuncBuiltin
highlight! link @function.macro TSFuncMacro
highlight! link @include TSInclude
highlight! link @keyword TSKeyword
highlight! link @keyword.function TSKeywordFunction
highlight! link @keyword.operator TSKeywordOperator
highlight! link @label TSLabel
highlight! link @method TSMethod
highlight! link @namespace TSNamespace
highlight! link @none TSNone
highlight! link @number TSNumber
highlight! link @operator TSOperator
highlight! link @parameter TSParameter
highlight! link @parameter.reference TSParameterReference
highlight! link @property TSProperty
highlight! link @punctuation.bracket TSPunctBracket
highlight! link @punctuation.delimiter TSPunctDelimiter
highlight! link @punctuation.special TSPunctSpecial
highlight! link @repeat TSRepeat
highlight! link @storageclass TSStorageClass
highlight! link @string TSString
highlight! link @string.escape TSStringEscape
highlight! link @string.regex TSStringRegex
highlight! link @symbol TSSymbol
highlight! link @tag TSTag
highlight! link @tag.delimiter TSTagDelimiter
highlight! link @text TSText
highlight! link @strike TSStrike
highlight! link @math TSMath
highlight! link @type TSType
highlight! link @type.builtin TSTypeBuiltin
highlight! link @uri TSURI
highlight! link @variable TSVariable
highlight! link @variable.builtin TSVariableBuiltin
endif
hi IndentBlankLine guifg=#${c.base01} guibg=NONE gui=NONE guisp=NONE
hi IndentBlankLine guifg=#${c.base01} guibg=NONE gui=NONE guisp=NONE
hi NvimTreeNormal guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi NvimTreeNormal guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi CmpItemAbbr guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi CmpItemAbbrDeprecated guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi CmpItemAbbrMatch guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi CmpItemAbbrMatchFuzzy guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi CmpItemKind guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi CmpItemMenu guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi CmpItemAbbr guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi CmpItemAbbrDeprecated guifg=#${c.base03} guibg=NONE gui=NONE guisp=NONE
hi CmpItemAbbrMatch guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi CmpItemAbbrMatchFuzzy guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi CmpItemKind guifg=#${c.base0C} guibg=NONE gui=NONE guisp=NONE
hi CmpItemMenu guifg=#${c.base05} guibg=NONE gui=NONE guisp=NONE
hi BufferCurrent guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentIndex guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentMod guifg=#${c.base0E} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentSign guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentTarget guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentIcon guifg=NONE guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferVisible guifg=#${c.base0A} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleIndex guifg=#${c.base0A} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleMod guifg=#${c.base0E} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleSign guifg=#${c.base0A} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleTarget guifg=#${c.base08} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleIcon guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferInactive guifg=#${c.base04} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveIndex guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveMod guifg=#${c.base0E} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveSign guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveTarget guifg=#${c.base08} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveIcon guifg=NONE guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferTabpages guifg=#${c.base03} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferTabpageFill guifg=#${c.base03} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferCurrent guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentIndex guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentMod guifg=#${c.base0E} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentSign guifg=#${c.base0B} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentTarget guifg=#${c.base08} guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferCurrentIcon guifg=NONE guibg=#${c.base00} gui=NONE guisp=NONE
hi BufferVisible guifg=#${c.base0A} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleIndex guifg=#${c.base0A} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleMod guifg=#${c.base0E} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleSign guifg=#${c.base0A} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleTarget guifg=#${c.base08} guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferVisibleIcon guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE
hi BufferInactive guifg=#${c.base04} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveIndex guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveMod guifg=#${c.base0E} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveSign guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveTarget guifg=#${c.base08} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferInactiveIcon guifg=NONE guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferTabpages guifg=#${c.base03} guibg=#${c.base02} gui=NONE guisp=NONE
hi BufferTabpageFill guifg=#${c.base03} guibg=#${c.base02} gui=NONE guisp=NONE
hi NvimInternalError guifg=#${c.base00} guibg=#${c.base08} gui=NONE guisp=NONE
hi NvimInternalError guifg=#${c.base00} guibg=#${c.base08} gui=NONE guisp=NONE
hi NormalFloat guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi FloatBorder guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi NormalNC guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi TermCursor guifg=#${c.base00} guibg=#${c.base05} gui=NONE guisp=NONE
hi TermCursorNC guifg=#${c.base00} guibg=#${c.base05} gui=NONE guisp=NONE
hi NormalFloat guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi FloatBorder guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi NormalNC guifg=#${c.base05} guibg=#${c.base00} gui=NONE guisp=NONE
hi TermCursor guifg=#${c.base00} guibg=#${c.base05} gui=NONE guisp=NONE
hi TermCursorNC guifg=#${c.base00} guibg=#${c.base05} gui=NONE guisp=NONE
hi User1 guifg=#${c.base08} guibg=#${c.base02} gui=NONE guisp=NONE
hi User2 guifg=#${c.base0E} guibg=#${c.base02} gui=NONE guisp=NONE
hi User3 guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi User4 guifg=#${c.base0C} guibg=#${c.base02} gui=NONE guisp=NONE
hi User5 guifg=#${c.base01} guibg=#${c.base02} gui=NONE guisp=NONE
hi User6 guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi User7 guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi User8 guifg=#${c.base00} guibg=#${c.base02} gui=NONE guisp=NONE
hi User9 guifg=#${c.base00} guibg=#${c.base02} gui=NONE guisp=NONE
hi User1 guifg=#${c.base08} guibg=#${c.base02} gui=NONE guisp=NONE
hi User2 guifg=#${c.base0E} guibg=#${c.base02} gui=NONE guisp=NONE
hi User3 guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi User4 guifg=#${c.base0C} guibg=#${c.base02} gui=NONE guisp=NONE
hi User5 guifg=#${c.base01} guibg=#${c.base02} gui=NONE guisp=NONE
hi User6 guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi User7 guifg=#${c.base05} guibg=#${c.base02} gui=NONE guisp=NONE
hi User8 guifg=#${c.base00} guibg=#${c.base02} gui=NONE guisp=NONE
hi User9 guifg=#${c.base00} guibg=#${c.base02} gui=NONE guisp=NONE
hi TreesitterContext guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE "was italic
hi TreesitterContext guifg=NONE guibg=#${c.base01} gui=NONE guisp=NONE "was italic
let g:terminal_color_background = "#${c.base00}"
let g:terminal_color_foreground = "#${c.base05}"
let g:terminal_color_background = "#${c.base00}"
let g:terminal_color_foreground = "#${c.base05}"
let g:terminal_color_0 = "#${c.base00}"
let g:terminal_color_1 = "#${c.base08}"
let g:terminal_color_2 = "#${c.base0B}"
let g:terminal_color_3 = "#${c.base0A}"
let g:terminal_color_4 = "#${c.base0D}"
let g:terminal_color_5 = "#${c.base0E}"
let g:terminal_color_6 = "#${c.base0C}"
let g:terminal_color_7 = "#${c.base05}"
let g:terminal_color_8 = "#${c.base03}"
let g:terminal_color_9 = "#${c.base08}"
let g:terminal_color_10 = "#${c.base0B}"
let g:terminal_color_11 = "#${c.base0A}"
let g:terminal_color_12 = "#${c.base0D}"
let g:terminal_color_13 = "#${c.base0E}"
let g:terminal_color_14 = "#${c.base0C}"
let g:terminal_color_15 = "#${c.base07}"
''
let g:terminal_color_0 = "#${c.base00}"
let g:terminal_color_1 = "#${c.base08}"
let g:terminal_color_2 = "#${c.base0B}"
let g:terminal_color_3 = "#${c.base0A}"
let g:terminal_color_4 = "#${c.base0D}"
let g:terminal_color_5 = "#${c.base0E}"
let g:terminal_color_6 = "#${c.base0C}"
let g:terminal_color_7 = "#${c.base05}"
let g:terminal_color_8 = "#${c.base03}"
let g:terminal_color_9 = "#${c.base08}"
let g:terminal_color_10 = "#${c.base0B}"
let g:terminal_color_11 = "#${c.base0A}"
let g:terminal_color_12 = "#${c.base0D}"
let g:terminal_color_13 = "#${c.base0E}"
let g:terminal_color_14 = "#${c.base0C}"
let g:terminal_color_15 = "#${c.base07}"
''
+58 -18
View File
@@ -1,5 +1,4 @@
{ pkgs, ... }:
let
{pkgs, ...}: let
gx-nvim = pkgs.vimUtils.buildVimPlugin {
name = "gx-nvim";
src = pkgs.fetchFromGitHub {
@@ -9,13 +8,15 @@ let
hash = "sha256-QWJ/cPvSyMTJoWLg51BNFf9+/9i7G+nzennpHP/eQ4g=";
};
};
in
{
in {
programs.neovim.plugins = with pkgs.vimPlugins; [
{
plugin = gx-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('gx').setup{}
vim.keymap.set({"n", "x"}, "gx", ":Browse<CR>", {
@@ -30,7 +31,10 @@ in
{
plugin = vim-fugitive;
type = "viml";
config = /* vim */
config =
/*
vim
*/
''
nmap <space>G :Git<CR>
'';
@@ -38,7 +42,10 @@ in
{
plugin = nvim-bqf;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('bqf').setup{}
'';
@@ -46,7 +53,10 @@ in
{
plugin = alpha-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
local alpha = require("alpha")
local dashboard = require("alpha.themes.dashboard")
@@ -78,7 +88,10 @@ in
{
plugin = bufferline-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('bufferline').setup{}
'';
@@ -86,7 +99,10 @@ in
{
plugin = scope-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('scope').setup{}
'';
@@ -94,7 +110,10 @@ in
{
plugin = which-key-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('which-key').setup{}
'';
@@ -102,7 +121,10 @@ in
{
plugin = range-highlight-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('range-highlight').setup{}
'';
@@ -110,7 +132,10 @@ in
{
plugin = indent-blankline-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('ibl').setup{
scope = { highlight = {"IndentBlankLine"} },
@@ -121,7 +146,10 @@ in
{
plugin = nvim-web-devicons;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('nvim-web-devicons').setup{}
'';
@@ -129,7 +157,10 @@ in
{
plugin = gitsigns-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('gitsigns').setup{
signs = {
@@ -145,7 +176,10 @@ in
{
plugin = nvim-colorizer-lua;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('colorizer').setup{}
'';
@@ -153,7 +187,10 @@ in
{
plugin = fidget-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('fidget').setup{
text = {
@@ -165,7 +202,10 @@ in
{
plugin = oil-nvim;
type = "lua";
config = /* lua */
config =
/*
lua
*/
''
require('oil').setup{
buf_options = {
+7 -4
View File
@@ -1,20 +1,23 @@
{ pkgs, config, ... }:
{
pkgs,
config,
...
}: {
programs.password-store = {
enable = true;
settings = {
PASSWORD_STORE_DIR = "$HOME/.password-store";
};
package = pkgs.pass.withExtensions (p: [ p.pass-otp ]);
package = pkgs.pass.withExtensions (p: [p.pass-otp]);
};
services.pass-secret-service = {
enable = true;
storePath = "${config.home.homeDirectory}/.password-store";
extraArgs = [ "-e${config.programs.password-store.package}/bin/pass" ];
extraArgs = ["-e${config.programs.password-store.package}/bin/pass"];
};
home.persistence = {
"/persist/home/misterio".directories = [ ".password-store" ];
"/persist/home/misterio".directories = [".password-store"];
};
}
+6 -4
View File
@@ -1,7 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ khal ];
xdg.configFile."khal/config".text = /* toml */
{pkgs, ...}: {
home.packages = with pkgs; [khal];
xdg.configFile."khal/config".text =
/*
toml
*/
''
[calendars]
@@ -1,7 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ khard ];
xdg.configFile."khard/khard.conf".text = /* toml */
{pkgs, ...}: {
home.packages = with pkgs; [khard];
xdg.configFile."khard/khard.conf".text =
/*
toml
*/
''
[addressbooks]
[[contacts]]
+69 -68
View File
@@ -3,9 +3,7 @@
lib,
config,
...
}:
let
}: let
mbsync = "${config.programs.mbsync.package}/bin/mbsync";
pass = "${config.programs.password-store.package}/bin/pass";
@@ -25,66 +23,70 @@ let
'';
};
};
in
{
in {
home.persistence = {
"/persist/home/misterio".directories = [ "Mail" ];
"/persist/home/misterio".directories = ["Mail"];
};
accounts.email = {
maildirBasePath = "Mail";
accounts = {
personal = rec {
primary = true;
address = "hi@m7.rs";
aliases = [
"gabriel@gsfontes.com"
"eu@misterio.me"
];
passwordCommand = "${pass} ${smtp.host}/${address}";
imap.host = "mail.m7.rs";
mbsync = {
enable = true;
create = "maildir";
expunge = "both";
};
folders = {
inbox = "Inbox";
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
neomutt = {
enable = true;
extraMailboxes = [
"Archive"
"Drafts"
"Junk"
"Sent"
"Trash"
personal =
rec {
primary = true;
address = "hi@m7.rs";
aliases = [
"gabriel@gsfontes.com"
"eu@misterio.me"
];
};
passwordCommand = "${pass} ${smtp.host}/${address}";
msmtp.enable = true;
smtp.host = "mail.m7.rs";
userName = address;
} // common;
imap.host = "mail.m7.rs";
mbsync = {
enable = true;
create = "maildir";
expunge = "both";
};
folders = {
inbox = "Inbox";
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
neomutt = {
enable = true;
extraMailboxes = [
"Archive"
"Drafts"
"Junk"
"Sent"
"Trash"
];
};
college = rec {
address = "g.fontes@usp.br";
passwordCommand = "${pass} ${smtp.host}/${address}";
msmtp.enable = true;
smtp.host = "mail.m7.rs";
userName = address;
}
// common;
msmtp.enable = true;
smtp.host = "smtp.gmail.com";
userName = address;
} // common;
college =
rec {
address = "g.fontes@usp.br";
passwordCommand = "${pass} ${smtp.host}/${address}";
zoocha = rec {
address = "gabriel@zoocha.com";
passwordCommand = "${pass} ${smtp.host}/${address}";
msmtp.enable = true;
smtp.host = "smtp.gmail.com";
userName = address;
}
// common;
/*
zoocha =
rec {
address = "gabriel@zoocha.com";
passwordCommand = "${pass} ${smtp.host}/${address}";
/*
TODO: add imap (conditionally)
imap.host = "imap.gmail.com";
mbsync = {
@@ -99,12 +101,13 @@ in
neomutt = {
enable = true;
};
*/
*/
msmtp.enable = true;
smtp.host = "smtp.gmail.com";
userName = address;
} // common;
msmtp.enable = true;
smtp.host = "smtp.gmail.com";
userName = address;
}
// common;
};
};
@@ -115,17 +118,15 @@ in
Unit = {
Description = "mbsync synchronization";
};
Service =
let
gpgCmds = import ../cli/gpg-commands.nix { inherit pkgs; };
in
{
Type = "oneshot";
ExecCondition = ''
/bin/sh -c "${gpgCmds.isUnlocked}"
'';
ExecStart = "${mbsync} -a";
};
Service = let
gpgCmds = import ../cli/gpg-commands.nix {inherit pkgs;};
in {
Type = "oneshot";
ExecCondition = ''
/bin/sh -c "${gpgCmds.isUnlocked}"
'';
ExecStart = "${mbsync} -a";
};
};
systemd.user.timers.mbsync = {
Unit = {
@@ -136,7 +137,7 @@ in
OnUnitActiveSec = "5m";
};
Install = {
WantedBy = [ "timers.target" ];
WantedBy = ["timers.target"];
};
};
}
+55 -59
View File
@@ -3,8 +3,7 @@
pkgs,
lib,
...
}:
{
}: {
xdg = {
desktopEntries = {
neomutt = {
@@ -20,7 +19,7 @@
"ConsoleOnly"
];
type = "Application";
mimeType = [ "x-scheme-handler/mailto" ];
mimeType = ["x-scheme-handler/mailto"];
};
};
mimeApps.defaultApplications = {
@@ -62,64 +61,61 @@
{
action = "toggle-new";
key = "B";
map = [ "index" ];
map = ["index"];
}
];
macros =
let
browserpipe = "cat /dev/stdin > /tmp/muttmail.html && xdg-open /tmp/muttmail.html";
in
[
{
action = "<sidebar-next><sidebar-open>";
key = "J";
map = [
"index"
"pager"
];
}
{
action = "<sidebar-prev><sidebar-open>";
key = "K";
map = [
"index"
"pager"
];
}
{
action = "<save-message>+Archive<enter>";
key = "A";
map = [
"index"
"pager"
];
}
{
action = "<pipe-entry>${browserpipe}<enter><exit>";
key = "V";
map = [ "attach" ];
}
{
action = "<pipe-message>${pkgs.urlscan}/bin/urlscan<enter><exit>";
key = "F";
map = [ "pager" ];
}
{
action = "<view-attachments><search>html<enter><pipe-entry>${browserpipe}<enter><exit>";
key = "V";
map = [
"index"
"pager"
];
}
];
extraConfig =
let
# Collect all addresses and aliases
addresses = lib.flatten (
lib.mapAttrsToList (n: v: [ v.address ] ++ v.aliases) config.accounts.email.accounts
);
in
macros = let
browserpipe = "cat /dev/stdin > /tmp/muttmail.html && xdg-open /tmp/muttmail.html";
in [
{
action = "<sidebar-next><sidebar-open>";
key = "J";
map = [
"index"
"pager"
];
}
{
action = "<sidebar-prev><sidebar-open>";
key = "K";
map = [
"index"
"pager"
];
}
{
action = "<save-message>+Archive<enter>";
key = "A";
map = [
"index"
"pager"
];
}
{
action = "<pipe-entry>${browserpipe}<enter><exit>";
key = "V";
map = ["attach"];
}
{
action = "<pipe-message>${pkgs.urlscan}/bin/urlscan<enter><exit>";
key = "F";
map = ["pager"];
}
{
action = "<view-attachments><search>html<enter><pipe-entry>${browserpipe}<enter><exit>";
key = "V";
map = [
"index"
"pager"
];
}
];
extraConfig = let
# Collect all addresses and aliases
addresses = lib.flatten (
lib.mapAttrsToList (n: v: [v.address] ++ v.aliases) config.accounts.email.accounts
);
in
''
alternates "${lib.concatStringsSep "|" addresses}"
''
@@ -1,7 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ todoman ];
xdg.configFile."todoman/config.py".text = /* python */
{pkgs, ...}: {
home.packages = with pkgs; [todoman];
xdg.configFile."todoman/config.py".text =
/*
python
*/
''
path = "~/Calendars/*"
default_list = "Personal"
@@ -3,12 +3,10 @@
lib,
config,
...
}:
let
}: let
pass = "${config.programs.password-store.package}/bin/pass";
in
{
home.packages = with pkgs; [ vdirsyncer ];
in {
home.packages = with pkgs; [vdirsyncer];
home.persistence = {
"/persist/home/misterio".directories = [
@@ -18,7 +16,10 @@ in
];
};
xdg.configFile."vdirsyncer/config".text = /* ini */
xdg.configFile."vdirsyncer/config".text =
/*
ini
*/
''
[general]
status_path = "~/.local/share/vdirsyncer/status"
@@ -63,17 +64,15 @@ in
Unit = {
Description = "vdirsyncer synchronization";
};
Service =
let
gpgCmds = import ../cli/gpg-commands.nix { inherit pkgs; };
in
{
Type = "oneshot";
ExecCondition = ''
/bin/sh -c "${gpgCmds.isUnlocked}"
'';
ExecStart = "${pkgs.vdirsyncer}/bin/vdirsyncer sync";
};
Service = let
gpgCmds = import ../cli/gpg-commands.nix {inherit pkgs;};
in {
Type = "oneshot";
ExecCondition = ''
/bin/sh -c "${gpgCmds.isUnlocked}"
'';
ExecStart = "${pkgs.vdirsyncer}/bin/vdirsyncer sync";
};
};
systemd.user.timers.vdirsyncer = {
Unit = {
@@ -84,7 +83,7 @@ in
OnUnitActiveSec = "5m";
};
Install = {
WantedBy = [ "timers.target" ];
WantedBy = ["timers.target"];
};
};
}
+2 -4
View File
@@ -1,8 +1,6 @@
{ config, ... }:
let
{config, ...}: let
inherit (config.colorscheme) colors;
in
{
in {
services.rgbdaemon = {
enable = true;
daemons = {
+3 -4
View File
@@ -1,6 +1,5 @@
{ lib, ... }:
{
imports = [ ./global ];
{lib, ...}: {
imports = [./global];
# Disable impermanence
home.persistence = lib.mkForce { };
home.persistence = lib.mkForce {};
}
+60 -63
View File
@@ -5,24 +5,24 @@
config,
outputs,
...
}:
let
}: let
inherit (inputs.nix-colors) colorSchemes;
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) nixWallpaperFromScheme;
in
{
imports = [
inputs.impermanence.nixosModules.home-manager.impermanence
inputs.nix-colors.homeManagerModule
../features/cli
../features/nvim
] ++ (builtins.attrValues outputs.homeManagerModules);
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) nixWallpaperFromScheme;
in {
imports =
[
inputs.impermanence.nixosModules.home-manager.impermanence
inputs.nix-colors.homeManagerModule
../features/cli
../features/nvim
]
++ (builtins.attrValues outputs.homeManagerModules);
nixpkgs = {
overlays = builtins.attrValues outputs.overlays;
config = {
allowUnfree = true;
allowUnfreePredicate = (_: true);
allowUnfreePredicate = _: true;
};
};
@@ -49,7 +49,7 @@ in
username = lib.mkDefault "misterio";
homeDirectory = lib.mkDefault "/home/${config.home.username}";
stateVersion = lib.mkDefault "22.05";
sessionPath = [ "$HOME/.local/bin" ];
sessionPath = ["$HOME/.local/bin"];
sessionVariables = {
FLAKE = "$HOME/Documents/NixConfig";
};
@@ -79,12 +79,11 @@ in
".colorscheme.json".text = builtins.toJSON config.colorscheme;
};
wallpaper =
let
largest = f: xs: builtins.head (builtins.sort (a: b: a > b) (map f xs));
largestWidth = largest (x: x.width) config.monitors;
largestHeight = largest (x: x.height) config.monitors;
in
wallpaper = let
largest = f: xs: builtins.head (builtins.sort (a: b: a > b) (map f xs));
largestWidth = largest (x: x.width) config.monitors;
largestHeight = largest (x: x.height) config.monitors;
in
lib.mkDefault (nixWallpaperFromScheme {
scheme = config.colorscheme;
width = largestWidth;
@@ -92,53 +91,51 @@ in
logoScale = 4;
});
home.packages =
let
specialisation = pkgs.writeShellScriptBin "specialisation" ''
profiles="$HOME/.local/state/nix/profiles"
current="$profiles/home-manager"
base="$profiles/home-manager-base"
home.packages = let
specialisation = pkgs.writeShellScriptBin "specialisation" ''
profiles="$HOME/.local/state/nix/profiles"
current="$profiles/home-manager"
base="$profiles/home-manager-base"
# If current contains specialisations, link it as base
if [ -d "$current/specialisation" ]; then
echo >&2 "Using current profile as base"
ln -sfT "$(readlink "$current")" "$base"
# Check that $base contains specialisations before proceeding
elif [ -d "$base/specialisation" ]; then
echo >&2 "Using previously linked base profile"
else
echo >&2 "No suitable base config found. Try 'home-manager switch' again."
exit 1
fi
# If current contains specialisations, link it as base
if [ -d "$current/specialisation" ]; then
echo >&2 "Using current profile as base"
ln -sfT "$(readlink "$current")" "$base"
# Check that $base contains specialisations before proceeding
elif [ -d "$base/specialisation" ]; then
echo >&2 "Using previously linked base profile"
else
echo >&2 "No suitable base config found. Try 'home-manager switch' again."
exit 1
fi
if [ "$1" = "list" ] || [ "$1" = "-l" ] || [ "$1" = "--list" ]; then
find "$base/specialisation" -type l -printf "%f\n"
exit 0
fi
if [ "$1" = "list" ] || [ "$1" = "-l" ] || [ "$1" = "--list" ]; then
find "$base/specialisation" -type l -printf "%f\n"
exit 0
fi
echo >&2 "Switching to ''${1:-base} specialisation"
if [ -n "$1" ]; then
"$base/specialisation/$1/activate"
echo >&2 "Switching to ''${1:-base} specialisation"
if [ -n "$1" ]; then
"$base/specialisation/$1/activate"
else
"$base/activate"
fi
'';
toggle-theme = pkgs.writeShellScriptBin "toggle-theme" ''
if [ -n "$1" ]; then
theme="$1"
else
current="$(${lib.getExe pkgs.jq} -re '.kind' "$HOME/.colorscheme.json")"
if [ "$current" = "light" ]; then
theme="dark"
else
"$base/activate"
theme="light"
fi
'';
toggle-theme = pkgs.writeShellScriptBin "toggle-theme" ''
if [ -n "$1" ]; then
theme="$1"
else
current="$(${lib.getExe pkgs.jq} -re '.kind' "$HOME/.colorscheme.json")"
if [ "$current" = "light" ]; then
theme="dark"
else
theme="light"
fi
fi
${lib.getExe specialisation} "$theme"
'';
in
[
specialisation
toggle-theme
];
fi
${lib.getExe specialisation} "$theme"
'';
in [
specialisation
toggle-theme
];
}
+1 -1
View File
@@ -1 +1 @@
{ imports = [ ./global ]; }
{imports = [./global];}
+2 -3
View File
@@ -1,5 +1,4 @@
{ inputs, ... }:
{
imports = [ ./global ];
{inputs, ...}: {
imports = [./global];
colorscheme = inputs.nix-colors.colorSchemes.nord;
}
+2 -4
View File
@@ -3,11 +3,9 @@
lib,
pkgs,
...
}:
let
}: let
inherit (inputs.nix-colors) colorSchemes;
in
{
in {
imports = [
./global
./features/desktop/hyprland
+3 -3
View File
@@ -1,5 +1,5 @@
{
imports = [ ../common/optional/ephemeral-btrfs.nix ];
imports = [../common/optional/ephemeral-btrfs.nix];
boot = {
initrd = {
@@ -21,7 +21,7 @@
fileSystems."/boot" = {
device = "/dev/disk/by-label/alcyone";
fsType = "btrfs";
options = [ "subvol=boot" ];
options = ["subvol=boot"];
};
swapDevices = [
@@ -34,7 +34,7 @@
hardware.cpu.intel.updateMicrocode = true;
virtualisation.hypervGuest.enable = true;
systemd.services.hv-kvp.unitConfig.ConditionPathExists = [ "/dev/vmbus/hv_kvp" ];
systemd.services.hv-kvp.unitConfig.ConditionPathExists = ["/dev/vmbus/hv_kvp"];
nixpkgs.hostPlatform = "x86_64-linux";
}
+6 -9
View File
@@ -1,14 +1,11 @@
{ pkgs, ... }:
let
{pkgs, ...}: let
cgit = "${pkgs.scgit}";
compileSass =
file:
pkgs.runCommand "sass" { buildInputs = [ pkgs.sass ]; } ''
compileSass = file:
pkgs.runCommand "sass" {buildInputs = [pkgs.sass];} ''
sass ${file} > $out
'';
partials = "${pkgs.inputs.website.default}/public/cgit_partials";
in
{
in {
services = {
nginx.virtualHosts."m7.rs" = {
forceSSL = true;
@@ -34,7 +31,7 @@ in
master = "true";
socket = "/run/uwsgi/cgit.sock";
procname-master = "uwsgi cgit";
plugins = [ "cgi" ];
plugins = ["cgi"];
cgi = "${cgit}/cgit/cgit.cgi";
};
};
@@ -42,7 +39,7 @@ in
systemd.services.create-cgit-cache = {
description = "Create cache directory for cgit";
enable = true;
wantedBy = [ "uwsgi.service" ];
wantedBy = ["uwsgi.service"];
serviceConfig = {
type = "oneshot";
};
+3 -6
View File
@@ -1,8 +1,6 @@
# Something I did for a UI/UX class I took
# Decided to keep around to help out freshmen
{ pkgs, ... }:
let
{pkgs, ...}: let
cincobola = pkgs.stdenv.mkDerivation {
name = "cincobola";
JEKYLL_ENV = "production";
@@ -12,7 +10,7 @@ let
rev = "bd1dcc3";
hash = "sha256-npPYxuZkqZWS0nRGc9IpTNviWzF5sFNUeVTdS6486lg=";
};
buildInputs = [ pkgs.jekyll ];
buildInputs = [pkgs.jekyll];
buildPhase = ''
jekyll build
'';
@@ -23,8 +21,7 @@ let
days = n: (hours n) * 24;
hours = n: (minutes n) * 60;
minutes = n: n * 60;
in
{
in {
services.nginx.virtualHosts."cincobola.misterio.me" = {
forceSSL = true;
enableACME = true;
+1 -2
View File
@@ -4,8 +4,7 @@ let
enableACME = true;
locations."/".root = "/srv/files";
};
in
{
in {
services.nginx.virtualHosts = {
"files.m7.rs" = files;
"f.m7.rs" = files;
+8 -5
View File
@@ -1,15 +1,18 @@
{ inputs, config, ... }:
{
imports = [ inputs.firefly.nixosModules.firefly-iii ];
inputs,
config,
...
}: {
imports = [inputs.firefly.nixosModules.firefly-iii];
nixpkgs.overlays = [ inputs.firefly.overlays.default ];
nixpkgs.overlays = [inputs.firefly.overlays.default];
services.firefly-iii = {
enable = true;
hostname = "firefly.m7.rs";
appKeyFile = config.sops.secrets.firefly-key.path;
nginx = {
serverAliases = [ "firefly.m7.rs" ];
serverAliases = ["firefly.m7.rs"];
forceSSL = true;
enableACME = true;
};
@@ -24,6 +27,6 @@
};
environment.persistence = {
"/persist".directories = [ "/var/lib/firefly-iii" ];
"/persist".directories = ["/var/lib/firefly-iii"];
};
}
+8 -10
View File
@@ -3,11 +3,9 @@
lib,
pkgs,
...
}:
{
}: {
environment.persistence = {
"/persist".directories = [ "/srv/git" ];
"/persist".directories = ["/srv/git"];
};
services.gitDaemon = {
@@ -15,7 +13,7 @@
basePath = "/srv/git";
exportAll = true;
};
networking.firewall.allowedTCPPorts = [ 9418 ];
networking.firewall.allowedTCPPorts = [9418];
users = {
users.git = {
@@ -25,15 +23,15 @@
isSystemUser = true;
shell = "${pkgs.bash}/bin/bash";
group = "git";
packages = [ pkgs.git ];
packages = [pkgs.git];
openssh.authorizedKeys.keys =
# My key
config.users.users.misterio.openssh.authorizedKeys.keys
++
# The key hydra uses to access other hosts
# This is used to push CI-gated branches to my nix-config
config.nix.sshServe.keys;
# The key hydra uses to access other hosts
# This is used to push CI-gated branches to my nix-config
config.nix.sshServe.keys;
};
groups.git = { };
groups.git = {};
};
}
+11 -9
View File
@@ -1,8 +1,10 @@
{ config, lib, ... }:
let
derpPort = 3478;
in
{
config,
lib,
...
}: let
derpPort = 3478;
in {
services = {
headscale = {
enable = true;
@@ -13,8 +15,8 @@ in
override_local_dns = true;
base_domain = "m7.rs";
magic_dns = true;
domains = [ "ts.m7.rs" ];
nameservers = [ "9.9.9.9" ];
domains = ["ts.m7.rs"];
nameservers = ["9.9.9.9"];
};
server_url = "https://tailscale.m7.rs";
metrics_listen_addr = "127.0.0.1:8095";
@@ -59,11 +61,11 @@ in
};
# Derp server
networking.firewall.allowedUDPPorts = [ derpPort ];
networking.firewall.allowedUDPPorts = [derpPort];
environment.systemPackages = [ config.services.headscale.package ];
environment.systemPackages = [config.services.headscale.package];
environment.persistence = {
"/persist".directories = [ "/var/lib/headscale" ];
"/persist".directories = ["/var/lib/headscale"];
};
}
+4 -5
View File
@@ -3,12 +3,11 @@
pkgs,
inputs,
...
}:
{
imports = [ inputs.nixos-mailserver.nixosModules.mailserver ];
}: {
imports = [inputs.nixos-mailserver.nixosModules.mailserver];
# https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/issues/275
services.dovecot2.sieve.extensions = [ "fileinto" ];
services.dovecot2.sieve.extensions = ["fileinto"];
mailserver = rec {
enable = true;
@@ -72,7 +71,7 @@
# Webmail
services.roundcube = rec {
enable = true;
package = pkgs.roundcube.withPlugins (p: [ p.carddav ]);
package = pkgs.roundcube.withPlugins (p: [p.carddav]);
hostName = "mail.m7.rs";
extraConfig = ''
$config['smtp_host'] = "tls://${hostName}:587";
+18 -19
View File
@@ -3,8 +3,7 @@
outputs,
lib,
...
}:
{
}: {
services = {
prometheus = {
enable = true;
@@ -16,12 +15,12 @@
{
job_name = "hydra";
scheme = "https";
static_configs = [ { targets = [ "hydra.m7.rs" ]; } ];
static_configs = [{targets = ["hydra.m7.rs"];}];
}
{
job_name = "headscale";
scheme = "https";
static_configs = [ { targets = [ "tailscale.m7.rs" ]; } ];
static_configs = [{targets = ["tailscale.m7.rs"];}];
}
{
job_name = "nginx";
@@ -39,23 +38,23 @@
{
job_name = "hosts";
scheme = "http";
static_configs = lib.mapAttrsToList (hostname: value: let
port = value.config.services.prometheus.exporters.node.port;
in {
targets = ["${hostname}:${toString port}"];
labels.instance = hostname;
}) outputs.nixosConfigurations;
static_configs =
lib.mapAttrsToList (hostname: value: let
port = value.config.services.prometheus.exporters.node.port;
in {
targets = ["${hostname}:${toString port}"];
labels.instance = hostname;
})
outputs.nixosConfigurations;
}
];
extraFlags =
let
prometheus = config.services.prometheus.package;
in
[
# Custom consoles
"--web.console.templates=${prometheus}/etc/prometheus/consoles"
"--web.console.libraries=${prometheus}/etc/prometheus/console_libraries"
];
extraFlags = let
prometheus = config.services.prometheus.package;
in [
# Custom consoles
"--web.console.templates=${prometheus}/etc/prometheus/consoles"
"--web.console.libraries=${prometheus}/etc/prometheus/console_libraries"
];
};
nginx.virtualHosts = {
"metrics.m7.rs" = {
+7 -5
View File
@@ -1,8 +1,10 @@
{ config, lib, ... }:
let
port = "5232";
in
{
config,
lib,
...
}: let
port = "5232";
in {
services = {
radicale = {
enable = true;
@@ -43,6 +45,6 @@ in
};
environment.persistence = {
"/persist".directories = [ "/var/lib/radicale" ];
"/persist".directories = ["/var/lib/radicale"];
};
}
+2 -4
View File
@@ -1,5 +1,4 @@
{ pkgs, ... }:
let
{pkgs, ...}: let
website = pkgs.inputs.website.default;
pgpKey = ../../../../home/misterio/pgp.asc;
sshKey = ../../../../home/misterio/ssh.pub;
@@ -11,8 +10,7 @@ let
days = n: (hours n) * 24;
hours = n: (minutes n) * 60;
minutes = n: n * 60;
in
{
in {
imports = [
./themes.nix
./shortner.nix
+2 -3
View File
@@ -1,9 +1,8 @@
{ lib, ... }:
{
{lib, ...}: {
services.nginx.virtualHosts."m7.rs" = {
forceSSL = true;
enableACME = true;
locations = lib.mapAttrs' (n: v: lib.nameValuePair "/l/${n}" { return = "302 ${v}$request_uri"; }) {
locations = lib.mapAttrs' (n: v: lib.nameValuePair "/l/${n}" {return = "302 ${v}$request_uri";}) {
"booletim" = "https://drive.google.com/uc?export=download&id=1cPemsZV3mUq9nfPMW1nKE7CssijMk7s0";
};
};
+7 -5
View File
@@ -1,10 +1,13 @@
{ inputs, pkgs, ... }:
let
{
inputs,
pkgs,
...
}: let
themes = pkgs.stdenv.mkDerivation {
name = "website-themes";
src = builtins.toFile "schemes" (builtins.toJSON inputs.nix-colors.colorSchemes);
dontUnpack = true;
buildInputs = [ pkgs.jq ];
buildInputs = [pkgs.jq];
buildPhase = ''
build_css() {
scheme_name="$1"
@@ -48,8 +51,7 @@ let
'';
};
days = n: toString (n * 60 * 60 * 24);
in
{
in {
services.nginx.virtualHosts = {
"m7.rs" = {
forceSSL = true;
+4 -1
View File
@@ -1,5 +1,8 @@
{ pkgs, inputs, ... }:
{
pkgs,
inputs,
...
}: {
imports = [
inputs.hardware.nixosModules.common-cpu-amd
inputs.hardware.nixosModules.common-gpu-amd
+1 -1
View File
@@ -14,7 +14,7 @@
"usbhid"
"sd_mod"
];
kernelModules = [ "kvm-amd" ];
kernelModules = ["kvm-amd"];
};
loader = {
systemd-boot = {
+1 -2
View File
@@ -1,5 +1,4 @@
{ modulesPath, ... }:
{
{modulesPath, ...}: {
imports = [
../common/optional/ephemeral-btrfs.nix
(modulesPath + "/profiles/qemu-guest.nix")
+4 -1
View File
@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
sops.secrets.cache-sig-key = {
sopsFile = ../secrets.yaml;
};

Some files were not shown because too many files have changed in this diff Show More