Compare commits

...
4 Commits
Author SHA1 Message Date
Theaninova fa6b2a387e update system 2026-06-25 10:49:08 +02:00
Theaninova 5f6fbdc0ac feat: audio cast 2026-06-09 14:39:32 +02:00
Theaninova cf2108ad82 update system 2026-06-06 13:11:00 +02:00
Theaninova 7c3a4f9cb6 update system 2026-05-25 14:04:30 +02:00
29 changed files with 651 additions and 385 deletions
Generated
+34 -33
View File
@@ -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": {
+12 -2
View File
@@ -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;
};
+1
View File
@@ -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;
+21 -3
View File
@@ -13,18 +13,37 @@
packages = with pkgs; [
blueman
kdePackages.okular
(pkgs.writeShellApplication {
name = "shut";
text = ''
shutdown now
'';
})
];
};
wayland.windowManager.hyprland.settings = {
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
View File
@@ -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;
+7 -1
View File
@@ -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,12 +14,27 @@ 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 = {
config = {
general = {
allow_tearing = true;
layout = lib.mkIf cfg.scrolling "scrolling";
@@ -28,63 +43,68 @@ in
accel_profile = "flat";
kb_layout = osConfig.services.xserver.xkb.layout;
kb_variant = osConfig.services.xserver.xkb.variant;
touchpad.natural_scroll = true;
};
bind = [
"SUPER,C,killactive"
"SUPER,P,togglefloating,"
"SUPER,P,pin,"
"SUPER,D,fullscreen,1"
"SUPER,V,fullscreen,0"
"SUPER,f,workspace,r-1"
"SUPER,h,workspace,r+1"
"SUPER_SHIFT,f,movetoworkspace,r-1"
"SUPER_SHIFT,h,movetoworkspace,r+1"
]
++ (
if cfg.scrolling then
[
"SUPER,up,layoutmsg,focus u"
"SUPER,down,layoutmsg,focus d"
"SUPER,right,layoutmsg,focus r"
"SUPER,left,layoutmsg,focus l"
"SUPER_SHIFT,up,layoutmsg,movewindowto u"
"SUPER_SHIFT,down,layoutmsg,movewindowto d"
"SUPER_SHIFT,left,layoutmsg,swapcol l"
"SUPER_SHIFT,right,layoutmsg,swapcol r"
"SUPER,mouse_up,layoutmsg,focus r"
"SUPER,mouse_down,layoutmsg,focus l"
]
else
[
"SUPER_SHIFT,up,movewindow,u"
"SUPER_SHIFT,down,movewindow,d"
"SUPER_SHIFT,left,movewindow,l"
"SUPER_SHIFT,right,movewindow,r"
"SUPER,up,movefocus,u"
"SUPER,down,movefocus,d"
"SUPER,left,movefocus,l"
"SUPER,right,movefocus,r"
"SUPER,mouse_up,workspace,r+1"
"SUPER,mouse_down,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;
enable_swallow = true;
swallow_regex = "^kitty$";
};
binds.scroll_event_delay = 0;
decoration.border_part_of_window = false;
input.touchpad.natural_scroll = true;
};
bind = [
(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' })")
(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
[
(bind "SUPER + SHIFT + LEFT" "hl.dsp.layout('swapcol l')")
(bind "SUPER + SHIFT + RIGHT" "hl.dsp.layout('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')")
(bind "SUPER + mouse_up" "hl.dsp.layout('focus r')")
(bind "SUPER + mouse_down" "hl.dsp.layout('focus l')")
]
else
[
(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' })")
(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' })")
(bind "SUPER + mouse_up" "hl.dsp.focus({ workspace = 'r-1' })")
(bind "SUPER + mouse_down" "hl.dsp.focus({ workspace = 'r+1' })")
]
);
};
};
+1 -2
View File
@@ -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
+2 -2
View File
@@ -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";
}
];
-20
View File
@@ -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
}
}
+53
View File
@@ -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" })
+13 -36
View File
@@ -189,7 +189,9 @@ in
pkgs.zenity
pkgs.sunwait
];
text = ''
text =
# sh
''
WALLPAPER=${config.xdg.configHome}/matugen/wallpaper
STATE=${config.xdg.stateHome}/md3-evo
@@ -285,7 +287,7 @@ in
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/icon-theme "'Tela'"
'';
}
);
@@ -294,6 +296,7 @@ in
home.packages = [
pkgs.adw-gtk3
pkgs.awww
pkgs.tela-icon-theme
theme-script
];
@@ -344,43 +347,17 @@ in
};
wayland.windowManager.hyprland = {
settings = {
windowrule = [
settings.window_rule = [
{
name = "floating-zenity";
"match:class" = "^(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
extraConfig =
# lua
''
require("theme")
'';
};
@@ -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
+1
View File
@@ -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
+1 -1
View File
@@ -28,7 +28,7 @@ in
systemd.enable = false;
package = null;
portalPackage = null;
settings = {
settings.config = {
ecosystem = {
no_update_news = true;
no_donation_nag = true;
+157
View File
@@ -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;
}
];
};
}
];
};
};
};
};
}
+22
View File
@@ -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
+16 -44
View File
@@ -32,76 +32,48 @@ in
'')
];
home-manager.users.${username} =
let
monitorline = "DP-3,3840x2160@144,0x0,1,bitdepth,10,cm,${if cfg.hdr then "hdr" else "srgb"}";
in
{
home-manager.users.${username} = {
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 = {
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 = {
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;
};
};
monitor = {
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";
reserved_area.top = 80;
sdr_min_luminance = 0.25;
sdr_max_luminance = 250;
icc = toString ./fv43u.icc;
# cm = "dcip3";
};
xwayland.force_zero_scaling = true;
misc.vrr = 2; # VA suffers from VRR flicker
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";
cmd = "${pkgs.gbmonctl}/bin/gbmonctl -prop brightness -val $BRIGHTNESS";
in
{
"custom/saturation" = { };
@@ -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;
+17 -4
View File
@@ -18,18 +18,31 @@ in
fonts.fontconfig.subpixel.rgba = "bgr";
home-manager.users.${username}.wayland.windowManager.hyprland.settings = {
config = {
general.layout = "master";
master = {
orientation = "right";
mfact = 0.65;
always_keep_position = true;
};
monitor = [
"HDMI-A-1,2560x1440@75,0x0,1"
"DP-1,1920x1080@144,auto-center-right,1,transform,3"
];
xwayland.force_zero_scaling = true;
misc.vrr = 0; # VA suffers from VRR flicker
};
monitor = [
{
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;
}
];
};
};
}
+6 -4
View File
@@ -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";
}
];
+2 -2
View File
@@ -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;
}
+2 -2
View File
@@ -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";
+6 -1
View File
@@ -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')")
];
}
];
};
};
+6 -1
View File
@@ -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}')")
];
}
];
};
}
+6 -1
View File
@@ -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;
+9 -1
View File
@@ -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
+1 -1
View File
@@ -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" =
+2 -2
View File
@@ -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;
+4 -3
View File
@@ -27,9 +27,9 @@ in
];
environment.systemPackages = with pkgs; [
steam
oversteer
obs-studio
/*
(lutris.override {
extraLibraries =
pkgs: with pkgs; [
@@ -37,8 +37,9 @@ in
libvdpau
];
})
rpcs3
bottles
*/
# rpcs3
# bottles
wineWow64Packages.stagingFull
winetricks
protontricks