diff --git a/hardware/zenix.nix b/hardware/zenix.nix index c136f1a..f96e4e1 100644 --- a/hardware/zenix.nix +++ b/hardware/zenix.nix @@ -85,4 +85,11 @@ hardware.keyboard.zsa.enable = true; + services.tlp = { + settings = { + # power limit poor old radeon gpu + RADEON_DPM_PERF_LEVEL_ON_AC = "low"; + }; + }; + } diff --git a/lib/modules/display.nix b/lib/modules/display.nix index af3f753..bcdf7c1 100644 --- a/lib/modules/display.nix +++ b/lib/modules/display.nix @@ -10,7 +10,7 @@ let displayHyprlandSetting = display: "monitor = " + specificDisplay display + ", " + resToString display.resolution + - ", " + display.position + + ", " + positionToHyprlandString display.position + ", " + toString display.scaling; swaybgJob = displays: @@ -35,6 +35,23 @@ let then display.name else "desc:" + display.description; + positionToHyprlandString = { x, y }: + if (x == "" || y == "") then "auto" else x + "x" + y; + + renderDisplaysForSway = displays: + listToAttrs (map displaySwaySetting displays); + + displaySwaySetting = display: { + name = display.name; + value = let res = display.resolution; in + { + mode = mkIf (resIsSet res) + "${toString res.x}x${toString res.y}@${toString res.freq}Hz"; + bg = display.wallpaper + " fill"; + scale = toString display.scaling; + }; + }; + resolutionType = types.submodule ({ x, y, freq, ... }: { options = { @@ -74,9 +91,11 @@ let type = resolutionType; default = { }; }; - position = mkOption { - description = "XxY"; - default = "auto"; + position.x = mkOption { + default = ""; + }; + position.y = mkOption { + default = ""; }; wallpaper = mkOption { description = "path to wallpaper"; @@ -85,10 +104,14 @@ let }; }); + resIsSet = res: + !(res.x == 0 || res.y == 0 || res.freq == 0); + resToString = res: - if res.x == 0 || res.y == 0 || res.freq == 0 + if resIsSet res then "preferred" else "${toString res.x}x${toString res.y}@${toString res.freq}"; + in { options.displays = @@ -107,6 +130,8 @@ in (renderDisplaysForHyprland cfg.displays); systemd.user.services.swaybg = swaybgJob cfg.displays; + wayland.windowManager.sway.config.output = mkIf (cfg.displays != [ ]) + (renderDisplaysForSway cfg.displays); } ]; }; diff --git a/lib/modules/personal.nix b/lib/modules/personal.nix index 1fb6106..6f19de2 100644 --- a/lib/modules/personal.nix +++ b/lib/modules/personal.nix @@ -27,6 +27,7 @@ with lib; handbrake monero-gui xmrig + krita ]; }]; }; diff --git a/lib/modules/scripts.nix b/lib/modules/scripts.nix index d199496..98a9528 100644 --- a/lib/modules/scripts.nix +++ b/lib/modules/scripts.nix @@ -2,8 +2,8 @@ with lib; let scripts = config.programs.scripts; - - hotkeyType = types.submodule ({...}: { + + hotkeyType = types.submodule ({ ... }: { options = { key = mkOption { description = "the key"; @@ -18,8 +18,8 @@ let }; }; }); - - scriptType = types.submodule ({...}: { + + scriptType = types.submodule ({ ... }: { options = { name = mkOption { description = "name of the executable"; @@ -30,7 +30,7 @@ let hotkeys = mkOption { type = types.listOf hotkeyType; description = "keys that run this script"; - default = []; + default = [ ]; }; install = mkOption { type = types.bool; @@ -38,19 +38,24 @@ let }; }; }); - + scriptToPackage = script: pkgs.writeShellScriptBin script.name script.text; + scriptExec = { script, hotkey }: + "${scriptToPackage script}/bin/${script.name} ${hotkey.args}"; + installScripts = scripts: - (map scriptToPackage (filter ( s: s.install ) scripts)); - + (map scriptToPackage (filter (s: s.install) scripts)); + bindScript = script: concatStrings ( - map ( hotkey: '' - bind = ${hotkey.modifier}, ${hotkey.key}, exec, ${scriptToPackage script}/bin/${script.name} ${hotkey.args} - '' ) script.hotkeys); - - bindScripts = scripts: + map + (hotkey: '' + bind = ${hotkey.modifier}, ${hotkey.key}, exec, ${scriptExec {inherit script hotkey;}} + '') + script.hotkeys); + + bindScripts = scripts: "# === USER SCRIPTS MODULE ===\n" + concatStringsSep "\n" (map bindScript scripts); @@ -59,7 +64,7 @@ in options.programs = { scripts = mkOption { type = types.listOf scriptType; - default = []; + default = [ ]; }; }; @@ -69,5 +74,5 @@ in wayland.windowManager.hyprland.extraConfig = bindScripts scripts; }]; }; - + } diff --git a/lib/scripts.nix b/lib/scripts.nix index 13b323f..2cb5845 100644 --- a/lib/scripts.nix +++ b/lib/scripts.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ...}: +{ config, pkgs, ... }: let my-deps = { notify-send = "${pkgs.libnotify}/bin/notify-send"; @@ -37,8 +37,8 @@ in fi ''; hotkeys = [ - {key = "W";} - {modifier = ""; key = "XF86AudioPlay";} + { key = "W"; } + { modifier = ""; key = "XF86AudioPlay"; } ]; } { @@ -47,7 +47,7 @@ in items="$(rbw list)" echo "$items" | ${ my-deps.menu } | xargs -I_ rbw get _ | wl-copy ''; - hotkeys = [ { key = "P"; } ]; + hotkeys = [{ key = "P"; }]; install = false; } { @@ -56,7 +56,7 @@ in items="$(rbw list)" echo "$items" | ${ my-deps.menu } | xargs -I_ rbw code _ | wl-copy ''; - hotkeys = [ { modifier = "SUPER_SHIFT"; key = "P"; } ]; + hotkeys = [{ modifier = "SUPER_SHIFT"; key = "P"; }]; install = false; } { @@ -72,7 +72,7 @@ in cat "$FILE" | wl-copy -t image/png ''; hotkeys = [ - {modifier = "SUPER_SHIFT"; key = "S";} + { modifier = "SUPER_SHIFT"; key = "S"; } ]; } { @@ -82,8 +82,8 @@ in ${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-down -t 1000 ''; hotkeys = [ - {modifier = ""; key = "XF86MonBrightnessDown"; args = "10";} - {modifier = "SHIFT"; key = "XF86MonBrightnessDown"; args = "1";} + { modifier = ""; key = "XF86MonBrightnessDown"; args = "10"; } + { modifier = "SHIFT"; key = "XF86MonBrightnessDown"; args = "1"; } ]; install = false; } @@ -94,8 +94,8 @@ in ${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-up -t 1000 ''; hotkeys = [ - {modifier = ""; key = "XF86MonBrightnessUp"; args = "10";} - {modifier = "SHIFT"; key = "XF86MonBrightnessUp"; args = "1";} + { modifier = ""; key = "XF86MonBrightnessUp"; args = "10"; } + { modifier = "SHIFT"; key = "XF86MonBrightnessUp"; args = "1"; } ]; install = false; } @@ -108,7 +108,7 @@ in ${my-deps.xargs} -I_ ${my-deps.hyprctl} dispatch focuswindow title:"_" ''; hotkeys = [ - {key = "TAB";} + { key = "TAB"; } ]; } { @@ -168,8 +168,8 @@ in ${my-deps.amixer} sset Master 5%+ && ${my-deps.amixer} sset Master unmute ''; hotkeys = [ - {key = "bracketright";} - {modifier = ""; key = "XF86AudioRaiseVolume";} + { key = "bracketright"; } + { modifier = ""; key = "XF86AudioRaiseVolume"; } ]; install = false; } @@ -179,8 +179,8 @@ in ${ my-deps.amixer } sset Master 5%- ''; hotkeys = [ - {key = "bracketleft";} - {modifier = ""; key = "XF86AudioLowerVolume";} + { key = "bracketleft"; } + { modifier = ""; key = "XF86AudioLowerVolume"; } ]; install = false; } @@ -190,8 +190,8 @@ in ${my-deps.playerctl} next ''; hotkeys = [ - {modifier = "SUPER_SHIFT"; key = "period";} - {modifier = ""; key = "XF86AudioNext";} + { modifier = "SUPER_SHIFT"; key = "period"; } + { modifier = ""; key = "XF86AudioNext"; } ]; install = false; } @@ -201,8 +201,8 @@ in ${my-deps.playerctl} previous ''; hotkeys = [ - {modifier = "SUPER_SHIFT"; key = "comma";} - {modifier = ""; key = "XF86AudioPrev";} + { modifier = "SUPER_SHIFT"; key = "comma"; } + { modifier = ""; key = "XF86AudioPrev"; } ]; install = false; } @@ -210,7 +210,7 @@ in name = "terminal"; text = my-deps.terminal; hotkeys = [ - {key = "RETURN";} + { key = "RETURN"; } ]; install = false; } @@ -218,7 +218,7 @@ in name = "fileman"; text = my-deps.fileman; hotkeys = [ - {key = "O";} + { key = "O"; } ]; install = false; } @@ -233,9 +233,9 @@ in esac ''; hotkeys = [ - {key = "Z";} + { key = "Z"; } ]; install = false; } ]; -} \ No newline at end of file +}