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";
};
};
}
+9
View File
@@ -0,0 +1,9 @@
{...}: {
programs = {
_1password.enable = true;
_1password-gui.enable = true;
# TODO: Dynamically get user names
_1password-gui.polkitPolicyOwners = ["henry"];
};
}
+15
View File
@@ -0,0 +1,15 @@
inputs: {
config,
pkgs,
...
}: let
packages = import ../packages.nix {inherit pkgs;};
in {
imports = [
(import ./hyprland.nix inputs)
(import ./system.nix)
(import ./1password.nix)
];
environment.systemPackages = packages.systemPackages;
}
+16
View File
@@ -0,0 +1,16 @@
inputs: {
config,
pkgs,
...
}: {
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
};
xdg.portal = {
enable = true;
extraPortals = [pkgs.xdg-desktop-portal-gtk];
config.common.default = "*";
};
}
+36
View File
@@ -0,0 +1,36 @@
{
config,
pkgs,
...
}: {
environment.systemPackages = with pkgs; [
git
vim
curl
wget
pamixer
playerctl
bibata-cursors
gnome-themes-extra
];
security.rtkit.enable = true;
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
services.greetd = {
enable = true;
settings.default_session.command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
};
networking.networkmanager.enable = true;
}
+66
View File
@@ -0,0 +1,66 @@
{pkgs}: {
# Regular packages
systemPackages = with pkgs; [
# Base system tools
git
vim
libnotify
pavucontrol
brightnessctl
ffmpeg
alacritty
nautilus
hyprshot
hyprpicker
alejandra
# Shell tools
fzf
zoxide
ripgrep
eza
fd
curl
unzip
wget
gnumake
# TUIs
lazygit
lazydocker
btop
powertop
fastfetch
# GUIs
chromium
obsidian
vlc
# Can't find this in nixpkgs!
# Might have to make it ourselves
# asdcontrol
# Don't want these right now
# obs-studio
# kdePackages.kdenLive
# pinta
# libreoffice
# signal_desktop
# Commercial GUIs
typora
dropbox
spotify
# zoom
# Development tools
github-desktop
gh
podman-tui
podman-compose
];
homePackages = with pkgs; [
];
}
+310
View File
@@ -0,0 +1,310 @@
{
"tokyo-night" = {
# Base colors
background = "#1a1b26";
foreground = "#a9b1d6";
surface = "#414868";
surface_variant = "#565f89";
# Primary colors
primary = "#7aa2f7";
primary_variant = "#7dcfff";
secondary = "#bb9af7";
accent = "#33ccff";
# Status colors
success = "#9ece6a";
warning = "#e0af68";
error = "#f7768e";
info = "#7aa2f7";
# Terminal colors
black = "#32344a";
red = "#f7768e";
green = "#9ece6a";
yellow = "#e0af68";
blue = "#7aa2f7";
magenta = "#ad8ee6";
cyan = "#449dab";
white = "#787c99";
# Bright terminal colors
bright_black = "#444b6a";
bright_red = "#ff7a93";
bright_green = "#b9f27c";
bright_yellow = "#ff9e64";
bright_blue = "#7da6ff";
bright_magenta = "#bb9af7";
bright_cyan = "#0db9d7";
bright_white = "#acb0d0";
# UI elements
border = "#33ccff";
selection = "#7aa2f7";
inactive = "#565f89";
foreground_muted = "#cfc9c2";
# VSCode theme
vscode_theme = "Tokyo Night";
};
"catppuccin-macchiato" = {
# Base colors
background = "#24273a";
foreground = "#cad3f5";
surface = "#51576d";
surface_variant = "#838ba7";
# Primary colors
primary = "#8caaee";
primary_variant = "#8aadf4";
secondary = "#f5bde6";
accent = "#c6d0f5";
# Status colors
success = "#a6d189";
warning = "#e5c890";
error = "#ed8796";
info = "#8caaee";
# Terminal colors
black = "#494d64";
red = "#ed8796";
green = "#a6da95";
yellow = "#eed49f";
blue = "#8aadf4";
magenta = "#f5bde6";
cyan = "#8bd5ca";
white = "#b8c0e0";
# Bright terminal colors
bright_black = "#5b6078";
bright_red = "#ed8796";
bright_green = "#a6da95";
bright_yellow = "#eed49f";
bright_blue = "#8aadf4";
bright_magenta = "#f5bde6";
bright_cyan = "#8bd5ca";
bright_white = "#a5adcb";
# UI elements
border = "#c6d0f5";
selection = "#f4dbd6";
inactive = "#838ba7";
foreground_muted = "#c6d0f5";
# Special colors
orange = "#f5a97f";
rosewater = "#f4dbd6";
# VSCode theme
vscode_theme = "Catppuccin Macchiato";
};
"kanagawa" = {
# Base colors
background = "#1f1f28";
foreground = "#dcd7ba";
surface = "#2d4f67";
surface_variant = "#727169";
# Primary colors
primary = "#7e9cd8";
primary_variant = "#7fb4ca";
secondary = "#957fb8";
accent = "#938aa9";
# Status colors
success = "#76946a";
warning = "#c0a36e";
error = "#c34043";
info = "#7e9cd8";
# Terminal colors
black = "#090618";
red = "#c34043";
green = "#76946a";
yellow = "#c0a36e";
blue = "#7e9cd8";
magenta = "#957fb8";
cyan = "#6a9589";
white = "#c8c093";
# Bright terminal colors
bright_black = "#727169";
bright_red = "#e82424";
bright_green = "#98bb6c";
bright_yellow = "#e6c384";
bright_blue = "#7fb4ca";
bright_magenta = "#938aa9";
bright_cyan = "#7aa89f";
bright_white = "#dcd7ba";
# UI elements
border = "#938aa9";
selection = "#2d4f67";
inactive = "#727169";
foreground_muted = "#c8c093";
# Special colors
orange = "#ffa066";
peach = "#ff5d62";
# VSCode theme
vscode_theme = "Kanagawa";
};
"everforest" = {
# Base colors
background = "#2d353b";
foreground = "#d3c6aa";
surface = "#3d484d";
surface_variant = "#475258";
# Primary colors
primary = "#7fbbb3";
primary_variant = "#83c092";
secondary = "#d699b6";
accent = "#e67e80";
# Status colors
success = "#a7c080";
warning = "#dbbc7f";
error = "#e67e80";
info = "#7fbbb3";
# Terminal colors
black = "#475258";
red = "#e67e80";
green = "#a7c080";
yellow = "#dbbc7f";
blue = "#7fbbb3";
magenta = "#d699b6";
cyan = "#83c092";
white = "#d3c6aa";
# Bright terminal colors (same as normal for this theme)
bright_black = "#475258";
bright_red = "#e67e80";
bright_green = "#a7c080";
bright_yellow = "#dbbc7f";
bright_blue = "#7fbbb3";
bright_magenta = "#d699b6";
bright_cyan = "#83c092";
bright_white = "#d3c6aa";
# UI elements
border = "#3d484d";
selection = "#3d484d";
inactive = "#2d353b";
foreground_muted = "#d3c6aa";
# VSCode theme
vscode_theme = "Everforest Dark";
};
"gruvbox" = {
# Base colors
background = "#282828";
foreground = "#d4be98";
surface = "#3c3836";
surface_variant = "#504945";
# Primary colors
primary = "#7daea3";
primary_variant = "#89b482";
secondary = "#d3869b";
accent = "#d8a657";
# Status colors
success = "#a9b665";
warning = "#d8a657";
error = "#ea6962";
info = "#7daea3";
# Terminal colors
black = "#3c3836";
red = "#ea6962";
green = "#a9b665";
yellow = "#d8a657";
blue = "#7daea3";
magenta = "#d3869b";
cyan = "#89b482";
white = "#d4be98";
# Bright terminal colors (same as normal for this theme)
bright_black = "#3c3836";
bright_red = "#ea6962";
bright_green = "#a9b665";
bright_yellow = "#d8a657";
bright_blue = "#7daea3";
bright_magenta = "#d3869b";
bright_cyan = "#89b482";
bright_white = "#d4be98";
# UI elements
border = "#504945";
selection = "#504945";
inactive = "#665c54";
foreground_muted = "#bdae93";
# VSCode theme
vscode_theme = "Gruvbox Dark";
};
"catppuccin-mocha" = {
# Base colors
background = "#1e1e2e";
foreground = "#cdd6f4";
surface = "#313244";
surface_variant = "#6c7086";
# Primary colors
primary = "#89b4fa";
primary_variant = "#74c7ec";
secondary = "#cba6f7";
accent = "#b4befe";
# Status colors
success = "#a6e3a1";
warning = "#f9e2af";
error = "#f38ba8";
info = "#89b4fa";
# Terminal colors
black = "#45475a";
red = "#f38ba8";
green = "#a6e3a1";
yellow = "#f9e2af";
blue = "#89b4fa";
magenta = "#cba6f7";
cyan = "#74c7ec";
white = "#bac2de";
# Bright terminal colors
bright_black = "#585b70";
bright_red = "#f38ba8";
bright_green = "#a6e3a1";
bright_yellow = "#f9e2af";
bright_blue = "#89b4fa";
bright_magenta = "#cba6f7";
bright_cyan = "#74c7ec";
bright_white = "#a6adc8";
# UI elements
border = "#b4befe";
selection = "#f5e0dc";
inactive = "#6c7086";
foreground_muted = "#cdd6f4";
# Special colors
orange = "#fab387";
rosewater = "#f5e0dc";
# VSCode theme
vscode_theme = "Catppuccin Mocha";
};
# "nord" = {};
# Add more themes here
}