mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-09-08 07:54:40 +00:00
Compare commits
4
Commits
0b0461f31a
...
fa6b2a387e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa6b2a387e
|
||
|
|
5f6fbdc0ac
|
||
|
|
cf2108ad82
|
||
|
|
7c3a4f9cb6
|
Generated
+34
-33
@@ -24,11 +24,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774640361,
|
||||
"narHash": "sha256-5PLTPbnbtK0iDbsB9yFeHr5y/pv6/XzoVm/CDeXXt/c=",
|
||||
"lastModified": 1775706155,
|
||||
"narHash": "sha256-h7Rw0vlb0n0Jsk21WJPm7H+1T1bG+PEuxE5cJ2TZl8A=",
|
||||
"owner": "abenz1267",
|
||||
"repo": "elephant",
|
||||
"rev": "d30652147d8e16ebc849b779b8ef495a894b0dd4",
|
||||
"rev": "376ee71c66db38683daabd57350bf3f6f086eaf8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -45,11 +45,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769996383,
|
||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
||||
"lastModified": 1778716662,
|
||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -65,11 +65,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775622785,
|
||||
"narHash": "sha256-/yFxO+7oS1SymDfJ2iVO7K5vJKcYfe9XGIJ+quLqz0Q=",
|
||||
"lastModified": 1781009359,
|
||||
"narHash": "sha256-w/mZkRscTatf8NWyUstli8ROzM/eopxZzi0WRjoeYkU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "527e47b78fe67213072f706bf933a9705a8c4974",
|
||||
"rev": "c58ead12efcac436afffa93a22099a5595eb4157",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -112,11 +112,11 @@
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775566751,
|
||||
"narHash": "sha256-5Xkx4NQvl2azAQe3lCZCMUx4FiwGOlEb+I4kyycQYw8=",
|
||||
"lastModified": 1780944960,
|
||||
"narHash": "sha256-/Tzx2TY0IVm/ptBvkKaLdOHADpM7xsUMfBKOpCibH1M=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "6aa49a9c5b82911459e230db5bd64289082d4354",
|
||||
"rev": "da6577a9bef8a4d7a9d7a2a0dc1e1089edb46bed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -145,11 +145,11 @@
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1775561155,
|
||||
"narHash": "sha256-TK2IrqQivRcwqJa0suZMbcsN17CtA8Uu0v7CDnLATb0=",
|
||||
"lastModified": 1780938415,
|
||||
"narHash": "sha256-QHyIMGSbCQW8d5qbOrMsm6gem10bO3Au2YLa3alJfHo=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "599db847f857b8a7ff78ce02f15acab5d5d9fee1",
|
||||
"rev": "6f1a2c5f0e8274223d4204b1f8d6f7f91538967e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -176,11 +176,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1775423009,
|
||||
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
|
||||
"lastModified": 1780749050,
|
||||
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
|
||||
"rev": "a799d3e3886da994fa307f817a6bc705ae538eeb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -192,11 +192,11 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1775305101,
|
||||
"narHash": "sha256-/74n1oQPtKG52Yw41cbToxspxHbYz6O3vi+XEw16Qe8=",
|
||||
"lastModified": 1780511130,
|
||||
"narHash": "sha256-2v9lT4ya59Lh1FqPeLnz1MoX9y/wz2huqfe9RtQZITk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "36a601196c4ebf49e035270e10b2d103fe39076b",
|
||||
"rev": "535f3e6942cb1cead3929c604320d3db54b542b9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -215,11 +215,11 @@
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775307257,
|
||||
"narHash": "sha256-y9hEecHH4ennFwIcw1n480YCGh73DkEmizmQnyXuvgg=",
|
||||
"lastModified": 1780995253,
|
||||
"narHash": "sha256-6Lsoyw2XPvY8YNMCtPnsyw0JVVtHsXP2xtrFJBBTAOQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "2e008bb941f72379d5b935d5bfe70ed8b7c793ff",
|
||||
"rev": "43a7e6f82978ac975c3bba6728869b231e7a1ba0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -289,15 +289,16 @@
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"lastModified": 1774449309,
|
||||
"narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"rev": "c29398b59d2048c4ab79345812849c9bd15e9150",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"ref": "future-26.11",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -403,11 +404,11 @@
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773675699,
|
||||
"narHash": "sha256-GrormZ2KxchtCLuO90+5fioEQmlUCKBIil0Mzr9w0Iw=",
|
||||
"lastModified": 1777789924,
|
||||
"narHash": "sha256-fX3ErzTmHRO9z1SzHC2VZUgKOgRfO13X/joC5a3QN7Q=",
|
||||
"owner": "abenz1267",
|
||||
"repo": "walker",
|
||||
"rev": "d2702235710da3d7daf55c912ca7534261cf20f5",
|
||||
"rev": "93d44d1cb41732e1370e4b949429ae8e34ea05a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -436,11 +437,11 @@
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1773622265,
|
||||
"narHash": "sha256-wToKwH7IgWdGLMSIWksEDs4eumR6UbbsuPQ42r0oTXQ=",
|
||||
"lastModified": 1779745227,
|
||||
"narHash": "sha256-yqY7RtEJGJiENzR0GwL6q69tSAy6xAAmAcLuIhLjPf8=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "a879e5e0896a326adc79c474bf457b8b99011027",
|
||||
"rev": "5d1efbc9dc3ab1c10160b656e0247f3325daf0f2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -67,7 +67,17 @@
|
||||
|
||||
hardware = {
|
||||
amdgpu.preset.default.enable = true;
|
||||
audio.preset.pipewire.enable = true;
|
||||
audio = {
|
||||
preset.pipewire.enable = true;
|
||||
audio-share = {
|
||||
enable = true;
|
||||
partner = {
|
||||
ip = "192.168.0.51";
|
||||
name = "Luci";
|
||||
combine = "astro-a50-eq-harman-in";
|
||||
};
|
||||
};
|
||||
};
|
||||
cc1.enable = true;
|
||||
fv43u.enable = true;
|
||||
astro-a50.enable = true;
|
||||
@@ -123,7 +133,7 @@
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
wireshark = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
package = pkgs.wireshark;
|
||||
usbmon.enable = true;
|
||||
};
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
extraConfig.PROJECTS = "${config.home.homeDirectory}/Projects";
|
||||
};
|
||||
programs.zoxide.enable = true;
|
||||
services.jellyfin-mpv-shim.enable = true;
|
||||
wayland.windowManager.hyprland.settings.device =
|
||||
let
|
||||
targetDPI = 1200;
|
||||
|
||||
+26
-8
@@ -13,18 +13,37 @@
|
||||
packages = with pkgs; [
|
||||
blueman
|
||||
kdePackages.okular
|
||||
(pkgs.writeShellApplication {
|
||||
name = "shut";
|
||||
text = ''
|
||||
shutdown now
|
||||
'';
|
||||
})
|
||||
];
|
||||
};
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
general.layout = "master";
|
||||
master = {
|
||||
orientation = "right";
|
||||
mfact = 0.65;
|
||||
always_keep_position = true;
|
||||
config = {
|
||||
general.layout = "master";
|
||||
master = {
|
||||
orientation = "right";
|
||||
mfact = 0.65;
|
||||
always_keep_position = true;
|
||||
};
|
||||
input.kb_options = "lv3:caps_switch";
|
||||
};
|
||||
monitor = [
|
||||
"eDP-1,3840x2160@60,0x0,2"
|
||||
"HDMI-A-4,2560x1440@75,1920x-768,1"
|
||||
{
|
||||
output = "eDP-1";
|
||||
mode = "3840x2160@60";
|
||||
position = "0x0";
|
||||
scale = 2;
|
||||
}
|
||||
{
|
||||
output = "HDMI-A-4";
|
||||
mode = "2560x1440@75";
|
||||
position = "1920x-768";
|
||||
scale = 1;
|
||||
}
|
||||
];
|
||||
};
|
||||
systemd.user.services = {
|
||||
@@ -52,6 +71,5 @@
|
||||
};
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.input.kb_options = [ "lv3:caps_switch" ];
|
||||
services.nextcloud-client.enable = true;
|
||||
}
|
||||
|
||||
+11
-1
@@ -72,7 +72,17 @@
|
||||
|
||||
hardware = {
|
||||
q3279vwf.enable = true;
|
||||
audio.preset.pipewire.enable = true;
|
||||
audio = {
|
||||
preset.pipewire.enable = true;
|
||||
audio-share = {
|
||||
enable = true;
|
||||
partner = {
|
||||
ip = "192.168.0.84";
|
||||
name = "Thea";
|
||||
combine = "alsa_output.usb-SteelSeries_Arctis_Pro_Wireless-00.pro-output-0";
|
||||
};
|
||||
};
|
||||
};
|
||||
cc1.enable = true;
|
||||
|
||||
nvidia.preset.proprietary.enable = true;
|
||||
|
||||
@@ -15,9 +15,15 @@
|
||||
kdePackages.okular
|
||||
bitbox
|
||||
gamma-launcher
|
||||
(pkgs.writeShellApplication {
|
||||
name = "shut";
|
||||
text = ''
|
||||
shutdown now
|
||||
'';
|
||||
})
|
||||
];
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.input.kb_options = [ "lv3:caps_switch" ];
|
||||
wayland.windowManager.hyprland.settings.config.input.kb_options = "lv3:caps_switch";
|
||||
services.nextcloud-client.enable = true;
|
||||
systemd.user.services = {
|
||||
nm-applet = {
|
||||
|
||||
@@ -14,77 +14,97 @@ let
|
||||
'';
|
||||
};
|
||||
cfg = osConfig.desktops.hyprland;
|
||||
bind = bind: action: {
|
||||
_args = [
|
||||
bind
|
||||
(lib.generators.mkLuaInline action)
|
||||
];
|
||||
};
|
||||
bindm = bind: action: {
|
||||
_args = [
|
||||
bind
|
||||
(lib.generators.mkLuaInline action)
|
||||
{ mouse = true; }
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
configType = "lua";
|
||||
settings = {
|
||||
general = {
|
||||
allow_tearing = true;
|
||||
layout = lib.mkIf cfg.scrolling "scrolling";
|
||||
};
|
||||
input = {
|
||||
accel_profile = "flat";
|
||||
kb_layout = osConfig.services.xserver.xkb.layout;
|
||||
kb_variant = osConfig.services.xserver.xkb.variant;
|
||||
config = {
|
||||
general = {
|
||||
allow_tearing = true;
|
||||
layout = lib.mkIf cfg.scrolling "scrolling";
|
||||
};
|
||||
input = {
|
||||
accel_profile = "flat";
|
||||
kb_layout = osConfig.services.xserver.xkb.layout;
|
||||
kb_variant = osConfig.services.xserver.xkb.variant;
|
||||
touchpad.natural_scroll = true;
|
||||
};
|
||||
misc = {
|
||||
layers_hog_keyboard_focus = false;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
vrr = lib.mkDefault 2;
|
||||
enable_swallow = true;
|
||||
swallow_regex = "^kitty$";
|
||||
};
|
||||
binds.scroll_event_delay = 0;
|
||||
decoration.border_part_of_window = false;
|
||||
};
|
||||
bind = [
|
||||
"SUPER,C,killactive"
|
||||
"SUPER,P,togglefloating,"
|
||||
"SUPER,P,pin,"
|
||||
"SUPER,D,fullscreen,1"
|
||||
"SUPER,V,fullscreen,0"
|
||||
(bind "SUPER + C" "hl.dsp.window.close()")
|
||||
(bind "SUPER + P" ''
|
||||
function()
|
||||
hl.dsp.window.float()
|
||||
hl.dsp.window.pin()
|
||||
end
|
||||
'')
|
||||
(bind "SUPER + D" "hl.dsp.window.fullscreen({ mode = 'maximized' })")
|
||||
(bind "SUPER + V" "hl.dsp.window.fullscreen({ mode = 'fullscreen' })")
|
||||
|
||||
"SUPER,f,workspace,r-1"
|
||||
"SUPER,h,workspace,r+1"
|
||||
"SUPER_SHIFT,f,movetoworkspace,r-1"
|
||||
"SUPER_SHIFT,h,movetoworkspace,r+1"
|
||||
(bind "SUPER + F" "hl.dsp.focus({ workspace = 'r-1' })")
|
||||
(bind "SUPER + H" "hl.dsp.focus({ workspace = 'r+1' })")
|
||||
(bind "SUPER + SHIFT + F" "hl.dsp.window.move({ workspace = 'r-1' })")
|
||||
(bind "SUPER + SHIFT + H" "hl.dsp.window.move({ workspace = 'r+1' })")
|
||||
|
||||
(bindm "SUPER + mouse:272" "hl.dsp.window.drag()")
|
||||
(bindm "SUPER + mouse:273" "hl.dsp.window.resize()")
|
||||
]
|
||||
++ (
|
||||
if cfg.scrolling then
|
||||
[
|
||||
"SUPER,up,layoutmsg,focus u"
|
||||
"SUPER,down,layoutmsg,focus d"
|
||||
"SUPER,right,layoutmsg,focus r"
|
||||
"SUPER,left,layoutmsg,focus l"
|
||||
(bind "SUPER + SHIFT + LEFT" "hl.dsp.layout('swapcol l')")
|
||||
(bind "SUPER + SHIFT + RIGHT" "hl.dsp.layout('swapcol r')")
|
||||
|
||||
"SUPER_SHIFT,up,layoutmsg,movewindowto u"
|
||||
"SUPER_SHIFT,down,layoutmsg,movewindowto d"
|
||||
"SUPER_SHIFT,left,layoutmsg,swapcol l"
|
||||
"SUPER_SHIFT,right,layoutmsg,swapcol r"
|
||||
(bind "SUPER + UP" "hl.dsp.layout('focus u')")
|
||||
(bind "SUPER + DOWN" "hl.dsp.layout('focus d')")
|
||||
(bind "SUPER + LEFT" "hl.dsp.layout('focus l')")
|
||||
(bind "SUPER + RIGHT" "hl.dsp.layout('focus r')")
|
||||
|
||||
"SUPER,mouse_up,layoutmsg,focus r"
|
||||
"SUPER,mouse_down,layoutmsg,focus l"
|
||||
(bind "SUPER + mouse_up" "hl.dsp.layout('focus r')")
|
||||
(bind "SUPER + mouse_down" "hl.dsp.layout('focus l')")
|
||||
]
|
||||
else
|
||||
[
|
||||
"SUPER_SHIFT,up,movewindow,u"
|
||||
"SUPER_SHIFT,down,movewindow,d"
|
||||
"SUPER_SHIFT,left,movewindow,l"
|
||||
"SUPER_SHIFT,right,movewindow,r"
|
||||
(bind "SUPER + SHIFT + UP" "hl.dsp.window.move({ direction = 'up' })")
|
||||
(bind "SUPER + SHIFT + DOWN" "hl.dsp.window.move({ direction = 'down' })")
|
||||
(bind "SUPER + SHIFT + LEFT" "hl.dsp.window.move({ direction = 'left' })")
|
||||
(bind "SUPER + SHIFT + RIGHT" "hl.dsp.window.move({ direction = 'right' })")
|
||||
|
||||
"SUPER,up,movefocus,u"
|
||||
"SUPER,down,movefocus,d"
|
||||
"SUPER,left,movefocus,l"
|
||||
"SUPER,right,movefocus,r"
|
||||
(bind "SUPER + UP" "hl.dsp.focus({ direction = 'up' })")
|
||||
(bind "SUPER + DOWN" "hl.dsp.focus({ direction = 'down' })")
|
||||
(bind "SUPER + LEFT" "hl.dsp.focus({ direction = 'left' })")
|
||||
(bind "SUPER + RIGHT" "hl.dsp.focus({ direction = 'right' })")
|
||||
|
||||
"SUPER,mouse_up,workspace,r+1"
|
||||
"SUPER,mouse_down,workspace,r-1"
|
||||
(bind "SUPER + mouse_up" "hl.dsp.focus({ workspace = 'r-1' })")
|
||||
(bind "SUPER + mouse_down" "hl.dsp.focus({ workspace = 'r+1' })")
|
||||
]
|
||||
);
|
||||
bindm = [
|
||||
"SUPER,mouse:272,movewindow"
|
||||
"SUPER,mouse:273,resizewindow"
|
||||
];
|
||||
misc = {
|
||||
layers_hog_keyboard_focus = false;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
vrr = lib.mkDefault 2;
|
||||
};
|
||||
decoration.border_part_of_window = false;
|
||||
input.touchpad.natural_scroll = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -14,13 +14,12 @@
|
||||
tone-mapping = "mobius";
|
||||
};
|
||||
};
|
||||
services.jellyfin-mpv-shim.enable = true;
|
||||
home.packages = with pkgs; [
|
||||
# nix
|
||||
cachix
|
||||
# lorri
|
||||
vulnix
|
||||
gccdiag
|
||||
# gccdiag
|
||||
|
||||
# browsers
|
||||
firefox
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
];
|
||||
};
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.windowrule = [
|
||||
wayland.windowManager.hyprland.settings.window_rule = [
|
||||
{
|
||||
name = "Suppress maximize for neovide";
|
||||
"match:class" = "^(neovide)$";
|
||||
match.class = "^(neovide)$";
|
||||
suppress_event = "maximize";
|
||||
}
|
||||
];
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
general {
|
||||
col.inactive_border = 0x00000000
|
||||
col.active_border = 0x00000000
|
||||
# col.inactive_border = rgba({{colors.surface.default.hex_stripped}}{{custom.transparency_hex | to_lower}})
|
||||
# col.active_border = rgb({{colors.primary.default.hex_stripped}})
|
||||
border_size = 0
|
||||
extend_border_grab_area = 4
|
||||
gaps_in = {{custom.padding}}
|
||||
gaps_out = {{custom.double_padding}}
|
||||
}
|
||||
|
||||
decoration {
|
||||
rounding = {{custom.radius}}
|
||||
|
||||
blur {
|
||||
size = {{custom.blur}}
|
||||
passes = 3
|
||||
popups = true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
hl.config({
|
||||
general = {
|
||||
col = {
|
||||
inactive_border = "rgba(00000000)",
|
||||
active_border = "rgba(00000000)",
|
||||
},
|
||||
border_size = 0,
|
||||
extend_border_grab_area = 4,
|
||||
-- stylua: ignore
|
||||
gaps_in = {{custom.padding}},
|
||||
-- stylua: ignore
|
||||
gaps_out = {{custom.double_padding}},
|
||||
},
|
||||
decoration = {
|
||||
-- stylua: ignore
|
||||
rounding = {{custom.radius}},
|
||||
--[[ motion_blur = {
|
||||
enabled = true,
|
||||
},]]
|
||||
blur = {
|
||||
-- stylua: ignore
|
||||
size = {{custom.blur}},
|
||||
passes = 3,
|
||||
popups = true,
|
||||
},
|
||||
inactive_opacity = 0.8,
|
||||
shadow = {
|
||||
enabled = true,
|
||||
range = 32,
|
||||
render_power = 8,
|
||||
color = "rgba(000000aa)",
|
||||
color_inactive = "rgba(00000011)",
|
||||
},
|
||||
},
|
||||
animations = {
|
||||
enabled = true,
|
||||
},
|
||||
})
|
||||
|
||||
hl.curve("default", { type = "spring", mass = 1, stiffness = 90, dampening = 30 })
|
||||
hl.curve("linear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.5, 0.5 } } })
|
||||
|
||||
hl.animation({ leaf = "windows", enabled = true, speed = 1, spring = "default", style = "slide" })
|
||||
hl.animation({ leaf = "windowsIn", enabled = true, speed = 1, spring = "default", style = "slide bottom" })
|
||||
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1, spring = "default", style = "slide bottom" })
|
||||
|
||||
hl.animation({ leaf = "border", enabled = true, speed = 1, spring = "default" })
|
||||
|
||||
hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "linear" })
|
||||
hl.animation({ leaf = "fadeShadow", enabled = true, speed = 4, bezier = "linear" })
|
||||
hl.animation({ leaf = "fadeDim", enabled = true, speed = 4, bezier = "linear" })
|
||||
|
||||
hl.animation({ leaf = "workspaces", enabled = true, speed = 1, spring = "default", style = "slidevert" })
|
||||
@@ -189,104 +189,106 @@ in
|
||||
pkgs.zenity
|
||||
pkgs.sunwait
|
||||
];
|
||||
text = ''
|
||||
WALLPAPER=${config.xdg.configHome}/matugen/wallpaper
|
||||
STATE=${config.xdg.stateHome}/md3-evo
|
||||
text =
|
||||
# sh
|
||||
''
|
||||
WALLPAPER=${config.xdg.configHome}/matugen/wallpaper
|
||||
STATE=${config.xdg.stateHome}/md3-evo
|
||||
|
||||
SCHEME=$(dconf read /org/gnome/desktop/interface/color-scheme)
|
||||
if [ "$SCHEME" = "'prefer-light'" ]; then
|
||||
MODE="light"
|
||||
else
|
||||
MODE="dark"
|
||||
fi
|
||||
|
||||
if [ ! -d "$STATE" ]; then
|
||||
mkdir -p "$STATE"
|
||||
fi
|
||||
if [ -f "$STATE/mode" ]; then
|
||||
MODE=$(cat "$STATE/mode")
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e "\033[1mUsage:\033[0m mode|light|dark|auto|toggle|wallpaper"
|
||||
exit 1
|
||||
elif [ "$1" = "mode" ]; then
|
||||
echo -e "$MODE"
|
||||
exit 0
|
||||
elif [ "$1" = "wallpaper" ]; then
|
||||
if [ $# -eq 1 ]; then
|
||||
PICKED=$(zenity --file-selection --file-filter='Images | *.png *.jpg *.jpeg *.svg *.bmp *.gif')
|
||||
cp "$PICKED" "$WALLPAPER"
|
||||
SCHEME=$(dconf read /org/gnome/desktop/interface/color-scheme)
|
||||
if [ "$SCHEME" = "'prefer-light'" ]; then
|
||||
MODE="light"
|
||||
else
|
||||
cp "$2" "$WALLPAPER"
|
||||
MODE="dark"
|
||||
fi
|
||||
elif [ "$1" = "toggle" ]; then
|
||||
|
||||
if [ ! -d "$STATE" ]; then
|
||||
mkdir -p "$STATE"
|
||||
fi
|
||||
if [ -f "$STATE/mode" ]; then
|
||||
MODE=$(cat "$STATE/mode")
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e "\033[1mUsage:\033[0m mode|light|dark|auto|toggle|wallpaper"
|
||||
exit 1
|
||||
elif [ "$1" = "mode" ]; then
|
||||
echo -e "$MODE"
|
||||
exit 0
|
||||
elif [ "$1" = "wallpaper" ]; then
|
||||
if [ $# -eq 1 ]; then
|
||||
PICKED=$(zenity --file-selection --file-filter='Images | *.png *.jpg *.jpeg *.svg *.bmp *.gif')
|
||||
cp "$PICKED" "$WALLPAPER"
|
||||
else
|
||||
cp "$2" "$WALLPAPER"
|
||||
fi
|
||||
elif [ "$1" = "toggle" ]; then
|
||||
if [ "$MODE" = "light" ]; then
|
||||
MODE="dark"
|
||||
else
|
||||
MODE="light"
|
||||
fi
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "light" ] || [ "$1" = "dark" ] || [ "$1" == "auto" ]; then
|
||||
MODE="$1"
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "init" ]; then
|
||||
echo -e "\033[1mSetting up matugen\033[0m"
|
||||
else
|
||||
echo -e "\033[31mInvalid argument\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $WALLPAPER ]; then
|
||||
echo -e "\033[31,1mNo wallpaper set\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
THEME_SERVICE_PATH="${config.xdg.configHome}/systemd/user/theme-init.timer"
|
||||
if [ "$MODE" = "auto" ]; then
|
||||
TIME=$(sunwait poll ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E || :)
|
||||
if [ "$TIME" = "DAY" ]; then
|
||||
MODE="light"
|
||||
NEXT=6
|
||||
else
|
||||
MODE="dark"
|
||||
NEXT=4
|
||||
fi
|
||||
NEXT=$(sunwait report ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E | awk "/Daylight:/ {print \$$NEXT}")
|
||||
cat <<EOF | tee "$THEME_SERVICE_PATH" > /dev/null
|
||||
[Unit]
|
||||
Description=Next theme change timer
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* $(date -d "$NEXT today + 5 minutes" +'%H:%M'):00
|
||||
AccuracySec=1min
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOF
|
||||
else
|
||||
rm -f "$THEME_SERVICE_PATH"
|
||||
fi
|
||||
systemctl --user daemon-reload &> /dev/null || :
|
||||
systemctl --user restart theme-init.timer &> /dev/null || :
|
||||
|
||||
if command -v niri &> /dev/null; then
|
||||
niri msg action do-screen-transition --delay-ms 500
|
||||
fi
|
||||
|
||||
if [ "$MODE" = "light" ]; then
|
||||
MODE="dark"
|
||||
GTK_THEME="adw-gtk3"
|
||||
else
|
||||
MODE="light"
|
||||
GTK_THEME="adw-gtk3-dark"
|
||||
fi
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "light" ] || [ "$1" = "dark" ] || [ "$1" == "auto" ]; then
|
||||
MODE="$1"
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "init" ]; then
|
||||
echo -e "\033[1mSetting up matugen\033[0m"
|
||||
else
|
||||
echo -e "\033[31mInvalid argument\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $WALLPAPER ]; then
|
||||
echo -e "\033[31,1mNo wallpaper set\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
matugen image "$WALLPAPER" --type scheme-${cfg.flavour} --contrast ${builtins.toString cfg.contrast} --mode "$MODE"
|
||||
awww img "$WALLPAPER"
|
||||
|
||||
THEME_SERVICE_PATH="${config.xdg.configHome}/systemd/user/theme-init.timer"
|
||||
if [ "$MODE" = "auto" ]; then
|
||||
TIME=$(sunwait poll ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E || :)
|
||||
if [ "$TIME" = "DAY" ]; then
|
||||
MODE="light"
|
||||
NEXT=6
|
||||
else
|
||||
MODE="dark"
|
||||
NEXT=4
|
||||
fi
|
||||
NEXT=$(sunwait report ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E | awk "/Daylight:/ {print \$$NEXT}")
|
||||
cat <<EOF | tee "$THEME_SERVICE_PATH" > /dev/null
|
||||
[Unit]
|
||||
Description=Next theme change timer
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* $(date -d "$NEXT today + 5 minutes" +'%H:%M'):00
|
||||
AccuracySec=1min
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOF
|
||||
else
|
||||
rm -f "$THEME_SERVICE_PATH"
|
||||
fi
|
||||
systemctl --user daemon-reload &> /dev/null || :
|
||||
systemctl --user restart theme-init.timer &> /dev/null || :
|
||||
|
||||
if command -v niri &> /dev/null; then
|
||||
niri msg action do-screen-transition --delay-ms 500
|
||||
fi
|
||||
|
||||
if [ "$MODE" = "light" ]; then
|
||||
GTK_THEME="adw-gtk3"
|
||||
else
|
||||
GTK_THEME="adw-gtk3-dark"
|
||||
fi
|
||||
|
||||
matugen image "$WALLPAPER" --type scheme-${cfg.flavour} --contrast ${builtins.toString cfg.contrast} --mode "$MODE"
|
||||
awww img "$WALLPAPER"
|
||||
|
||||
dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'"
|
||||
dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'"
|
||||
dconf write /org/gnome/desktop/interface/icon-theme "'Adwaita'"
|
||||
'';
|
||||
dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'"
|
||||
dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'"
|
||||
dconf write /org/gnome/desktop/interface/icon-theme "'Tela'"
|
||||
'';
|
||||
}
|
||||
);
|
||||
in
|
||||
@@ -294,6 +296,7 @@ in
|
||||
home.packages = [
|
||||
pkgs.adw-gtk3
|
||||
pkgs.awww
|
||||
pkgs.tela-icon-theme
|
||||
theme-script
|
||||
];
|
||||
|
||||
@@ -344,44 +347,18 @@ in
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
windowrule = [
|
||||
{
|
||||
name = "floating-zenity";
|
||||
"match:class" = "^(zenity)$";
|
||||
float = true;
|
||||
}
|
||||
];
|
||||
decoration = {
|
||||
inactive_opacity = 0.8;
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 32;
|
||||
render_power = 8;
|
||||
color = "rgba(000000aa)";
|
||||
color_inactive = "rgba(00000011)";
|
||||
};
|
||||
};
|
||||
animations = {
|
||||
enabled = "yes";
|
||||
bezier = [
|
||||
"expoOut, 0.16, 1, 0.3, 1"
|
||||
];
|
||||
animation = [
|
||||
"windowsIn, 1, 5, expoOut, slide bottom"
|
||||
"windows, 1, 5, expoOut, slide"
|
||||
"windowsOut, 1, 5, expoOut, slide bottom"
|
||||
"border, 1, 10, default"
|
||||
"fade, 1, 7, default"
|
||||
"fadeShadow, 1, 10, default"
|
||||
"fadeDim, 1, 10, default"
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
source=./theme.conf
|
||||
'';
|
||||
settings.window_rule = [
|
||||
{
|
||||
name = "floating-zenity";
|
||||
match.class = "^(zenity)$";
|
||||
float = true;
|
||||
}
|
||||
];
|
||||
extraConfig =
|
||||
# lua
|
||||
''
|
||||
require("theme")
|
||||
'';
|
||||
};
|
||||
|
||||
# TODO: include is coming in the next release
|
||||
@@ -518,8 +495,8 @@ in
|
||||
})
|
||||
// (lib.optionalAttrs osConfig.programs.hyprland.enable {
|
||||
hyprland = {
|
||||
input_path = ./hyprland.conf;
|
||||
output_path = "${config.xdg.configHome}/hypr/theme.conf";
|
||||
input_path = ./hyprland.lua;
|
||||
output_path = "${config.xdg.configHome}/hypr/theme.lua";
|
||||
post_hook = pkgs.writeShellScript "reload-hyprland-theme" ''
|
||||
if command -v hyprctl &> /dev/null; then
|
||||
hyprctl reload
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
./fonts/nerd-fonts.nix
|
||||
./fonts/open-dyslexic.nix
|
||||
|
||||
./hardware/audio-share.nix
|
||||
./hardware/astro-a50.nix
|
||||
./hardware/audio.nix
|
||||
./hardware/gbmonctl.nix
|
||||
|
||||
@@ -28,7 +28,7 @@ in
|
||||
systemd.enable = false;
|
||||
package = null;
|
||||
portalPackage = null;
|
||||
settings = {
|
||||
settings.config = {
|
||||
ecosystem = {
|
||||
no_update_news = true;
|
||||
no_donation_nag = true;
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.hardware.audio.audio-share;
|
||||
in
|
||||
{
|
||||
options.hardware.audio.audio-share = {
|
||||
enable = mkEnableOption "LAN Audio Sharing";
|
||||
partner = mkOption {
|
||||
type = types.submodule {
|
||||
options = {
|
||||
ip = mkOption {
|
||||
type = types.str;
|
||||
description = "The IP address of the partner machine to share audio with.";
|
||||
};
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
description = "Name of the partner machine (for display purposes)";
|
||||
};
|
||||
combine = mkOption {
|
||||
type = types.str;
|
||||
description = "Name of the sink to combine the shared output with";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
let
|
||||
sourcePort = 10001;
|
||||
repairPort = 10002;
|
||||
controlPort = 10003;
|
||||
sinkName = "combined_output_3";
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
networking.firewall.allowedUDPPorts = [
|
||||
sourcePort
|
||||
repairPort
|
||||
controlPort
|
||||
];
|
||||
home-manager.users.${username} = {
|
||||
programs.waybar.settings.mainBar = {
|
||||
"pulseaudio" = {
|
||||
format-icons.${sinkName} = "";
|
||||
on-click-right = lib.getExe (
|
||||
pkgs.writeShellApplication {
|
||||
name = "toggle-audio-share";
|
||||
runtimeEnv = {
|
||||
SINK_A = sinkName;
|
||||
SINK_B = cfg.partner.combine;
|
||||
};
|
||||
text = builtins.readFile ./audio-share.sh;
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
xdg.configFile = {
|
||||
"pipewire/pipewire.conf.d/52-audio-share.conf".text = builtins.toJSON {
|
||||
"context.modules" = [
|
||||
{
|
||||
name = "libpipewire-module-roc-source";
|
||||
args = {
|
||||
"local.ip" = "0.0.0.0";
|
||||
"roc.resampler.backend" = "default";
|
||||
"roc.resampler.profile" = "default";
|
||||
"roc.latency-tuner.backend" = "default";
|
||||
"roc.latency-tuner.profile" = "default";
|
||||
"fec.code" = "default";
|
||||
"sess.latency.msec" = 100;
|
||||
"local.source.port" = sourcePort;
|
||||
"local.repair.port" = repairPort;
|
||||
"local.control.port" = controlPort;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
"pipewire/pipewire.conf.d/52-audio-share-sink.conf".text = builtins.toJSON {
|
||||
"context.modules" = [
|
||||
{
|
||||
name = "libpipewire-module-roc-sink";
|
||||
args = {
|
||||
"fec.code" = "default";
|
||||
"remote.ip" = cfg.partner.ip;
|
||||
"remote.source.port" = sourcePort;
|
||||
"remote.repair.port" = repairPort;
|
||||
"remote.control.port" = controlPort;
|
||||
"sink.props" = {
|
||||
"node.name" = cfg.partner.name;
|
||||
"node.description" = cfg.partner.name;
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "libpipewire-module-combine-stream";
|
||||
args = {
|
||||
"combine.mode" = "sink";
|
||||
"node.name" = sinkName;
|
||||
"node.description" = "Shared Audio Output";
|
||||
"combine.latency-compensate" = true;
|
||||
"combine.props" = {
|
||||
audio.position = [
|
||||
"FL"
|
||||
"FR"
|
||||
];
|
||||
};
|
||||
|
||||
"stream.rules" =
|
||||
let
|
||||
actions = {
|
||||
create-stream = {
|
||||
"combine.audio.position" = [
|
||||
"FL"
|
||||
"FR"
|
||||
];
|
||||
"audio.position" = [
|
||||
"FL"
|
||||
"FR"
|
||||
];
|
||||
};
|
||||
};
|
||||
in
|
||||
[
|
||||
{
|
||||
matches = [
|
||||
{
|
||||
"media.class" = "Audio/Sink";
|
||||
"node.name" = cfg.partner.combine;
|
||||
}
|
||||
];
|
||||
inherit actions;
|
||||
}
|
||||
{
|
||||
matches = [
|
||||
{
|
||||
"media.class" = "Audio/Sink";
|
||||
"node.name" = cfg.partner.name;
|
||||
}
|
||||
];
|
||||
inherit actions;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
set -eu
|
||||
|
||||
get_id() {
|
||||
pw-dump | jq -r --arg name "$1" '
|
||||
.[]
|
||||
| select(.type == "PipeWire:Interface:Node")
|
||||
| select(.info.props["node.name"] == $name)
|
||||
| .id
|
||||
'
|
||||
}
|
||||
|
||||
ID_A=$(get_id "$SINK_A")
|
||||
ID_B=$(get_id "$SINK_B")
|
||||
|
||||
CURRENT_ID=$(wpctl inspect @DEFAULT_AUDIO_SINK@ |
|
||||
awk '$1 == "id" { gsub(",", "", $2); print $2 }')
|
||||
|
||||
if [ "$CURRENT_ID" = "$ID_A" ]; then
|
||||
wpctl set-default "$ID_B"
|
||||
else
|
||||
wpctl set-default "$ID_A"
|
||||
fi
|
||||
@@ -32,120 +32,92 @@ in
|
||||
'')
|
||||
];
|
||||
|
||||
home-manager.users.${username} =
|
||||
let
|
||||
monitorline = "DP-3,3840x2160@144,0x0,1,bitdepth,10,cm,${if cfg.hdr then "hdr" else "srgb"}";
|
||||
in
|
||||
{
|
||||
programs.mpv.config = {
|
||||
vo = "gpu-next";
|
||||
gpu-api = "vulkan";
|
||||
gpu-context = "waylandvk";
|
||||
target-colorspace-hint = "auto";
|
||||
};
|
||||
programs.niri.settings = {
|
||||
prefer-no-csd = true;
|
||||
outputs."DP-3" = {
|
||||
scale = 1;
|
||||
mode = {
|
||||
width = 3840;
|
||||
height = 2160;
|
||||
refresh = 143.999;
|
||||
};
|
||||
variable-refresh-rate = "on-demand";
|
||||
};
|
||||
layout.struts.top = 80;
|
||||
};
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
home-manager.users.${username} = {
|
||||
programs.mpv.config = {
|
||||
vo = "gpu-next";
|
||||
gpu-api = "vulkan";
|
||||
gpu-context = "waylandvk";
|
||||
target-colorspace-hint = "auto";
|
||||
};
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
config = {
|
||||
scrolling = {
|
||||
column_width = 0.4;
|
||||
focus_fit_method = 0;
|
||||
fullscreen_on_one_column = false;
|
||||
};
|
||||
master = {
|
||||
orientation = "center";
|
||||
slave_count_for_center_master = 0;
|
||||
mfact = 0.4;
|
||||
allow_small_split = true;
|
||||
wrap_focus = false;
|
||||
};
|
||||
render.direct_scanout = 0;
|
||||
monitorv2 = {
|
||||
output = "DP-3";
|
||||
mode = "3840x2160@144";
|
||||
position = "0x0";
|
||||
scale = 1;
|
||||
bitdepth = 10;
|
||||
addreserved = "80,0,0,0";
|
||||
cm = if cfg.hdr then "hdredid" else "srgb";
|
||||
sdr_min_luminance = 0.25;
|
||||
sdr_max_luminance = 250;
|
||||
};
|
||||
xwayland.force_zero_scaling = true;
|
||||
misc.vrr = 2; # VA suffers from VRR flicker
|
||||
quirks.prefer_hdr = 1;
|
||||
cursor = {
|
||||
min_refresh_rate = 48;
|
||||
no_break_fs_vrr = 1;
|
||||
};
|
||||
# experimental.xx_color_management_v4 = true;
|
||||
};
|
||||
|
||||
programs.waybar.settings.mainBar =
|
||||
let
|
||||
tmpFile = "${config.home-manager.users.${username}.xdg.configHome}/gbmonctl-brightness";
|
||||
cmd =
|
||||
if cfg.hdr then
|
||||
# sh
|
||||
''
|
||||
BRIGHTNESS=$(cat ${tmpFile} || echo "0")
|
||||
BRIGHTNESS=$(printf "1.%02d" $((BRIGHTNESS / 2)))
|
||||
hyprctl keyword monitor ${monitorline},sdrbrightness,$BRIGHTNESS
|
||||
''
|
||||
else
|
||||
"${pkgs.gbmonctl}/bin/gbmonctl -prop brightness -val $BRIGHTNESS";
|
||||
in
|
||||
{
|
||||
"custom/saturation" = { };
|
||||
"custom/brightness" = {
|
||||
return-type = "json";
|
||||
exec = pkgs.writeShellScript "waybar-brightness" ''
|
||||
BRIGHTNESS=$(cat ${tmpFile} || echo "0")
|
||||
if [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 1)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 2)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 3)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 4)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 5)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 6)} ]; then
|
||||
ICON=""
|
||||
else
|
||||
ICON=""
|
||||
fi
|
||||
|
||||
echo "{\"text\": \"$ICON $BRIGHTNESS%\"}"
|
||||
'';
|
||||
on-scroll-up = pkgs.writeShellScript "waybar-brightness-up" ''
|
||||
BRIGHTNESS=$(cat ${tmpFile} || echo "0")
|
||||
BRIGHTNESS=$((BRIGHTNESS + 5))
|
||||
BRIGHTNESS=$((BRIGHTNESS > 100 ? 100 : BRIGHTNESS))
|
||||
echo $BRIGHTNESS > ${tmpFile}
|
||||
${cmd}
|
||||
'';
|
||||
on-scroll-down = pkgs.writeShellScript "waybar-brightness-up" ''
|
||||
BRIGHTNESS=$(cat ${tmpFile} || echo "0")
|
||||
BRIGHTNESS=$((BRIGHTNESS - 5))
|
||||
BRIGHTNESS=$((BRIGHTNESS < 0 ? 0 : BRIGHTNESS))
|
||||
echo $BRIGHTNESS > ${tmpFile}
|
||||
${cmd}
|
||||
'';
|
||||
exec-on-event = true;
|
||||
exec-if = "sleep 0.1";
|
||||
interval = "once";
|
||||
};
|
||||
};
|
||||
monitor = {
|
||||
output = "DP-3";
|
||||
mode = "3840x2160@144";
|
||||
position = "0x0";
|
||||
scale = 1;
|
||||
bitdepth = 10;
|
||||
reserved_area.top = 80;
|
||||
sdr_min_luminance = 0.25;
|
||||
sdr_max_luminance = 250;
|
||||
icc = toString ./fv43u.icc;
|
||||
# cm = "dcip3";
|
||||
};
|
||||
};
|
||||
|
||||
programs.waybar.settings.mainBar =
|
||||
let
|
||||
tmpFile = "${config.home-manager.users.${username}.xdg.configHome}/gbmonctl-brightness";
|
||||
cmd = "${pkgs.gbmonctl}/bin/gbmonctl -prop brightness -val $BRIGHTNESS";
|
||||
in
|
||||
{
|
||||
"custom/saturation" = { };
|
||||
"custom/brightness" = {
|
||||
return-type = "json";
|
||||
exec = pkgs.writeShellScript "waybar-brightness" ''
|
||||
BRIGHTNESS=$(cat ${tmpFile} || echo "0")
|
||||
if [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 1)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 2)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 3)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 4)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 5)} ]; then
|
||||
ICON=""
|
||||
elif [ "$BRIGHTNESS" -lt ${toString (100 / 7 * 6)} ]; then
|
||||
ICON=""
|
||||
else
|
||||
ICON=""
|
||||
fi
|
||||
|
||||
echo "{\"text\": \"$ICON $BRIGHTNESS%\"}"
|
||||
'';
|
||||
on-scroll-up = pkgs.writeShellScript "waybar-brightness-up" ''
|
||||
BRIGHTNESS=$(cat ${tmpFile} || echo "0")
|
||||
BRIGHTNESS=$((BRIGHTNESS + 5))
|
||||
BRIGHTNESS=$((BRIGHTNESS > 100 ? 100 : BRIGHTNESS))
|
||||
echo $BRIGHTNESS > ${tmpFile}
|
||||
${cmd}
|
||||
'';
|
||||
on-scroll-down = pkgs.writeShellScript "waybar-brightness-up" ''
|
||||
BRIGHTNESS=$(cat ${tmpFile} || echo "0")
|
||||
BRIGHTNESS=$((BRIGHTNESS - 5))
|
||||
BRIGHTNESS=$((BRIGHTNESS < 0 ? 0 : BRIGHTNESS))
|
||||
echo $BRIGHTNESS > ${tmpFile}
|
||||
${cmd}
|
||||
'';
|
||||
exec-on-event = true;
|
||||
exec-if = "sleep 0.1";
|
||||
interval = "once";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ in
|
||||
nvidiaPersistenced = false;
|
||||
};
|
||||
|
||||
home-manager.users.${username}.wayland.windowManager.hyprland.settings = {
|
||||
home-manager.users.${username}.wayland.windowManager.hyprland.settings.config = {
|
||||
cursor.no_hardware_cursors = true;
|
||||
opengl.nvidia_anti_flicker = true;
|
||||
# render.direct_scanout = 1;
|
||||
|
||||
@@ -18,18 +18,31 @@ in
|
||||
fonts.fontconfig.subpixel.rgba = "bgr";
|
||||
|
||||
home-manager.users.${username}.wayland.windowManager.hyprland.settings = {
|
||||
general.layout = "master";
|
||||
master = {
|
||||
orientation = "right";
|
||||
mfact = 0.65;
|
||||
always_keep_position = true;
|
||||
config = {
|
||||
general.layout = "master";
|
||||
master = {
|
||||
orientation = "right";
|
||||
mfact = 0.65;
|
||||
always_keep_position = true;
|
||||
};
|
||||
xwayland.force_zero_scaling = true;
|
||||
misc.vrr = 0; # VA suffers from VRR flicker
|
||||
};
|
||||
monitor = [
|
||||
"HDMI-A-1,2560x1440@75,0x0,1"
|
||||
"DP-1,1920x1080@144,auto-center-right,1,transform,3"
|
||||
{
|
||||
output = "HDMI-A-1";
|
||||
mode = "2560x1440@75";
|
||||
position = "0x0";
|
||||
scale = 1;
|
||||
}
|
||||
{
|
||||
output = "DP-1";
|
||||
mode = "1920x1080@144";
|
||||
position = "auto-center-right";
|
||||
scale = 1;
|
||||
transform = 3;
|
||||
}
|
||||
];
|
||||
xwayland.force_zero_scaling = true;
|
||||
misc.vrr = 0; # VA suffers from VRR flicker
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -17,11 +17,13 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${username} = {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
windowrule = [
|
||||
window_rule = [
|
||||
{
|
||||
name = "firefox-pip";
|
||||
"match:class" = "^(firefox)$";
|
||||
"match:title" = "^(Picture-in-Picture)$";
|
||||
match = {
|
||||
class = "^(firefox)$";
|
||||
title = "^(Picture-in-Picture)$";
|
||||
};
|
||||
float = true;
|
||||
no_follow_mouse = true;
|
||||
opaque = true;
|
||||
@@ -29,7 +31,7 @@ in
|
||||
fullscreen_state = "2 0";
|
||||
move = "240 8";
|
||||
keep_aspect_ratio = true;
|
||||
border_size = "0";
|
||||
border_size = 0;
|
||||
animation = "fade";
|
||||
}
|
||||
];
|
||||
|
||||
@@ -21,10 +21,10 @@ in
|
||||
bind = [
|
||||
"SUPER_SHIFT,V,exec,XDG_CURRENT_DESKTOP=sway uwsm app -- flameshot gui --clipboard"
|
||||
];
|
||||
windowrule = [
|
||||
window_rule = [
|
||||
{
|
||||
name = "Flameshot";
|
||||
"match:class" = "^(flameshot)$";
|
||||
match.class = "^(flameshot)$";
|
||||
animation = "fade";
|
||||
float = true;
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${username} = {
|
||||
wayland.windowManager.hyprland.settings.windowrule = [
|
||||
wayland.windowManager.hyprland.settings.window_rule = [
|
||||
{
|
||||
name = "Gnome Keyring";
|
||||
"match:class" = "^(gcr-prompter)$";
|
||||
match.class = "^(gcr-prompter)$";
|
||||
border_size = 0;
|
||||
rounding = 10;
|
||||
animation = "slide";
|
||||
|
||||
@@ -19,7 +19,12 @@ in
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
bind = [
|
||||
"SUPER_SHIFT,V,exec,uwsm app -- ${lib.getExe pkgs.grimblast} --freeze copy area"
|
||||
{
|
||||
_args = [
|
||||
"SUPER + SHIFT + V"
|
||||
(lib.generators.mkLuaInline "hl.dsp.exec_cmd('uwsm app -- ${lib.getExe pkgs.grimblast} --freeze copy area')")
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -22,7 +22,12 @@ in
|
||||
'';
|
||||
in
|
||||
[
|
||||
"SUPER_SHIFT,C,exec,uwsm app -- ${color-picker}"
|
||||
{
|
||||
_args = [
|
||||
"SUPER + SHIFT + C"
|
||||
(lib.generators.mkLuaInline "hl.dsp.exec_cmd('uwsm app -- ${color-picker}')")
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,7 +16,12 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${username} = {
|
||||
wayland.windowManager.hyprland.settings.bind = [
|
||||
"SUPER,T,exec,uwsm app -- kitty"
|
||||
{
|
||||
_args = [
|
||||
"SUPER + T"
|
||||
(lib.generators.mkLuaInline "hl.dsp.exec_cmd('uwsm app -- kitty')")
|
||||
];
|
||||
}
|
||||
];
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
|
||||
@@ -17,7 +17,15 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${username} = {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
bindr = [ "SUPER,SUPER_L,exec,uwsm app -- ${lib.getExe pkgs.walker}" ];
|
||||
bind = [
|
||||
{
|
||||
_args = [
|
||||
"SUPER + SUPER_L"
|
||||
(lib.generators.mkLuaInline "hl.dsp.exec_cmd('uwsm app -- ${lib.getExe pkgs.walker}')")
|
||||
{ release = true; }
|
||||
];
|
||||
}
|
||||
];
|
||||
/*
|
||||
layerrule = [
|
||||
# TODO: Add layer rules for walker
|
||||
|
||||
@@ -76,7 +76,7 @@ in
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-icons = {
|
||||
"alsa_output.usb-Turtle_Beach_Turtle_Beach_Stealth_700_G2_MAX-01.iec958-stereo" = "";
|
||||
"astro-a50-eq-harman-in" = "";
|
||||
"alsa_output.pci-0000_0a_00.4.analog-stereo" = "";
|
||||
"alsa_output.pci-0000_08_00.1.hdmi-stereo-extra4" = "";
|
||||
"alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_797_2018_11_12_79383-00.analog-stereo" =
|
||||
|
||||
@@ -20,9 +20,9 @@ in
|
||||
environment.systemPackages = with pkgs; [
|
||||
lpc21isp
|
||||
dfu-util
|
||||
openscad
|
||||
# orca-slicer
|
||||
];
|
||||
# Bambu Network Plugin
|
||||
networking.firewall.allowedUDPPorts = [ 2021 ];
|
||||
home-manager.users.${username} = {
|
||||
programs = {
|
||||
lazygit.enable = true;
|
||||
|
||||
@@ -27,18 +27,19 @@ in
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
steam
|
||||
oversteer
|
||||
obs-studio
|
||||
(lutris.override {
|
||||
extraLibraries =
|
||||
pkgs: with pkgs; [
|
||||
libgudev
|
||||
libvdpau
|
||||
];
|
||||
})
|
||||
rpcs3
|
||||
bottles
|
||||
/*
|
||||
(lutris.override {
|
||||
extraLibraries =
|
||||
pkgs: with pkgs; [
|
||||
libgudev
|
||||
libvdpau
|
||||
];
|
||||
})
|
||||
*/
|
||||
# rpcs3
|
||||
# bottles
|
||||
wineWow64Packages.stagingFull
|
||||
winetricks
|
||||
protontricks
|
||||
|
||||
Reference in New Issue
Block a user