From b0101afb483d67db3d31420cd95151ccf42fe2fc Mon Sep 17 00:00:00 2001 From: Gabriel Volpe Date: Sat, 4 Jan 2025 20:52:02 +0100 Subject: [PATCH] modularize hidpi config (#281) --- home/modules/browser.nix | 14 --------- home/modules/default.nix | 4 +-- home/modules/hidpi.nix | 45 +++++++++++++++++++++++++++++ home/modules/megasync.nix | 4 +-- home/modules/signal.nix | 8 ++--- home/programs/alacritty/default.nix | 7 ++--- home/programs/foot/default.nix | 8 ++--- home/services/hypridle/default.nix | 13 ++------- home/services/polybar/default.nix | 4 +-- lib/overlays.nix | 3 +- outputs/hm.nix | 19 ++++++------ outputs/os.nix | 2 +- 12 files changed, 72 insertions(+), 59 deletions(-) delete mode 100644 home/modules/browser.nix create mode 100644 home/modules/hidpi.nix diff --git a/home/modules/browser.nix b/home/modules/browser.nix deleted file mode 100644 index 39e58b4a..00000000 --- a/home/modules/browser.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ lib, ... }: - -with lib; - -{ - meta.maintainers = [ hm.maintainers.gvolpe ]; - - options.programs.browser = { - settings.dpi = mkOption { - type = types.str; - default = "0"; - }; - }; -} diff --git a/home/modules/default.nix b/home/modules/default.nix index a8e2434f..22095724 100644 --- a/home/modules/default.nix +++ b/home/modules/default.nix @@ -1,7 +1,7 @@ [ - ./browser.nix - ./dotfiles.nix ./changes-report.nix + ./dotfiles.nix + ./hidpi.nix ./megasync.nix ./signal.nix ] diff --git a/home/modules/hidpi.nix b/home/modules/hidpi.nix new file mode 100644 index 00000000..0afad5ef --- /dev/null +++ b/home/modules/hidpi.nix @@ -0,0 +1,45 @@ +{ config, lib, ... }: + +with lib; + +{ + meta.maintainers = [ hm.maintainers.gvolpe ]; + + options = { + hidpi = lib.mkEnableOption "HiDPI displays"; + + programs = { + alacritty.fontSize = mkOption { + type = types.int; + default = if config.hidpi then 10 else 8; + }; + + browser.settings.dpi = mkOption { + type = types.str; + default = "0"; + }; + + foot.fontSize = mkOption { + type = types.str; + default = if config.hidpi then "14" else "10"; + }; + + signal.scaleFactor = mkOption { + type = types.str; + default = if config.hidpi then "2" else "1.5"; + }; + }; + + services = { + hypridle.dpms = mkOption { + type = types.attrs; + default = if config.hidpi then { } else + { + timeout = 1200; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + }; + }; + }; + }; +} diff --git a/home/modules/megasync.nix b/home/modules/megasync.nix index 46a95388..d3d570b8 100644 --- a/home/modules/megasync.nix +++ b/home/modules/megasync.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, specialArgs, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -23,7 +23,7 @@ in package = mkOption { type = types.package; - default = if specialArgs.hidpi then hidpiPackage else pkgs.megasync; + default = if config.hidpi then hidpiPackage else pkgs.megasync; }; }; diff --git a/home/modules/signal.nix b/home/modules/signal.nix index 60a61d5c..51e51360 100644 --- a/home/modules/signal.nix +++ b/home/modules/signal.nix @@ -1,16 +1,14 @@ -{ config, lib, pkgs, specialArgs, ... }: +{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.signal; - scaleFactor = if specialArgs.hidpi then "2" else "1.5"; - signal = pkgs.signal-desktop.overrideAttrs (old: { preFixup = old.preFixup + '' substituteInPlace $out/share/applications/signal-desktop.desktop \ - --replace "--no-sandbox" "--use-tray-icon --force-device-scale-factor=${scaleFactor}" + --replace "--no-sandbox" "--use-tray-icon --force-device-scale-factor=${cfg.scaleFactor}" ''; }); @@ -22,7 +20,7 @@ let postBuild = '' wrapProgram $out/bin/signal-desktop \ --add-flags "--use-tray-icon" \ - --add-flags "--force-device-scale-factor=${scaleFactor}" + --add-flags "--force-device-scale-factor=${cfg.scaleFactor}" ''; }; diff --git a/home/programs/alacritty/default.nix b/home/programs/alacritty/default.nix index 06dae35a..479c32cc 100644 --- a/home/programs/alacritty/default.nix +++ b/home/programs/alacritty/default.nix @@ -1,8 +1,5 @@ -{ pkgs, specialArgs, ... }: +{ config, pkgs, ... }: -let - fontSize = if specialArgs.hidpi then 10 else 8; -in { programs.alacritty = { enable = true; @@ -23,7 +20,7 @@ in family = "JetBrainsMono Nerd Font"; style = "Medium"; }; - size = fontSize; + size = config.programs.alacritty.fontSize; }; keyboard.bindings = [ { key = 53; mods = "Shift"; mode = "Vi"; action = "SearchBackward"; } diff --git a/home/programs/foot/default.nix b/home/programs/foot/default.nix index 9024ac23..7922e782 100644 --- a/home/programs/foot/default.nix +++ b/home/programs/foot/default.nix @@ -1,9 +1,5 @@ -{ pkgs, specialArgs, ... }: +{ config, pkgs, ... }: -let - inherit (specialArgs) hidpi; - fontSize = if hidpi then "14" else "10"; -in { # lightweight wayland terminal emulator programs.foot = { @@ -12,7 +8,7 @@ in settings = { main = { shell = "${pkgs.fish}/bin/fish"; - font = "JetBrainsMono Nerdfont:size=${fontSize}"; + font = "JetBrainsMono Nerdfont:size=${config.programs.foot.fontSize}"; pad = "12x12"; dpi-aware = "yes"; selection-target = "both"; diff --git a/home/services/hypridle/default.nix b/home/services/hypridle/default.nix index e1dcd6cc..bb579672 100644 --- a/home/services/hypridle/default.nix +++ b/home/services/hypridle/default.nix @@ -1,14 +1,5 @@ -{ specialArgs, ... }: +{ config, ... }: -let - dpmsSettings = - if specialArgs.hidpi then { } else - { - timeout = 1200; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - }; -in { services.hypridle = { enable = true; @@ -24,7 +15,7 @@ in timeout = 900; on-timeout = "hyprlock"; } - dpmsSettings + config.services.hypridle.dpms ]; }; }; diff --git a/home/services/polybar/default.nix b/home/services/polybar/default.nix index 1e199186..0383a055 100644 --- a/home/services/polybar/default.nix +++ b/home/services/polybar/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, specialArgs, ... }: +{ config, lib, pkgs, ... }: let openCalendar = "${pkgs.xfce.orage}/bin/orage"; @@ -14,7 +14,7 @@ let font5 = 10; }; - mainBar = if specialArgs.hidpi then hdmiBar else laptopBar; + mainBar = if config.hidpi then hdmiBar else laptopBar; openGithub = "${lib.exe pkgs.firefox-beta-bin} -new-tab https\\://github.com/notifications"; diff --git a/lib/overlays.nix b/lib/overlays.nix index 7b2a7a36..d4981f69 100644 --- a/lib/overlays.nix +++ b/lib/overlays.nix @@ -76,8 +76,7 @@ let }; xargsOverlay = f: p: { - xargs = { hidpi }: { - inherit hidpi; + xargs = { inherit (inputs) gh-md-toc penguin-fox; inherit (inputs.rycee-nurpkgs.lib.${system}) buildFirefoxXpiAddon; addons = f.nur.repos.rycee.firefox-addons; diff --git a/outputs/hm.nix b/outputs/hm.nix index 9a15948f..849dd811 100644 --- a/outputs/hm.nix +++ b/outputs/hm.nix @@ -10,25 +10,26 @@ let ({ nix.registry.nixpkgs.flake = inputs.nixpkgs; }) ]; - hyprlandDpiSettings = { hidpi }: { - programs.browser.settings.dpi = if hidpi then "0" else "1.7"; + hyprlandDpiSettings = { config, ... }: { + programs.browser.settings.dpi = if config.hidpi then "0" else "1.7"; }; - xmonadDpiSettings = { hidpi }: { - programs.browser.settings.dpi = if hidpi then "-1.0" else "0.7"; + xmonadDpiSettings = { config, ... }: { + programs.browser.settings.dpi = if config.hidpi then "-1.0" else "0.7"; }; mkXmonadHome = { hidpi }: let imports = sharedImports ++ [ ../home/wm/xmonad/home.nix - (xmonadDpiSettings { inherit hidpi; }) + ({ inherit hidpi; }) + xmonadDpiSettings ]; in ( home-manager.lib.homeManagerConfiguration { inherit pkgs; - extraSpecialArgs = pkgs.xargs { inherit hidpi; }; + extraSpecialArgs = pkgs.xargs; modules = [{ inherit imports; }]; } ); @@ -38,14 +39,14 @@ let imports = sharedImports ++ [ inputs.hypr-binds-flake.homeManagerModules.${system}.default ../home/wm/hyprland/home.nix - (hyprlandDpiSettings { inherit hidpi; }) - ({ dotfiles.mutable = mutableDotFiles; }) + ({ inherit hidpi; dotfiles.mutable = mutableDotFiles; }) + hyprlandDpiSettings ]; in ( home-manager.lib.homeManagerConfiguration { inherit pkgs; - extraSpecialArgs = pkgs.xargs { inherit hidpi; }; + extraSpecialArgs = pkgs.xargs; modules = [{ inherit imports; }]; } ); diff --git a/outputs/os.nix b/outputs/os.nix index 6cadc03c..a53dc270 100644 --- a/outputs/os.nix +++ b/outputs/os.nix @@ -51,7 +51,7 @@ in home-manager.nixosModules.home-manager (import ./mod.nix { inherit inputs system; - extraSpecialArgs = pkgs.xargs { hidpi = false; }; + extraSpecialArgs = pkgs.xargs; }) # FIXME: zfs-kernel-2.2.3-6.8.9 is marked as broken # iso image modules