282 lines
8.7 KiB
Nix
282 lines
8.7 KiB
Nix
{
|
||
config,
|
||
hostType,
|
||
lib,
|
||
pkgs,
|
||
...
|
||
}:
|
||
|
||
{
|
||
config = lib.mkMerge [
|
||
# Common configuration
|
||
{
|
||
home = {
|
||
packages = with pkgs; [ nix-your-shell ];
|
||
};
|
||
|
||
programs = {
|
||
helix.languages = {
|
||
language = [
|
||
{
|
||
name = "nix";
|
||
auto-format = true;
|
||
formatter.command = "nixfmt";
|
||
}
|
||
{
|
||
name = "typst";
|
||
auto-format = true;
|
||
formatter.command = "typstyle -c 1000 -i";
|
||
}
|
||
];
|
||
};
|
||
|
||
password-store.enable = true;
|
||
|
||
direnv = {
|
||
enable = true;
|
||
nix-direnv.enable = true;
|
||
};
|
||
|
||
fish = {
|
||
interactiveShellInit = "nix-your-shell fish | source";
|
||
loginShellInit = "nix-your-shell fish | source";
|
||
};
|
||
|
||
tmux = {
|
||
enable = true;
|
||
clock24 = true;
|
||
terminal = "xterm-256color";
|
||
mouse = true;
|
||
keyMode = "vi";
|
||
};
|
||
|
||
starship = {
|
||
enable = true;
|
||
enableBashIntegration = true;
|
||
enableFishIntegration = true;
|
||
settings = {
|
||
add_newline = false;
|
||
format = ''
|
||
$hostname$directory$git_branch$git_status$nix_shell
|
||
[ ❯ ](bold green)
|
||
'';
|
||
right_format = "$cmd_duration$character";
|
||
hostname = {
|
||
ssh_symbol = " ";
|
||
};
|
||
character = {
|
||
error_symbol = "[](red)";
|
||
success_symbol = "[](green)";
|
||
};
|
||
cmd_duration = {
|
||
format = "[ $duration ]($style)";
|
||
style = "yellow";
|
||
min_time = 500;
|
||
};
|
||
git_branch = {
|
||
symbol = " ";
|
||
style = "purple";
|
||
};
|
||
git_status.style = "red";
|
||
nix_shell = {
|
||
format = "via [$symbol$state]($style)";
|
||
heuristic = true;
|
||
style = "blue";
|
||
symbol = " ";
|
||
};
|
||
};
|
||
};
|
||
|
||
git = {
|
||
enable = true;
|
||
diff-so-fancy.enable = true;
|
||
userName = "William";
|
||
userEmail = "baduhai@proton.me";
|
||
};
|
||
|
||
btop = {
|
||
enable = true;
|
||
settings = {
|
||
theme_background = false;
|
||
proc_sorting = "cpu direct";
|
||
update_ms = 500;
|
||
};
|
||
};
|
||
};
|
||
}
|
||
|
||
# Server specific configuration
|
||
(lib.mkIf hostType.isServer {
|
||
|
||
})
|
||
|
||
# Workstation specific configuration
|
||
(lib.mkIf hostType.isWorkstation {
|
||
programs = {
|
||
password-store.package = pkgs.pass-wayland;
|
||
mangohud.enable = true;
|
||
obs-studio = {
|
||
enable = true;
|
||
plugins = [
|
||
pkgs.obs-studio-plugins.obs-vkcapture
|
||
pkgs.obs-studio-plugins.obs-backgroundremoval
|
||
pkgs.obs-studio-plugins.obs-pipewire-audio-capture
|
||
];
|
||
};
|
||
dankMaterialShell = {
|
||
enable = true;
|
||
enableVPN = false;
|
||
};
|
||
rio = {
|
||
enable = true;
|
||
settings = {
|
||
window = {
|
||
width = 1121;
|
||
height = 633;
|
||
};
|
||
};
|
||
};
|
||
};
|
||
wayland.windowManager.hyprland = {
|
||
enable = true;
|
||
extraConfig = ''
|
||
################
|
||
### MONITORS ###
|
||
################
|
||
monitor=,preferred,auto,auto
|
||
################
|
||
### START-UP ###
|
||
################
|
||
exec-once = bash -c "wl-paste --watch cliphist store &"
|
||
exec-once = /usr/lib/mate-polkit/polkit-mate-authentication-agent-1
|
||
exec-once = dms run
|
||
#####################
|
||
### LOOK AND FEEL ###
|
||
#####################
|
||
general {
|
||
gaps_in = 5
|
||
gaps_out = 20
|
||
border_size = 2
|
||
resize_on_border = true
|
||
allow_tearing = false
|
||
layout = dwindle
|
||
}
|
||
decoration {
|
||
rounding = 10
|
||
rounding_power = 2
|
||
dim_inactive = true
|
||
dim_strength = 0.3
|
||
shadow {
|
||
enabled = true
|
||
range = 4
|
||
render_power = 3
|
||
}
|
||
blur {
|
||
enabled = true
|
||
size = 8
|
||
passes = 1
|
||
vibrancy = 0.1696
|
||
}
|
||
}
|
||
animations {
|
||
enabled = yes, please :)
|
||
bezier = easeOutQuint,0.23,1,0.32,1
|
||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||
bezier = linear,0,0,1,1
|
||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||
bezier = quick,0.15,0,0.1,1
|
||
animation = global, 1, 1, default
|
||
animation = border, 1, 1, easeOutQuint
|
||
animation = windows, 1, 1, easeOutQuint
|
||
animation = windowsIn, 1, 0.3, quick, popin 95% # Much faster: 30ms with quick bezier
|
||
animation = windowsOut, 1, 1, linear, popin 87%
|
||
animation = fadeIn, 1, 1, almostLinear
|
||
animation = fadeOut, 1, 1, almostLinear
|
||
animation = fade, 1, 1, quick
|
||
animation = layers, 1, 1, easeOutQuint
|
||
animation = layersIn, 1, 1, easeOutQuint, fade
|
||
animation = layersOut, 1, 1, linear, fade
|
||
animation = fadeLayersIn, 1, 1, almostLinear
|
||
animation = fadeLayersOut, 1, 1, almostLinear
|
||
animation = workspaces, 1, 1, almostLinear, slidevert
|
||
}
|
||
misc {
|
||
force_default_wallpaper = 0
|
||
disable_hyprland_logo = true
|
||
}
|
||
|
||
#############
|
||
### INPUT ###
|
||
#############
|
||
input {
|
||
kb_layout = us
|
||
kb_variant = altgr-intl
|
||
follow_mouse = 1
|
||
sensitivity = 0
|
||
accel_profile = flat
|
||
natural_scroll = true
|
||
touchpad {
|
||
natural_scroll = true
|
||
clickfinger_behavior = true
|
||
}
|
||
}
|
||
|
||
###################
|
||
### KEYBINDINGS ###
|
||
###################
|
||
$mainMod = SUPER
|
||
$terminal = rio
|
||
$menu = dms ipc call spotlight toggle
|
||
# APP SHORTCUTS
|
||
bind = ALT, SPACE, exec, $menu
|
||
bind = $mainMod, RETURN, exec, $terminal
|
||
# SESSION MANAGEMENT
|
||
bind = CTRL ALT, DELETE, exit,
|
||
bind = $mainMod, mouse_up, exec, hyprnome
|
||
bind = $mainMod, mouse_down, exec, hyprnome --previous
|
||
bind = CTRL ALT, j, exec, hyprnome
|
||
bind = CTRL ALT, k, exec, hyprnome --previous
|
||
bind = $mainMod CTRL ALT, j, exec, hyprnome --move
|
||
bind = $mainMod CTRL ALT, k, exec, hyprnome --move --previous
|
||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||
bindl = , XF86AudioNext, exec, playerctl next
|
||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||
bind = CTRL ALT SHIFT, a, exec, bash /home/user/.local/bin/toggle-audio-output.sh
|
||
# WINDOW MANAGEMENT
|
||
bind = ALT, F4, killactive,
|
||
bind = $mainMod, space, togglefloating,
|
||
bind = $mainMod, f, fullscreen
|
||
bindm = $mainMod, mouse:272, movewindow
|
||
bindm = $mainMod, mouse:273, resizewindow
|
||
bind = SUPER, h, movefocus, l
|
||
bind = SUPER, l, movefocus, r
|
||
bind = SUPER, k, movefocus, u
|
||
bind = SUPER, j, movefocus, d
|
||
bind = $mainMod CTRL, h, movewindow, l
|
||
bind = $mainMod CTRL, l, movewindow, r
|
||
bind = $mainMod CTRL, k, movewindow, u
|
||
bind = $mainMod CTRL, j, movewindow, d
|
||
# bind = $mainMod, r, scroller:cyclewidth, next
|
||
# bind = $mainMod CTRL, r, scroller:cyclewidth, prev
|
||
# bind = $mainMod, p, scroller:pin,
|
||
# bind = $mainMod, c, scroller:alignwindow, center
|
||
# bind = $mainMod CTRL, f, scroller:fitsize, all
|
||
|
||
####################
|
||
### WINDOW RULES ###
|
||
####################
|
||
windowrulev2 = suppressevent maximize, class:.*
|
||
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||
'';
|
||
};
|
||
fonts.fontconfig.enable = true;
|
||
})
|
||
];
|
||
}
|