Initial commit
This commit is contained in:
30
home/system/ashell/default.nix
Normal file
30
home/system/ashell/default.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
programs.ashell = {
|
||||
enable = true;
|
||||
settings = {
|
||||
modules = {
|
||||
center = [
|
||||
"Window Title"
|
||||
];
|
||||
|
||||
left = [
|
||||
"Workspaces"
|
||||
];
|
||||
|
||||
right = [
|
||||
"SystemInfo"
|
||||
[
|
||||
"Clock"
|
||||
"Privacy"
|
||||
"Settings"
|
||||
]
|
||||
];
|
||||
};
|
||||
workspaces = {
|
||||
visibilityMode = "MonitorSpecific";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.enable = true;
|
||||
};
|
||||
}
|
||||
32
home/system/hypridle/default.nix
Normal file
32
home/system/hypridle/default.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
# Hypridle is a daemon that listens for user activity and runs commands when the user is idle.
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
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";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
systemd.user.services.hypridle.Unit.After =
|
||||
lib.mkForce "graphical-session.target";
|
||||
}
|
||||
52
home/system/hyprland/animations.nix
Normal file
52
home/system/hyprland/animations.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{config, ...}: let
|
||||
animationSpeed = config.theme.animation-speed;
|
||||
|
||||
animationDuration =
|
||||
if animationSpeed == "slow"
|
||||
then "4"
|
||||
else if animationSpeed == "medium"
|
||||
then "2.5"
|
||||
else "1.5";
|
||||
borderDuration =
|
||||
if animationSpeed == "slow"
|
||||
then "10"
|
||||
else if animationSpeed == "medium"
|
||||
then "6"
|
||||
else "3";
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
"linear, 0, 0, 1, 1"
|
||||
"md3_standard, 0.2, 0, 0, 1"
|
||||
"md3_decel, 0.05, 0.7, 0.1, 1"
|
||||
"md3_accel, 0.3, 0, 0.8, 0.15"
|
||||
"overshot, 0.05, 0.9, 0.1, 1.1"
|
||||
"crazyshot, 0.1, 1.5, 0.76, 0.92"
|
||||
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
|
||||
"menu_decel, 0.1, 1, 0, 1"
|
||||
"menu_accel, 0.38, 0.04, 1, 0.07"
|
||||
"easeInOutCirc, 0.85, 0, 0.15, 1"
|
||||
"easeOutCirc, 0, 0.55, 0.45, 1"
|
||||
"easeOutExpo, 0.16, 1, 0.3, 1"
|
||||
"softAcDecel, 0.26, 0.26, 0.15, 1"
|
||||
"md2, 0.4, 0, 0.2, 1"
|
||||
];
|
||||
|
||||
animation = [
|
||||
"windows, 1, ${animationDuration}, md3_decel, popin 60%"
|
||||
"windowsIn, 1, ${animationDuration}, md3_decel, popin 60%"
|
||||
"windowsOut, 1, ${animationDuration}, md3_accel, popin 60%"
|
||||
"border, 1, ${borderDuration}, default"
|
||||
"fade, 1, ${animationDuration}, md3_decel"
|
||||
"layersIn, 1, ${animationDuration}, menu_decel, slide"
|
||||
"layersOut, 1, ${animationDuration}, menu_accel"
|
||||
"fadeLayersIn, 1, ${animationDuration}, menu_decel"
|
||||
"fadeLayersOut, 1, ${animationDuration}, menu_accel"
|
||||
"workspaces, 1, ${animationDuration}, menu_decel, slide"
|
||||
"specialWorkspace, 1, ${animationDuration}, md3_decel, slidevert"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
75
home/system/hyprland/bindings.nix
Normal file
75
home/system/hyprland/bindings.nix
Normal file
@@ -0,0 +1,75 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
bind = [
|
||||
"$mod, return, exec, uwsm app -- ${pkgs.kitty}/bin/kitty" # Ghostty (terminal)
|
||||
#"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
|
||||
"$mod, b, exec, uwsm app -- ${pkgs.brave}/bin/brave" # Brave Browser
|
||||
"$mod, m, exec, uwsm app -- ${pkgs.thunderbird}/bin/thunderbird" # Proton Mail
|
||||
#"$mod,L, exec, uwsm app -- ${pkgs.hyprlock}/bin/hyprlock" # Lock
|
||||
"$mod, space, exec, vicinae toggle" # Launcher FIXME: broken
|
||||
#"$mod,X, exec, powermenu" # Powermenu
|
||||
#"$mod, space, exec, menu" # Launcher
|
||||
|
||||
"$shiftMod, space, exec, hyprfocus-toggle" # Toggle HyprFocus
|
||||
|
||||
"$mod, q, killactive," # Close window
|
||||
"$mod, t, togglefloating," # Toggle Floating
|
||||
"$mod, f, fullscreen" # Toggle Fullscreen
|
||||
|
||||
"$mod, j, layoutmsg, cyclenext" # Move focus Down
|
||||
"$mod, k, layoutmsg, cycleprev" # Move focus Up
|
||||
"$altMod, j, layoutmsg, swapnext" # Move focus Down
|
||||
"$altMod, k, layoutmsg, swapprev" # Move focus Up
|
||||
|
||||
"$mod, x, focusmonitor, +1" # Focus next monitor
|
||||
"$altMod, x, movewindow, mon:+1"
|
||||
"$altMod, h, layoutmsg, addmaster" # Add to master
|
||||
"$altMod, l, layoutmsg, removemaster" # Remove from master
|
||||
|
||||
"$mod, print, exec, screenshot region" # Screenshot region
|
||||
", PRINT, exec, screenshot monitor" # Screenshot monitor
|
||||
|
||||
"$mod, w, workspace, 1"
|
||||
"$mod, e, workspace, 2"
|
||||
"$mod, r, workspace, 3"
|
||||
"$mod, i, workspace, 11"
|
||||
"$mod, o, workspace, 12"
|
||||
"$mod, p, workspace, 13"
|
||||
|
||||
"$altMod, w, movetoworkspace, 1"
|
||||
"$altMod, e, movetoworkspace, 2"
|
||||
"$altMod, r, movetoworkspace, 3"
|
||||
"$altMod, i, movetoworkspace, 11"
|
||||
"$altMod, o, movetoworkspace, 12"
|
||||
"$altMod, p, movetoworkspace, 13"
|
||||
|
||||
"$mod, z, togglespecialworkspace, scratchpad"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow" # Move Window (mouse)
|
||||
"$mod, mouse:274, resizewindow" # Resize Window (mouse)
|
||||
];
|
||||
|
||||
binde = [
|
||||
"$mod, h, layoutmsg, mfact -0.01" # Move focus left
|
||||
"$mod, l, layoutmsg, mfact +0.01" # Move focus Right
|
||||
];
|
||||
|
||||
bindl = [
|
||||
",XF86AudioMute, exec, sound-toggle" # Toggle Mute
|
||||
",XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause" # Play/Pause Song
|
||||
",XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next" # Next Song
|
||||
",XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous" # Previous Song
|
||||
",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock when closing Lid
|
||||
];
|
||||
|
||||
bindle = [
|
||||
",XF86AudioRaiseVolume, exec, sound-up" # Sound Up
|
||||
",XF86AudioLowerVolume, exec, sound-down" # Sound Down
|
||||
",XF86MonBrightnessUp, exec, brightness-up" # Brightness Up
|
||||
",XF86MonBrightnessDown, exec, brightness-down" # Brightness Down
|
||||
];
|
||||
};
|
||||
}
|
||||
184
home/system/hyprland/default.nix
Normal file
184
home/system/hyprland/default.nix
Normal file
@@ -0,0 +1,184 @@
|
||||
# Hyprland is a dynamic tiling Wayland compositor that is highly customizable and performant.
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
border-size = config.theme.border-size;
|
||||
gaps-in = config.theme.gaps-in;
|
||||
gaps-out = config.theme.gaps-out;
|
||||
active-opacity = config.theme.active-opacity;
|
||||
inactive-opacity = config.theme.inactive-opacity;
|
||||
rounding = config.theme.rounding;
|
||||
blur = config.theme.blur;
|
||||
keyboardLayout = config.var.keyboardLayout;
|
||||
background = "rgb(" + config.lib.stylix.colors.base00 + ")";
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./animations.nix
|
||||
./bindings.nix
|
||||
./polkitagent.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
qt5.qtwayland
|
||||
qt6.qtwayland
|
||||
libsForQt5.qt5ct
|
||||
qt6Packages.qt6ct
|
||||
hyprshot
|
||||
hyprpicker
|
||||
swappy
|
||||
imv
|
||||
wf-recorder
|
||||
wlr-randr
|
||||
wl-clipboard
|
||||
brightnessctl
|
||||
gnome-themes-extra
|
||||
libva
|
||||
dconf
|
||||
wayland-utils
|
||||
wayland-protocols
|
||||
glib
|
||||
direnv
|
||||
meson
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
systemd = {
|
||||
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 = {
|
||||
"$mod" = "SUPER";
|
||||
"$shiftMod" = "SUPER_SHIFT";
|
||||
"$altMod" = "SUPER_ALT";
|
||||
|
||||
exec-once = [
|
||||
"systemctl --user enable --now hyprpaper.service &"
|
||||
];
|
||||
|
||||
monitor = config.var.hyprland.monitor;
|
||||
|
||||
env = [
|
||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||
"MOZ_ENABLE_WAYLAND,1"
|
||||
"ANKI_WAYLAND,1"
|
||||
"DISABLE_QT5_COMPAT,0"
|
||||
"NIXOS_OZONE_WL,1"
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"XDG_SESSION_DESKTOP,Hyprland"
|
||||
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
||||
"QT_QPA_PLATFORM=wayland,xcb"
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
||||
"__GL_GSYNC_ALLOWED,0"
|
||||
"__GL_VRR_ALLOWED,0"
|
||||
"DISABLE_QT5_COMPAT,0"
|
||||
"DIRENV_LOG_FORMAT,"
|
||||
"WLR_DRM_NO_ATOMIC,1"
|
||||
"WLR_BACKEND,vulkan"
|
||||
"WLR_RENDERER,vulkan"
|
||||
"WLR_NO_HARDWARE_CURSORS,1"
|
||||
"SDL_VIDEODRIVER,wayland"
|
||||
"CLUTTER_BACKEND,wayland"
|
||||
];
|
||||
|
||||
workspace = config.var.hyprland.workspace ++ [
|
||||
"special:scratchpad, on-created-empty:[float; size monitor_w/1.5 monitor_h/1.5; center] $TERMINAL"
|
||||
];
|
||||
|
||||
cursor = {
|
||||
no_hardware_cursors = true;
|
||||
default_monitor = "0";
|
||||
};
|
||||
|
||||
general = {
|
||||
resize_on_border = true;
|
||||
gaps_in = gaps-in;
|
||||
gaps_out = gaps-out;
|
||||
border_size = border-size;
|
||||
layout = "master";
|
||||
"col.inactive_border" = lib.mkForce background;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
dim_special = 0.3;
|
||||
active_opacity = active-opacity;
|
||||
inactive_opacity = inactive-opacity;
|
||||
rounding = rounding;
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 20;
|
||||
render_power = 3;
|
||||
};
|
||||
blur = {
|
||||
enabled = if blur then "true" else "false";
|
||||
size = 18;
|
||||
};
|
||||
};
|
||||
|
||||
master = {
|
||||
new_status = true;
|
||||
allow_small_split = true;
|
||||
mfact = 0.65;
|
||||
};
|
||||
|
||||
misc = {
|
||||
vfr = true;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
disable_autoreload = false;
|
||||
focus_on_activate = true;
|
||||
new_window_takes_over_fullscreen = 2;
|
||||
};
|
||||
|
||||
windowrule = [
|
||||
"match:title hyprpanel-settings, float on"
|
||||
"match:class xdg-desktop-portal-gtk, float on, center on, size monitor_w/2 monitor_h/2"
|
||||
# Bitwarden extension
|
||||
|
||||
# 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)$"
|
||||
];
|
||||
|
||||
layerrule = [
|
||||
"match:namespace vicinae, no_anim on, blur on, ignore_alpha 0"
|
||||
#"no_anim, launcher"
|
||||
#"no_anim, ^ags-.*"
|
||||
];
|
||||
|
||||
input = {
|
||||
kb_layout = keyboardLayout;
|
||||
|
||||
kb_options = "caps:escape";
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0.5;
|
||||
repeat_delay = 300;
|
||||
repeat_rate = 50;
|
||||
numlock_by_default = true;
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = true;
|
||||
clickfinger_behavior = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
6
home/system/hyprland/polkitagent.nix
Normal file
6
home/system/hyprland/polkitagent.nix
Normal file
@@ -0,0 +1,6 @@
|
||||
# HyprPolkitAgent is a simple polkit agent for wayland compositors
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [hyprpolkitagent];
|
||||
|
||||
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start hyprpolkitagent"];
|
||||
}
|
||||
72
home/system/hyprlock/default.nix
Normal file
72
home/system/hyprlock/default.nix
Normal file
@@ -0,0 +1,72 @@
|
||||
# Hyprlock is a lockscreen for Hyprland
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
foreground = "rgba(${config.theme.textColorOnWallpaper}ee)";
|
||||
font = config.stylix.fonts.serif.name;
|
||||
in {
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
ignore_empty_input = true;
|
||||
hide_cursor = true;
|
||||
};
|
||||
|
||||
background = { brightness = 0.7172; };
|
||||
|
||||
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;
|
||||
font_size = 18;
|
||||
font_family = font + " Bold";
|
||||
position = "0, -180";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
];
|
||||
|
||||
# INPUT FIELD
|
||||
input-field = lib.mkForce {
|
||||
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(25, 25, 25, 0)";
|
||||
inner_color = "rgba(25, 25, 25, 0.1)";
|
||||
font_color = foreground;
|
||||
fade_on_empty = false;
|
||||
font_family = font + " Bold";
|
||||
placeholder_text = "<i>🔒 Enter Password</i>";
|
||||
position = "0, -250";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
249
home/system/hyprpanel/default.nix
Normal file
249
home/system/hyprpanel/default.nix
Normal file
@@ -0,0 +1,249 @@
|
||||
# Hyprpanel is the bar on top of the screen
|
||||
# Display information like workspaces, battery, wifi, ...
|
||||
{ config, ... }:
|
||||
let
|
||||
transparentButtons = config.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}";
|
||||
foregroundOnWallpaper = "#${config.theme.textColorOnWallpaper}";
|
||||
font = "${config.stylix.fonts.serif.name}";
|
||||
fontSizeForHyprpanel = "${toString config.stylix.fonts.sizes.desktop}px";
|
||||
|
||||
rounding = config.theme.rounding;
|
||||
border-size = config.theme.border-size;
|
||||
|
||||
gaps-out = config.theme.gaps-out;
|
||||
gaps-in = config.theme.gaps-in;
|
||||
|
||||
floating = config.theme.bar.floating;
|
||||
transparent = config.theme.bar.transparent;
|
||||
position = config.theme.bar.position; # "top" ou "bottom"
|
||||
|
||||
notificationOpacity = 90;
|
||||
|
||||
location = config.var.location;
|
||||
|
||||
homeDir = "/home/${config.var.username}";
|
||||
in
|
||||
{
|
||||
wayland.windowManager.hyprland.settings.exec-once = [ "hyprpanel" ];
|
||||
|
||||
programs.hyprpanel = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
bar.layouts = {
|
||||
"*" = {
|
||||
left = [
|
||||
"dashboard"
|
||||
"workspaces"
|
||||
"windowtitle"
|
||||
];
|
||||
middle = [
|
||||
"media"
|
||||
];
|
||||
right = [
|
||||
"systray"
|
||||
"volume"
|
||||
"bluetooth"
|
||||
"battery"
|
||||
"network"
|
||||
"clock"
|
||||
"notifications"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
theme.font.name = font;
|
||||
theme.font.size = fontSizeForHyprpanel;
|
||||
|
||||
theme.bar.outer_spacing = if floating && transparent then "0px" else "8px";
|
||||
theme.bar.buttons.y_margins = if floating && transparent then "0px" else "8px";
|
||||
theme.bar.buttons.spacing = "0.3em";
|
||||
theme.bar.buttons.radius =
|
||||
(if transparent then toString rounding else toString (rounding - 8)) + "px";
|
||||
theme.bar.floating = floating;
|
||||
theme.bar.buttons.padding_x = "0.8rem";
|
||||
theme.bar.buttons.padding_y = "0.4rem";
|
||||
|
||||
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";
|
||||
theme.bar.transparent = transparent;
|
||||
theme.bar.location = position;
|
||||
theme.bar.dropdownGap = "4.5em";
|
||||
theme.bar.menus.shadow = if transparent then "0 0 0 0" else "0px 0px 3px 1px #16161e";
|
||||
theme.bar.buttons.style = "default";
|
||||
theme.bar.buttons.monochrome = true;
|
||||
theme.bar.menus.monochrome = true;
|
||||
theme.bar.menus.card_radius = toString rounding + "px";
|
||||
theme.bar.menus.border.size = toString border-size + "px";
|
||||
theme.bar.menus.border.radius = toString rounding + "px";
|
||||
theme.bar.menus.menu.media.card.tint = 90;
|
||||
|
||||
bar.launcher.icon = "";
|
||||
bar.workspaces.show_numbered = false;
|
||||
bar.workspaces.workspaces = 3;
|
||||
bar.workspaces.numbered_active_indicator = "color";
|
||||
bar.workspaces.monitorSpecific = true;
|
||||
bar.workspaces.applicationIconEmptyWorkspace = "";
|
||||
bar.workspaces.showApplicationIcons = true;
|
||||
bar.workspaces.showWsIcons = true;
|
||||
bar.workspaces.ignored = "-98"; # NOTE: Ignore special:scratchpad workspace. Hyprpanel only supports workspace numbers
|
||||
#bar.workspaces.ignoredWorkspaces = "/scratchpad/i";
|
||||
#bar.workspaces.ignored_workspaces = "/scratchpad/i";
|
||||
|
||||
bar.windowtitle.label = true;
|
||||
bar.volume.label = false;
|
||||
bar.network.truncation_size = 12;
|
||||
bar.bluetooth.label = false;
|
||||
bar.clock.format = "%a %b %d %H:%M";
|
||||
bar.notifications.show_total = true;
|
||||
bar.media.show_active_only = true;
|
||||
|
||||
bar.customModules.updates.pollingInterval = 1440000;
|
||||
|
||||
notifications.position = "top right";
|
||||
notifications.showActionsOnHover = true;
|
||||
theme.notification.opacity = notificationOpacity;
|
||||
theme.notification.enableShadow = 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.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.dashboard.directories.left.directory1.label = " Home";
|
||||
menus.dashboard.directories.left.directory1.command = "xdg-open ${homeDir}";
|
||||
|
||||
menus.dashboard.directories.left.directory2.label = " Documents";
|
||||
menus.dashboard.directories.left.directory2.command = "xdg-open ${homeDir}/Documents";
|
||||
|
||||
menus.dashboard.directories.left.directory3.label = " Downloads";
|
||||
menus.dashboard.directories.left.directory3.command = "xdg-open ${homeDir}/Downloads";
|
||||
|
||||
menus.dashboard.directories.right.directory1.label = " Desktop";
|
||||
menus.dashboard.directories.right.directory1.command = "xdg-open ${homeDir}/Desktop";
|
||||
|
||||
menus.dashboard.directories.right.directory2.label = " Videos";
|
||||
menus.dashboard.directories.right.directory2.command = "xdg-open ${homeDir}/Videos";
|
||||
|
||||
menus.dashboard.directories.right.directory3.label = " Pictures";
|
||||
menus.dashboard.directories.right.directory3.command = "xdg-open ${homeDir}/Pictures";
|
||||
|
||||
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";
|
||||
};
|
||||
};
|
||||
}
|
||||
14
home/system/hyprpaper/default.nix
Normal file
14
home/system/hyprpaper/default.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
# Hyprpaper is used to set the wallpaper on the system
|
||||
{lib, ...}: {
|
||||
# The wallpaper is set by stylix
|
||||
services.hyprpaper = {
|
||||
enable = true;
|
||||
settings = {
|
||||
ipc = "on";
|
||||
splash = false;
|
||||
splash_offset = 2.0;
|
||||
};
|
||||
};
|
||||
systemd.user.services.hyprpaper.Unit.After =
|
||||
lib.mkForce "graphical-session.target";
|
||||
}
|
||||
22
home/system/hyprsunset/default.nix
Normal file
22
home/system/hyprsunset/default.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
services = {
|
||||
hyprsunset = {
|
||||
enable = true;
|
||||
settings = {
|
||||
max-gamma = 150;
|
||||
|
||||
profile = [
|
||||
{
|
||||
time = "7:30";
|
||||
identity = true;
|
||||
}
|
||||
{
|
||||
time = "23:00";
|
||||
temperature = 3000;
|
||||
gamma = 0.8;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
98
home/system/mime/default.nix
Normal file
98
home/system/mime/default.nix
Normal file
@@ -0,0 +1,98 @@
|
||||
# Mime type associations for the system.
|
||||
{ lib, ... }:
|
||||
with lib;
|
||||
let
|
||||
defaultApps = {
|
||||
# check desktop files here: `ls $(echo $XDG_DATA_DIRS| sed "s/:/ /g")`
|
||||
browser = [ "brave-browser.desktop" ];
|
||||
text = [ "nixCats.desktop" ];
|
||||
image = [ "imv-dir.desktop" ];
|
||||
audio = [ "mpv.desktop" ];
|
||||
video = [ "mpv.desktop" ];
|
||||
directory = [ "thunar.desktop" ];
|
||||
office = [ "libreoffice.desktop" ];
|
||||
pdf = [ "org.pwmt.zathura.desktop" ];
|
||||
terminal = [ "kitty.desktop" ];
|
||||
discord = [ "discord.desktop" ];
|
||||
archive = [ "xarchiver.desktop" ];
|
||||
};
|
||||
|
||||
mimeMap = {
|
||||
text = [ "text/plain" ];
|
||||
image = [
|
||||
"image/bmp"
|
||||
"image/gif"
|
||||
"image/jpeg"
|
||||
"image/jpg"
|
||||
"image/png"
|
||||
"image/svg+xml"
|
||||
"image/tiff"
|
||||
"image/vnd.microsoft.icon"
|
||||
"image/webp"
|
||||
];
|
||||
audio = [
|
||||
"audio/aac"
|
||||
"audio/mpeg"
|
||||
"audio/ogg"
|
||||
"audio/opus"
|
||||
"audio/wav"
|
||||
"audio/webm"
|
||||
"audio/x-matroska"
|
||||
];
|
||||
video = [
|
||||
"video/mp2t"
|
||||
"video/mp4"
|
||||
"video/mpeg"
|
||||
"video/ogg"
|
||||
"video/webm"
|
||||
"video/x-flv"
|
||||
"video/x-matroska"
|
||||
"video/x-msvideo"
|
||||
];
|
||||
directory = [ "inode/directory" ];
|
||||
browser = [
|
||||
"text/html"
|
||||
"x-scheme-handler/about"
|
||||
"x-scheme-handler/http"
|
||||
"x-scheme-handler/https"
|
||||
"x-scheme-handler/unknown"
|
||||
];
|
||||
office = [
|
||||
"application/vnd.oasis.opendocument.text"
|
||||
"application/vnd.oasis.opendocument.spreadsheet"
|
||||
"application/vnd.oasis.opendocument.presentation"
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
||||
"application/msword"
|
||||
"application/vnd.ms-excel"
|
||||
"application/vnd.ms-powerpoint"
|
||||
"application/rtf"
|
||||
];
|
||||
pdf = [ "application/pdf" ];
|
||||
terminal = [ "terminal" ];
|
||||
archive = [
|
||||
"application/zip"
|
||||
"application/rar"
|
||||
"application/7z"
|
||||
"application/*tar"
|
||||
];
|
||||
discord = [ "x-scheme-handler/discord" ];
|
||||
};
|
||||
|
||||
associations =
|
||||
with lists;
|
||||
listToAttrs (
|
||||
flatten (mapAttrsToList (key: map (type: attrsets.nameValuePair type defaultApps."${key}")) mimeMap)
|
||||
);
|
||||
in
|
||||
{
|
||||
xdg = {
|
||||
configFile."mimeapps.list".force = true;
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
associations.added = associations;
|
||||
defaultApplications = associations;
|
||||
};
|
||||
};
|
||||
}
|
||||
8
home/system/udiskie/default.nix
Normal file
8
home/system/udiskie/default.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
# Udiskie is a simple daemon that uses udisks to automatically mount removable storage devices.
|
||||
{
|
||||
services.udiskie = {
|
||||
enable = true;
|
||||
notify = true;
|
||||
automount = true;
|
||||
};
|
||||
}
|
||||
13
home/system/vicinae/default.nix
Normal file
13
home/system/vicinae/default.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{ inputs, ... }:
|
||||
{
|
||||
imports = [ inputs.vicinae.homeManagerModules.default ];
|
||||
|
||||
services.vicinae = {
|
||||
enable = true;
|
||||
autoStart = true;
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.exec-once = [
|
||||
"systemctl enable --now --user vicinae.service"
|
||||
];
|
||||
}
|
||||
102
home/system/wofi/default.nix
Normal file
102
home/system/wofi/default.nix
Normal file
@@ -0,0 +1,102 @@
|
||||
# Wofi is a launcher for Wayland, inspired by rofi.
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
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;
|
||||
rounding = config.theme.rounding;
|
||||
font-size = config.stylix.fonts.sizes.popups;
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [ wofi-emoji ];
|
||||
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
allow_markup = true;
|
||||
width = 450;
|
||||
show = "drun";
|
||||
prompt = "Apps";
|
||||
normal_window = true;
|
||||
height = 305;
|
||||
allow_images = true;
|
||||
image_size = 24;
|
||||
insensitive = true;
|
||||
hide_scroll = true;
|
||||
no_actions = true;
|
||||
gtk_dark = true;
|
||||
};
|
||||
|
||||
style =
|
||||
lib.mkForce
|
||||
# css
|
||||
''
|
||||
* {
|
||||
font-family: "${font}";
|
||||
font-weight: 500;
|
||||
font-size: ${toString font-size}px;
|
||||
}
|
||||
|
||||
#window {
|
||||
background-color: ${background};
|
||||
color: ${foreground};
|
||||
border-radius: ${toString rounding}px;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#input {
|
||||
background-color: ${background-alt};
|
||||
border: 0px solid ${accent};
|
||||
color: ${foreground};
|
||||
padding: 8px 12px;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#inner-box {}
|
||||
|
||||
#img {
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
#text {
|
||||
color: ${foreground};
|
||||
}
|
||||
|
||||
#text:selected {
|
||||
color: ${foreground};
|
||||
}
|
||||
|
||||
#entry {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: ${accent};
|
||||
color: ${foreground};
|
||||
}
|
||||
|
||||
#unselected {}
|
||||
|
||||
#selected {}
|
||||
|
||||
#input,
|
||||
#entry:selected {
|
||||
border-radius: ${toString rounding}px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
14
home/system/zathura/default.nix
Normal file
14
home/system/zathura/default.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
# Zathura is a PDF viewer
|
||||
{
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
|
||||
options = {
|
||||
guioptions = "v";
|
||||
adjust-open = "width";
|
||||
statusbar-basename = true;
|
||||
render-loading = false;
|
||||
scroll-step = 120;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user