Working config for fw13 amd

This commit is contained in:
Jurn Wubben 2025-02-14 19:40:27 +00:00
commit b7147ec26e
49 changed files with 1812 additions and 0 deletions

14
home/default.nix Normal file
View file

@ -0,0 +1,14 @@
{osConfig, ...}: {
imports = [
./wayland
./shell
./style
];
home = {
inherit (osConfig.system) stateVersion;
username = "jsw";
};
programs.home-manager.enable = true;
}

8
home/shell/default.nix Normal file
View file

@ -0,0 +1,8 @@
{
imports = [
./fish.nix
./starship.nix
./yazi.nix
./zoxide.nix
];
}

3
home/shell/fish.nix Normal file
View file

@ -0,0 +1,3 @@
{
programs.fish.enable = true;
}

3
home/shell/starship.nix Normal file
View file

@ -0,0 +1,3 @@
{
programs.starship.enable = true;
}

3
home/shell/yazi.nix Normal file
View file

@ -0,0 +1,3 @@
{
programs.yazi.enable = true;
}

3
home/shell/zoxide.nix Normal file
View file

@ -0,0 +1,3 @@
{
programs.zoxide.enable = true;
}

BIN
home/style/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

6
home/style/default.nix Normal file
View file

@ -0,0 +1,6 @@
{
imports = [
#./pointer.nix
./stylix.nix
];
}

12
home/style/pointer.nix Normal file
View file

@ -0,0 +1,12 @@
# Migrated to stylix.
#{pkgs, ...}: {
# home.pointerCursor = {
# gtk.enable = true;
# x11.enable = true;
#
# name = "Bibata-Modern-Ice";
# package = pkgs.bibata-cursors;
# size = 21;
# };
#}

27
home/style/stylix.nix Normal file
View file

@ -0,0 +1,27 @@
{
config,
inputs,
pkgs,
...
}: {
imports = [
inputs.stylix.homeManagerModules.stylix
];
stylix = {
enable = true;
polarity = "dark";
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 21;
};
fonts.monospace = {
name = "DejaVuSansMNerdFontMono-Regular";
package = pkgs.nerd-fonts.dejavu-sans-mono;
};
# base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-frappe.yaml";
image = ./background.png;
};
}

21
home/wayland/default.nix Normal file
View file

@ -0,0 +1,21 @@
{pkgs, ...}: {
imports = [
./fuzzel.nix
./hyprlock.nix
./hyprland
./waybar.nix
];
home.packages = with pkgs; [
grim
slurp
wl-clipboard
wlr-randr
];
home.sessionVariables = {
QT_QPA_PLATFORM = "wayland";
SDL_VIDEODRIVER = "wayland";
XDG_SESSION_TYPE = "wayland";
};
}

13
home/wayland/fuzzel.nix Normal file
View file

@ -0,0 +1,13 @@
{
config,
pkgs,
lib,
...
}: {
programs.fuzzel = {
enable = true;
settings.main = {
launch-prefix = "${lib.getExe pkgs.uwsm} app --";
};
};
}

View file

@ -0,0 +1,102 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib) getExe;
runOnce = program: "pgrep ${program} || uwsm app -- ${program}";
uwsm = getExe pkgs.uwsm;
hyprlock = runOnce (getExe pkgs.hyprlock);
#TODO: Move these functions into a separate lib file.
#TODO: Possibly migrate some of these applications into an option.
#TODO: Stylix
app = app: "${uwsm} app -- ${app}";
appE = appE: app (getExe appE);
termapp = termapp: "${foot} '${termapp}'";
termappE = termappE: termapp (getExe termappE);
foot = appE pkgs.foot;
fuzzel = appE config.programs.fuzzel.package;
firefox = appE pkgs.firefox;
playerctl = appE pkgs.playerctl;
brightnessctl = appE pkgs.brightnessctl;
wpctl = app "${pkgs.wireplumber}/bin/wpctl";
pulsemixer = termappE pkgs.pulsemixer;
bluetui = termappE pkgs.bluetui;
nmtui = termapp "${pkgs.networkmanager}/bin/nmtui";
# toggle = program: let
# prog = builtins.substring 0 14 program;
# in "pkill ${prog} || ${uwsm} app -- ${program}";
workspaces = builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
]
)
10);
in {
wayland.windowManager.hyprland.settings = {
"$mod" = "ALT";
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
bind =
[
"$mod SHIFT, E, exec, uwsm stop"
"$mod, Q, killactive,"
"$mod, F, fullscreen,"
"$mod, SPACE, togglefloating,"
"$mod, O, pseudo,"
"$mod ALT, ,resizeactive,"
"$mod, D, exec, ${fuzzel}"
"$mod, Return, exec, ${foot}"
"$mod Shift, Return, exec, ${firefox}"
"$mod, Escape, exec, ${hyprlock}"
"$mod, A, exec, ${pulsemixer}"
"$mod, B, exec, ${bluetui}"
"$mod, N, exec, ${nmtui}"
"$mod, h, movefocus, l"
"$mod, l, movefocus, r"
"$mod, k, movefocus, u"
"$mod, j, movefocus, d"
]
++ workspaces;
bindl = [
# media controls
", XF86AudioPlay, exec, ${playerctl} play-pause"
", XF86AudioPrev, exec, ${playerctl} previous"
", XF86AudioNext, exec, ${playerctl} next"
# volume
", XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
];
bindle = [
# volume
", XF86AudioRaiseVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%+"
", XF86AudioLowerVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%-"
",XF86MonBrightnessUp, exec, ${brightnessctl} s 10%+"
",XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-"
];
};
}

View file

@ -0,0 +1,28 @@
{
lib,
pkgs,
...
}: let
inherit (lib) getExe;
uwsm = getExe pkgs.uwsm;
hyprlock = getExe pkgs.hyprlock;
in {
imports = [
./binds.nix
./settings.nix
];
wayland.windowManager.hyprland = {
enable = true;
settings = {
env = [
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
];
exec-once = [
"${uwsm} finalize"
"${hyprlock}" # Lock screen
];
};
};
}

View file

@ -0,0 +1,88 @@
{
wayland.windowManager.hyprland.settings = {
general = {
gaps_in = 5;
gaps_out = 5;
border_size = 1;
resize_on_border = true;
};
decoration = {
rounding = 10;
rounding_power = 3;
blur = {
enabled = true;
brightness = 1.0;
contrast = 1.0;
noise = 0.01;
vibrancy = 0.2;
vibrancy_darkness = 0.5;
passes = 4;
size = 7;
popups = true;
popups_ignorealpha = 0.2;
};
shadow = {
enabled = true;
ignore_window = true;
offset = "0 15";
range = 100;
render_power = 2;
scale = 0.97;
};
};
animations = {
enabled = true;
animation = [
"border, 1, 2, default"
"fade, 1, 4, default"
"windows, 1, 3, default, popin 80%"
"workspaces, 1, 2, default, slide"
];
};
group = {
groupbar = {
font_size = 10;
gradients = false;
};
};
input = {
repeat_rate = 60;
repeat_delay = 200;
kb_layout = "us";
follow_mouse = 1;
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
kb_options = "compose:ralt";
touchpad = {
natural_scroll = false;
};
};
gestures = {
workspace_swipe = true;
workspace_swipe_forever = true;
workspace_swipe_direction_lock = false;
};
dwindle = {
pseudotile = true;
preserve_split = true;
};
misc = {
disable_autoreload = true;
force_default_wallpaper = 0;
animate_mouse_windowdragging = false;
vrr = 1;
};
};
}

88
home/wayland/hyprlock.nix Normal file
View file

@ -0,0 +1,88 @@
{
config,
inputs,
pkgs,
...
}: {
programs.hyprlock = {
enable = true;
settings = {
general = {
disable_loading_bar = true;
immediate_render = true;
hide_cursor = false;
no_fade_in = true;
};
# background = [
# {
# monitor = "";
# path = config.theme.wallpaper;
# }
# ];
# input-field = [
# {
# size = "300, 50";
# valign = "bottom";
# position = "0%, 10%";
#
# outline_thickness = 1;
#
# # font_color = "rgb(b6c4ff)";
# # outer_color = "rgba(180, 180, 180, 0.5)";
# # inner_color = "rgba(200, 200, 200, 0.1)";
# # check_color = "rgba(247, 193, 19, 0.5)";
# # fail_color = "rgba(255, 106, 134, 0.5)";
#
# fade_on_empty = false;
# placeholder_text = "Enter Password";
#
# dots_spacing = 0.2;
# dots_center = true;
# dots_fade_time = 100;
#
# # shadow_color = "rgba(0, 0, 0, 0.1)";
# shadow_size = 7;
# shadow_passes = 2;
# }
# ];
label = [
{
monitor = "";
text = "$TIME";
font_size = 150;
color = "rgb(b6c4ff)";
position = "0%, 30%";
valign = "center";
halign = "center";
shadow_color = "rgba(0, 0, 0, 0.1)";
shadow_size = 20;
shadow_passes = 2;
shadow_boost = 0.3;
}
{
monitor = "";
text = "cmd[update:3600000] date +'%a %b %d'";
font_size = 20;
color = "rgb(b6c4ff)";
position = "0%, 40%";
valign = "center";
halign = "center";
shadow_color = "rgba(0, 0, 0, 0.1)";
shadow_size = 20;
shadow_passes = 2;
shadow_boost = 0.3;
}
];
};
};
}

328
home/wayland/waybar.nix Normal file
View file

@ -0,0 +1,328 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib) getExe;
#TODO: UWSM library mentioned in binds.nix.
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
fuzzel = getExe pkgs.fuzzel;
kitty = getExe pkgs.kitty;
pulsemixer = "${kitty} ${getExe pkgs.pulsemixer}";
nmtui = "${kitty} ${pkgs.networkmanager}/bin/nmtui";
in {
programs.waybar = {
enable = true;
systemd.enable = true;
settings = {
mainBar = {
layer = "bottom";
position = "bottom";
mod = "dock";
exclusive = true;
gtk-layer-shell = true;
margin-bottom = -1;
passthrough = false;
height = 41;
modules-left = [
"custom/os_button"
"hyprland/workspaces"
"wlr/taskbar"
];
modules-center = [
];
modules-right = [
"cpu"
"memory"
"disk"
"tray"
"pulseaudio"
"network"
"battery"
"clock"
];
"hyprland/language" = {
format = "{}";
format-en = "ENG";
format-ru = "РУС";
};
"hyprland/workspaces" = {
icon-size = 32;
spacing = 14;
align = "center";
justify = "center";
on-scroll-up = "${hyprctl} dispatch workspace r+1";
on-scroll-down = "${hyprctl} dispatch workspace r-1";
};
"custom/os_button" = {
format = "";
on-click = fuzzel;
tooltip = false;
};
cpu = {
interval = 5;
format = " {usage}%";
max-length = 10;
};
disk = {
interval = 30;
format = "󰋊 {percentage_used}%";
path = "/";
tooltip = true;
unit = "GB";
tooltip-format = "Available {free} of {total}";
};
memory = {
interval = 10;
format = " {percentage}%";
max-length = 10;
tooltip = true;
tooltip-format = "RAM - {used:0.1f}GiB used";
};
"wlr/taskbar" = {
format = "{icon} {title:.17}";
icon-size = 28;
spacing = 3;
on-click-middle = "close";
tooltip-format = "{title}";
ignore-list = [
];
on-click = "activate";
};
tray = {
icon-size = 18;
spacing = 3;
};
clock = {
format = " {:%R\n %d.%m.%Y}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "year";
mode-mon-col = 3;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
};
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
network = {
format-wifi = " {icon}";
format-ethernet = " ";
format-disconnected = "󰌙";
format-icons = [
"󰤯 "
"󰤟 "
"󰤢 "
"󰤢 "
"󰤨 "
];
on-click = nmtui;
};
battery = {
states = {
good = 95;
warning = 30;
critical = 20;
};
format = "{icon} {capacity}%";
format-charging = " {capacity}%";
format-plugged = " {capacity}%";
format-alt = "{time} {icon}";
format-icons = [
"󰂎"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
};
pulseaudio = {
max-volume = 150;
scroll-step = 10;
format = "{icon}";
tooltip-format = "{volume}%";
format-muted = " ";
format-icons = {
default = [
" "
" "
" "
];
};
on-click = pulsemixer;
};
};
};
style = ''
* {
text-shadow: none;
box-shadow: none;
border: none;
border-radius: 0;
font-family: "DejaVuSansM Nerd Font:style=Regular";
font-weight: 600;
font-size: 12.7px;
}
window#waybar {
background: @base00;
border-top: 1px solid @base01;
color: @base05;
}
tooltip {
background: @base01;
border-radius: 5px;
border-width: 1px;
border-style: solid;
border-color: @base01;
}
tooltip label{
color: @base05;
}
#custom-os_button {
font-size: 24px;
padding-left: 12px;
padding-right: 20px;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#custom-os_button:hover {
background: @base03;
color: @base05;
}
#workspaces {
color: transparent;
margin-right: 1.5px;
margin-left: 1.5px;
}
#workspaces button {
padding: 3px;
color: @base04;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#workspaces button.active {
color: @base05;
border-bottom: 3px solid white;
}
#workspaces button.focused {
color: @base02;
}
#workspaces button.urgent {
background: rgba(255, 200, 0, 0.35);
border-bottom: 3px dashed @warning_color;
color: @warning_color;
}
#workspaces button:hover {
background: @base03;
color: @base05;
}
#taskbar button {
min-width: 130px;
border-bottom: 3px solid rgba(255, 255, 255, 0.3);
margin-left: 2px;
margin-right: 2px;
padding-left: 8px;
padding-right: 8px;
color: white;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#taskbar button.active {
border-bottom: 3px solid white;
background: @base02;
}
#taskbar button:hover {
border-bottom: 3px solid white;
background: @base03;
color: @base05;
}
#cpu, #disk, #memory {
padding:3px;
}
#window {
border-radius: 10px;
margin-left: 20px;
margin-right: 20px;
}
#tray{
margin-left: 5px;
margin-right: 5px;
}
#tray > .passive {
border-bottom: none;
}
#tray > .active {
border-bottom: 3px solid white;
}
#tray > .needs-attention {
border-bottom: 3px solid @warning_color;
}
#tray > widget {
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#tray > widget:hover {
background: @base03;
}
#pulseaudio {
font-family: "JetBrainsMono Nerd Font";
padding-left: 3px;
padding-right: 3px;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#pulseaudio:hover {
background: @base03;
}
#network {
padding-left: 3px;
padding-right: 3px;
}
#language {
padding-left: 5px;
padding-right: 5px;
}
#clock {
padding-right: 5px;
padding-left: 5px;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#clock:hover {
background: @base03;
}
'';
};
}