First Commit
This commit is contained in:
31
home/catppuccin.nix
Normal file
31
home/catppuccin.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
variant = "mocha";
|
||||
accent = "mauve";
|
||||
in
|
||||
{
|
||||
catppuccin = {
|
||||
enable = true;
|
||||
accent = "${accent}";
|
||||
flavor = "${variant}";
|
||||
vscode.profiles.default.enable = false;
|
||||
cursors.enable = true;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
name = "Catppuccin-GTK-Dark";
|
||||
package = pkgs.magnetic-catppuccin-gtk;
|
||||
};
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "ct";
|
||||
style.name = "kvantum";
|
||||
};
|
||||
}
|
||||
20
home/default.nix
Normal file
20
home/default.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
b = builtins;
|
||||
|
||||
module_files =
|
||||
b.readDir ./. |>
|
||||
lib.filterAttrs (name: type:
|
||||
( (lib.strings.hasSuffix ".nix" name
|
||||
&& name != "default.nix"
|
||||
&& type == "regular" )
|
||||
|| ( type == "directory"
|
||||
&& b.pathExists ./${name}/default.nix))
|
||||
) |>
|
||||
b.attrNames |>
|
||||
b.map (f: ./${f});
|
||||
in
|
||||
{
|
||||
imports = module_files;
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
}
|
||||
5
home/easyeffects.nix
Normal file
5
home/easyeffects.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
services.easyeffects = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
5
home/gaming/default.nix
Normal file
5
home/gaming/default.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
_: {
|
||||
imports = [
|
||||
./mangohud.nix
|
||||
];
|
||||
}
|
||||
5
home/gaming/mangohud.nix
Normal file
5
home/gaming/mangohud.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
programs.mangohud = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
5
home/gnome-keyring.nix
Normal file
5
home/gnome-keyring.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
{ pkgs, ...}:
|
||||
{
|
||||
services.gnome-keyring.enable = true;
|
||||
home.packages = [ pkgs.gcr ]; # Provides org.gnome.keyring.SystemPrompter
|
||||
}
|
||||
41
home/hyprland/animations.nix
Normal file
41
home/hyprland/animations.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
# Curves
|
||||
"expressiveFastSpatial, 0.42, 1.67, 0.21, 0.90"
|
||||
"expressiveSlowSpatial, 0.39, 1.29, 0.35, 0.98"
|
||||
"expressiveDefaultSpatial, 0.38, 1.21, 0.22, 1.00"
|
||||
"emphasizedDecel, 0.05, 0.7, 0.1, 1"
|
||||
"emphasizedAccel, 0.3, 0, 0.8, 0.15"
|
||||
"standardDecel, 0, 0, 0, 1"
|
||||
"menu_decel, 0.1, 1, 0, 1"
|
||||
"menu_accel, 0.52, 0.03, 0.72, 0.08"
|
||||
];
|
||||
animation = [
|
||||
# Configs
|
||||
# windows
|
||||
"windowsIn, 1, 2, emphasizedDecel, popin 80%"
|
||||
"windowsOut, 1, 3, emphasizedDecel, popin 90%"
|
||||
"windowsMove, 1, 3, emphasizedDecel, slide"
|
||||
"border, 1, 10, emphasizedDecel"
|
||||
# layers
|
||||
"layersIn, 1, 2.7, emphasizedDecel, popin 93%"
|
||||
"layersOut, 1, 2.4, menu_accel, popin 94%"
|
||||
# fade
|
||||
"fadeLayersIn, 1, 0.5, menu_decel"
|
||||
"fadeLayersOut, 1, 2.7, menu_accel"
|
||||
"fade, 1, 2, emphasizedDecel"
|
||||
# workspaces
|
||||
"workspaces, 1, 7, menu_decel, slide"
|
||||
## specialWorkspace
|
||||
"specialWorkspaceIn, 1, 2.8, emphasizedDecel, slidevert"
|
||||
"specialWorkspaceOut, 1, 1.2, emphasizedAccel, slidevert"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
29
home/hyprland/default.nix
Normal file
29
home/hyprland/default.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
programs.kitty.enable = true; # required for the default Hyprland config
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
# set the flake package
|
||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
# make sure to also set the portal package, so that they are in sync
|
||||
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||
systemd.enable = true;
|
||||
};
|
||||
|
||||
imports = [
|
||||
./animations.nix
|
||||
./execs.nix
|
||||
./general.nix
|
||||
./hypridle.nix
|
||||
./input.nix
|
||||
./keybinds.nix
|
||||
./misc.nix
|
||||
./monitors.nix
|
||||
./theme.nix
|
||||
./rules/windows.nix
|
||||
./rules/workspaces.nix
|
||||
];
|
||||
|
||||
# xdg.configFile."hypr".source = ./hypr;
|
||||
# home.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
}
|
||||
17
home/hyprland/execs.nix
Normal file
17
home/hyprland/execs.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
exec-once = [
|
||||
"sleep 2; uwsm-app -- vesktop-portable"
|
||||
# todo openrgb
|
||||
"sleep 5; uwsm-app -- spotify"
|
||||
"uwsm-app -- dms run"
|
||||
"sleep 5; uwsm-app -- Artemis.UI.Linux --minimized"
|
||||
"sleep 10; bash /home/lilly/Scripts/rgb-on.sh"
|
||||
# todo sunshine
|
||||
# todo arrpc
|
||||
#todo hyprpolkit
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
45
home/hyprland/general.nix
Normal file
45
home/hyprland/general.nix
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
wayland.windowManager.hyprland =
|
||||
{
|
||||
settings =
|
||||
{
|
||||
general = {
|
||||
no_focus_fallback = true;
|
||||
allow_tearing = true;
|
||||
snap = {
|
||||
enabled = true;
|
||||
window_gap = 4;
|
||||
monitor_gap = 5;
|
||||
respect_gaps = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
dwindle = {
|
||||
preserve_split = true;
|
||||
smart_split = false;
|
||||
smart_resizing = true;
|
||||
# precise_mouse_move = true;
|
||||
};
|
||||
|
||||
render = {
|
||||
cm_enabled = true;
|
||||
cm_fs_passthrough = 2;
|
||||
direct_scanout = 2;
|
||||
cm_auto_hdr = 1;
|
||||
};
|
||||
|
||||
quirks = {
|
||||
prefer_hdr = 2;
|
||||
};
|
||||
|
||||
debug = {
|
||||
disable_logs = false;
|
||||
};
|
||||
|
||||
xwayland = {
|
||||
force_zero_scaling = true; # Unscale XWayland
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
20
home/hyprland/hypridle.nix
Normal file
20
home/hyprland/hypridle.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
systemdTarget = "hyprland-session.target";
|
||||
settings = {
|
||||
general = {
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "hyprlock";
|
||||
};
|
||||
listener = [
|
||||
{
|
||||
timeout = 300; # 2mins
|
||||
on-timeout = "hyprctl dispatch dpms off";
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
18
home/hyprland/input.nix
Normal file
18
home/hyprland/input.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
input = {
|
||||
kb_layout = "us";
|
||||
kb_variant = "altgr-intl";
|
||||
sensitivity = 0.3;
|
||||
follow_mouse = 1;
|
||||
accel_profile = "flat";
|
||||
|
||||
repeat_delay = 250;
|
||||
repeat_rate = 35;
|
||||
|
||||
off_window_axis_events = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
158
home/hyprland/keybinds.nix
Normal file
158
home/hyprland/keybinds.nix
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
|
||||
bind = [
|
||||
"$mod, space, exec, dms ipc call spotlight toggle"
|
||||
"alt, space, exec, dms ipc call spotlight toggle"
|
||||
"$mod, Super_L, exec, dms ipc call spotlight toggle"
|
||||
# Color Picker
|
||||
"$mod+Shift, C, exec, hyprpicker -a" # Pick color (Hex) >> clipboard
|
||||
|
||||
# Screenshots
|
||||
"Super+Shift, S, exec, hyprshot --freeze --mode region --silent --clipboard-only"
|
||||
"CTRL+Shift, 4, exec, bash /home/lilly/Scripts/zipline-region.sh"
|
||||
"CTRL+Shift, 3, exec, /home/lilly/Scripts/zipline-monitor.sh"
|
||||
"CTRL+Shift, 2, exec, /home/lilly/Scripts/zipline-window.sh"
|
||||
#bindln = Ctrl,Print,exec,grim - | wl-copy Screenshot >> clipboard & file (clipboard)
|
||||
|
||||
#!
|
||||
##! Window
|
||||
#/# bind = $mod, ←/↑/→/↓,, # Focus in direction
|
||||
"$mod, Left, movefocus, l"
|
||||
"$mod, Right, movefocus, r"
|
||||
"$mod, Up, movefocus, u"
|
||||
"$mod, Down, movefocus, d"
|
||||
"$mod, BracketLeft, movefocus, l"
|
||||
"$mod, BracketRight, movefocus, r"
|
||||
#/# bind = $mod+Shift, ←/↑/→/↓,, # Move in direction
|
||||
"$mod+Shift, Left, movewindow, l"
|
||||
"$mod+Shift, Right, movewindow, r"
|
||||
"$mod+Shift, Up, movewindow, u"
|
||||
"$mod+Shift, Down, movewindow, d"
|
||||
"Alt, F4, killactive, Close (Windows)"
|
||||
"$mod, Q, killactive," # Close
|
||||
"$mod+Shift+Alt, Q, exec, hyprctl kill" # Forcefully zap a window
|
||||
|
||||
# Window split ratio
|
||||
#/# binde = Super, ;/',, # Adjust split ratio
|
||||
# Positioning mode
|
||||
"Super+Alt, Space, togglefloating," # Float/Tile
|
||||
"Super, D, fullscreen, 1" # Maximize
|
||||
"Super, F, fullscreen, 0" # Fullscreen
|
||||
"Super+Alt, F, fullscreenstate, 0 3" # Fullscreen spoof
|
||||
"Super, P, pin" # Pin
|
||||
|
||||
#/# bind = Super+Alt, Hash,, # Send to workspace # (1, 2, 3,...)
|
||||
# We use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev`
|
||||
"Super+Alt, code:10, movetoworkspacesilent, 1"
|
||||
"Super+Alt, code:11, movetoworkspacesilent, 2"
|
||||
"Super+Alt, code:12, movetoworkspacesilent, 3"
|
||||
"Super+Alt, code:13, movetoworkspacesilent, 4"
|
||||
"Super+Alt, code:14, movetoworkspacesilent, 5"
|
||||
"Super+Alt, code:15, movetoworkspacesilent, 6"
|
||||
"Super+Alt, code:16, movetoworkspacesilent, 7"
|
||||
"Super+Alt, code:17, movetoworkspacesilent, 8"
|
||||
"Super+Alt, code:18, movetoworkspacesilent, 9"
|
||||
"Super+Alt, code:19, movetoworkspacesilent, 10"
|
||||
|
||||
# #/# bind = Super+Shift, Scroll ↑/↓,, # Send to workspace left/right
|
||||
"Super+Shift, mouse_down, movetoworkspace, r-1"
|
||||
"Super+Shift, mouse_up, movetoworkspace, r+1"
|
||||
"Super+Alt, mouse_down, movetoworkspace, -1"
|
||||
"Super+Alt, mouse_up, movetoworkspace, +1"
|
||||
|
||||
#/# bind = Super+Shift, Page_↑/↓,, # Send to workspace left/right
|
||||
"Super+Alt, Page_Down, movetoworkspace, +1"
|
||||
"Super+Alt, Page_Up, movetoworkspace, -1"
|
||||
"Super+Shift, Page_Down, movetoworkspace, r+1 "
|
||||
"Super+Shift, Page_Up, movetoworkspace, r-1"
|
||||
"Ctrl+Super+Shift, Right, movetoworkspace, r+1"
|
||||
"Ctrl+Super+Shift, Left, movetoworkspace, r-1"
|
||||
|
||||
"Super+Alt, S, movetoworkspacesilent, special" # Send to scratchpad
|
||||
|
||||
"Ctrl+Super, S, togglespecialworkspace,"
|
||||
|
||||
##! Workspace
|
||||
# Switching
|
||||
#/# bind = Super, Hash,, # Focus workspace # (1, 2, 3,...)
|
||||
# We use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev`
|
||||
"Super, code:10, workspace, 1"
|
||||
"Super, code:11, workspace, 2"
|
||||
"Super, code:12, workspace, 3"
|
||||
"Super, code:13, workspace, 4"
|
||||
"Super, code:14, workspace, 5"
|
||||
"Super, code:15, workspace, 6"
|
||||
"Super, code:16, workspace, 7"
|
||||
"Super, code:17, workspace, 8"
|
||||
"Super, code:18, workspace, 9"
|
||||
"Super, code:19, workspace, 10"
|
||||
|
||||
#/# bind = Ctrl+Super, ←/→,, # Focus left/right
|
||||
"Ctrl+Super, Right, workspace, r+1"
|
||||
"Ctrl+Super, Left, workspace, r-1"
|
||||
#/# bind = Ctrl+Super+Alt, ←/→,, Focus busy left/right
|
||||
"Ctrl+Super+Alt, Right, workspace, m+1"
|
||||
"Ctrl+Super+Alt, Left, workspace, m-1"
|
||||
#/# bind = Super, Page_↑/↓,, # Focus left/right
|
||||
"Super, Page_Down, workspace, +1"
|
||||
"Super, Page_Up, workspace, -1"
|
||||
"Ctrl+Super, Page_Down, workspace, r+1"
|
||||
"Ctrl+Super, Page_Up, workspace, r-1"
|
||||
#/# bind = Super, Scroll ↑/↓,, # Focus left/right
|
||||
"Super, mouse_up, workspace, +1"
|
||||
"Super, mouse_down, workspace, -1"
|
||||
"Ctrl+Super, mouse_up, workspace, r+1"
|
||||
"Ctrl+Super, mouse_down, workspace, r-1"
|
||||
## Special
|
||||
"Ctrl+Super, BracketLeft, workspace, -1"
|
||||
"Ctrl+Super, BracketRight, workspace, +1"
|
||||
"Ctrl+Super, Up, workspace, r-5"
|
||||
"Ctrl+Super, Down, workspace, r+5"
|
||||
|
||||
##! Apps
|
||||
"Super, Return, exec, kitty"
|
||||
"Ctrl+Alt, T, exec, kitty"
|
||||
"Ctrl+Super, V, exec, pwvucontrol"
|
||||
"Ctrl+Shift, Escape, exec, \"command -v btop && kitty fish -c btop\"" # Task manager"
|
||||
|
||||
# Cursed stuff
|
||||
## Make window not amogus large
|
||||
"Ctrl+Super, Backslash, resizeactive, exact 640 480"
|
||||
];
|
||||
|
||||
bindle = [
|
||||
# Volume / Brightness control
|
||||
",XF86MonBrightnessUp, exec, qs -c $qsConfig ipc call brightness increment || brightnessctl s 5%+"
|
||||
",XF86MonBrightnessDown, exec, qs -c $qsConfig ipc call brightness decrement || brightnessctl s 5%-"
|
||||
",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ -l 1.5"
|
||||
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- -l 1.5"
|
||||
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:274, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
binde = [
|
||||
"Super, Semicolon, splitratio, -0.1"
|
||||
"Super, Apostrophe, splitratio, +0.1"
|
||||
];
|
||||
|
||||
binds = {
|
||||
scroll_event_delay = 0;
|
||||
hide_special_on_workspace_change = true;
|
||||
};
|
||||
|
||||
cursor = {
|
||||
zoom_factor = 1;
|
||||
zoom_rigid = false;
|
||||
hotspot_padding = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
25
home/hyprland/misc.nix
Normal file
25
home/hyprland/misc.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
misc = {
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
vrr = 3;
|
||||
vfr = true;
|
||||
mouse_move_enables_dpms = true;
|
||||
key_press_enables_dpms = true;
|
||||
animate_manual_resizes = false;
|
||||
animate_mouse_windowdragging = false;
|
||||
enable_swallow = false;
|
||||
swallow_regex = "(foot|kitty|allacritty|Alacritty)";
|
||||
# new_window_takes_over_fs = 2;
|
||||
allow_session_lock_restore = true;
|
||||
session_lock_xray = true;
|
||||
initial_workspace_tracking = false;
|
||||
middle_click_paste = false;
|
||||
focus_on_activate = true;
|
||||
size_limits_tiled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
62
home/hyprland/monitors.nix
Normal file
62
home/hyprland/monitors.nix
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
monitor = [
|
||||
",preferred,auto,1"
|
||||
];
|
||||
source = [ "monitors.conf" ];
|
||||
# monitorv2 = [
|
||||
# {
|
||||
# output = "desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS FO32U2 0x01010101";
|
||||
# mode = "3840x2160@240.0";
|
||||
# position = "0x0";
|
||||
# scale = 1.5;
|
||||
# bitdepth = 10;
|
||||
# vrr = 3;
|
||||
# supports_wide_color = 1;
|
||||
# supports_hdr = 1;
|
||||
# sdr_min_luminance = 0.000;
|
||||
# sdr_max_luminance = 1000;
|
||||
# min_luminance = 0.000;
|
||||
# max_luminance = 1000;
|
||||
# max_avg_luminance = 400;
|
||||
# cm = "hdr";
|
||||
# }
|
||||
# {
|
||||
# output = "desc:Samsung Electric Company LF32TU87 HNTT700129";
|
||||
# mode = "3840x2160@60.0";
|
||||
# position = "-2560x0";
|
||||
# scale = 1.5;
|
||||
# bitdepth = 10;
|
||||
# }
|
||||
# {
|
||||
# output = "desc:Technical Concepts Ltd Beyond TV 0x00010000";
|
||||
# disabled = true;
|
||||
# }
|
||||
# ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
# monitorv2 {
|
||||
# output = desc:Technical Concepts Ltd Beyond TV 0x00010000
|
||||
# mode = 3840x2160@120.00
|
||||
# position = 2560x270
|
||||
# scale = 1.5
|
||||
# bitdepth = 10
|
||||
# vrr = 1
|
||||
# supports_wide_color = 1
|
||||
# supports_hdr = 1
|
||||
# sdr_min_luminance = 0.0005
|
||||
# sdr_max_luminance = 2000
|
||||
# min_luminance = 0.0005
|
||||
# max_luminance = 2000
|
||||
# max_avg_luminance = 400
|
||||
# cm = hdr
|
||||
# }
|
||||
|
||||
# workspace = 21, monitor:desc:Technical Concepts Ltd Beyond TV 0x00010000, default:true
|
||||
|
||||
# windowrule = match:class $games, workspace 21, fullscreen on
|
||||
# # windowrule = fullscreen, class:$games
|
||||
# windowrule = match:class steam, match:title (Steam Big Picture Mode), workspace 21
|
||||
101
home/hyprland/rules/windows.nix
Normal file
101
home/hyprland/rules/windows.nix
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
"$games" = "^(steam_app_.*|gamescope|starrail.exe|.*\.exe)$";
|
||||
"$launch_on_second_monitor" = "^(vesktop|spotify)$";
|
||||
"$utility_workspace" = 10;
|
||||
|
||||
windowrule = [
|
||||
|
||||
# Windows to launch silently on secondary monitor
|
||||
|
||||
"match:class $launch_on_second_monitor, workspace $altscreenworkspace silent"
|
||||
"match:class steam, match:title Steam, workspace 4 silent, tile on"
|
||||
|
||||
# Launch Steam Friends List as floating window on workspace 4
|
||||
|
||||
"match:class steam, match:title (Friends List), workspace 4 silent, tile on"
|
||||
|
||||
"match:class $games, content game"
|
||||
"match:class $games, tag +game"
|
||||
"match:class $games, workspace 3"
|
||||
|
||||
# Disable VRR for Where Winds meet
|
||||
"match:class (steam_app_3564740), no_vrr on"
|
||||
|
||||
# Game Stuff
|
||||
"match:class (starrail\.exe), render_unfocused on"
|
||||
|
||||
# Utilities to silently launch on the last workspace
|
||||
"match:class (com.github.wwmm.easyeffects), workspace $utility_workspace silent"
|
||||
"match:class (org.openrgb.OpenRGB), workspace $utility_workspace silent"
|
||||
"match:class (com.core447.StreamController), match:title StreamController, workspace $utility_workspace silent"
|
||||
"match:class (opendeck), workspace $utility_workspace silent"
|
||||
"match:class (Artemis.UI.Linux), match:title (Artemis 2.0), workspace $utility_workspace silent"
|
||||
|
||||
# Focus popups in the center
|
||||
# Floating
|
||||
"match:title ^(Open File)(.*)$, center on"
|
||||
"match:title ^(Open File)(.*)$, float on"
|
||||
"match:title ^(Select a File)(.*)$, center on"
|
||||
"match:title ^(Select folder)(.*)$, float on"
|
||||
"match:title ^(Select folder)(.*)$, center on"
|
||||
"match:title ^(Select a File)(.*)$, float on"
|
||||
"match:title ^(Choose wallpaper)(.*)$, center on"
|
||||
"match:title ^(Choose wallpaper)(.*)$, float on"
|
||||
"match:title ^(Choose wallpaper)(.*)$, size 60% 65%"
|
||||
"match:title ^(Open Folder)(.*)$, center on"
|
||||
"match:title ^(Open Folder)(.*)$, float on"
|
||||
"match:title ^(Save As)(.*)$, center on"
|
||||
"match:title ^(Save As)(.*)$, float on"
|
||||
"match:title ^(Enter name of file to save to)(.*)$, center on"
|
||||
"match:title ^(Enter name of file to save to)(.*)$, float on"
|
||||
"match:title ^(Library)(.*)$, center on"
|
||||
"match:title ^(Library)(.*)$, float on"
|
||||
"match:title ^(File Upload)(.*)$, center on"
|
||||
"match:title ^(File Upload)(.*)$, float on"
|
||||
"match:title ^(.*)(wants to save)$, center on"
|
||||
"match:title ^(.*)(wants to save)$, float on"
|
||||
"match:title ^(.*)(wants to open)$, center on"
|
||||
"match:title ^(.*)(wants to open)$, float on"
|
||||
"match:class ^(blueberry\.py)$, float on"
|
||||
"match:class ^(guifetch)$, float on"
|
||||
"match:class ^(pwvucontrol)$, float on"
|
||||
"match:class ^(pwvucontrol)$, size 45%"
|
||||
"match:class ^(pwvucontrol)$, center on"
|
||||
"match:class ^(com.saivert.pwvucontrol)$, float on"
|
||||
"match:class ^(com.saivert.pwvucontrol)$, size 45%"
|
||||
"match:class ^(com.saivert.pwvucontrol)$, center on"
|
||||
"match:class .*plasmawindowed.*, float on"
|
||||
"match:class kcm_.*, float on"
|
||||
"match:class .*bluedevilwizard, float on"
|
||||
"match:title .*Welcome, float on"
|
||||
"match:title .*Shell conflicts.*, float on"
|
||||
"match:class org.freedesktop.impl.portal.desktop.kde, float on"
|
||||
"match:class org.freedesktop.impl.portal.desktop.kde, size 60% 65%"
|
||||
"match:class ^(Zotero)$, float on"
|
||||
"match:class ^(Zotero)$, size 45%"
|
||||
|
||||
# stupid dolphin copy
|
||||
"match:title ^(Copying — Dolphin)$, move 40 80"
|
||||
|
||||
# Picture-in-Picture
|
||||
"match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, float on"
|
||||
"match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, keep_aspect_ratio on"
|
||||
"match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, move 73% 72%"
|
||||
"match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, size 25%"
|
||||
"match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, pin on"
|
||||
|
||||
# --- Tearing ---
|
||||
"match:class $games, immediate on"
|
||||
|
||||
# No shadow for tiled windows (matches windows that are not floating).
|
||||
"match:float 0, no_shadow on"
|
||||
|
||||
# Prevent Idle while fullscreen
|
||||
"match:class (.*), idle_inhibit fullscreen"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
33
home/hyprland/rules/workspaces.nix
Normal file
33
home/hyprland/rules/workspaces.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
"$altscreenworkspace" = "11";
|
||||
"$mainmonitor" = "GIGA-BYTE TECHNOLOGY CO. LTD. AORUS FO32U2 24210B000546";
|
||||
|
||||
workspace = [
|
||||
"1, monitor:desc:$mainmonitor, default:true"
|
||||
"2, monitor:desc:$mainmonitor"
|
||||
"3, monitor:desc:$mainmonitor"
|
||||
"4, monitor:desc:$mainmonitor"
|
||||
"5, monitor:desc:$mainmonitor"
|
||||
"6, monitor:desc:$mainmonitor"
|
||||
"7, monitor:desc:$mainmonitor"
|
||||
"8, monitor:desc:$mainmonitor"
|
||||
"9, monitor:desc:$mainmonitor"
|
||||
"10, monitor:desc:$mainmonitor"
|
||||
|
||||
"$altscreenworkspace, monitor:desc:Samsung Electric Company LF32TU87 HNTT700129, default:true"
|
||||
"$altscreenworkspace, layoutopt:orientation:bottom"
|
||||
|
||||
"21, monitor:desc:Technical Concepts Ltd Beyond TV 0x00010000, default:true"
|
||||
|
||||
# ######## Workspace rules ########
|
||||
"special:special, gapsout:30"
|
||||
];
|
||||
|
||||
# Launchers need to be FAST
|
||||
layerrule = [ "match:namespace gtk4-layer-shell, no_anim on" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
50
home/hyprland/theme.nix
Normal file
50
home/hyprland/theme.nix
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 5;
|
||||
border_size = 0;
|
||||
|
||||
#"col.active_border" = "rgba(707070ff)";
|
||||
#"col.inactive_border" = "rgba(d0d0d0ff)";
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 12;
|
||||
active_opacity = 1.0;
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 30;
|
||||
render_power = 5;
|
||||
offset = "0 5";
|
||||
color = "rgba(00000070)";
|
||||
};
|
||||
};
|
||||
|
||||
# Opacity for inactive windows
|
||||
# windowrulev2 = opacity 0.9 0.9, floating:0, focus:0
|
||||
|
||||
windowrule = [
|
||||
# GNOME apps
|
||||
"match:class ^(org\.gnome\.), rounding 12"
|
||||
"match:class ^(org\.gnome\.), border_size 0"
|
||||
|
||||
# Terminal apps - no borders
|
||||
"match:class ^(org\.wezfurlong\.wezterm)$, border_size 0"
|
||||
"match:class ^(Alacritty)$, border_size 0"
|
||||
"match:class ^(zen)$, border_size 0"
|
||||
"match:class ^(com\.mitchellh\.ghostty)$, border_size 0"
|
||||
"match:class ^(kitty)$, border_size 0"
|
||||
|
||||
# Floating windows
|
||||
"match:class ^(gnome-calculator)$, float true"
|
||||
"match:class ^(blueman-manager)$, float true"
|
||||
"match:class ^(org\.gnome\.Nautilus)$, float true"
|
||||
];
|
||||
# Quickshell animation
|
||||
layerrule = [ "match:namespace ^(quickshell)$, no_anim on" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
33
home/spicetify.nix
Normal file
33
home/spicetify.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.spicetify-nix.homeManagerModules.default
|
||||
];
|
||||
programs.spicetify =
|
||||
let
|
||||
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
|
||||
enabledExtensions = with spicePkgs.extensions; [
|
||||
hidePodcasts
|
||||
shuffle # shuffle+ (special characters are sanitized out of extension names)
|
||||
betterGenres
|
||||
lastfm
|
||||
adblock
|
||||
beautifulLyrics
|
||||
aiBandBlocker
|
||||
];
|
||||
enabledCustomApps = with spicePkgs.apps; [
|
||||
lyricsPlus
|
||||
betterLibrary
|
||||
newReleases
|
||||
];
|
||||
enabledSnippets = with spicePkgs.snippets; [
|
||||
pointer
|
||||
];
|
||||
theme = spicePkgs.themes.catppuccin;
|
||||
colorScheme = "mocha";
|
||||
};
|
||||
}
|
||||
10
home/terminal/btop.nix
Normal file
10
home/terminal/btop.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
package = pkgs.btop.override {
|
||||
cudaSupport = true;
|
||||
rocmSupport = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
20
home/terminal/default.nix
Normal file
20
home/terminal/default.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
b = builtins;
|
||||
|
||||
module_files =
|
||||
b.readDir ./. |>
|
||||
lib.filterAttrs (name: type:
|
||||
( (lib.strings.hasSuffix ".nix" name
|
||||
&& name != "default.nix"
|
||||
&& type == "regular" )
|
||||
|| ( type == "directory"
|
||||
&& b.pathExists ./${name}/default.nix))
|
||||
) |>
|
||||
b.attrNames |>
|
||||
b.map (f: ./${f});
|
||||
in
|
||||
{
|
||||
imports = module_files;
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
}
|
||||
30
home/terminal/eza.nix
Normal file
30
home/terminal/eza.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
# Eza is a ls replacement
|
||||
{
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
icons = "auto";
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
git = true;
|
||||
|
||||
extraOptions = [
|
||||
"--group-directories-first"
|
||||
"--no-quotes"
|
||||
"--header" # Show header row
|
||||
"--git-ignore"
|
||||
"--icons=always"
|
||||
# "--time-style=long-iso" # ISO 8601 extended format for time
|
||||
"--classify" # append indicator (/, *, =, @, |)
|
||||
"--hyperlink" # make paths clickable in some terminals
|
||||
];
|
||||
};
|
||||
# Aliases to make `ls`, `ll`, `la` use eza
|
||||
home.shellAliases = {
|
||||
ls = "eza";
|
||||
lt = "eza --tree --level=2";
|
||||
ll = "eza -lh --no-user --long";
|
||||
la = "eza -lah ";
|
||||
tree = "eza --tree ";
|
||||
};
|
||||
}
|
||||
25
home/terminal/fish.nix
Normal file
25
home/terminal/fish.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
pkgs,
|
||||
host,
|
||||
...
|
||||
}: {
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
fr = "sudo nixos-rebuild switch --flake ~/LillyOS/#${host}";
|
||||
};
|
||||
interactiveShellInit = ''
|
||||
set fish_greeting # Disable greeting
|
||||
'';
|
||||
plugins = [
|
||||
# Enable a plugin (here grc for colorized command output) from nixpkgs
|
||||
{ name = "grc"; src = pkgs.fishPlugins.grc.src; }
|
||||
{ name = "tide"; src = pkgs.fishPlugins.tide.src; }
|
||||
{ name = "done"; src = pkgs.fishPlugins.done.src; }
|
||||
{ name = "fish-you-should-use"; src = pkgs.fishPlugins.fish-you-should-use.src; }
|
||||
{ name = "autopair"; src = pkgs.fishPlugins.autopair.src; }
|
||||
{ name = "fzf-fish"; src = pkgs.fishPlugins.fzf-fish.src; }
|
||||
{ name = "git-abbr"; src = pkgs.fishPlugins.git-abbr.src; }
|
||||
];
|
||||
};
|
||||
}
|
||||
22
home/terminal/git.nix
Normal file
22
home/terminal/git.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ email, prettyUsername, ... }:
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
user = {
|
||||
name = "${prettyUsername}";
|
||||
email = "${email}";
|
||||
};
|
||||
|
||||
# FOSS-friendly settings
|
||||
push.default = "simple"; # Match modern push behavior
|
||||
credential.helper = "cache --timeout=7200";
|
||||
init.defaultBranch = "main"; # Set default new branches to 'main'
|
||||
log.decorate = "full"; # Show branch/tag info in git log
|
||||
log.date = "iso"; # ISO 8601 date format
|
||||
# Conflict resolution style for readable diffs
|
||||
merge.conflictStyle = "diff3";
|
||||
};
|
||||
};
|
||||
}
|
||||
97
home/terminal/kitty.nix
Normal file
97
home/terminal/kitty.nix
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
|
||||
# Upstream test failures resolved; use default kitty package (>= 0.44).
|
||||
package = pkgs.kitty;
|
||||
settings = {
|
||||
font_family = "Maple Mono NF";
|
||||
font_size = 11;
|
||||
wheel_scroll_min_lines = 1;
|
||||
window_padding_width = 4;
|
||||
confirm_os_window_close = 0;
|
||||
scrollback_lines = 10000;
|
||||
enable_audio_bell = false;
|
||||
mouse_hide_wait = 60;
|
||||
cursor_trail = 1;
|
||||
cursor_shape = "beam";
|
||||
tab_fade = 1;
|
||||
active_tab_font_style = "bold";
|
||||
inactive_tab_font_style = "bold";
|
||||
tab_bar_edge = "top";
|
||||
tab_bar_margin_width = 0;
|
||||
tab_bar_style = "powerline";
|
||||
#tab_bar_style = "fade";
|
||||
enabled_layouts = "splits";
|
||||
open_url_with_default = true;
|
||||
detect_urls = true;
|
||||
allow_remote_control = true;
|
||||
shell = "fish";
|
||||
};
|
||||
|
||||
shellIntegration.enableZshIntegration = true;
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
shellIntegration.enableBashIntegration = true;
|
||||
shellIntegration.mode = "enabled";
|
||||
|
||||
extraConfig = ''
|
||||
|
||||
#open_url_with default
|
||||
url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty sftp ssh
|
||||
#detect_urls yes
|
||||
|
||||
# Clipboard
|
||||
#map ctrl+shift+v paste_from_selection
|
||||
#map shift+insert paste_from_selection
|
||||
|
||||
# Scrolling
|
||||
map ctrl+shift+up scroll_line_up
|
||||
map ctrl+shift+down scroll_line_down
|
||||
map ctrl+shift+k scroll_line_up
|
||||
map ctrl+shift+j scroll_line_down
|
||||
map ctrl+shift+page_up scroll_page_up
|
||||
map ctrl+shift+page_down scroll_page_down
|
||||
map ctrl+shift+home scroll_home
|
||||
map ctrl+shift+end scroll_end
|
||||
map ctrl+shift+h show_scrollback
|
||||
|
||||
# Window management
|
||||
map alt+n new_window_with_cwd
|
||||
#map alt+n new_os_window
|
||||
map alt+w close_window
|
||||
map ctrl+shift+enter launch --location=hsplit
|
||||
map ctrl+shift+s launch --location=vsplit
|
||||
map ctrl+shift+] next_window
|
||||
map ctrl+shift+[ previous_window
|
||||
map ctrl+shift+f move_window_forward
|
||||
map ctrl+shift+b move_window_backward
|
||||
map ctrl+shift+` move_window_to_top
|
||||
map ctrl+shift+1 first_window
|
||||
map ctrl+shift+2 second_window
|
||||
map ctrl+shift+3 third_window
|
||||
map ctrl+shift+4 fourth_window
|
||||
map ctrl+shift+5 fifth_window
|
||||
map ctrl+shift+6 sixth_window
|
||||
map ctrl+shift+7 seventh_window
|
||||
map ctrl+shift+8 eighth_window
|
||||
map ctrl+shift+9 ninth_window # Tab management
|
||||
map ctrl+shift+0 tenth_window
|
||||
map ctrl+shift+right next_tab
|
||||
map ctrl+shift+left previous_tab
|
||||
map ctrl+shift+t new_tab
|
||||
map ctrl+shift+q close_tab
|
||||
map ctrl+shift+l next_layout
|
||||
map ctrl+shift+. move_tab_forward
|
||||
map ctrl+shift+, move_tab_backward
|
||||
|
||||
# Miscellaneous
|
||||
map ctrl+shift+up increase_font_size
|
||||
map ctrl+shift+down decrease_font_size
|
||||
map ctrl+shift+backspace restore_font_size
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
||||
12
home/terminal/zoxide.nix
Normal file
12
home/terminal/zoxide.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
_: {
|
||||
programs = {
|
||||
zoxide = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
enableBashIntegration = true;
|
||||
options = [
|
||||
"--cmd cd"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
104
home/vesktop.nix
Normal file
104
home/vesktop.nix
Normal file
@@ -0,0 +1,104 @@
|
||||
{ pkgs, username, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "vesktop-portable" ''
|
||||
exec /home/${username}/vesktop/vesktop --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true --enable-blink-features=MiddleClickAutoscroll "$@"
|
||||
'')
|
||||
];
|
||||
xdg.desktopEntries.vesktop = {
|
||||
name = "Vesktop";
|
||||
genericName = "Discord Client";
|
||||
exec = "vesktop-portable %U";
|
||||
icon = "vesktop";
|
||||
terminal = false;
|
||||
categories = [ "Network" "InstantMessaging" "Chat" ];
|
||||
};
|
||||
|
||||
programs.vesktop = {
|
||||
enable = true;
|
||||
package = pkgs.vesktop.override {
|
||||
withMiddleClickScroll = true;
|
||||
};
|
||||
settings = {
|
||||
arRPC = true;
|
||||
tray = true;
|
||||
minimizeToTray = true;
|
||||
};
|
||||
vencord = {
|
||||
settings = {
|
||||
plugins = {
|
||||
AlwaysTrust.enabled = true;
|
||||
BetterSessions.enabled = true;
|
||||
BetterSettings.enabled = true;
|
||||
BiggerStreamPreview.enabled = true;
|
||||
CallTimer.enabled = true;
|
||||
ClearURLs.enabled = true;
|
||||
CopyEmojiMarkdown.enabled = true;
|
||||
CopyFileContents.enabled = true;
|
||||
CopyUserURLs.enabled = true;
|
||||
CrashHandler.enabled = true;
|
||||
CustomIdle = {
|
||||
enabled = true;
|
||||
idleTimeout = 0;
|
||||
remainInIdle = false;
|
||||
};
|
||||
Dearrow.enabled = true;
|
||||
DisableCallIdle.enabled = true;
|
||||
ExpressionCloner.enabled = true;
|
||||
FavoriteEmojiFirst.enabled = true;
|
||||
FixSpotifyEmbeds.enabled = true;
|
||||
FixYoutubeEmbeds.enabled = true;
|
||||
FullSearchContext.enabled = true;
|
||||
GameActivityToggle.enabled = true;
|
||||
GifPaste.enabled = true;
|
||||
ImageZoom.enabled = true;
|
||||
LoadingQuotes.enabled = true;
|
||||
MemberCount.enabled = true;
|
||||
MentionAvatars.enabled = true;
|
||||
MessageLinkEmbeds.enabled = true;
|
||||
MessageLogger = {
|
||||
enabled = true;
|
||||
inlineEdits = false;
|
||||
};
|
||||
NewGuildSettings.enabled = true;
|
||||
NoF1.enabled = true;
|
||||
NoOnboardingDelay.enabled = true;
|
||||
NormalizeMessageLinks.enabled = true;
|
||||
NoUnblockToJump.enabled = true;
|
||||
OnePingPerDm.enabled = true;
|
||||
OpenInApp.enabled = true;
|
||||
petpet.enabled = true;
|
||||
ReadAllNotificationsButton.enabled = true;
|
||||
RelationshipNotifier.enabled = true;
|
||||
ReverseImageSearch.enabled = true;
|
||||
ServerInfo.enabled = true;
|
||||
ServerListIndicators.enabled = false;
|
||||
ShowHiddenChannels.enabled = true;
|
||||
ShowHiddenThings.enabled = true;
|
||||
SpotifyControls.enabled = true;
|
||||
ThemeAttributes.enabled = true;
|
||||
TypingIndicator.enabled = true;
|
||||
TypingTweaks.enabled = true;
|
||||
UnlockedAvatarZoom.enabled = true;
|
||||
UnsuppressEmbeds.enabled = true;
|
||||
UserVoiceShow.enabled = true;
|
||||
ValidUser.enabled = true;
|
||||
ViewIcons.enabled = true;
|
||||
ViewRaw.enabled = true;
|
||||
VoiceChatDoubleClick.enabled = true;
|
||||
VoiceDownload.enabled = true;
|
||||
VoiceMessages.enabled = true;
|
||||
WebKeybinds.enabled = true;
|
||||
WebScreenShareFixes.enabled = true;
|
||||
WhoReacted.enabled = true;
|
||||
YoutubeAdblock.enabled = true;
|
||||
DisableDeepLinks.enabled = true;
|
||||
NoTrack.enabled = true;
|
||||
Settings.enabled = true;
|
||||
SupportHelper.enabled = true;
|
||||
WebContextMenus.enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
11
home/vscode.nix
Normal file
11
home/vscode.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
profiles.default.extensions = with pkgs.vscode-extensions; [
|
||||
jnoortheen.nix-ide
|
||||
catppuccin.catppuccin-vsc-icons
|
||||
catppuccin.catppuccin-vsc
|
||||
];
|
||||
};
|
||||
}
|
||||
20
home/xdg-config/default.nix
Normal file
20
home/xdg-config/default.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
b = builtins;
|
||||
|
||||
module_files =
|
||||
b.readDir ./. |>
|
||||
lib.filterAttrs (name: type:
|
||||
( (lib.strings.hasSuffix ".nix" name
|
||||
&& name != "default.nix"
|
||||
&& type == "regular" )
|
||||
|| ( type == "directory"
|
||||
&& b.pathExists ./${name}/default.nix))
|
||||
) |>
|
||||
b.attrNames |>
|
||||
b.map (f: ./${f});
|
||||
in
|
||||
{
|
||||
imports = module_files;
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
}
|
||||
17
home/xdg-config/electron-flags.nix
Normal file
17
home/xdg-config/electron-flags.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
xdg.configFile."electron-flags.conf".text = ''
|
||||
--enable-features=WaylandWindowDecorations
|
||||
--ozone-platform-hint=wayland
|
||||
--enable-blink-features=MiddleClickAutoscroll
|
||||
--ozone-platform=wayland
|
||||
'';
|
||||
xdg.configFile."code-flags.conf".text = ''
|
||||
--ozone-platform-hint=wayland
|
||||
--ozone-platform=wayland
|
||||
--gtk-version=4
|
||||
--ignore-gpu-blocklist
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||
--enable-wayland-ime
|
||||
--password-store=gnome-libsecret
|
||||
'';
|
||||
}
|
||||
14
home/xdg-config/mime.nix
Normal file
14
home/xdg-config/mime.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
let
|
||||
gwenview_desktop_file = "org.kde.gwenview.desktop";
|
||||
in
|
||||
let
|
||||
associations = {
|
||||
"image/jpeg" = "${gwenview_desktop_file}";
|
||||
};
|
||||
in
|
||||
{
|
||||
xdg.mimeApps = {
|
||||
associations.added = associations;
|
||||
defaultApplications = associations;
|
||||
};
|
||||
}
|
||||
40
home/xdg-config/uwsm-env.nix
Normal file
40
home/xdg-config/uwsm-env.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
xdg.configFile."uwsm/env".text = ''
|
||||
export GDK_BACKEND=wayland,x11,*
|
||||
export GDK_SCALE=2 # GDK Scaling Factor (no fractional scaling)
|
||||
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export MOZ_DISABLE_RDD_SANDBOX=1
|
||||
|
||||
export OZONE_PLATFORM=wayland
|
||||
|
||||
export ELECTRON_OZONE_PLATFORM_HINT=auto
|
||||
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
export CLUTTER_BACKEND=wayland
|
||||
|
||||
export QT_QPA_PLATFORM=wayland;xcb
|
||||
export QT_QPA_PLATFORMTHEME=qt5ct
|
||||
export XDG_MENU_PREFIX=plasma-
|
||||
export QT_QPA_PLATFORMTHEME_QT6=qt5ct
|
||||
export GTK_THEME=Adwaita:dark
|
||||
export QS_ICON_THEME=Papirus-Dark
|
||||
|
||||
export LIBVA_DRIVER_NAME=nvidia
|
||||
export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
||||
export XDG_SESSION_DESKTOP=Hyprland
|
||||
export GBM_BACKEND=nvidia-drm
|
||||
export TERMINAL=kitty
|
||||
|
||||
export __GL_GSYNC_ALLOWED=1
|
||||
export __GL_VRR_ALLOWED=1
|
||||
|
||||
export EDITOR=code
|
||||
export STLEDITOR=code
|
||||
|
||||
export XCURSOR_SIZE=16
|
||||
'';
|
||||
xdg.configFile."uwsm/env-hyprland".text = ''
|
||||
export AQ_DRM_DEVICES=/dev/dri/nvidia-dgpu
|
||||
'';
|
||||
}
|
||||
17
home/xdg.nix
Normal file
17
home/xdg.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ pkgs, inputs, ...}:
|
||||
|
||||
{
|
||||
xdg = {
|
||||
enable = true;
|
||||
mime.enable = true;
|
||||
mimeApps.enable = true;
|
||||
portal = {
|
||||
enable = true;
|
||||
extraPortals = [
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
];
|
||||
configPackages = [inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland];
|
||||
};
|
||||
};
|
||||
}
|
||||
98
home/zen-browser.nix
Normal file
98
home/zen-browser.nix
Normal file
@@ -0,0 +1,98 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.zen-browser.homeModules.beta
|
||||
];
|
||||
home.file."catppuccin-zen" = {
|
||||
target = ".zen/default/chrome/catppuccin-zen";
|
||||
source = (
|
||||
fetchTarball {
|
||||
url = "https://github.com/catppuccin/zen-browser/tarball/c855685442c6040c4dda9c8d3ddc7b708de1cbaa";
|
||||
sha256 = "sha256:03ky8s5h9vkw4cp3nm86b0bk5qbjmqgyqq9a95xqzard4wppn3p4";
|
||||
});
|
||||
};
|
||||
programs.zen-browser = {
|
||||
enable = true;
|
||||
nativeMessagingHosts = [pkgs.firefoxpwa];
|
||||
policies = {
|
||||
AutofillAddressEnabled = false;
|
||||
AutofillCreditCardEnabled = false;
|
||||
DisableAppUpdate = true;
|
||||
DisableFeedbackCommands = true;
|
||||
DisableFirefoxStudies = true;
|
||||
DisablePocket = true;
|
||||
DisableTelemetry = true;
|
||||
DontCheckDefaultBrowser = true;
|
||||
NoDefaultBookmarks = true;
|
||||
OfferToSaveLogins = false;
|
||||
EnableTrackingProtection = {
|
||||
Value = true;
|
||||
Locked = true;
|
||||
Cryptomining = true;
|
||||
Fingerprinting = true;
|
||||
};
|
||||
};
|
||||
profiles.default.settings = {
|
||||
"zen.view.use-single-toolbar" = false;
|
||||
"zen.urlbar.replace-newtab" = false;
|
||||
"identity.fxaccounts.autoconfig.uri" = "https://www.fxa.hibana.me";
|
||||
"general.autoScroll" = true;
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
};
|
||||
profiles.default.extensions.packages =
|
||||
with inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||
ublock-origin
|
||||
dearrow
|
||||
bitwarden
|
||||
istilldontcareaboutcookies
|
||||
return-youtube-dislikes
|
||||
sponsorblock
|
||||
youtube-nonstop
|
||||
youtube-high-definition
|
||||
absolute-enable-right-click
|
||||
augmented-steam
|
||||
clearurls
|
||||
darkreader
|
||||
karakeep
|
||||
newtab-adapter
|
||||
steam-database
|
||||
unpaywall
|
||||
violentmonkey
|
||||
];
|
||||
profiles.default.userChrome = ''
|
||||
@import "catppuccin-zen/themes/Mocha/Mauve/userChrome.css";
|
||||
'';
|
||||
profiles.default.userContent = ''
|
||||
@import "catppuccin-zen/themes/Mocha/Mauve/userContent.css";
|
||||
'';
|
||||
};
|
||||
xdg.mimeApps = let
|
||||
value = let
|
||||
zen-browser = inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.beta; # or twilight
|
||||
in
|
||||
zen-browser.meta.desktopFileName;
|
||||
|
||||
associations = builtins.listToAttrs (map (name: {
|
||||
inherit name value;
|
||||
}) [
|
||||
"application/x-extension-shtml"
|
||||
"application/x-extension-xhtml"
|
||||
"application/x-extension-html"
|
||||
"application/x-extension-xht"
|
||||
"application/x-extension-htm"
|
||||
"x-scheme-handler/unknown"
|
||||
"x-scheme-handler/mailto"
|
||||
"x-scheme-handler/chrome"
|
||||
"x-scheme-handler/about"
|
||||
"x-scheme-handler/https"
|
||||
"x-scheme-handler/http"
|
||||
"application/xhtml+xml"
|
||||
"application/json"
|
||||
"text/plain"
|
||||
"text/html"
|
||||
]);
|
||||
in {
|
||||
associations.added = associations;
|
||||
defaultApplications = associations;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user