Initial commit

This commit is contained in:
Henry Sipp
2025-06-28 12:27:26 -05:00
commit 5d3d3d6037
90 changed files with 4365 additions and 0 deletions
+211
View File
@@ -0,0 +1,211 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
in {
programs.alacritty = {
enable = true;
settings = {
# Window settings
window = {
padding = {
x = 10;
y = 10;
};
dynamic_padding = true;
decorations = "none";
opacity = 0.95;
blur = true;
startup_mode = "Windowed";
title = "Alacritty";
dynamic_title = true;
};
# Scrolling
scrolling = {
history = 10000;
multiplier = 3;
};
# Font configuration
font = {
normal = {
family = cfg.primary_font;
style = "Regular";
};
bold = {
family = cfg.primary_font;
style = "Bold";
};
italic = {
family = cfg.primary_font;
style = "Italic";
};
bold_italic = {
family = cfg.primary_font;
style = "Bold Italic";
};
size = 11.0;
};
# Colors
colors = {
primary.background = theme.background;
primary.foreground = theme.foreground;
normal.black = theme.black;
normal.red = theme.red;
normal.green = theme.green;
normal.yellow = theme.yellow;
normal.blue = theme.blue;
normal.magenta = theme.magenta;
normal.cyan = theme.cyan;
normal.white = theme.white;
bright.black = theme.bright_black;
bright.red = theme.bright_red;
bright.green = theme.bright_green;
bright.yellow = theme.bright_yellow;
bright.blue = theme.bright_blue;
bright.magenta = theme.bright_magenta;
bright.cyan = theme.bright_cyan;
bright.white = theme.bright_white;
selection.background = theme.primary;
};
# // (
# if theme ? orange
# then {
# indexed_colors =
# [
# {
# index = 16;
# color = theme.orange;
# }
# ]
# ++ (
# if theme ? rosewater
# then [
# {
# index = 17;
# color = theme.rosewater;
# }
# ]
# else []
# )
# ++ (
# if theme ? peach
# then [
# {
# index = 18;
# color = theme.peach;
# }
# ]
# else []
# );
# }
# else {}
# );
# Bell
bell = {
animation = "EaseOutExpo";
duration = 0;
color = theme.warning;
};
# Mouse
mouse = {
hide_when_typing = true;
bindings = [
{
mouse = "Middle";
action = "PasteSelection";
}
];
};
# Key bindings
keyboard.bindings = [
# Copy/Paste
{
key = "C";
mods = "Control|Shift";
action = "Copy";
}
{
key = "V";
mods = "Control|Shift";
action = "Paste";
}
# Search
{
key = "F";
mods = "Control|Shift";
action = "SearchForward";
}
{
key = "B";
mods = "Control|Shift";
action = "SearchBackward";
}
# Font size
{
key = "Plus";
mods = "Control";
action = "IncreaseFontSize";
}
{
key = "Minus";
mods = "Control";
action = "DecreaseFontSize";
}
{
key = "Key0";
mods = "Control";
action = "ResetFontSize";
}
# New window
{
key = "Return";
mods = "Control|Shift";
action = "SpawnNewInstance";
}
];
# Cursor
cursor = {
style = {
shape = "Block";
blinking = "Off";
};
unfocused_hollow = true;
thickness = 0.15;
};
# Live config reload
general.live_config_reload = true;
# Shell
terminal.shell = {
program = "${pkgs.zsh}/bin/zsh";
args = ["--login"];
};
# Working directory
working_directory = "None";
# Debug
debug = {
render_timer = false;
persistent_logging = false;
log_level = "Warn";
print_events = false;
};
};
};
}
+162
View File
@@ -0,0 +1,162 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
in {
home.file = {
".config/btop/themes/${cfg.theme}.theme" = {
text = ''
# Main bg
theme[main_bg]="${theme.background}"
# Main text color
theme[main_fg]="${theme.foreground_muted}"
# Title color for boxes
theme[title]="${theme.foreground_muted}"
# Highlight color for keyboard shortcuts
theme[hi_fg]="${theme.primary_variant}"
# Background color of selected item in processes box
theme[selected_bg]="${theme.surface}"
# Foreground color of selected item in processes box
theme[selected_fg]="${theme.foreground_muted}"
# Color of inactive/disabled text
theme[inactive_fg]="${theme.inactive}"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="${theme.primary_variant}"
# Cpu box outline color
theme[cpu_box]="${theme.inactive}"
# Memory/disks box outline color
theme[mem_box]="${theme.inactive}"
# Net up/down box outline color
theme[net_box]="${theme.inactive}"
# Processes box outline color
theme[proc_box]="${theme.inactive}"
# Box divider line and small boxes line color
theme[div_line]="${theme.inactive}"
# Temperature graph colors
theme[temp_start]="${theme.success}"
theme[temp_mid]="${theme.warning}"
theme[temp_end]="${theme.error}"
# CPU graph colors
theme[cpu_start]="${theme.success}"
theme[cpu_mid]="${theme.warning}"
theme[cpu_end]="${theme.error}"
# Mem/Disk free meter
theme[free_start]="${theme.success}"
theme[free_mid]="${theme.warning}"
theme[free_end]="${theme.error}"
# Mem/Disk cached meter
theme[cached_start]="${theme.success}"
theme[cached_mid]="${theme.warning}"
theme[cached_end]="${theme.error}"
# Mem/Disk available meter
theme[available_start]="${theme.success}"
theme[available_mid]="${theme.warning}"
theme[available_end]="${theme.error}"
# Mem/Disk used meter
theme[used_start]="${theme.success}"
theme[used_mid]="${theme.warning}"
theme[used_end]="${theme.error}"
# Download graph colors
theme[download_start]="${theme.success}"
theme[download_mid]="${theme.warning}"
theme[download_end]="${theme.error}"
# Upload graph colors
theme[upload_start]="${theme.success}"
theme[upload_mid]="${theme.warning}"
theme[upload_end]="${theme.error}"
'';
};
};
programs.btop = {
enable = true;
settings = {
color_theme = cfg.theme;
theme_background = false;
truecolor = true;
force_tty = false;
vim_keys = true;
rounded_corners = true;
graph_symbol = "braille";
graph_symbol_cpu = "default";
graph_symbol_mem = "default";
graph_symbol_net = "default";
graph_symbol_proc = "default";
shown_boxes = "cpu mem net proc";
update_ms = 2000;
proc_sorting = "cpu lazy";
proc_reversed = false;
proc_tree = false;
proc_colors = true;
proc_gradient = false;
proc_per_core = false;
proc_mem_bytes = true;
proc_cpu_graphs = true;
proc_info_smaps = false;
proc_left = false;
cpu_graph_upper = "total";
cpu_graph_lower = "total";
cpu_invert_lower = true;
cpu_single_graph = false;
cpu_bottom = false;
show_uptime = true;
check_temp = true;
cpu_sensor = "Auto";
show_coretemp = true;
cpu_core_map = "";
temp_scale = "celsius";
base_10_sizes = false;
show_cpu_freq = true;
clock_format = "%X";
background_update = true;
custom_cpu_name = ";
disks_filter = ";
mem_graphs = true;
mem_below_net = false;
zfs_arc_cached = true;
show_swap = true;
swap_disk = true;
show_disks = true;
only_physical = true;
use_fstab = true;
zfs_hide_datasets = false;
disk_free_priv = false;
show_io_stat = true;
io_mode = false;
io_graph_combined = false;
io_graph_speeds = ";
net_download = 100;
net_upload = 100;
net_auto = true;
net_sync = true;
net_iface = ";
show_battery = true;
selected_battery = "Auto";
log_level = "WARNING";
};
};
}
+40
View File
@@ -0,0 +1,40 @@
inputs: {
config,
pkgs,
...
}: let
packages = import ../packages.nix {inherit pkgs;};
in {
imports = [
(import ./hyprland.nix inputs)
(import ./hyprpaper.nix)
# (import ./hyprlock.nix)
(import ./alacritty.nix)
(import ./btop.nix)
(import ./direnv.nix)
(import ./git.nix)
(import ./mako.nix)
(import ./starship.nix)
(import ./vscode.nix)
(import ./waybar.nix)
(import ./wofi.nix)
(import ./zoxide.nix)
(import ./zsh.nix)
];
home.packages = packages.homePackages;
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
gtk = {
enable = true;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
};
}
+7
View File
@@ -0,0 +1,7 @@
{...}: {
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
}
+9
View File
@@ -0,0 +1,9 @@
{config, ...}: let
cfg = config.omarchy;
in {
programs.git = {
enable = true;
userName = cfg.full_name;
userEmail = cfg.email_address;
};
}
+11
View File
@@ -0,0 +1,11 @@
inputs: {
config,
pkgs,
...
}: {
imports = [./hyprland/configuration.nix];
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
};
}
@@ -0,0 +1,21 @@
{
config,
pkgs,
...
}: {
wayland.windowManager.hyprland.settings = {
exec-once = [
# "hypridle & mako & waybar & fcitx5"
# "waybar"
# "swaybg -i ~/.config/omarchy/current/background -m fill"
"systemctl --user start hyprpolkitagent"
"wl-clip-persist --clipboard regular & clipse -listen"
# "dropbox-cli start" # Uncomment to run Dropbox
];
exec = [
"pkill -SIGUSR2 waybar || waybar"
];
};
}
+123
View File
@@ -0,0 +1,123 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
in {
wayland.windowManager.hyprland.settings = {
bind =
cfg.quickAppBindings
++ [
# Start default apps
"SUPER, space, exec, wofi --show drun --sort-order=alphabetical"
"SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar"
# "SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next"
# "SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next"
"SUPER, W, killactive,"
# End active session
"SUPER, ESCAPE, exec, hyprlock"
"SUPER SHIFT, ESCAPE, exit,"
"SUPER CTRL, ESCAPE, exec, reboot"
"SUPER SHIFT CTRL, ESCAPE, exec, systemctl poweroff"
# Control tiling
"SUPER, J, togglesplit, # dwindle"
"SUPER, P, pseudo, # dwindle"
"SUPER, V, togglefloating,"
# Move focus with mainMod + arrow keys
"SUPER, left, movefocus, l"
"SUPER, right, movefocus, r"
"SUPER, up, movefocus, u"
"SUPER, down, movefocus, d"
# Switch workspaces with mainMod + [0-9]
"SUPER, 1, workspace, 1"
"SUPER, 2, workspace, 2"
"SUPER, 3, workspace, 3"
"SUPER, 4, workspace, 4"
"SUPER, 5, workspace, 5"
"SUPER, 6, workspace, 6"
"SUPER, 7, workspace, 7"
"SUPER, 8, workspace, 8"
"SUPER, 9, workspace, 9"
"SUPER, 0, workspace, 10"
# Move active window to a workspace with mainMod + SHIFT + [0-9]
"SUPER SHIFT, 1, movetoworkspace, 1"
"SUPER SHIFT, 2, movetoworkspace, 2"
"SUPER SHIFT, 3, movetoworkspace, 3"
"SUPER SHIFT, 4, movetoworkspace, 4"
"SUPER SHIFT, 5, movetoworkspace, 5"
"SUPER SHIFT, 6, movetoworkspace, 6"
"SUPER SHIFT, 7, movetoworkspace, 7"
"SUPER SHIFT, 8, movetoworkspace, 8"
"SUPER SHIFT, 9, movetoworkspace, 9"
"SUPER SHIFT, 0, movetoworkspace, 10"
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys
"SUPER SHIFT, left, swapwindow, l"
"SUPER SHIFT, right, swapwindow, r"
"SUPER SHIFT, up, swapwindow, u"
"SUPER SHIFT, down, swapwindow, d"
# Resize active window
"SUPER, minus, resizeactive, -100 0"
"SUPER, equal, resizeactive, 100 0"
"SUPER SHIFT, minus, resizeactive, 0 -100"
"SUPER SHIFT, equal, resizeactive, 0 100"
# Scroll through existing workspaces with mainMod + scroll
"SUPER, mouse_down, workspace, e+1"
"SUPER, mouse_up, workspace, e-1"
# Control Apple Display brightness
"CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000"
"CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000"
"SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000"
# Super workspace floating layer
"SUPER, S, togglespecialworkspace, magic"
"SUPER SHIFT, S, movetoworkspace, special:magic"
# Screenshots
", PRINT, exec, hyprshot -m region"
"SHIFT, PRINT, exec, hyprshot -m window"
"CTRL, PRINT, exec, hyprshot -m output"
# Color picker
"SUPER, PRINT, exec, hyprpicker -a"
# Clipse
"CTRL SUPER, V, exec, alacritty --class clipse -e clipse"
];
bindm = [
# Move/resize windows with mainMod + LMB/RMB and dragging
"SUPER, mouse:272, movewindow"
"SUPER, mouse:273, resizewindow"
];
bindel = [
# Laptop multimedia keys for volume and LCD brightness
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
",XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+"
",XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-"
];
bindl = [
# Requires playerctl
", XF86AudioNext, exec, playerctl next"
", XF86AudioPause, exec, playerctl play-pause"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioPrev, exec, playerctl previous"
];
};
}
@@ -0,0 +1,44 @@
{
config,
pkgs,
...
}: {
imports = [
./autostart.nix
./bindings.nix
./envs.nix
./looknfeel.nix
./windows.nix
];
wayland.windowManager.hyprland.settings = {
# Default applications
"$terminal" = "alacritty";
"$fileManager" = "nautilus --new-window";
"$browser" = "chromium --new-window --ozone-platform=wayland";
"$music" = "spotify";
"$passwordManager" = "1password";
"$messenger" = "signal-desktop";
"$webapp" = "$browser --app";
# Environment variables
env = [
"GDK_SCALE,2" # Change to 1 if on a 1x display
# Uncomment if running NVIDIA GPU:
# "NVD_BACKEND,direct"
# "LIBVA_DRIVER_NAME,nvidia"
# "__GLX_VENDOR_LIBRARY_NAME,nvidia"
];
# Extra bindings
bind = [
"SUPER, A, exec, $webapp=https://chatgpt.com"
"SUPER SHIFT, A, exec, $webapp=https://grok.com"
"SUPER, C, exec, $webapp=https://app.hey.com/calendar/weeks/"
"SUPER, E, exec, $webapp=https://app.hey.com"
"SUPER, Y, exec, $webapp=https://youtube.com/"
"SUPER SHIFT, G, exec, $webapp=https://web.whatsapp.com/"
"SUPER, X, exec, $webapp=https://x.com/"
"SUPER SHIFT, X, exec, $webapp=https://x.com/compose/post"
];
};
}
+51
View File
@@ -0,0 +1,51 @@
{
config,
pkgs,
...
}: {
wayland.windowManager.hyprland.settings = {
# Environment variables
env = [
"GDK_SCALE,2" # Change to 1 if on a 1x display
# Uncomment if running NVIDIA GPU:
# "NVD_BACKEND,direct"
# "LIBVA_DRIVER_NAME,nvidia"
# "__GLX_VENDOR_LIBRARY_NAME,nvidia"
# Cursor size
"XCURSOR_SIZE,24"
"HYPRCURSOR_SIZE,24"
# Cursor theme
"XCURSOR_THEME,Bibata-Modern-Classic"
"HYPRCURSOR_THEME,Bibata-Modern-Classic"
# Force all apps to use Wayland
"GDK_BACKEND,wayland"
"QT_QPA_PLATFORM,wayland"
"QT_STYLE_OVERRIDE,kvantum"
"SDL_VIDEODRIVER,wayland"
"MOZ_ENABLE_WAYLAND,1"
"ELECTRON_OZONE_PLATFORM_HINT,wayland"
"OZONE_PLATFORM,wayland"
# Make Chromium use XCompose and all Wayland
"CHROMIUM_FLAGS,\"--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4\""
# Make .desktop files available for wofi
"XDG_DATA_DIRS,$XDG_DATA_DIRS:$HOME/.nix-profile/share:/nix/var/nix/profiles/default/share"
# Use XCompose file
"XCOMPOSEFILE,~/.XCompose"
];
xwayland = {
force_zero_scaling = true;
};
# Don't show update on first launch
ecosystem = {
no_update_news = true;
};
};
}
+30
View File
@@ -0,0 +1,30 @@
{
config,
pkgs,
...
}: {
wayland.windowManager.hyprland.settings = {
# Environment variables
# https://wiki.hyprland.org/Configuring/Variables/#input
input = {
kb_layout = us;
# kb_variant =
# kb_model =
kb_options = compose:caps;
# kb_rules =
follow_mouse = 1;
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
touchpad = {
natural_scroll = false;
};
};
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures = {
workspace_swipe = false;
};
};
}
+125
View File
@@ -0,0 +1,125 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../../themes.nix;
theme = themes.${cfg.theme};
# Convert hex color to rgba format for hyprland
hexToRgba = hex: alpha: let
cleanHex = builtins.substring 1 6 hex; # Remove the # prefix
in "rgba(${cleanHex}${alpha})";
# Special handling for tokyo-night gradient
activeBorder =
if cfg.theme == "tokyo-night"
then "${hexToRgba theme.accent "ee"} ${hexToRgba theme.success "ee"} 45deg"
else hexToRgba theme.foreground "ff";
in {
wayland.windowManager.hyprland.settings = {
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 2;
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
"col.active_border" = activeBorder;
"col.inactive_border" = hexToRgba theme.surface_variant "aa";
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false;
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false;
layout = "dwindle";
};
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration = {
rounding = 0;
shadow = {
enabled = true;
range = 2;
render_power = 3;
color = hexToRgba theme.background "ee";
};
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur = {
enabled = true;
size = 3;
passes = 1;
vibrancy = 0.1696;
};
};
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations = {
enabled = true; # yes, please :)
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = [
"easeOutQuint,0.23,1,0.32,1"
"easeInOutCubic,0.65,0.05,0.36,1"
"linear,0,0,1,1"
"almostLinear,0.5,0.5,0.75,1.0"
"quick,0.15,0,0.1,1"
];
animation = [
"global, 1, 10, default"
"border, 1, 5.39, easeOutQuint"
"windows, 1, 4.79, easeOutQuint"
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
"windowsOut, 1, 1.49, linear, popin 87%"
"fadeIn, 1, 1.73, almostLinear"
"fadeOut, 1, 1.46, almostLinear"
"fade, 1, 3.03, quick"
"layers, 1, 3.81, easeOutQuint"
"layersIn, 1, 4, easeOutQuint, fade"
"layersOut, 1, 1.5, linear, fade"
"fadeLayersIn, 1, 1.79, almostLinear"
"fadeLayersOut, 1, 1.39, almostLinear"
"workspaces, 0, 0, ease"
];
};
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle = {
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true; # You probably want this
force_split = 2; # Always split on the right
};
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master = {
new_status = "master";
};
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
};
};
}
+36
View File
@@ -0,0 +1,36 @@
{
config,
pkgs,
...
}: {
wayland.windowManager.hyprland.settings = {
windowrule = [
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
"suppressevent maximize, class:.*"
# Force chromium into a tile to deal with --app bug
"tile, class:^(chromium)$"
# Just dash of opacity
"opacity 0.97 0.9, class:.*"
"opacity 1 0.97, class:^(chromium|google-chrome|google-chrome-unstable)$"
"opacity 0.97 0.9, initialClass:^(chrome-.*-Default)$ # web apps"
"opacity 1 1, initialClass:^(chrome-youtube.*-Default)$ # Youtube"
"opacity 1 1, class:^(zoom|vlc|org.kde.kdenlive|com.obsproject.Studio)$"
# Fix some dragging issues with XWayland
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
# Proper background blur for wofi
# Float in the middle for clipse clipboard manager
"float, class:(clipse)"
"size 622 652, class:(clipse)"
"stayfocused, class:(clipse)"
];
layerrule = [
"blur,wofi"
];
};
}
+28
View File
@@ -0,0 +1,28 @@
{inputs, ...}: {
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
rgba = inputs.nix-colors.lib.hexToRgba "#3c3836";
in {
programs.hyprlock = {
enable = true;
settings = {
source = "colors.conf";
general = {
disable_loading_bar = true;
no_fade_in = false;
};
auth = {
fingerprint.enabled = true;
};
background = {
monitor = "";
color = rgba; # You can now use the rgba value here
};
};
};
}
+40
View File
@@ -0,0 +1,40 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
wallpapers = {
"tokyo-night" = [
"1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg"
];
"kanagawa" = [
"kanagawa-1.png"
];
"everforest" = [
"1-everforest.jpg"
];
};
# Safe access with fallback
selected_wallpaper = builtins.elemAt (wallpapers.${cfg.theme}) 0;
selected_wallpaper_path = "~/Pictures/Wallpapers/${selected_wallpaper}";
in {
home.file = {
"Pictures/Wallpapers" = {
source = ../../config/themes/${cfg.theme}/wallpapers;
recursive = true;
};
};
services.hyprpaper = {
enable = true;
settings = {
preload = [
selected_wallpaper_path
];
wallpaper = [
"eDP-1,${selected_wallpaper_path}"
];
};
};
}
+57
View File
@@ -0,0 +1,57 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
in {
services.mako = {
enable = true;
# All configuration moved to settings
settings = {
# Main appearance settings
background-color = theme.background;
text-color = theme.foreground;
border-color = theme.accent;
progress-color = theme.primary;
# Dimensions and positioning
width = 420;
height = 110;
padding = "10";
margin = "10";
border-size = 2;
border-radius = 8;
# Font
# font = "Liberation Sans 11";
# Positioning
anchor = "top-right";
layer = "overlay";
# Behavior
default-timeout = 5000;
ignore-timeout = false;
max-visible = 5;
sort = "-time";
# Icons
# max-icon-size = 32;
# icon-path = "/usr/share/icons/Papirus-Dark";
# Grouping
group-by = "app-name";
# Actions
actions = true;
# Format
format = "<b>%s</b>\\n%b";
markup = true;
};
};
}
+3
View File
@@ -0,0 +1,3 @@
{...}: {
programs.starship.enable = true;
}
+48
View File
@@ -0,0 +1,48 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
in {
programs.vscode = {
enable = true;
profiles.default = {
userSettings =
{
"workbench.colorTheme" = theme.vscode_theme;
# "workbench.colorTheme" = "Everforest Dark";
"vim.useCtrlKeys" = false;
"editor.minimap.enabled" = false;
}
// cfg.vscode_settings;
extensions = with pkgs.vscode-extensions;
[
bbenoist.nix
]
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "everforest";
publisher = "sainnhe";
version = "0.3.0";
sha256 = "sha256-nZirzVvM160ZTpBLTimL2X35sIGy5j2LQOok7a2Yc7U=";
}
{
name = "tokyo-night";
publisher = "enkia";
version = "1.1.2";
sha256 = "sha256-oW0bkLKimpcjzxTb/yjShagjyVTUFEg198oPbY5J2hM=";
}
{
name = "kanagawa";
publisher = "qufiwefefwoyn";
version = "1.5.1";
sha256 = "sha256-AGGioXcK/fjPaFaWk2jqLxovUNR59gwpotcSpGNbj1c=";
}
];
};
};
}
+174
View File
@@ -0,0 +1,174 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
in {
home.file = {
".config/waybar/" = {
source = ../../config/waybar;
recursive = true;
};
".config/waybar/theme.css" = {
text = ''
* {
color: ${theme.foreground};
background-color: ${theme.background};
}
'';
};
};
programs.waybar = {
enable = true;
settings = [
{
layer = "top";
position = "top";
spacing = 0;
height = 26;
modules-left = [
"hyprland/workspaces"
];
modules-center = [
"clock"
];
modules-right = [
# "custom/dropbox"
"bluetooth"
"network"
"wireplumber"
"cpu"
"power-profiles-daemon"
"battery"
];
"hyprland/workspaces" = {
on-click = "activate";
format = "{icon}";
format-icons = {
default = "";
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
"9" = "9";
active = "󱓻";
};
persistent_workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
"5" = [];
};
};
cpu = {
interval = 5;
format = "󰍛";
on-click = "alacritty -e btop";
};
clock = {
format = "{:%A %H:%M}";
format-alt = "{:%d %B W%V %Y}";
tooltip = false;
};
network = {
format-icons = ["󰤯" "󰤟" "󰤢" "󰤥" "󰤨"];
format = "{icon}";
format-wifi = "{icon}";
format-ethernet = "󰀂";
format-disconnected = "󰖪";
tooltip-format-wifi = "{essid} ({frequency} GHz)\n{bandwidthDownBytes} {bandwidthUpBytes}";
tooltip-format-ethernet = "{bandwidthDownBytes} {bandwidthUpBytes}";
tooltip-format-disconnected = "Disconnected";
interval = 3;
nospacing = 1;
on-click = "alacritty -e iwctl";
};
battery = {
interval = 5;
format = "{capacity}% {icon}";
format-discharging = "{icon}";
format-charging = "{icon}";
format-plugged = "";
format-icons = {
charging = [
"󰢜"
"󰂆"
"󰂇"
"󰂈"
"󰢝"
"󰂉"
"󰢞"
"󰂊"
"󰂋"
"󰂅"
];
default = [
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
};
format-full = "Charged ";
tooltip-format-discharging = "{power:>1.0f}W {capacity}%";
tooltip-format-charging = "{power:>1.0f}W {capacity}%";
states = {
warning = 20;
critical = 10;
};
};
bluetooth = {
format = "󰂯";
format-disabled = "󰂲";
format-connected = "";
tooltip-format = "Devices connected: {num_connections}";
on-click = "GTK_THEME=Adwaita-dark blueberry";
};
wireplumber = {
# Changed from "pulseaudio"
"format" = "";
format-muted = "󰝟";
scroll-step = 5;
on-click = "GTK_THEME=Adwaita-dark pavucontrol";
tooltip-format = "Playing at {volume}%";
on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; # Updated command
max-volume = 150; # Optional: allow volume over 100%
};
power-profiles-daemon = {
format = "{icon}";
tooltip-format = "Power profile: {profile}";
tooltip = true;
format-icons = {
power-saver = "󰡳";
balanced = "󰊚";
performance = "󰡴";
};
};
# "custom/dropbox" = {
# format = "";
# on-click = "nautilus ~/Dropbox";
# exec = "dropbox-cli status";
# return-type = "text";
# interval = 5;
# tooltip = true;
# tooltip-format = "{}";
# };
}
];
};
}
+106
View File
@@ -0,0 +1,106 @@
{
config,
pkgs,
...
}: let
cfg = config.omarchy;
themes = import ../themes.nix;
theme = themes.${cfg.theme};
in {
home.file = {
".config/wofi/style.css" = {
text = ''
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: ${theme.background};
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: ${theme.background};
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: ${theme.background};
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: ${theme.background};
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: ${theme.background};
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: ${theme.foreground_muted}
}
#entry {
background-color: ${theme.background};
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: ${theme.primary_variant};
}
#entry image {
-gtk-icon-transform: scale(0.7);
}
'';
};
};
programs.wofi = {
enable = true;
settings = {
width = 600;
height = 350;
location = "center";
show = "drun";
prompt = "Search...";
filter_rate = 100;
allow_markup = true;
no_actions = true;
halign = "fill";
orientation = "vertical";
content_halign = "fill";
insensitive = true;
allow_images = true;
image_size = 40;
gtk_dark = true;
};
};
}
+6
View File
@@ -0,0 +1,6 @@
{...}: {
programs.zoxide = {
enable = true;
enableZshIntegration = true;
};
}
+22
View File
@@ -0,0 +1,22 @@
{...}: {
programs.zsh = {
enable = true;
autosuggestion.enable = true;
zplug = {
enable = true;
plugins = [
{
name = "plugins/git";
tags = [from:oh-my-zsh];
}
{
name = "fdellwing/zsh-bat";
tags = [as:command];
}
];
};
sessionVariables = {
EDITOR = "nvim";
};
};
}