Signed-off-by: gwg313 <gwg313@pm.me>
This commit is contained in:
parent
4c0e29da8f
commit
bb2fe56082
40 changed files with 595 additions and 1144 deletions
|
|
@ -12,6 +12,7 @@ _: {
|
||||||
10.147.17.246 s3-console.zerotier.gwg313.xyz
|
10.147.17.246 s3-console.zerotier.gwg313.xyz
|
||||||
10.147.17.246 registry.zerotier.gwg313.xyz
|
10.147.17.246 registry.zerotier.gwg313.xyz
|
||||||
10.147.17.246 ci.zerotier.gwg313.xyz
|
10.147.17.246 ci.zerotier.gwg313.xyz
|
||||||
|
10.147.17.246 uptime.zerotier.gwg313.xyz
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -22,5 +23,7 @@ _: {
|
||||||
10.1.10.50 s3.gwg313.xyz
|
10.1.10.50 s3.gwg313.xyz
|
||||||
10.1.10.50 s3-console.gwg313.xyz
|
10.1.10.50 s3-console.gwg313.xyz
|
||||||
10.1.10.50 pastebin.gwg313.xyz
|
10.1.10.50 pastebin.gwg313.xyz
|
||||||
|
10.1.10.50 audiobooks.gwg313.xyz
|
||||||
|
10.1.10.9 uptime.gwg313.xyz
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
];
|
];
|
||||||
# extraBackupArgs = [ "--exclude-file=/home/gwg313/Documents/Celsus" ];
|
# extraBackupArgs = [ "--exclude-file=/home/gwg313/Documents/Celsus" ];
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
OnCalendar = "23:00";
|
OnCalendar = "06:40";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
rounding = 0;
|
|
||||||
gaps-in = 5;
|
|
||||||
gaps-out = 10;
|
|
||||||
active-opacity = 1;
|
|
||||||
inactive-opacity = 1;
|
|
||||||
blur = false;
|
|
||||||
border-size = 3;
|
|
||||||
animation-speed = "medium"; # "fast" | "medium" | "slow"
|
|
||||||
fetch = "fastfetch"; # "nerdfetch" | "neofetch" | "pfetch" | "none"
|
|
||||||
|
|
||||||
bar = {
|
|
||||||
position = "top"; # "top" | "bottom"
|
|
||||||
transparent = true;
|
|
||||||
transparentButtons = false;
|
|
||||||
floating = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
rounding = 0;
|
|
||||||
gaps-in = 5;
|
|
||||||
gaps-out = 10;
|
|
||||||
active-opacity = 1;
|
|
||||||
inactive-opacity = 1;
|
|
||||||
blur = false;
|
|
||||||
border-size = 4;
|
|
||||||
animation-speed = "slow"; # "fast" | "medium" | "slow"
|
|
||||||
fetch = "fastfetch"; # "nerdfetch" | "neofetch" | "pfetch" | "none"
|
|
||||||
|
|
||||||
bar = {
|
|
||||||
position = "top"; # "top" | "bottom"
|
|
||||||
transparent = true;
|
|
||||||
transparentButtons = false;
|
|
||||||
floating = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
97
common/style/vars/vars.nix
Normal file
97
common/style/vars/vars.nix
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.theme = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
default = {
|
||||||
|
rounding = 20;
|
||||||
|
gaps-in = 10;
|
||||||
|
gaps-out = 10 * 2;
|
||||||
|
active-opacity = 0.96;
|
||||||
|
inactive-opacity = 0.92;
|
||||||
|
blur = true;
|
||||||
|
border-size = 3;
|
||||||
|
animation-speed = "fast"; # "fast" | "medium" | "slow"
|
||||||
|
fetch = "none"; # "nerdfetch" | "neofetch" | "pfetch" | "none"
|
||||||
|
textColorOnWallpaper = config.lib.stylix.colors.base01; # Color of the text displayed on the wallpaper (Lockscreen, display manager, ...)
|
||||||
|
|
||||||
|
bar = {
|
||||||
|
# Hyprpanel
|
||||||
|
position = "top"; # "top" | "bottom"
|
||||||
|
transparent = true;
|
||||||
|
transparentButtons = false;
|
||||||
|
floating = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description = "Theme configuration options";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.stylix = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# See https://tinted-theming.github.io/tinted-gallery/ for more schemes
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-latte.yaml";
|
||||||
|
# base16Scheme = {
|
||||||
|
# base00 = "09090B"; # Default Background
|
||||||
|
# base01 = "1c1e1f"; # Lighter Background (Used for status bars, line number and folding marks)
|
||||||
|
# base02 = "313244"; # Selection Background
|
||||||
|
# base03 = "45475a"; # Comments, Invisibles, Line Highlighting
|
||||||
|
# base04 = "585b70"; # Dark Foreground (Used for status bars)
|
||||||
|
# base05 = "cdd6f4"; # Default Foreground, Caret, Delimiters, Operators
|
||||||
|
# base06 = "f5e0dc"; # Light Foreground (Not often used)
|
||||||
|
# base07 = "b4befe"; # Light Background (Not often used)
|
||||||
|
# base08 = "f38ba8"; # Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||||
|
# base09 = "fab387"; # Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||||
|
# base0A = "f9e2af"; # Classes, Markup Bold, Search Text Background
|
||||||
|
# base0B = "a6e3a1"; # Strings, Inherited Class, Markup Code, Diff Inserted
|
||||||
|
# base0C = "94e2d5"; # Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||||
|
# base0D = "c5afd4"; # Functions, Methods, Attribute IDs, Headings, Accent color
|
||||||
|
# base0E = "cba6f7"; # Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||||
|
# base0F = "f2cdcd"; # Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||||
|
# };
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
name = "phinger-cursors-light";
|
||||||
|
package = pkgs.phinger-cursors;
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
serif = {
|
||||||
|
package = pkgs.lmodern;
|
||||||
|
name = "Latin Modern Roman";
|
||||||
|
};
|
||||||
|
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.inter;
|
||||||
|
name = "Inter";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.fira-code;
|
||||||
|
name = "Fire Code";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
sizes = {
|
||||||
|
applications = 13;
|
||||||
|
desktop = 13;
|
||||||
|
popups = 13;
|
||||||
|
terminal = 13;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
polarity = "light";
|
||||||
|
image = pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/refs/heads/main/app/static/wallpapers/black-and-white-forest_minimalist_black-and-white.png";
|
||||||
|
sha256 = "sha256-MOlLRQonZ6UAaSJlysjL8snxnMrSFH9VOLrjXaU82Kw=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
./candlekeep/variables.nix
|
./candlekeep/variables.nix
|
||||||
# ./nvim.nix
|
# ./nvim.nix
|
||||||
../modules/common.nix
|
../modules/common.nix
|
||||||
# ../modules/hyprland.nix
|
../../common/style/vars/vars.nix
|
||||||
../modules/hyprland
|
../modules/hyprland
|
||||||
../modules/common-gui.nix
|
../modules/common-gui.nix
|
||||||
../modules/linux-gui.nix
|
../modules/linux-gui.nix
|
||||||
|
|
@ -60,7 +60,6 @@
|
||||||
# patches = [ ./change-hello-to-hi.patch ];
|
# patches = [ ./change-hello-to-hi.patch ];
|
||||||
# });
|
# });
|
||||||
# })
|
# })
|
||||||
inputs.hyprpanel.overlay
|
|
||||||
];
|
];
|
||||||
# Configure your nixpkgs instance
|
# Configure your nixpkgs instance
|
||||||
config = {
|
config = {
|
||||||
|
|
@ -76,53 +75,6 @@
|
||||||
homeDirectory = "/home/gwg313";
|
homeDirectory = "/home/gwg313";
|
||||||
};
|
};
|
||||||
|
|
||||||
stylix = {
|
|
||||||
fonts = {
|
|
||||||
sizes = {
|
|
||||||
applications = 13; # UI font (GTK/Qt)
|
|
||||||
terminal = 14; # Comfortable for reading code/math
|
|
||||||
desktop = 13; # WM, notifications
|
|
||||||
popups = 12; # Tooltips, menus
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-macchiato.yaml";
|
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/atelier-sulphurpool-light.yaml";
|
|
||||||
image = ../../wallpapers/floating_city.jpg;
|
|
||||||
# polarity = "dark";
|
|
||||||
autoEnable = true;
|
|
||||||
enable = true;
|
|
||||||
targets.nixvim.enable = false;
|
|
||||||
|
|
||||||
opacity.terminal = 1.0;
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
serif = {
|
|
||||||
package = pkgs.lmodern;
|
|
||||||
name = "Latin Modern Roman";
|
|
||||||
};
|
|
||||||
|
|
||||||
sansSerif = {
|
|
||||||
package = pkgs.inter;
|
|
||||||
name = "Inter";
|
|
||||||
};
|
|
||||||
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.fira-code;
|
|
||||||
name = "Fire Code";
|
|
||||||
};
|
|
||||||
|
|
||||||
emoji = {
|
|
||||||
package = pkgs.noto-fonts-emoji;
|
|
||||||
name = "Noto Color Emoji";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
package = pkgs.vanilla-dmz;
|
|
||||||
name = "Vanilla-DMZ";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
../modules/yazi.nix
|
../modules/yazi.nix
|
||||||
../modules/qutebrowser.nix
|
../modules/qutebrowser.nix
|
||||||
../scripts/default.nix
|
../scripts/default.nix
|
||||||
|
../../common/style/vars/vars.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
|
|
@ -74,53 +75,6 @@
|
||||||
homeDirectory = "/home/gwg313";
|
homeDirectory = "/home/gwg313";
|
||||||
};
|
};
|
||||||
|
|
||||||
stylix = {
|
|
||||||
fonts = {
|
|
||||||
sizes = {
|
|
||||||
applications = 13; # UI font (GTK/Qt)
|
|
||||||
terminal = 14; # Comfortable for reading code/math
|
|
||||||
desktop = 13; # WM, notifications
|
|
||||||
popups = 12; # Tooltips, menus
|
|
||||||
};
|
|
||||||
};
|
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-latte.yaml";
|
|
||||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/atelier-sulphurpool-light.yaml";
|
|
||||||
image = ../../wallpapers/nixos-wallpaper-catppuccin-latte.png;
|
|
||||||
# polarity = "dark";
|
|
||||||
autoEnable = true;
|
|
||||||
enable = true;
|
|
||||||
targets.nixvim.enable = false;
|
|
||||||
|
|
||||||
opacity.terminal = 1.0;
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
serif = {
|
|
||||||
package = pkgs.lmodern;
|
|
||||||
name = "Latin Modern Roman";
|
|
||||||
};
|
|
||||||
|
|
||||||
sansSerif = {
|
|
||||||
package = pkgs.inter;
|
|
||||||
name = "Inter";
|
|
||||||
};
|
|
||||||
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.fira-code;
|
|
||||||
name = "Fire Code";
|
|
||||||
};
|
|
||||||
|
|
||||||
emoji = {
|
|
||||||
package = pkgs.noto-fonts-emoji;
|
|
||||||
name = "Noto Color Emoji";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
package = pkgs.vanilla-dmz;
|
|
||||||
name = "Vanilla-DMZ";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
./obs.nix
|
./obs.nix
|
||||||
./thunar.nix
|
./thunar.nix
|
||||||
./zen.nix
|
./zen.nix
|
||||||
./xdg.nix
|
|
||||||
./mime.nix
|
./mime.nix
|
||||||
./nixcord.nix
|
./nixcord.nix
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@
|
||||||
with pkgs;
|
with pkgs;
|
||||||
[
|
[
|
||||||
ncdu
|
ncdu
|
||||||
|
minio-client
|
||||||
|
|
||||||
# Editors
|
# Editors
|
||||||
# neovim # Improved version of vim, often used with overlays.
|
# neovim # Improved version of vim, often used with overlays.
|
||||||
# vim # Highly configurable text editor popular for efficiency and extensibility.
|
# vim # Highly configurable text editor popular for efficiency and extensibility.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
# Fzf is a general-purpose command-line fuzzy finder.
|
# Fzf is a general-purpose command-line fuzzy finder.
|
||||||
{ config, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
accent = "#" + config.lib.stylix.colors.base0D;
|
accent = "#" + config.lib.stylix.colors.base0D;
|
||||||
foreground = "#" + config.lib.stylix.colors.base05;
|
foreground = "#" + config.lib.stylix.colors.base05;
|
||||||
|
|
|
||||||
12
home-manager/modules/gammastep.nix
Normal file
12
home-manager/modules/gammastep.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
services.gammastep = {
|
||||||
|
enable = true;
|
||||||
|
latitude = 45.4;
|
||||||
|
longitude = -75.7;
|
||||||
|
temperature = {
|
||||||
|
day = 6500;
|
||||||
|
night = 3500;
|
||||||
|
};
|
||||||
|
tray = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Hypridle is a daemon that listens for user activity and runs commands when the user is idle.
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
services.hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
|
|
||||||
general = {
|
|
||||||
ignore_dbus_inhibit = false;
|
|
||||||
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
|
||||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
|
||||||
};
|
|
||||||
|
|
||||||
listener = [
|
|
||||||
{
|
|
||||||
timeout = 600;
|
|
||||||
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
timeout = 660;
|
|
||||||
on-timeout = "systemctl suspend";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,206 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ./waybar.nix ];
|
|
||||||
|
|
||||||
# services.mako = {
|
|
||||||
# enable = true;
|
|
||||||
# defaultTimeout = 4000;
|
|
||||||
# borderRadius = 5;
|
|
||||||
# borderSize = 2;
|
|
||||||
# layer = "overlay";
|
|
||||||
# };
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.enable = true;
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
xwayland.force_zero_scaling = true;
|
|
||||||
|
|
||||||
input = {
|
|
||||||
sensitivity = 0.4;
|
|
||||||
# todo custom
|
|
||||||
accel_profile = "adaptive";
|
|
||||||
# accel_profile = "custom 20000 0.755 0.05 0.855 0.06";
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = true;
|
|
||||||
scroll_factor = 0.38;
|
|
||||||
clickfinger_behavior = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 16;
|
|
||||||
resize_on_border = true;
|
|
||||||
hover_icon_on_border = false;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
|
|
||||||
master = {
|
|
||||||
# new_is_master = false;
|
|
||||||
smart_resizing = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
|
||||||
force_split = 2;
|
|
||||||
preserve_split = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 5;
|
|
||||||
active_opacity = 0.93;
|
|
||||||
inactive_opacity = 0.93;
|
|
||||||
fullscreen_opacity = 1;
|
|
||||||
# drop_shadow = false;
|
|
||||||
};
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
bezier = [
|
|
||||||
"myBezier, 0.22, 1, 0.36, 1"
|
|
||||||
"snap, 0, 1, 0, 1"
|
|
||||||
];
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows, 1, 7, myBezier"
|
|
||||||
"windowsOut, 1, 3, default, popin 60%"
|
|
||||||
"border, 1, 0.5, snap"
|
|
||||||
"borderangle, 1, 0.5, snap"
|
|
||||||
"fade, 1, 0.001, myBezier"
|
|
||||||
"workspaces, 1, 0.8, myBezier, fade"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
|
||||||
gestures = {
|
|
||||||
workspace_swipe = true;
|
|
||||||
workspace_swipe_fingers = 3;
|
|
||||||
workspace_swipe_cancel_ratio = 0.6;
|
|
||||||
workspace_swipe_min_speed_to_force = 30;
|
|
||||||
workspace_swipe_distance = 2000;
|
|
||||||
workspace_swipe_invert = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
disable_hyprland_logo = true;
|
|
||||||
disable_splash_rendering = true;
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
mouse_move_enables_dpms = true;
|
|
||||||
key_press_enables_dpms = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
# general binds
|
|
||||||
",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock when closing Lid
|
|
||||||
# "$mod, RETURN, exec, ${pkgs.alacritty}/bin/alacritty"
|
|
||||||
"$mod, RETURN, exec, ${pkgs.ghostty}/bin/ghostty"
|
|
||||||
"$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus
|
|
||||||
"$mod, Q, killactive"
|
|
||||||
"SUPER_SHIFT, Q, exec, ${pkgs.wlogout}/bin/wlogout"
|
|
||||||
"$mod, SPACE, exec, pkill fuzzel || ${pkgs.fuzzel}/bin/fuzzel" # pkill or allows for toggle
|
|
||||||
"SUPER_SHIFT, SPACE, togglefloating"
|
|
||||||
"$mod, F, fullscreen"
|
|
||||||
# "$mod,F, exec, hyprfocus-toggle" # Toggle HyprFocus
|
|
||||||
"$mod, L, exec, ${pkgs.hyprlock}/bin/hyprlock"
|
|
||||||
"$mod, B, exec, ${pkgs.grim}/bin/grim \"desktop-$(${pkgs.busybox}/bin/date +\"%Y%m%d%H%m\").png"
|
|
||||||
"SUPER_SHIFT, B, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -d)\" - | ${pkgs.wl-clipboard}/bin/wl-copy" # Screenshot selection directly to clipboard
|
|
||||||
|
|
||||||
# Volume
|
|
||||||
",XF86AudioRaiseVolume, exec, ${pkgs.ponymix}/bin/ponymix inc 2"
|
|
||||||
",XF86AudioLowerVolume, exec, ${pkgs.ponymix}/bin/ponymix dec 2"
|
|
||||||
",XF86AudioMute, exec, ${pkgs.ponymix}/bin/ponymix, toggle"
|
|
||||||
|
|
||||||
# Screen Brightness
|
|
||||||
#",XF86MonBrightnessUp, exec, ${pkgs.light}/bin/light -A 10"
|
|
||||||
#",XF86MonBrightnessDown, exec, ${pkgs.light}/bin/light -U 10"
|
|
||||||
# ",XF86MonBrightnessUp, exec, ${pkgs.light}/bin/light -S \"$(${pkgs.light}/bin/light -G | ${pkgs.busybox}/bin/awk '{ print int(($1 + .72) * 1.4) }')\""
|
|
||||||
# ",XF86MonBrightnessDown, exec, ${pkgs.light}/bin/light -S \"$(${pkgs.light}/bin/light -G | ${pkgs.busybox}/bin/awk '{ print int($1 / 1.4) }')\""
|
|
||||||
",XF86MonBrightnessUp, exec, brightness-up" # Brightness Up
|
|
||||||
",XF86MonBrightnessDown, exec, brightness-down" # Brightness Down
|
|
||||||
# move focus
|
|
||||||
"$mod, left, movefocus, l"
|
|
||||||
"$mod, right, movefocus, r"
|
|
||||||
"$mod, up, movefocus, u"
|
|
||||||
"$mod, down, movefocus, d"
|
|
||||||
"$mod,right,workspace,+1"
|
|
||||||
"$mod,left,workspace,-1"
|
|
||||||
|
|
||||||
# workspace switching
|
|
||||||
"$mod, 1, workspace, 1"
|
|
||||||
"$mod, 2, workspace, 2"
|
|
||||||
"$mod, 3, workspace, 3"
|
|
||||||
"$mod, 4, workspace, 4"
|
|
||||||
"$mod, 5, workspace, 5"
|
|
||||||
"$mod, 6, workspace, 6"
|
|
||||||
"$mod, 7, workspace, 7"
|
|
||||||
"$mod, 8, workspace, 8"
|
|
||||||
"$mod, 9, workspace, 9"
|
|
||||||
"$mod, 0, workspace, 10"
|
|
||||||
|
|
||||||
# move window to workspace
|
|
||||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
|
||||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
|
||||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
|
||||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
|
||||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
|
||||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
|
||||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
|
||||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
|
||||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
|
||||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
|
||||||
|
|
||||||
# Scroll through workspaces
|
|
||||||
"$mod, mouse_down, workspace, e+1"
|
|
||||||
"$mod, mouse_up, workspace, e-1"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
# mouse movements
|
|
||||||
"$mod, mouse:272, movewindow"
|
|
||||||
"$mod_ALT, mouse:273, resizewindow"
|
|
||||||
"$mod_ALT, mouse:272, resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
monitor = [
|
|
||||||
# "eDP-1,highres,0x0,1"
|
|
||||||
# "DP-1,preferred,0x0,1"
|
|
||||||
# "HDMI-A-1,2560x0,auto,1"
|
|
||||||
",preferred,auto,1"
|
|
||||||
];
|
|
||||||
# monitor = [ "DP-1,preferred,0x0,1" ];
|
|
||||||
# monitor = [ "HDMI-A-1,2560x0,auto,1" ];
|
|
||||||
|
|
||||||
# monitor = [ "HDMI-A-1,1920x1080@144,auto,1" ];
|
|
||||||
exec = [ "${pkgs.swaybg}/bin/swaybg -i ${config.stylix.image} -m fill" ];
|
|
||||||
exec-once = [
|
|
||||||
# Enables clipboard sync
|
|
||||||
"${pkgs.wl-clipboard}/bin/wl-paste -p | ${pkgs.wl-clipboard}/bin/wl-copy"
|
|
||||||
"${pkgs.wl-clipboard}/bin/wl-paste | ${pkgs.wl-clipboard}/bin/wl-copy -p"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.extraConfig = ''
|
|
||||||
# will switch to a submap called resize
|
|
||||||
bind=$mod,R,submap,resize
|
|
||||||
|
|
||||||
# will start a submap called "resize"
|
|
||||||
submap=resize
|
|
||||||
|
|
||||||
# sets repeatable binds for resizing the active window
|
|
||||||
binde=,right,resizeactive,10 0
|
|
||||||
binde=,left,resizeactive,-10 0
|
|
||||||
binde=,up,resizeactive,0 -10
|
|
||||||
binde=,down,resizeactive,0 10
|
|
||||||
|
|
||||||
# use reset to go back to the global submap
|
|
||||||
bind=,escape,submap,reset
|
|
||||||
|
|
||||||
# will reset the submap, meaning end the current one and return to the global one
|
|
||||||
submap=reset
|
|
||||||
'';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
let
|
let
|
||||||
animationSpeed = config.var.theme.animation-speed;
|
animationSpeed = config.theme.animation-speed;
|
||||||
|
|
||||||
animationDuration =
|
animationDuration =
|
||||||
if animationSpeed == "slow" then
|
if animationSpeed == "slow" then
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,31 @@
|
||||||
|
# So best window tiling manager
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
inputs,
|
inputs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
border-size = config.var.theme.border-size;
|
border-size = config.theme.border-size;
|
||||||
gaps-in = config.var.theme.gaps-in;
|
gaps-in = config.theme.gaps-in;
|
||||||
gaps-out = config.var.theme.gaps-out;
|
gaps-out = config.theme.gaps-out;
|
||||||
active-opacity = config.var.theme.active-opacity;
|
active-opacity = config.theme.active-opacity;
|
||||||
inactive-opacity = config.var.theme.inactive-opacity;
|
inactive-opacity = config.theme.inactive-opacity;
|
||||||
rounding = config.var.theme.rounding;
|
rounding = config.theme.rounding;
|
||||||
blur = config.var.theme.blur;
|
blur = config.theme.blur;
|
||||||
keyboardLayout = config.var.keyboardLayout;
|
keyboardLayout = config.var.keyboardLayout;
|
||||||
|
background = "rgb(" + config.lib.stylix.colors.base00 + ")";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./animations.nix
|
./animations.nix
|
||||||
./bindings.nix
|
./bindings.nix
|
||||||
./polkitagent.nix
|
./polkitagent.nix
|
||||||
./hyprlock.nix
|
./hyprspace.nix
|
||||||
./hypridle.nix
|
|
||||||
./hyprpanel.nix
|
./hyprpanel.nix
|
||||||
# ./hyprspace.nix
|
./hyprlock.nix
|
||||||
|
../gammastep.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
|
@ -52,21 +54,32 @@ in
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
systemd.enable = true;
|
systemd = {
|
||||||
package = inputs.hyprland.packages."${pkgs.system}".hyprland;
|
enable = false;
|
||||||
|
variables = [
|
||||||
|
"--all"
|
||||||
|
]; # https://wiki.hyprland.org/Nix/Hyprland-on-Home-Manager/#programs-dont-work-in-systemd-services-but-do-on-the-terminal
|
||||||
|
};
|
||||||
|
package = null;
|
||||||
|
portalPackage = null;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
"$shiftMod" = "SUPER_SHIFT";
|
"$shiftMod" = "SUPER_SHIFT";
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
"dbus-update-activation-environment --systemd --all &"
|
||||||
|
"systemctl --user enable --now hyprpaper.service &"
|
||||||
|
"systemctl --user enable --now hypridle.service &"
|
||||||
|
"systemctl --user enable --now nextcloud-client.service &"
|
||||||
|
];
|
||||||
|
|
||||||
monitor = [
|
monitor = [
|
||||||
"DP-1,2560x2880,0x0, 1"
|
"eDP-2,highres,0x0,1" # My internal laptop screen
|
||||||
"HDMI-A-1,3840x2160, 2560x0, 1"
|
",prefered,auto,1" # default
|
||||||
",prefered,auto,1"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
env = [
|
env = [
|
||||||
"XDG_SESSION_TYPE,wayland"
|
|
||||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||||
"MOZ_ENABLE_WAYLAND,1"
|
"MOZ_ENABLE_WAYLAND,1"
|
||||||
"ANKI_WAYLAND,1"
|
"ANKI_WAYLAND,1"
|
||||||
|
|
@ -78,7 +91,6 @@ in
|
||||||
"QT_QPA_PLATFORM=wayland,xcb"
|
"QT_QPA_PLATFORM=wayland,xcb"
|
||||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||||
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
||||||
# "GTK_THEME,FlatColor:dark"
|
|
||||||
"__GL_GSYNC_ALLOWED,0"
|
"__GL_GSYNC_ALLOWED,0"
|
||||||
"__GL_VRR_ALLOWED,0"
|
"__GL_VRR_ALLOWED,0"
|
||||||
"DISABLE_QT5_COMPAT,0"
|
"DISABLE_QT5_COMPAT,0"
|
||||||
|
|
@ -87,10 +99,8 @@ in
|
||||||
"WLR_BACKEND,vulkan"
|
"WLR_BACKEND,vulkan"
|
||||||
"WLR_RENDERER,vulkan"
|
"WLR_RENDERER,vulkan"
|
||||||
"WLR_NO_HARDWARE_CURSORS,1"
|
"WLR_NO_HARDWARE_CURSORS,1"
|
||||||
"XDG_SESSION_TYPE,wayland"
|
|
||||||
"SDL_VIDEODRIVER,wayland"
|
"SDL_VIDEODRIVER,wayland"
|
||||||
"CLUTTER_BACKEND,wayland"
|
"CLUTTER_BACKEND,wayland"
|
||||||
"AQ_DRM_DEVICES,/dev/dri/card2:/dev/dri/card1" # CHANGEME: Related to the GPU
|
|
||||||
];
|
];
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
|
|
@ -103,9 +113,8 @@ in
|
||||||
gaps_in = gaps-in;
|
gaps_in = gaps-in;
|
||||||
gaps_out = gaps-out;
|
gaps_out = gaps-out;
|
||||||
border_size = border-size;
|
border_size = border-size;
|
||||||
# border_part_of_window = true;
|
layout = "master";
|
||||||
# layout = "master";
|
"col.inactive_border" = lib.mkForce background;
|
||||||
layout = "dwindle";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
decoration = {
|
decoration = {
|
||||||
|
|
@ -119,6 +128,7 @@ in
|
||||||
};
|
};
|
||||||
blur = {
|
blur = {
|
||||||
enabled = if blur then "true" else "false";
|
enabled = if blur then "true" else "false";
|
||||||
|
size = 18;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -128,11 +138,6 @@ in
|
||||||
mfact = 0.5;
|
mfact = 0.5;
|
||||||
};
|
};
|
||||||
|
|
||||||
dwindle = {
|
|
||||||
force_split = 2;
|
|
||||||
preserve_split = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
gestures = {
|
gestures = {
|
||||||
workspace_swipe = true;
|
workspace_swipe = true;
|
||||||
};
|
};
|
||||||
|
|
@ -144,13 +149,40 @@ in
|
||||||
disable_autoreload = true;
|
disable_autoreload = true;
|
||||||
focus_on_activate = true;
|
focus_on_activate = true;
|
||||||
new_window_takes_over_fullscreen = 2;
|
new_window_takes_over_fullscreen = 2;
|
||||||
middle_click_paste = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
windowrulev2 = [
|
windowrulev2 = [
|
||||||
"float, tag:modal"
|
"float, tag:modal"
|
||||||
"pin, tag:modal"
|
"pin, tag:modal"
|
||||||
"center, tag:modal"
|
"center, tag:modal"
|
||||||
|
# telegram media viewer
|
||||||
|
"float, title:^(Media viewer)$"
|
||||||
|
|
||||||
|
# Bitwarden extension
|
||||||
|
"float, title:^(.*Bitwarden Password Manager.*)$"
|
||||||
|
|
||||||
|
# gnome calculator
|
||||||
|
"float, class:^(org.gnome.Calculator)$"
|
||||||
|
"size 360 490, class:^(org.gnome.Calculator)$"
|
||||||
|
|
||||||
|
# make Firefox/Zen PiP window floating and sticky
|
||||||
|
"float, title:^(Picture-in-Picture)$"
|
||||||
|
"pin, title:^(Picture-in-Picture)$"
|
||||||
|
|
||||||
|
# idle inhibit while watching videos
|
||||||
|
"idleinhibit focus, class:^(mpv|.+exe|celluloid)$"
|
||||||
|
"idleinhibit focus, class:^(zen)$, title:^(.*YouTube.*)$"
|
||||||
|
"idleinhibit fullscreen, class:^(zen)$"
|
||||||
|
|
||||||
|
"dimaround, class:^(gcr-prompter)$"
|
||||||
|
"dimaround, class:^(xdg-desktop-portal-gtk)$"
|
||||||
|
"dimaround, class:^(polkit-gnome-authentication-agent-1)$"
|
||||||
|
"dimaround, class:^(zen)$, title:^(File Upload)$"
|
||||||
|
|
||||||
|
# fix xwayland apps
|
||||||
|
"rounding 0, xwayland:1"
|
||||||
|
"center, class:^(.*jetbrains.*)$, title:^(Confirm Exit|Open Project|win424|win201|splash)$"
|
||||||
|
"size 640 400, class:^(.*jetbrains.*)$, title:^(splash)$"
|
||||||
];
|
];
|
||||||
|
|
||||||
layerrule = [
|
layerrule = [
|
||||||
|
|
@ -161,7 +193,6 @@ in
|
||||||
input = {
|
input = {
|
||||||
# kb_layout = keyboardLayout;
|
# kb_layout = keyboardLayout;
|
||||||
|
|
||||||
# kb_options = "caps:escape";
|
|
||||||
follow_mouse = 1;
|
follow_mouse = 1;
|
||||||
sensitivity = 0.5;
|
sensitivity = 0.5;
|
||||||
repeat_delay = 300;
|
repeat_delay = 300;
|
||||||
|
|
@ -173,8 +204,6 @@ in
|
||||||
clickfinger_behavior = true;
|
clickfinger_behavior = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.user.targets.hyprland-session.Unit.Wants = [ "xdg-desktop-autostart.target" ];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
services.hypridle = {
|
services.hypridle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
||||||
general = {
|
general = {
|
||||||
ignore_dbus_inhibit = false;
|
ignore_dbus_inhibit = false;
|
||||||
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||||
|
|
@ -18,10 +17,10 @@
|
||||||
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
# {
|
||||||
timeout = 660;
|
# timeout = 660;
|
||||||
on-timeout = "systemctl suspend";
|
# on-timeout = "systemctl suspend";
|
||||||
}
|
# }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,200 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ./waybar.nix ];
|
|
||||||
|
|
||||||
# services.mako = {
|
|
||||||
# enable = true;
|
|
||||||
# defaultTimeout = 4000;
|
|
||||||
# borderRadius = 5;
|
|
||||||
# borderSize = 2;
|
|
||||||
# layer = "overlay";
|
|
||||||
# };
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.enable = true;
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
xwayland.force_zero_scaling = true;
|
|
||||||
|
|
||||||
input = {
|
|
||||||
sensitivity = 0.4;
|
|
||||||
# todo custom
|
|
||||||
accel_profile = "adaptive";
|
|
||||||
# accel_profile = "custom 20000 0.755 0.05 0.855 0.06";
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = true;
|
|
||||||
scroll_factor = 0.38;
|
|
||||||
tap-and-drag = true;
|
|
||||||
middle_button_emulation = true;
|
|
||||||
tap-to-click = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 16;
|
|
||||||
resize_on_border = true;
|
|
||||||
hover_icon_on_border = false;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
|
|
||||||
master = {
|
|
||||||
# new_is_master = false;
|
|
||||||
smart_resizing = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
|
||||||
force_split = 2;
|
|
||||||
preserve_split = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 5;
|
|
||||||
active_opacity = 0.93;
|
|
||||||
inactive_opacity = 0.93;
|
|
||||||
fullscreen_opacity = 1;
|
|
||||||
# drop_shadow = false;
|
|
||||||
};
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
bezier = [
|
|
||||||
"myBezier, 0.22, 1, 0.36, 1"
|
|
||||||
"snap, 0, 1, 0, 1"
|
|
||||||
];
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows, 1, 7, myBezier"
|
|
||||||
"windowsOut, 1, 3, default, popin 60%"
|
|
||||||
"border, 1, 0.5, snap"
|
|
||||||
"borderangle, 1, 0.5, snap"
|
|
||||||
"fade, 1, 0.001, myBezier"
|
|
||||||
"workspaces, 1, 0.8, myBezier, fade"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
|
||||||
gestures = {
|
|
||||||
workspace_swipe = true;
|
|
||||||
workspace_swipe_fingers = 3;
|
|
||||||
workspace_swipe_cancel_ratio = 0.6;
|
|
||||||
workspace_swipe_min_speed_to_force = 30;
|
|
||||||
workspace_swipe_distance = 2000;
|
|
||||||
workspace_swipe_invert = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
disable_hyprland_logo = true;
|
|
||||||
disable_splash_rendering = true;
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
mouse_move_enables_dpms = true;
|
|
||||||
key_press_enables_dpms = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
# general binds
|
|
||||||
",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock when closing Lid
|
|
||||||
# "$mod, RETURN, exec, ${pkgs.alacritty}/bin/alacritty"
|
|
||||||
"$mod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
|
|
||||||
"$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus
|
|
||||||
"$mod, Q, killactive"
|
|
||||||
"SUPER_SHIFT, Q, exec, ${pkgs.wlogout}/bin/wlogout"
|
|
||||||
"$mod, SPACE, exec, pkill fuzzel || ${pkgs.fuzzel}/bin/fuzzel" # pkill or allows for toggle
|
|
||||||
"SUPER_SHIFT, SPACE, togglefloating"
|
|
||||||
# "$mod, F, fullscreen"
|
|
||||||
"$mod,F, exec, fullscreen"
|
|
||||||
"$mod, L, exec, ${pkgs.hyprlock}/bin/hyprlock"
|
|
||||||
"$mod, B, exec, ${pkgs.grim}/bin/grim \"desktop-$(${pkgs.busybox}/bin/date +\"%Y%m%d%H%m\").png"
|
|
||||||
"SUPER_SHIFT, B, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -d)\" - | ${pkgs.wl-clipboard}/bin/wl-copy" # Screenshot selection directly to clipboard
|
|
||||||
|
|
||||||
# Volume
|
|
||||||
",XF86AudioRaiseVolume, exec, ${pkgs.ponymix}/bin/ponymix inc 2"
|
|
||||||
",XF86AudioLowerVolume, exec, ${pkgs.ponymix}/bin/ponymix dec 2"
|
|
||||||
",XF86AudioMute, exec, ${pkgs.ponymix}/bin/ponymix, toggle"
|
|
||||||
|
|
||||||
# Screen Brightness
|
|
||||||
#",XF86MonBrightnessUp, exec, ${pkgs.light}/bin/light -A 10"
|
|
||||||
#",XF86MonBrightnessDown, exec, ${pkgs.light}/bin/light -U 10"
|
|
||||||
# ",XF86MonBrightnessUp, exec, ${pkgs.light}/bin/light -S \"$(${pkgs.light}/bin/light -G | ${pkgs.busybox}/bin/awk '{ print int(($1 + .72) * 1.4) }')\""
|
|
||||||
# ",XF86MonBrightnessDown, exec, ${pkgs.light}/bin/light -S \"$(${pkgs.light}/bin/light -G | ${pkgs.busybox}/bin/awk '{ print int($1 / 1.4) }')\""
|
|
||||||
",XF86MonBrightnessUp, exec, brightness-up" # Brightness Up
|
|
||||||
",XF86MonBrightnessDown, exec, brightness-down" # Brightness Down
|
|
||||||
# move focus
|
|
||||||
"$mod, left, movefocus, l"
|
|
||||||
"$mod, right, movefocus, r"
|
|
||||||
"$mod, up, movefocus, u"
|
|
||||||
"$mod, down, movefocus, d"
|
|
||||||
"$mod,right,workspace,+1"
|
|
||||||
"$mod,left,workspace,-1"
|
|
||||||
|
|
||||||
# workspace switching
|
|
||||||
"$mod, 1, workspace, 1"
|
|
||||||
"$mod, 2, workspace, 2"
|
|
||||||
"$mod, 3, workspace, 3"
|
|
||||||
"$mod, 4, workspace, 4"
|
|
||||||
"$mod, 5, workspace, 5"
|
|
||||||
"$mod, 6, workspace, 6"
|
|
||||||
"$mod, 7, workspace, 7"
|
|
||||||
"$mod, 8, workspace, 8"
|
|
||||||
"$mod, 9, workspace, 9"
|
|
||||||
"$mod, 0, workspace, 10"
|
|
||||||
|
|
||||||
# move window to workspace
|
|
||||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
|
||||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
|
||||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
|
||||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
|
||||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
|
||||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
|
||||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
|
||||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
|
||||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
|
||||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
|
||||||
|
|
||||||
# Scroll through workspaces
|
|
||||||
"$mod, mouse_down, workspace, e+1"
|
|
||||||
"$mod, mouse_up, workspace, e-1"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
# mouse movements
|
|
||||||
"$mod, mouse:272, movewindow"
|
|
||||||
"$mod_ALT, mouse:273, resizewindow"
|
|
||||||
"$mod_ALT, mouse:272, resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
monitor = [ ",preferred,auto,1" ];
|
|
||||||
# monitor = [ "HDMI-A-1,1920x1080@144,auto,1" ];
|
|
||||||
exec = [ "${pkgs.swaybg}/bin/swaybg -i ${config.stylix.image} -m fill" ];
|
|
||||||
exec-once = [
|
|
||||||
# Enables clipboard sync
|
|
||||||
"${pkgs.wl-clipboard}/bin/wl-paste -p | ${pkgs.wl-clipboard}/bin/wl-copy"
|
|
||||||
"${pkgs.wl-clipboard}/bin/wl-paste | ${pkgs.wl-clipboard}/bin/wl-copy -p"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.extraConfig = ''
|
|
||||||
# will switch to a submap called resize
|
|
||||||
bind=$mod,R,submap,resize
|
|
||||||
|
|
||||||
# will start a submap called "resize"
|
|
||||||
submap=resize
|
|
||||||
|
|
||||||
# sets repeatable binds for resizing the active window
|
|
||||||
binde=,right,resizeactive,10 0
|
|
||||||
binde=,left,resizeactive,-10 0
|
|
||||||
binde=,up,resizeactive,0 -10
|
|
||||||
binde=,down,resizeactive,0 10
|
|
||||||
|
|
||||||
# use reset to go back to the global submap
|
|
||||||
bind=,escape,submap,reset
|
|
||||||
|
|
||||||
# will reset the submap, meaning end the current one and return to the global one
|
|
||||||
submap=reset
|
|
||||||
'';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
{ config, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
foreground = "rgba(216, 222, 233, 0.70)";
|
foreground = "rgba(${config.theme.textColorOnWallpaper}ee)";
|
||||||
imageStr = toString config.stylix.image;
|
|
||||||
font = config.stylix.fonts.serif.name;
|
font = config.stylix.fonts.serif.name;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
@ -17,7 +20,6 @@ in
|
||||||
# BACKGROUND
|
# BACKGROUND
|
||||||
background = {
|
background = {
|
||||||
monitor = "";
|
monitor = "";
|
||||||
# path = imageStr;
|
|
||||||
blur_passes = 0;
|
blur_passes = 0;
|
||||||
contrast = 0.8916;
|
contrast = 0.8916;
|
||||||
brightness = 0.7172;
|
brightness = 0.7172;
|
||||||
|
|
@ -73,8 +75,8 @@ in
|
||||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
||||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
||||||
dots_center = true;
|
dots_center = true;
|
||||||
outer_color = "rgba(255, 255, 255, 0)";
|
outer_color = "rgba(25, 25, 25, 0)";
|
||||||
inner_color = "rgba(255, 255, 255, 0.1)";
|
inner_color = "rgba(25, 25, 25, 0.1)";
|
||||||
font_color = foreground;
|
font_color = foreground;
|
||||||
fade_on_empty = false;
|
fade_on_empty = false;
|
||||||
font_family = font + " Bold";
|
font_family = font + " Bold";
|
||||||
|
|
|
||||||
|
|
@ -1,49 +1,51 @@
|
||||||
# Hyprpanel is the bar on top of the screen
|
# Hyprpanel is the bar on top of the screen
|
||||||
# Display informations like workspaces, battery, wifi, ...
|
# Display information like workspaces, battery, wifi, ...
|
||||||
{ inputs, config, ... }:
|
{ config, ... }:
|
||||||
let
|
let
|
||||||
transparentButtons = config.var.theme.bar.transparentButtons;
|
transparentButtons = config.theme.bar.transparentButtons;
|
||||||
|
|
||||||
accent = "#${config.lib.stylix.colors.base0D}";
|
accent = "#${config.lib.stylix.colors.base0D}";
|
||||||
accent-alt = "#${config.lib.stylix.colors.base03}";
|
accent-alt = "#${config.lib.stylix.colors.base03}";
|
||||||
background = "#${config.lib.stylix.colors.base00}";
|
background = "#${config.lib.stylix.colors.base00}";
|
||||||
background-alt = "#${config.lib.stylix.colors.base01}";
|
background-alt = "#${config.lib.stylix.colors.base01}";
|
||||||
foreground = "#${config.lib.stylix.colors.base05}";
|
foreground = "#${config.lib.stylix.colors.base05}";
|
||||||
|
foregroundOnWallpaper = "#${config.theme.textColorOnWallpaper}";
|
||||||
font = "${config.stylix.fonts.serif.name}";
|
font = "${config.stylix.fonts.serif.name}";
|
||||||
fontSize = "${toString config.stylix.fonts.sizes.desktop}";
|
fontSizeForHyprpanel = "${toString config.stylix.fonts.sizes.desktop}px";
|
||||||
|
|
||||||
rounding = config.var.theme.rounding;
|
rounding = config.theme.rounding;
|
||||||
border-size = config.var.theme.border-size;
|
border-size = config.theme.border-size;
|
||||||
|
|
||||||
gaps-out = config.var.theme.gaps-out;
|
gaps-out = config.theme.gaps-out;
|
||||||
gaps-in = config.var.theme.gaps-in;
|
gaps-in = config.theme.gaps-in;
|
||||||
|
|
||||||
floating = config.var.theme.bar.floating;
|
floating = config.theme.bar.floating;
|
||||||
transparent = config.var.theme.bar.transparent;
|
transparent = config.theme.bar.transparent;
|
||||||
position = config.var.theme.bar.position;
|
position = config.theme.bar.position; # "top" ou "bottom"
|
||||||
|
|
||||||
|
notificationOpacity = 90;
|
||||||
|
|
||||||
location = config.var.location;
|
location = config.var.location;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
wayland.windowManager.hyprland.settings.exec-once = [ "hyprpanel" ];
|
||||||
imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ];
|
|
||||||
|
|
||||||
programs.hyprpanel = {
|
programs.hyprpanel = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
|
||||||
hyprland.enable = true;
|
|
||||||
overwrite.enable = true;
|
|
||||||
overlay.enable = true;
|
|
||||||
settings = {
|
settings = {
|
||||||
layout = {
|
layout = {
|
||||||
"bar.layouts" = {
|
bar.layouts = {
|
||||||
"0" = {
|
"*" = {
|
||||||
"left" = [
|
"left" = [
|
||||||
"dashboard"
|
"dashboard"
|
||||||
"workspaces"
|
"workspaces"
|
||||||
"windowtitle"
|
"windowtitle"
|
||||||
];
|
];
|
||||||
"middle" = [ "media" ];
|
"middle" = [
|
||||||
|
"media"
|
||||||
|
"cava"
|
||||||
|
];
|
||||||
"right" = [
|
"right" = [
|
||||||
"systray"
|
"systray"
|
||||||
"volume"
|
"volume"
|
||||||
|
|
@ -56,131 +58,157 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
override = {
|
|
||||||
"theme.font.name" = "${font}";
|
|
||||||
"theme.font.size" = "${fontSize}px";
|
|
||||||
"theme.bar.outer_spacing" = "${if floating && transparent then "0" else "8"}px";
|
|
||||||
"theme.bar.buttons.y_margins" = "${if floating && transparent then "0" else "8"}px";
|
|
||||||
"theme.bar.buttons.spacing" = "0.3em";
|
|
||||||
"theme.bar.buttons.radius" = "${
|
|
||||||
if transparent then toString rounding else toString (rounding - 8)
|
|
||||||
}px";
|
|
||||||
"theme.bar.floating" = "${if floating then "true" else "false"}";
|
|
||||||
"theme.bar.buttons.padding_x" = "0.8rem";
|
|
||||||
"theme.bar.buttons.padding_y" = "0.4rem";
|
|
||||||
"theme.bar.buttons.workspaces.hover" = "${accent-alt}";
|
|
||||||
"theme.bar.buttons.workspaces.active" = "${accent}";
|
|
||||||
"theme.bar.buttons.workspaces.available" = "${accent-alt}";
|
|
||||||
"theme.bar.buttons.workspaces.occupied" = "${accent-alt}";
|
|
||||||
"theme.bar.margin_top" = "${if position == "top" then toString (gaps-in * 2) else "0"}px";
|
|
||||||
"theme.bar.margin_bottom" = "${if position == "top" then "0" else toString (gaps-in * 2)}px";
|
|
||||||
"theme.bar.margin_sides" = "${toString gaps-out}px";
|
|
||||||
"theme.bar.border_radius" = "${toString rounding}px";
|
|
||||||
"bar.launcher.icon" = "";
|
|
||||||
"theme.bar.transparent" = "${if transparent then "true" else "false"}";
|
|
||||||
"bar.workspaces.show_numbered" = false;
|
|
||||||
"bar.workspaces.workspaces" = 5;
|
|
||||||
"bar.workspaces.hideUnoccupied" = false;
|
|
||||||
"bar.windowtitle.label" = true;
|
|
||||||
"bar.volume.label" = false;
|
|
||||||
"bar.network.truncation_size" = 12;
|
|
||||||
"bar.bluetooth.label" = false;
|
|
||||||
"bar.clock.format" = "%a %b %d %I:%M %p";
|
|
||||||
"bar.notifications.show_total" = true;
|
|
||||||
"theme.notification.border_radius" = "${toString rounding}px";
|
|
||||||
"theme.osd.enable" = true;
|
|
||||||
"theme.osd.orientation" = "vertical";
|
|
||||||
"theme.osd.location" = "left";
|
|
||||||
"theme.osd.radius" = "${toString rounding}px";
|
|
||||||
"theme.osd.margins" = "0px 0px 0px 10px";
|
|
||||||
"theme.osd.muted_zero" = true;
|
|
||||||
"menus.clock.weather.location" = "${location}";
|
|
||||||
"menus.clock.weather.unit" = "metric";
|
|
||||||
"menus.dashboard.powermenu.confirmation" = false;
|
|
||||||
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut1.icon" = "";
|
theme.font.name = font;
|
||||||
"menus.dashboard.shortcuts.left.shortcut1.command" = "zen";
|
theme.font.size = fontSizeForHyprpanel;
|
||||||
"menus.dashboard.shortcuts.left.shortcut1.tooltip" = "Zen";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut2.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut2.command" = "caffeine";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut2.tooltip" = "Caffeine";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut3.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut3.command" = "night-shift";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut3.tooltip" = "Night-shift";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut4.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut4.command" = "menu";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut4.tooltip" = "Search Apps";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut1.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut1.command" = "hyprpicker -a";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut1.tooltip" = "Color Picker";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut3.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut3.command" = "screenshot region swappy";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut3.tooltip" = "Screenshot";
|
|
||||||
|
|
||||||
"theme.bar.menus.monochrome" = true;
|
theme.bar.outer_spacing = if floating && transparent then "0px" else "8px";
|
||||||
"wallpaper.enable" = false;
|
theme.bar.buttons.y_margins = if floating && transparent then "0px" else "8px";
|
||||||
"theme.bar.menus.background" = "${background}";
|
theme.bar.buttons.spacing = "0.3em";
|
||||||
"theme.bar.menus.cards" = "${background-alt}";
|
theme.bar.buttons.radius =
|
||||||
"theme.bar.menus.card_radius" = "${toString rounding}px";
|
(if transparent then toString rounding else toString (rounding - 8)) + "px";
|
||||||
"theme.bar.menus.label" = "${foreground}";
|
theme.bar.floating = floating;
|
||||||
"theme.bar.menus.text" = "${foreground}";
|
theme.bar.buttons.padding_x = "0.8rem";
|
||||||
"theme.bar.menus.border.size" = "${toString border-size}px";
|
theme.bar.buttons.padding_y = "0.4rem";
|
||||||
"theme.bar.menus.border.color" = "${accent}";
|
|
||||||
"theme.bar.menus.border.radius" = "${toString rounding}px";
|
theme.bar.margin_top = (if position == "top" then toString (gaps-in * 2) else "0") + "px";
|
||||||
"theme.bar.menus.popover.text" = "${foreground}";
|
theme.bar.margin_bottom = (if position == "top" then "0" else toString (gaps-in * 2)) + "px";
|
||||||
"theme.bar.menus.popover.background" = "${background-alt}";
|
theme.bar.margin_sides = toString gaps-out + "px";
|
||||||
"theme.bar.menus.listitems.active" = "${accent}";
|
theme.bar.border_radius = toString rounding + "px";
|
||||||
"theme.bar.menus.icons.active" = "${accent}";
|
theme.bar.transparent = transparent;
|
||||||
"theme.bar.menus.switch.enabled" = "${accent}";
|
theme.bar.location = position;
|
||||||
"theme.bar.menus.check_radio_button.active" = "${accent}";
|
theme.bar.dropdownGap = "4.5em";
|
||||||
"theme.bar.menus.buttons.default" = "${accent}";
|
theme.bar.menus.shadow = if transparent then "0 0 0 0" else "0px 0px 3px 1px #16161e";
|
||||||
"theme.bar.menus.buttons.active" = "${accent}";
|
theme.bar.buttons.style = "default";
|
||||||
"theme.bar.menus.iconbuttons.active" = "${accent}";
|
theme.bar.buttons.monochrome = true;
|
||||||
"theme.bar.menus.progressbar.foreground" = "${accent}";
|
theme.bar.menus.monochrome = true;
|
||||||
"theme.bar.menus.slider.primary" = "${accent}";
|
theme.bar.menus.card_radius = toString rounding + "px";
|
||||||
"theme.bar.menus.tooltip.background" = "${background-alt}";
|
theme.bar.menus.border.size = toString border-size + "px";
|
||||||
"theme.bar.menus.tooltip.text" = "${foreground}";
|
theme.bar.menus.border.radius = toString rounding + "px";
|
||||||
"theme.bar.menus.dropdownmenu.background" = "${background-alt}";
|
theme.bar.menus.menu.media.card.tint = 90;
|
||||||
"theme.bar.menus.dropdownmenu.text" = "${foreground}";
|
|
||||||
"theme.bar.background" = "${background + (if transparentButtons && transparent then "00" else "")}";
|
bar.launcher.icon = "";
|
||||||
"theme.bar.buttons.style" = "default";
|
bar.workspaces.show_numbered = false;
|
||||||
"theme.bar.buttons.monochrome" = true;
|
bar.workspaces.workspaces = 5;
|
||||||
"theme.bar.buttons.text" = "${foreground}";
|
bar.workspaces.numbered_active_indicator = "color";
|
||||||
"theme.bar.buttons.background" = "${
|
bar.workspaces.monitorSpecific = false;
|
||||||
(if transparent then background else background-alt) + (if transparentButtons then "00" else "")
|
bar.workspaces.applicationIconEmptyWorkspace = "";
|
||||||
}";
|
bar.workspaces.showApplicationIcons = true;
|
||||||
"theme.bar.buttons.icon" = "${accent}";
|
bar.workspaces.showWsIcons = true;
|
||||||
"theme.bar.buttons.notifications.background" = "${background-alt}";
|
|
||||||
"theme.bar.buttons.hover" = "${background}";
|
bar.windowtitle.label = true;
|
||||||
"theme.bar.buttons.notifications.hover" = "${background}";
|
bar.volume.label = false;
|
||||||
"theme.bar.buttons.notifications.total" = "${accent}";
|
bar.network.truncation_size = 12;
|
||||||
"theme.bar.buttons.notifications.icon" = "${accent}";
|
bar.bluetooth.label = false;
|
||||||
"theme.notification.background" = "${background-alt}";
|
bar.clock.format = "%a %b %d %I:%M %p";
|
||||||
"theme.notification.actions.background" = "${accent}";
|
bar.notifications.show_total = true;
|
||||||
"theme.notification.actions.text" = "${foreground}";
|
bar.media.show_active_only = true;
|
||||||
"theme.notification.label" = "${accent}";
|
|
||||||
"theme.notification.border" = "${background-alt}";
|
bar.customModules.updates.pollingInterval = 1440000;
|
||||||
"theme.notification.text" = "${foreground}";
|
bar.customModules.cava.showIcon = false;
|
||||||
"theme.notification.labelicon" = "${accent}";
|
bar.customModules.cava.stereo = true;
|
||||||
"theme.osd.bar_color" = "${accent}";
|
bar.customModules.cava.showActiveOnly = true;
|
||||||
"theme.osd.bar_overflow_color" = "${accent-alt}";
|
|
||||||
"theme.osd.icon" = "${background}";
|
notifications.position = "top right";
|
||||||
"theme.osd.icon_container" = "${accent}";
|
notifications.showActionsOnHover = true;
|
||||||
"theme.osd.label" = "${accent}";
|
theme.notification.opacity = notificationOpacity;
|
||||||
"theme.osd.bar_container" = "${background-alt}";
|
theme.notification.enableShadow = true;
|
||||||
"theme.bar.menus.menu.media.background.color" = "${background-alt}";
|
theme.notification.border_radius = toString rounding + "px";
|
||||||
"theme.bar.menus.menu.media.card.color" = "${background-alt}";
|
|
||||||
"theme.bar.menus.menu.media.card.tint" = 90;
|
theme.osd.enable = true;
|
||||||
"bar.customModules.updates.pollingInterval" = 1440000;
|
theme.osd.orientation = "vertical";
|
||||||
"bar.media.show_active_only" = true;
|
theme.osd.location = "left";
|
||||||
"theme.bar.location" = "${position}";
|
theme.osd.radius = toString rounding + "px";
|
||||||
"bar.workspaces.numbered_active_indicator" = "color";
|
theme.osd.margins = "0px 0px 0px 10px";
|
||||||
"bar.workspaces.monitorSpecific" = false;
|
theme.osd.muted_zero = true;
|
||||||
"bar.workspaces.applicationIconEmptyWorkspace" = "";
|
|
||||||
"bar.workspaces.showApplicationIcons" = true;
|
menus.clock.weather.location = location;
|
||||||
"bar.workspaces.showWsIcons" = true;
|
menus.clock.weather.unit = "metric";
|
||||||
"theme.bar.dropdownGap" = "4.5em";
|
menus.dashboard.powermenu.confirmation = false;
|
||||||
|
menus.dashboard.powermenu.avatar.image = "~/.face.icon";
|
||||||
|
|
||||||
|
menus.dashboard.shortcuts.left.shortcut1.icon = "";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut1.command = "zen";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut1.tooltip = "Zen";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut2.icon = "";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut2.command = "caffeine";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut2.tooltip = "Caffeine";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut3.icon = "";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut3.command = "night-shift";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut3.tooltip = "Night-shift";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut4.icon = "";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut4.command = "menu";
|
||||||
|
menus.dashboard.shortcuts.left.shortcut4.tooltip = "Search Apps";
|
||||||
|
|
||||||
|
menus.dashboard.shortcuts.right.shortcut1.icon = "";
|
||||||
|
menus.dashboard.shortcuts.right.shortcut1.command = "hyprpicker -a";
|
||||||
|
menus.dashboard.shortcuts.right.shortcut1.tooltip = "Color Picker";
|
||||||
|
menus.dashboard.shortcuts.right.shortcut3.icon = "";
|
||||||
|
menus.dashboard.shortcuts.right.shortcut3.command = "screenshot region swappy";
|
||||||
|
menus.dashboard.shortcuts.right.shortcut3.tooltip = "Screenshot";
|
||||||
|
|
||||||
|
menus.power.lowBatteryNotification = true;
|
||||||
|
|
||||||
|
wallpaper.enable = false;
|
||||||
|
|
||||||
|
theme.bar.buttons.workspaces.hover = accent-alt;
|
||||||
|
theme.bar.buttons.workspaces.active = accent;
|
||||||
|
theme.bar.buttons.workspaces.available = accent-alt;
|
||||||
|
theme.bar.buttons.workspaces.occupied = accent-alt;
|
||||||
|
|
||||||
|
theme.bar.menus.background = background;
|
||||||
|
theme.bar.menus.cards = background-alt;
|
||||||
|
theme.bar.menus.label = foreground;
|
||||||
|
theme.bar.menus.text = foreground;
|
||||||
|
theme.bar.menus.border.color = accent;
|
||||||
|
theme.bar.menus.popover.text = foreground;
|
||||||
|
theme.bar.menus.popover.background = background-alt;
|
||||||
|
theme.bar.menus.listitems.active = accent;
|
||||||
|
theme.bar.menus.icons.active = accent;
|
||||||
|
theme.bar.menus.switch.enabled = accent;
|
||||||
|
theme.bar.menus.check_radio_button.active = accent;
|
||||||
|
theme.bar.menus.buttons.default = accent;
|
||||||
|
theme.bar.menus.buttons.active = accent;
|
||||||
|
theme.bar.menus.iconbuttons.active = accent;
|
||||||
|
theme.bar.menus.progressbar.foreground = accent;
|
||||||
|
theme.bar.menus.slider.primary = accent;
|
||||||
|
theme.bar.menus.tooltip.background = background-alt;
|
||||||
|
theme.bar.menus.tooltip.text = foreground;
|
||||||
|
theme.bar.menus.dropdownmenu.background = background-alt;
|
||||||
|
theme.bar.menus.dropdownmenu.text = foreground;
|
||||||
|
|
||||||
|
theme.bar.background = background + (if transparentButtons && transparent then "00" else "");
|
||||||
|
theme.bar.buttons.text =
|
||||||
|
if transparent && transparentButtons then foregroundOnWallpaper else foreground;
|
||||||
|
theme.bar.buttons.background =
|
||||||
|
(if transparent then background else background-alt) + (if transparentButtons then "00" else "");
|
||||||
|
theme.bar.buttons.icon = accent;
|
||||||
|
|
||||||
|
theme.bar.buttons.notifications.background = background-alt;
|
||||||
|
theme.bar.buttons.hover = background;
|
||||||
|
theme.bar.buttons.notifications.hover = background;
|
||||||
|
theme.bar.buttons.notifications.total = accent;
|
||||||
|
theme.bar.buttons.notifications.icon = accent;
|
||||||
|
|
||||||
|
theme.osd.bar_color = accent;
|
||||||
|
theme.osd.bar_overflow_color = accent-alt;
|
||||||
|
theme.osd.icon = background;
|
||||||
|
theme.osd.icon_container = accent;
|
||||||
|
theme.osd.label = accent;
|
||||||
|
theme.osd.bar_container = background-alt;
|
||||||
|
|
||||||
|
theme.bar.menus.menu.media.background.color = background-alt;
|
||||||
|
theme.bar.menus.menu.media.card.color = background-alt;
|
||||||
|
|
||||||
|
theme.notification.background = background-alt;
|
||||||
|
theme.notification.actions.background = accent;
|
||||||
|
theme.notification.actions.text = foreground;
|
||||||
|
theme.notification.label = accent;
|
||||||
|
theme.notification.border = background-alt;
|
||||||
|
theme.notification.text = foreground;
|
||||||
|
theme.notification.labelicon = accent;
|
||||||
|
theme.notification.close_button.background = background-alt;
|
||||||
|
theme.notification.close_button.label = "#f38ba8";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
let
|
|
||||||
foreground = "rgba(216, 222, 233, 0.70)";
|
|
||||||
imageStr = toString config.stylix.image;
|
|
||||||
font = config.stylix.fonts.serif.name;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
grace = 5;
|
|
||||||
no_fade_in = false;
|
|
||||||
disable_loading_bar = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# BACKGROUND
|
|
||||||
background = {
|
|
||||||
monitor = "";
|
|
||||||
# path = imageStr;
|
|
||||||
blur_passes = 0;
|
|
||||||
contrast = 0.8916;
|
|
||||||
brightness = 0.7172;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
vibrancy_darkness = 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
label = [
|
|
||||||
{
|
|
||||||
# Day-Month-Date
|
|
||||||
monitor = "";
|
|
||||||
text = ''cmd[update:1000] echo -e "$(date +"%A, %B %d")"'';
|
|
||||||
color = foreground;
|
|
||||||
font_size = 28;
|
|
||||||
font_family = font + " Bold";
|
|
||||||
position = "0, 490";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
# Time
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = ''cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"'';
|
|
||||||
color = foreground;
|
|
||||||
font_size = 160;
|
|
||||||
font_family = "steelfish outline regular";
|
|
||||||
position = "0, 370";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
# USER
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = " $USER";
|
|
||||||
color = foreground;
|
|
||||||
outline_thickness = 2;
|
|
||||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
|
||||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
|
||||||
dots_center = true;
|
|
||||||
font_size = 18;
|
|
||||||
font_family = font + " Bold";
|
|
||||||
position = "0, -180";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# INPUT FIELD
|
|
||||||
input-field = lib.mkForce {
|
|
||||||
monitor = "";
|
|
||||||
size = "300, 60";
|
|
||||||
outline_thickness = 2;
|
|
||||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
|
||||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
|
||||||
dots_center = true;
|
|
||||||
outer_color = "rgba(255, 255, 255, 0)";
|
|
||||||
inner_color = "rgba(255, 255, 255, 0.1)";
|
|
||||||
font_color = foreground;
|
|
||||||
fade_on_empty = false;
|
|
||||||
font_family = font + " Bold";
|
|
||||||
placeholder_text = "<i>🔒 Enter Password</i>";
|
|
||||||
hide_input = false;
|
|
||||||
position = "0, -250";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,186 +0,0 @@
|
||||||
# Hyprpanel is the bar on top of the screen
|
|
||||||
# Display informations like workspaces, battery, wifi, ...
|
|
||||||
{ inputs, config, ... }:
|
|
||||||
let
|
|
||||||
transparentButtons = config.var.theme.bar.transparentButtons;
|
|
||||||
|
|
||||||
accent = "#${config.lib.stylix.colors.base0D}";
|
|
||||||
accent-alt = "#${config.lib.stylix.colors.base03}";
|
|
||||||
background = "#${config.lib.stylix.colors.base00}";
|
|
||||||
background-alt = "#${config.lib.stylix.colors.base01}";
|
|
||||||
foreground = "#${config.lib.stylix.colors.base05}";
|
|
||||||
font = "${config.stylix.fonts.serif.name}";
|
|
||||||
fontSize = "${toString config.stylix.fonts.sizes.desktop}";
|
|
||||||
|
|
||||||
rounding = config.var.theme.rounding;
|
|
||||||
border-size = config.var.theme.border-size;
|
|
||||||
|
|
||||||
gaps-out = config.var.theme.gaps-out;
|
|
||||||
gaps-in = config.var.theme.gaps-in;
|
|
||||||
|
|
||||||
floating = config.var.theme.bar.floating;
|
|
||||||
transparent = config.var.theme.bar.transparent;
|
|
||||||
position = config.var.theme.bar.position;
|
|
||||||
|
|
||||||
location = config.var.location;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ];
|
|
||||||
|
|
||||||
programs.hyprpanel = {
|
|
||||||
enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
hyprland.enable = true;
|
|
||||||
overwrite.enable = true;
|
|
||||||
overlay.enable = true;
|
|
||||||
settings = {
|
|
||||||
layout = {
|
|
||||||
"bar.layouts" = {
|
|
||||||
"0" = {
|
|
||||||
"left" = [
|
|
||||||
"dashboard"
|
|
||||||
"workspaces"
|
|
||||||
"windowtitle"
|
|
||||||
];
|
|
||||||
"middle" = [ "media" ];
|
|
||||||
"right" = [
|
|
||||||
"systray"
|
|
||||||
"volume"
|
|
||||||
"bluetooth"
|
|
||||||
"battery"
|
|
||||||
"network"
|
|
||||||
"clock"
|
|
||||||
"notifications"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
override = {
|
|
||||||
"theme.font.name" = "${font}";
|
|
||||||
"theme.font.size" = "${fontSize}px";
|
|
||||||
"theme.bar.outer_spacing" = "${if floating && transparent then "0" else "8"}px";
|
|
||||||
"theme.bar.buttons.y_margins" = "${if floating && transparent then "0" else "8"}px";
|
|
||||||
"theme.bar.buttons.spacing" = "0.3em";
|
|
||||||
"theme.bar.buttons.radius" = "${
|
|
||||||
if transparent then toString rounding else toString (rounding - 8)
|
|
||||||
}px";
|
|
||||||
"theme.bar.floating" = "${if floating then "true" else "false"}";
|
|
||||||
"theme.bar.buttons.padding_x" = "0.8rem";
|
|
||||||
"theme.bar.buttons.padding_y" = "0.4rem";
|
|
||||||
"theme.bar.buttons.workspaces.hover" = "${accent-alt}";
|
|
||||||
"theme.bar.buttons.workspaces.active" = "${accent}";
|
|
||||||
"theme.bar.buttons.workspaces.available" = "${accent-alt}";
|
|
||||||
"theme.bar.buttons.workspaces.occupied" = "${accent-alt}";
|
|
||||||
"theme.bar.margin_top" = "${if position == "top" then toString (gaps-in * 2) else "0"}px";
|
|
||||||
"theme.bar.margin_bottom" = "${if position == "top" then "0" else toString (gaps-in * 2)}px";
|
|
||||||
"theme.bar.margin_sides" = "${toString gaps-out}px";
|
|
||||||
"theme.bar.border_radius" = "${toString rounding}px";
|
|
||||||
"bar.launcher.icon" = "";
|
|
||||||
"theme.bar.transparent" = "${if transparent then "true" else "false"}";
|
|
||||||
"bar.workspaces.show_numbered" = false;
|
|
||||||
"bar.workspaces.workspaces" = 5;
|
|
||||||
"bar.workspaces.hideUnoccupied" = false;
|
|
||||||
"bar.windowtitle.label" = true;
|
|
||||||
"bar.volume.label" = false;
|
|
||||||
"bar.network.truncation_size" = 12;
|
|
||||||
"bar.bluetooth.label" = false;
|
|
||||||
"bar.clock.format" = "%a %b %d %I:%M %p";
|
|
||||||
"bar.notifications.show_total" = true;
|
|
||||||
"theme.notification.border_radius" = "${toString rounding}px";
|
|
||||||
"theme.osd.enable" = true;
|
|
||||||
"theme.osd.orientation" = "vertical";
|
|
||||||
"theme.osd.location" = "left";
|
|
||||||
"theme.osd.radius" = "${toString rounding}px";
|
|
||||||
"theme.osd.margins" = "0px 0px 0px 10px";
|
|
||||||
"theme.osd.muted_zero" = true;
|
|
||||||
"menus.clock.weather.location" = "${location}";
|
|
||||||
"menus.clock.weather.unit" = "metric";
|
|
||||||
"menus.dashboard.powermenu.confirmation" = false;
|
|
||||||
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut1.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut1.command" = "zen";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut1.tooltip" = "Zen";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut2.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut2.command" = "caffeine";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut2.tooltip" = "Caffeine";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut3.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut3.command" = "night-shift";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut3.tooltip" = "Night-shift";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut4.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut4.command" = "menu";
|
|
||||||
"menus.dashboard.shortcuts.left.shortcut4.tooltip" = "Search Apps";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut1.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut1.command" = "hyprpicker -a";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut1.tooltip" = "Color Picker";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut3.icon" = "";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut3.command" = "screenshot region swappy";
|
|
||||||
"menus.dashboard.shortcuts.right.shortcut3.tooltip" = "Screenshot";
|
|
||||||
|
|
||||||
"theme.bar.menus.monochrome" = true;
|
|
||||||
"wallpaper.enable" = false;
|
|
||||||
"theme.bar.menus.background" = "${background}";
|
|
||||||
"theme.bar.menus.cards" = "${background-alt}";
|
|
||||||
"theme.bar.menus.card_radius" = "${toString rounding}px";
|
|
||||||
"theme.bar.menus.label" = "${foreground}";
|
|
||||||
"theme.bar.menus.text" = "${foreground}";
|
|
||||||
"theme.bar.menus.border.size" = "${toString border-size}px";
|
|
||||||
"theme.bar.menus.border.color" = "${accent}";
|
|
||||||
"theme.bar.menus.border.radius" = "${toString rounding}px";
|
|
||||||
"theme.bar.menus.popover.text" = "${foreground}";
|
|
||||||
"theme.bar.menus.popover.background" = "${background-alt}";
|
|
||||||
"theme.bar.menus.listitems.active" = "${accent}";
|
|
||||||
"theme.bar.menus.icons.active" = "${accent}";
|
|
||||||
"theme.bar.menus.switch.enabled" = "${accent}";
|
|
||||||
"theme.bar.menus.check_radio_button.active" = "${accent}";
|
|
||||||
"theme.bar.menus.buttons.default" = "${accent}";
|
|
||||||
"theme.bar.menus.buttons.active" = "${accent}";
|
|
||||||
"theme.bar.menus.iconbuttons.active" = "${accent}";
|
|
||||||
"theme.bar.menus.progressbar.foreground" = "${accent}";
|
|
||||||
"theme.bar.menus.slider.primary" = "${accent}";
|
|
||||||
"theme.bar.menus.tooltip.background" = "${background-alt}";
|
|
||||||
"theme.bar.menus.tooltip.text" = "${foreground}";
|
|
||||||
"theme.bar.menus.dropdownmenu.background" = "${background-alt}";
|
|
||||||
"theme.bar.menus.dropdownmenu.text" = "${foreground}";
|
|
||||||
"theme.bar.background" = "${background + (if transparentButtons && transparent then "00" else "")}";
|
|
||||||
"theme.bar.buttons.style" = "default";
|
|
||||||
"theme.bar.buttons.monochrome" = true;
|
|
||||||
"theme.bar.buttons.text" = "${foreground}";
|
|
||||||
"theme.bar.buttons.background" = "${
|
|
||||||
(if transparent then background else background-alt) + (if transparentButtons then "00" else "")
|
|
||||||
}";
|
|
||||||
"theme.bar.buttons.icon" = "${accent}";
|
|
||||||
"theme.bar.buttons.notifications.background" = "${background-alt}";
|
|
||||||
"theme.bar.buttons.hover" = "${background}";
|
|
||||||
"theme.bar.buttons.notifications.hover" = "${background}";
|
|
||||||
"theme.bar.buttons.notifications.total" = "${accent}";
|
|
||||||
"theme.bar.buttons.notifications.icon" = "${accent}";
|
|
||||||
"theme.notification.background" = "${background-alt}";
|
|
||||||
"theme.notification.actions.background" = "${accent}";
|
|
||||||
"theme.notification.actions.text" = "${foreground}";
|
|
||||||
"theme.notification.label" = "${accent}";
|
|
||||||
"theme.notification.border" = "${background-alt}";
|
|
||||||
"theme.notification.text" = "${foreground}";
|
|
||||||
"theme.notification.labelicon" = "${accent}";
|
|
||||||
"theme.osd.bar_color" = "${accent}";
|
|
||||||
"theme.osd.bar_overflow_color" = "${accent-alt}";
|
|
||||||
"theme.osd.icon" = "${background}";
|
|
||||||
"theme.osd.icon_container" = "${accent}";
|
|
||||||
"theme.osd.label" = "${accent}";
|
|
||||||
"theme.osd.bar_container" = "${background-alt}";
|
|
||||||
"theme.bar.menus.menu.media.background.color" = "${background-alt}";
|
|
||||||
"theme.bar.menus.menu.media.card.color" = "${background-alt}";
|
|
||||||
"theme.bar.menus.menu.media.card.tint" = 90;
|
|
||||||
"bar.customModules.updates.pollingInterval" = 1440000;
|
|
||||||
"bar.media.show_active_only" = true;
|
|
||||||
"theme.bar.location" = "${position}";
|
|
||||||
"bar.workspaces.numbered_active_indicator" = "color";
|
|
||||||
"bar.workspaces.monitorSpecific" = false;
|
|
||||||
"bar.workspaces.applicationIconEmptyWorkspace" = "";
|
|
||||||
"bar.workspaces.showApplicationIcons" = true;
|
|
||||||
"bar.workspaces.showWsIcons" = true;
|
|
||||||
"theme.bar.dropdownGap" = "4.5em";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ inputs, pkgs, ... }:
|
|
||||||
{
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
plugins = [ inputs.hyprspace.packages.${pkgs.system}.Hyprspace ];
|
|
||||||
settings = {
|
|
||||||
plugin = {
|
|
||||||
overview = {
|
|
||||||
centerAligned = true;
|
|
||||||
hideTopLayers = true;
|
|
||||||
hideOverlayLayers = true;
|
|
||||||
showNewWorkspace = true;
|
|
||||||
exitOnClick = true;
|
|
||||||
exitOnSwitch = true;
|
|
||||||
drawActiveWorkspace = true;
|
|
||||||
autoDrag = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
{ pkgs, lib, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
defaultApps = {
|
defaultApps = {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
extraPortals = with pkgs; [
|
|
||||||
# xdg-desktop-portal-hyprland
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
libsForQt5.xdg-desktop-portal-kde
|
|
||||||
lxqt.xdg-desktop-portal-lxqt
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -34,6 +34,8 @@
|
||||||
./sysctl.nix
|
./sysctl.nix
|
||||||
./earlyoom.nix
|
./earlyoom.nix
|
||||||
|
|
||||||
|
./sleep.nix
|
||||||
|
|
||||||
# Or modules from other flakes (such as nixos-hardware):
|
# Or modules from other flakes (such as nixos-hardware):
|
||||||
# inputs.hardware.nixosModules.common-cpu-amd
|
# inputs.hardware.nixosModules.common-cpu-amd
|
||||||
# inputs.hardware.nixosModules.common-ssd
|
# inputs.hardware.nixosModules.common-ssd
|
||||||
|
|
|
||||||
34
hosts/grymforge/sleep.nix
Normal file
34
hosts/grymforge/sleep.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
systemd.services.sleep-schedule = {
|
||||||
|
description = "Suspend PC at 10PM and wake at 6:30AM using rtcwake";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = pkgs.writeShellScript "sleep-schedule" ''
|
||||||
|
WAKE_TIME=$(${pkgs.coreutils}/bin/date +%s -d "tomorrow 06:30")
|
||||||
|
exec ${pkgs.util-linux}/bin/rtcwake -m mem -t "$WAKE_TIME"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.timers.sleep-schedule = {
|
||||||
|
description = "Timer to suspend PC at 10PM daily";
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily 22:00";
|
||||||
|
Persistent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.sudo.extraRules = [
|
||||||
|
{
|
||||||
|
users = [ "root" ];
|
||||||
|
commands = [
|
||||||
|
{
|
||||||
|
command = "/run/current-system/sw/bin/rtcwake";
|
||||||
|
options = [ "NOPASSWD" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -22,7 +22,9 @@
|
||||||
./grafana.nix
|
./grafana.nix
|
||||||
./promtail.nix
|
./promtail.nix
|
||||||
./loki.nix
|
./loki.nix
|
||||||
|
./uptime-kuma.nix
|
||||||
./prometheus_node_exporter.nix
|
./prometheus_node_exporter.nix
|
||||||
|
./traefik.nix
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,27 @@
|
||||||
_: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets.grafana_user = {
|
||||||
|
mode = "0440";
|
||||||
|
owner = config.users.users.grafana.name;
|
||||||
|
group = config.users.users.grafana.group;
|
||||||
|
};
|
||||||
|
|
||||||
|
sops.secrets.grafana_password = {
|
||||||
|
mode = "0440";
|
||||||
|
owner = config.users.users.grafana.name;
|
||||||
|
group = config.users.users.grafana.group;
|
||||||
|
};
|
||||||
|
|
||||||
services.grafana = {
|
services.grafana = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
server = {
|
server = {
|
||||||
http_addr = "127.0.0.1";
|
http_addr = "127.0.0.1";
|
||||||
http_port = 3000;
|
http_port = 3001;
|
||||||
};
|
};
|
||||||
security = {
|
security = {
|
||||||
admin_user = "admin";
|
admin_user = "${config.sops.secrets.grafana_user.path}";
|
||||||
admin_password = "changeme";
|
admin_password = "${config.sops.secrets.grafana_password.path}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
30
hosts/panopticon/loki-config.yaml
Normal file
30
hosts/panopticon/loki-config.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
# This is a complete configuration to deploy Loki backed by the filesystem.
|
||||||
|
# The index will be shipped to the storage via tsdb-shipper.
|
||||||
|
|
||||||
|
auth_enabled: false
|
||||||
|
|
||||||
|
server:
|
||||||
|
http_listen_port: 3100
|
||||||
|
|
||||||
|
common:
|
||||||
|
ring:
|
||||||
|
instance_addr: 127.0.0.1
|
||||||
|
kvstore:
|
||||||
|
store: inmemory
|
||||||
|
replication_factor: 1
|
||||||
|
path_prefix: /tmp/loki
|
||||||
|
|
||||||
|
schema_config:
|
||||||
|
configs:
|
||||||
|
- from: 2020-05-15
|
||||||
|
store: tsdb
|
||||||
|
object_store: filesystem
|
||||||
|
schema: v13
|
||||||
|
index:
|
||||||
|
prefix: index_
|
||||||
|
period: 24h
|
||||||
|
|
||||||
|
storage_config:
|
||||||
|
filesystem:
|
||||||
|
directory: /tmp/loki/chunks
|
||||||
|
|
@ -1,53 +1,6 @@
|
||||||
_: {
|
{
|
||||||
services.loki = {
|
services.loki = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configuration = {
|
configFile = ./loki-config.yaml;
|
||||||
auth_enabled = false;
|
|
||||||
server.http_listen_port = 3100;
|
|
||||||
|
|
||||||
ingester = {
|
|
||||||
lifecycler = {
|
|
||||||
ring = {
|
|
||||||
kvstore = {
|
|
||||||
store = "inmemory";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
final_sleep = "0s";
|
|
||||||
};
|
|
||||||
chunk_idle_period = "5m";
|
|
||||||
max_chunk_age = "1h";
|
|
||||||
chunk_target_size = 1048576;
|
|
||||||
};
|
|
||||||
|
|
||||||
schema_config = {
|
|
||||||
configs = [
|
|
||||||
{
|
|
||||||
from = "2024-01-01";
|
|
||||||
store = "boltdb-shipper";
|
|
||||||
object_store = "filesystem";
|
|
||||||
schema = "v11";
|
|
||||||
index = {
|
|
||||||
prefix = "index_";
|
|
||||||
period = "24h";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
storage_config = {
|
|
||||||
boltdb_shipper = {
|
|
||||||
active_index_directory = "/var/lib/loki/index";
|
|
||||||
cache_location = "/var/lib/loki/cache";
|
|
||||||
shared_store = "filesystem";
|
|
||||||
};
|
|
||||||
filesystem = {
|
|
||||||
directory = "/var/lib/loki/chunks";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
limits_config = {
|
|
||||||
retention_period = "168h";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /var/lib/promtail 0755 promtail promtail -"
|
||||||
|
];
|
||||||
services.promtail = {
|
services.promtail = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configuration = {
|
configuration = {
|
||||||
server.http_listen_port = 9080;
|
server.http_listen_port = 9080;
|
||||||
|
server.grpc_listen_port = 0;
|
||||||
positions = {
|
positions = {
|
||||||
filename = "/var/lib/promtail/positions.yaml";
|
filename = "/var/lib/promtail/positions.yaml";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
36
hosts/panopticon/routes.nix
Normal file
36
hosts/panopticon/routes.nix
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./services.nix
|
||||||
|
];
|
||||||
|
services.traefik = {
|
||||||
|
dynamicConfigOptions = {
|
||||||
|
http = {
|
||||||
|
routers = {
|
||||||
|
uptime_kuma_local = {
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
rule = "Host(`uptime.gwg313.xyz`)";
|
||||||
|
service = "uptime_kuma_local";
|
||||||
|
tls.certResolver = "le";
|
||||||
|
middlewares = [ "headers" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
grafana_local = {
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
rule = "Host(`grafana.gwg313.xyz`)";
|
||||||
|
service = "grafana_local";
|
||||||
|
tls.certResolver = "le";
|
||||||
|
middlewares = [ "headers" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
loki_local = {
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
rule = "Host(`loki.gwg313.xyz`)";
|
||||||
|
service = "loki_local";
|
||||||
|
tls.certResolver = "le";
|
||||||
|
middlewares = [ "headers" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
27
hosts/panopticon/services.nix
Normal file
27
hosts/panopticon/services.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
services.traefik = {
|
||||||
|
dynamicConfigOptions = {
|
||||||
|
http = {
|
||||||
|
services = {
|
||||||
|
uptime_kuma_local.loadBalancer.servers = [
|
||||||
|
{
|
||||||
|
url = "http://127.0.0.1:3030";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
grafana_local.loadBalancer.servers = [
|
||||||
|
{
|
||||||
|
url = "http://127.0.0.1:3001";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
loki_local.loadBalancer.servers = [
|
||||||
|
{
|
||||||
|
url = "http://127.0.0.1:3100";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./routes.nix
|
||||||
];
|
];
|
||||||
sops.secrets.cf-api-token = {
|
sops.secrets.cf-api-token = {
|
||||||
mode = "0440";
|
mode = "0440";
|
||||||
|
|
@ -60,22 +61,22 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
log = {
|
# log = {
|
||||||
level = "DEBUG";
|
# level = "DEBUG";
|
||||||
filePath = "/var/log/traefik/traefik.log";
|
# filePath = "/var/log/traefik/traefik.log";
|
||||||
};
|
# };
|
||||||
|
#
|
||||||
accessLog = {
|
# accessLog = {
|
||||||
filePath = "/var/log/traefik/access.log";
|
# filePath = "/var/log/traefik/access.log";
|
||||||
bufferingSize = 0;
|
# bufferingSize = 0;
|
||||||
filters = { };
|
# filters = {};
|
||||||
fields = {
|
# fields = {
|
||||||
defaultMode = "keep";
|
# defaultMode = "keep";
|
||||||
names = {
|
# names = {
|
||||||
StartUTC = "drop";
|
# StartUTC = "drop";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
dynamicConfigOptions = {
|
dynamicConfigOptions = {
|
||||||
http = {
|
http = {
|
||||||
|
|
|
||||||
9
hosts/panopticon/uptime-kuma.nix
Normal file
9
hosts/panopticon/uptime-kuma.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
_: {
|
||||||
|
services.uptime-kuma = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
HOST = "127.0.0.1";
|
||||||
|
PORT = "3030";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -74,6 +74,12 @@
|
||||||
url = "https://s3-console.zerotier.gwg313.xyz";
|
url = "https://s3-console.zerotier.gwg313.xyz";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
uptime_zt.loadBalancer.servers = [
|
||||||
|
{
|
||||||
|
url = "https://uptime.zerotier.gwg313.xyz";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
routers = {
|
routers = {
|
||||||
|
|
@ -171,6 +177,14 @@
|
||||||
tls.certResolver = "le";
|
tls.certResolver = "le";
|
||||||
middlewares = [ "headers" ];
|
middlewares = [ "headers" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uptime_console = {
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
rule = "Host(`uptime.gwg313.xyz`)";
|
||||||
|
service = "s3_console_zt";
|
||||||
|
tls.certResolver = "le";
|
||||||
|
middlewares = [ "headers" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,14 @@
|
||||||
tls.certResolver = "le";
|
tls.certResolver = "le";
|
||||||
middlewares = [ "headers" ];
|
middlewares = [ "headers" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uptime = {
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
rule = "Host(`uptime.gwg313.xyz`)";
|
||||||
|
service = "uptime_local";
|
||||||
|
tls.certResolver = "le";
|
||||||
|
middlewares = [ "headers" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,14 @@
|
||||||
tls.certResolver = "le";
|
tls.certResolver = "le";
|
||||||
middlewares = [ "headers" ];
|
middlewares = [ "headers" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uptime_zt = {
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
rule = "Host(`uptime.zerotier.gwg313.xyz`)";
|
||||||
|
service = "uptime_local";
|
||||||
|
tls.certResolver = "le";
|
||||||
|
middlewares = [ "headers" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
audiobooks_local.loadBalancer.servers = [
|
audiobooks_local.loadBalancer.servers = [
|
||||||
{
|
{
|
||||||
url = "http://10.1.10.3:30080";
|
url = "https://audiobooks.gwg313.xyz";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -89,6 +89,12 @@
|
||||||
url = "https://s3-console.gwg313.xyz";
|
url = "https://s3-console.gwg313.xyz";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
uptime_local.loadBalancer.servers = [
|
||||||
|
{
|
||||||
|
url = "https://uptime.gwg313.xyz";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
restic_key: ENC[AES256_GCM,data:DzpWvFP5gyhrnLVIYgu9ouotWqkOAHehihSKf/TqJE+sHTD4vnIScfhzoKzdkoDoWfkcmQ==,iv:q83qNYuP/3mngvg+kUfOVToogL8VTvZ6HiGIztpnP/s=,tag:YNWwbma0HmPKqYCS1L5kQQ==,type:str]
|
restic_key: ENC[AES256_GCM,data:DzpWvFP5gyhrnLVIYgu9ouotWqkOAHehihSKf/TqJE+sHTD4vnIScfhzoKzdkoDoWfkcmQ==,iv:q83qNYuP/3mngvg+kUfOVToogL8VTvZ6HiGIztpnP/s=,tag:YNWwbma0HmPKqYCS1L5kQQ==,type:str]
|
||||||
wireless.env: ENC[AES256_GCM,data:/5i0Kv+VFTtVpaD7tfO2ahePu20eYkUYAqoh39PA2aoMWywLddQEQy4arj2Nvcw8hsRk760Kiq4wz3c23dPDqy7rU980NF2RaP4ODMIiQISfYeQP9coD84JhlnSTW+7EkhV520naqJgIYY0IsA8OxR/5euyFMHOL75FKnBh1ILY2DPSsJNG2m2ldw+US7E+7r4REl8tDqKfCIL5tznmbVTbPrer7cwrXe+ScFaholmqSntaB06yIIO3yr88TmE6EXF6oLCXU,iv:DPOqx7M7E83+DYjGFPZy44cxrta/3953IDjXL40rLAc=,tag:KmYBpQKgshMSgxnC96T1bQ==,type:str]
|
wireless.env: ENC[AES256_GCM,data:bknujxgeDzXii2eUPTS609cige01pbqCVPm0EKFJaZfB6aHT1jUXtxN54bB5aKtaiOcuJ1Mcee8JbijH+n5LOM7LsApq9IoBDJsyChuBX0PilzCSmkftzOBrl4hhDzxHCelISvBxCnbrNQnywPkiffOxaQfP7NCSNKu2NsnJH/N26Kwda5CbXmBifQTPSwVn1Xs3aM96vS4KjsBrkCROWHQ2JMgywJ6jnFP2VUickEsr0BBFhnudmxhbooUbhkFH80jrGxJn,iv:aOHIxI2oHDltOUTkGuQqoNa6hU1gaqPMnLyBZpCNqB8=,tag:IdwvOcigWJ2W/gVpGBIWMA==,type:str]
|
||||||
cf-api-token: ENC[AES256_GCM,data:7FJtAEOdYnUpGqs5r3pNIkY+lsqn2wtRhyIGXD5G7in3U3Tt8CTn5g==,iv:61kKxSYk54NqvhNn4xZZ2Gec7p/93dAN+VWBqF5OSQQ=,tag:5yzcHjGzhD8KX2FgL+xK/Q==,type:str]
|
cf-api-token: ENC[AES256_GCM,data:7FJtAEOdYnUpGqs5r3pNIkY+lsqn2wtRhyIGXD5G7in3U3Tt8CTn5g==,iv:61kKxSYk54NqvhNn4xZZ2Gec7p/93dAN+VWBqF5OSQQ=,tag:5yzcHjGzhD8KX2FgL+xK/Q==,type:str]
|
||||||
basic-auth: ENC[AES256_GCM,data:/YSAcTnyvM4sjj3cc46YwkXGeP3yG2MHctza+kDuRaNXb8ABMFofUHU6KuifTpsmUWwPQ4BPdamv+JC9ee8tsWRMxw==,iv:CUE70AISBOdYDLUXGAnIPT4t4tOugHWLlCLE6YxTkjM=,tag:MnyHoQCHaTbYjp/jrbWEcg==,type:str]
|
basic-auth: ENC[AES256_GCM,data:/YSAcTnyvM4sjj3cc46YwkXGeP3yG2MHctza+kDuRaNXb8ABMFofUHU6KuifTpsmUWwPQ4BPdamv+JC9ee8tsWRMxw==,iv:CUE70AISBOdYDLUXGAnIPT4t4tOugHWLlCLE6YxTkjM=,tag:MnyHoQCHaTbYjp/jrbWEcg==,type:str]
|
||||||
|
grafana_user: ENC[AES256_GCM,data:EI0aavin,iv:tfkJ2pVyAgH+um+Wb1lgbvngcemdtMa+URXWV30yzBI=,tag:5VoyXtW3U+cuhHr0gPpOsg==,type:str]
|
||||||
|
grafana_password: ENC[AES256_GCM,data:nock2uRcv29OHFRJ,iv:bXrGrTZrGMXLEVn8jWuhoOyfDY/Suqp2TBSMzYx/psA=,tag:tSxo7aZvVUBZFdTXaPjWVA==,type:str]
|
||||||
sops:
|
sops:
|
||||||
kms: []
|
|
||||||
gcp_kms: []
|
|
||||||
azure_kv: []
|
|
||||||
hc_vault: []
|
|
||||||
age:
|
age:
|
||||||
- recipient: age1k3hs0gyzrmsdyqh9lpret46q3xaayxxntruzc4euy6h3slqn4u6q36h7rg
|
- recipient: age1k3hs0gyzrmsdyqh9lpret46q3xaayxxntruzc4euy6h3slqn4u6q36h7rg
|
||||||
enc: |
|
enc: |
|
||||||
|
|
@ -17,8 +15,7 @@ sops:
|
||||||
US9oa0pORXRVWWlyYlZZTGhXdTdOaWsKClqIK/YNJIIGFqOO0t4oni8dRTTXQniG
|
US9oa0pORXRVWWlyYlZZTGhXdTdOaWsKClqIK/YNJIIGFqOO0t4oni8dRTTXQniG
|
||||||
ioIwAOdEgE/n0vcYhHXxLxWlTeqGZF076g7EFfIqiSNqrDtacRnazg==
|
ioIwAOdEgE/n0vcYhHXxLxWlTeqGZF076g7EFfIqiSNqrDtacRnazg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-03-31T17:31:58Z"
|
lastmodified: "2025-07-01T20:09:32Z"
|
||||||
mac: ENC[AES256_GCM,data:PGFoJSMR/W3taIMtXbavI/9elQBHrwliZsCdRbAUx++LBow8R86gq2xZN+KmgAhqV7gxa+2vfEAs/WQB7tGD1BAxUNNwb3up7CzzoZjlQG5WaHU9JiAERB5dFSYqS47faAOdkEr+MZWF42nO2DoA4PImtCBAaQLnAgO+AI6eG4I=,iv:b3AWusxwWvZwRFj7F8F00jx7Do/QnnzJpwJtUNmam/8=,tag:drPhuuPdW24AH8bH9y0YNA==,type:str]
|
mac: ENC[AES256_GCM,data:i+Q+2ottIzAINqlUVXxJ6erLEsItjkrSbjGjRg72hSZdAOusI9Er4A7R/JGnR26/+o8i6Ivf/HzYIGL1AX7mA48UCg5MM1gpUNnFlc4pkwP+9PdbhT/V7nvvzlHHyPc3y7AfjeY9SI0kVuStPwrIPtHkh1JYwqkpVl2DSU9OPCg=,iv:nXF7db9V7ZXtcmXFPPTcjWbld69HHYEQp8BhDEugYak=,tag:Dp5wuoWxB5PuxKiXvZWdIA==,type:str]
|
||||||
pgp: []
|
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.9.4
|
version: 3.10.2
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue