✨ Moved common home-manager config to shared/home-manager
This commit is contained in:
@ -1,103 +0,0 @@
|
||||
let
|
||||
common = import ../../common.nix;
|
||||
app = common.default;
|
||||
in
|
||||
{
|
||||
# TODO binds to move focused window
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
"$mainMod" = "SUPER";
|
||||
"$shiftMod" = "$mainMod SHIFT";
|
||||
"$ctrlMod" = "$mainMod CTRL";
|
||||
"$menu" = "rofi -show drun";
|
||||
|
||||
bind = [
|
||||
"$mainMod, Q, exec, ${app.terminal}"
|
||||
"$mainMod, C, killactive,"
|
||||
"$shiftMod, M, exit,"
|
||||
"$mainMod, E, exec, ${app.fileManager}"
|
||||
"$mainMod, V, togglefloating,"
|
||||
"$mainMod, R, exec, $menu"
|
||||
"$mainMod, P, pseudo," # dwindle
|
||||
"$mainMod, J, togglesplit," # dwindle
|
||||
"$mainMod, B, exec, ${app.browser}"
|
||||
"$mainMod, L, exec, ${app.lockScreen}"
|
||||
"$mainMod, K, exec, [float] ${app.calculator}"
|
||||
"$mainMod, ESCAPE, exec, hyprpanel t dashboardmenu"
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
"$mainMod, left, movefocus, l"
|
||||
"$mainMod, right, movefocus, r"
|
||||
"$mainMod, up, movefocus, u"
|
||||
"$mainMod, down, movefocus, d"
|
||||
|
||||
# Move window with ctrl + mainMod + arrow keys
|
||||
"$ctrlMod, left, movewindow, l"
|
||||
"$ctrlMod, right, movewindow, r"
|
||||
"$ctrlMod, up, movewindow, u"
|
||||
"$ctrlMod, down, movewindow, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mainMod, 1, workspace, 1"
|
||||
"$mainMod, 2, workspace, 2"
|
||||
"$mainMod, 3, workspace, 3"
|
||||
"$mainMod, 4, workspace, 4"
|
||||
"$mainMod, 5, workspace, 5"
|
||||
"$mainMod, 6, workspace, 6"
|
||||
"$mainMod, 7, workspace, 7"
|
||||
"$mainMod, 8, workspace, 8"
|
||||
"$mainMod, 9, workspace, 9"
|
||||
"$mainMod, 0, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$shiftMod, 1, movetoworkspace, 1"
|
||||
"$shiftMod, 2, movetoworkspace, 2"
|
||||
"$shiftMod, 3, movetoworkspace, 3"
|
||||
"$shiftMod, 4, movetoworkspace, 4"
|
||||
"$shiftMod, 5, movetoworkspace, 5"
|
||||
"$shiftMod, 6, movetoworkspace, 6"
|
||||
"$shiftMod, 7, movetoworkspace, 7"
|
||||
"$shiftMod, 8, movetoworkspace, 8"
|
||||
"$shiftMod, 9, movetoworkspace, 9"
|
||||
"$shiftMod, 0, movetoworkspace, 10"
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
"$mainMod, S, togglespecialworkspace, magic"
|
||||
"$shiftMod, S, movetoworkspace, special:magic"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"$mainMod, mouse_down, workspace, e+1"
|
||||
"$mainMod, mouse_up, workspace, e-1"
|
||||
];
|
||||
|
||||
binde = [
|
||||
# Resize the focused window
|
||||
"$shiftMod, right, resizeactive, 20 0"
|
||||
"$shiftMod, left, resizeactive, -20 0"
|
||||
"$shiftMod, up, resizeactive, 0 -20"
|
||||
"$shiftMod, down, resizeactive, 0 20"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"$mainMod, mouse:272, movewindow"
|
||||
"$mainMod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindl = [
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
];
|
||||
|
||||
bindel = [
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
",XF86AudioRaiseVolume, exec, wpctl set-volume @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 s 10%+"
|
||||
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
|
||||
];
|
||||
};
|
||||
}
|
@ -1,22 +1,8 @@
|
||||
# Home configurations for Hyprland. For system configs, see ./modules/hyprland
|
||||
{ outputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./binds.nix
|
||||
./hypridle
|
||||
./hyprlock
|
||||
./hyprpanel
|
||||
./hyprpanel.nix
|
||||
./hyprpaper.nix
|
||||
./hyprshot.nix
|
||||
./settings.nix
|
||||
];
|
||||
|
||||
# Adds pkgs.unstable in order to fetch packages from unstable repositories
|
||||
nixpkgs.overlays = [ outputs.overlays.unstable-packages ];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.variables = [ "--all" ]; # Import environment into systemd
|
||||
};
|
||||
}
|
||||
|
@ -1,38 +0,0 @@
|
||||
let
|
||||
# Time in seconds
|
||||
lockAfter = 1200;
|
||||
screenOffAfter = 1500;
|
||||
suspendAfter = 7200;
|
||||
in
|
||||
{
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
before_sleep_cmd = "loginctl lock-session";
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
lock_cmd = "pidof hyprlock || hyprlock"; # Avoid running multiple instances of hyprlock
|
||||
};
|
||||
|
||||
listener = [
|
||||
# Lock
|
||||
{
|
||||
timeout = lockAfter;
|
||||
on-timeout = "loginctl lock-session";
|
||||
}
|
||||
# Turn off screens
|
||||
{
|
||||
timeout = screenOffAfter;
|
||||
on-timeout = "hyprctl dispatch dpms off";
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
# Suspend
|
||||
{
|
||||
timeout = suspendAfter;
|
||||
on-timeout = "systemctl suspend"; # suspend pc
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.exec-once = [ "hypridle" ];
|
||||
}
|
@ -1,89 +0,0 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
theme = import ../../../theme.nix;
|
||||
in
|
||||
{
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"$font" = "${theme.nerdFont} Nerd Font";
|
||||
|
||||
background = [
|
||||
{
|
||||
path = "${../../../wallpapers/catppuccin_page_curl.png}";
|
||||
}
|
||||
];
|
||||
|
||||
# GENERAL
|
||||
general = {
|
||||
disable_loading_bar = true;
|
||||
hide_cursor = true;
|
||||
};
|
||||
|
||||
# LAYOUT
|
||||
label = [
|
||||
{
|
||||
text = "$LAYOUT";
|
||||
color = "${theme.textRgb}";
|
||||
font_size = 25;
|
||||
font_family = "$font";
|
||||
position = "30, -30";
|
||||
halign = "left";
|
||||
valign = "top";
|
||||
}
|
||||
# TIME
|
||||
{
|
||||
text = "$TIME";
|
||||
color = "${theme.textRgb}";
|
||||
font_size = 90;
|
||||
font_family = "$font";
|
||||
position = "-30, 0";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
# DATE
|
||||
{
|
||||
text = "cmd[update:43200000] date +\"%A, %d %B %Y\"";
|
||||
color = "${theme.textRgb}";
|
||||
font_size = 25;
|
||||
font_family = "$font";
|
||||
position = "-30, -150";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
];
|
||||
|
||||
# USER AVATAR
|
||||
image = {
|
||||
path = "${../../face.png}";
|
||||
size = 100;
|
||||
border_color = "${theme.blueRgb}";
|
||||
position = "0, 75";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
|
||||
# INPUT FIELD
|
||||
input-field = {
|
||||
size = "300, 60";
|
||||
outline_thickness = 4;
|
||||
dots_size = 0.2;
|
||||
dots_spacing = 0.2;
|
||||
dots_center = true;
|
||||
outer_color = lib.mkDefault "${theme.blueRgb}";
|
||||
inner_color = lib.mkDefault "${theme.surface0Rgb}";
|
||||
font_color = lib.mkDefault "${theme.textRgb}";
|
||||
fade_on_empty = false;
|
||||
placeholder_text = "<span foreground=\"##${theme.textAlpha}\"> Logged in as <span foreground=\"##${theme.blueAlpha}\">$USER</span></span>";
|
||||
hide_input = false;
|
||||
check_color = lib.mkDefault "${theme.blueRgb}";
|
||||
fail_color = lib.mkDefault "${theme.redRgb}";
|
||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
||||
capslock_color = lib.mkDefault "${theme.yellowRgb}";
|
||||
position = "0, -47"; # TODO change to use % at 25.05
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
16
hosts/thinkpad/home-manager/hyprland/hyprpanel.nix
Normal file
16
hosts/thinkpad/home-manager/hyprland/hyprpanel.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
programs.hyprpanel.layout."bar.layouts"."*".right = lib.mkDefault [
|
||||
"kbinput"
|
||||
"volume"
|
||||
"network"
|
||||
"systray"
|
||||
"clock"
|
||||
"battery"
|
||||
"notifications"
|
||||
];
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
common = import ../../../common.nix;
|
||||
theme = import ../../../theme.nix;
|
||||
loader = import ../../secretsLoader.nix lib;
|
||||
in
|
||||
{
|
||||
imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ];
|
||||
|
||||
programs.hyprpanel = {
|
||||
enable = true;
|
||||
# Add hyprpanel to the Hyprland config 'exec-once'.
|
||||
hyprland.enable = true;
|
||||
# Fix the overwrite issue with HyprPanel.
|
||||
overwrite.enable = true;
|
||||
|
||||
# Import a theme from './themes/*.json'.
|
||||
theme = "";
|
||||
|
||||
# Override the final config with an arbitrary set.
|
||||
# Useful for overriding colors in your selected theme.
|
||||
# Default: {}
|
||||
override = {
|
||||
theme.bar.menus.text = "#123ABC";
|
||||
};
|
||||
|
||||
# Configure bar layouts for monitors.
|
||||
layout = {
|
||||
"bar.layouts" = {
|
||||
"*" = {
|
||||
left = [
|
||||
"dashboard"
|
||||
"workspaces"
|
||||
"windowtitle"
|
||||
];
|
||||
middle = [ "media" ];
|
||||
right = [
|
||||
"kbinput"
|
||||
"volume"
|
||||
"network"
|
||||
"systray"
|
||||
"clock"
|
||||
"battery"
|
||||
"notifications"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Configure and theme almost all options from the GUI.
|
||||
# Options that require '{}' or '[]' are not yet implemented,
|
||||
# except for the layout above.
|
||||
# See 'https://hyprpanel.com/configuration/settings.html'.
|
||||
# Default: <same as gui>
|
||||
settings = {
|
||||
bar = {
|
||||
clock.format = "%a %b %d %H:%M";
|
||||
customModules.kbLayout.leftClick = "hyprctl switchxkblayout keychron-keychron-k8-pro next";
|
||||
launcher.autoDetectIcon = true;
|
||||
network.label = false;
|
||||
volume = {
|
||||
scrollDown = "${pkgs.hyprpanel}/bin/hyprpanel 'vol -1'";
|
||||
scrollUp = "${pkgs.hyprpanel}/bin/hyprpanel 'vol +1'";
|
||||
};
|
||||
workspaces = {
|
||||
show_icons = false;
|
||||
show_numbered = true;
|
||||
};
|
||||
};
|
||||
|
||||
menus = {
|
||||
clock = {
|
||||
time = {
|
||||
military = true;
|
||||
hideSeconds = true;
|
||||
};
|
||||
weather = {
|
||||
unit = "metric";
|
||||
location = "Bergen, Norway";
|
||||
key = loader.loadSecret ../../secrets/weather-api-key;
|
||||
};
|
||||
};
|
||||
|
||||
dashboard = {
|
||||
directories.enabled = false;
|
||||
powermenu.avatar.image = "${../../face.png}";
|
||||
shortcuts.left = {
|
||||
shortcut1 = {
|
||||
command = common.default.browser;
|
||||
icon = ""; # TODO replace with Zen icon
|
||||
tooltip = "Zen";
|
||||
};
|
||||
shortcut2 = {
|
||||
command = "spotify";
|
||||
icon = "";
|
||||
tooltip = "Spotify";
|
||||
};
|
||||
## shortcut3 === discord
|
||||
## shortcut4 === rofi -show drun
|
||||
};
|
||||
stats.enable_gpu = true;
|
||||
};
|
||||
};
|
||||
|
||||
scalingPriority = "hyprland";
|
||||
|
||||
theme = {
|
||||
bar.transparent = true;
|
||||
font = {
|
||||
name = "${theme.nerdFont} NF";
|
||||
size = "16px";
|
||||
};
|
||||
};
|
||||
|
||||
wallpaper.enable = false;
|
||||
};
|
||||
};
|
||||
}
|
@ -1,33 +1,23 @@
|
||||
# Wallpapers
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
common = import ../../common.nix;
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
hyprpaper
|
||||
];
|
||||
lib,
|
||||
theme,
|
||||
common,
|
||||
...
|
||||
}:
|
||||
|
||||
services.hyprpaper = {
|
||||
enable = true;
|
||||
settings =
|
||||
let
|
||||
wallpaperDir = ../../wallpapers;
|
||||
monitor1 = "${wallpaperDir}/nixos_waves.png";
|
||||
in
|
||||
{
|
||||
ipc = "on";
|
||||
splash = false;
|
||||
splash_offset = 2.0;
|
||||
{
|
||||
services.hyprpaper =
|
||||
let
|
||||
monitor1 = builtins.toString theme.wallpaper.monitor1;
|
||||
in
|
||||
{
|
||||
preload = lib.mkDefault [
|
||||
monitor1
|
||||
];
|
||||
|
||||
preload = [
|
||||
monitor1
|
||||
];
|
||||
|
||||
wallpaper = [
|
||||
"${common.monitor1},${monitor1}"
|
||||
];
|
||||
};
|
||||
};
|
||||
wallpaper = lib.mkDefault [
|
||||
"${common.monitor1},${monitor1}"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
let
|
||||
common = import ../../common.nix;
|
||||
in
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
"$mainMod" = "SUPER";
|
||||
"$shiftMod" = "$mainMod SHIFT";
|
||||
|
||||
env = [
|
||||
"HYPRSHOT_DIR,${common.dir.pictures}/screenshots" # Store screenshots here
|
||||
];
|
||||
|
||||
bind = [
|
||||
"$mainMod, PRINT, exec, hyprshot -m window" # Window
|
||||
", PRINT, exec, hyprshot -m output" # Monitor
|
||||
"$shiftMod, PRINT, exec, hyprshot -m region" # Region
|
||||
];
|
||||
};
|
||||
}
|
@ -1,135 +1,30 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
common = import ../../common.nix;
|
||||
theme = import ../../theme.nix;
|
||||
app = common.default;
|
||||
in
|
||||
{
|
||||
lib,
|
||||
common,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
monitor = [
|
||||
monitor = lib.mkDefault [
|
||||
"${common.monitor1}, 1920x1080@60.05, 0x0, 1"
|
||||
];
|
||||
|
||||
# Autostart
|
||||
exec-once = [
|
||||
app.browser
|
||||
app.terminal
|
||||
"systemctl --user start hyprpolkitagent"
|
||||
"hyprsunset -t 5000" # Set blue light filter
|
||||
];
|
||||
|
||||
env = [
|
||||
"ELECTRON_OZONE_PLATFORM_HINT,auto" # Tell Electron apps to use Wayland
|
||||
];
|
||||
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 20;
|
||||
border_size = 2;
|
||||
"col.active_border" = lib.mkDefault "${theme.mauveRgb} ${theme.tealRgb} 45deg";
|
||||
"col.inactive_border" = lib.mkDefault "rgba(${theme.surface2Alpha}aa)";
|
||||
resize_on_border = true;
|
||||
allow_tearing = false;
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
color = lib.mkDefault theme.baseRgb;
|
||||
};
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
|
||||
vibrancy = 0.1696;
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = "yes, please :)";
|
||||
|
||||
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, 1, 1.94, almostLinear, fade"
|
||||
"workspacesIn, 1, 1.21, almostLinear, fade"
|
||||
"workspacesOut, 1, 1.94, almostLinear, fade"
|
||||
];
|
||||
};
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
master.new_status = "master";
|
||||
|
||||
misc = {
|
||||
force_default_wallpaper = 0;
|
||||
disable_hyprland_logo = true;
|
||||
};
|
||||
|
||||
debug.disable_logs = false;
|
||||
|
||||
input = {
|
||||
kb_layout = common.keymaps.layout;
|
||||
kb_options = common.keymaps.options;
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0.4; # -1.0 - 1.0, 0 means no modification.
|
||||
touchpad.natural_scroll = true;
|
||||
};
|
||||
|
||||
gestures = {
|
||||
gestures = lib.mkDefault {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_distance = 150;
|
||||
workspace_swipe_min_speed_to_force = 0;
|
||||
workspace_swipe_cancel_ratio = 0.5;
|
||||
};
|
||||
|
||||
device = {
|
||||
name = "logitech-g502-hero-gaming-mouse";
|
||||
sensitivity = -0.10;
|
||||
};
|
||||
|
||||
windowrulev2 = [
|
||||
# Ignore maximize requests from apps
|
||||
"suppressevent maximize, class:.*"
|
||||
# Fix some dragging issues with XWayland
|
||||
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
|
||||
# Avoid locking in fullscreen
|
||||
"idleinhibit fullscreen, class:^(*)$"
|
||||
"idleinhibit fullscreen, title:^(*)$"
|
||||
"idleinhibit fullscreen, fullscreen:1"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user