mirror of
https://github.com/henrysipp/omarchy-nix.git
synced 2026-06-05 18:29:26 -05:00
Initial commit
This commit is contained in:
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{...}: {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{config, ...}: let
|
||||
cfg = config.omarchy;
|
||||
in {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = cfg.full_name;
|
||||
userEmail = cfg.email_address;
|
||||
};
|
||||
}
|
||||
@@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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}"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{...}: {
|
||||
programs.starship.enable = true;
|
||||
}
|
||||
@@ -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=";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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 = "{}";
|
||||
# };
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{...}: {
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{...}: {
|
||||
programs = {
|
||||
_1password.enable = true;
|
||||
_1password-gui.enable = true;
|
||||
|
||||
# TODO: Dynamically get user names
|
||||
_1password-gui.polkitPolicyOwners = ["henry"];
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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 = "*";
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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; [
|
||||
];
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user