diff --git a/hosts/temperance/configuration.nix b/hosts/temperance/configuration.nix index fa5f5ea..a8e084b 100644 --- a/hosts/temperance/configuration.nix +++ b/hosts/temperance/configuration.nix @@ -84,6 +84,7 @@ in { enable = true; musicDirectory = "/home/${config.modules.other.system.username}/cloud/media/Music"; }; + uwsm.enable = true; }; other = { system = { diff --git a/modules/programs/tui/zellij/module.nix b/modules/programs/tui/zellij/module.nix new file mode 100644 index 0000000..9ee55df --- /dev/null +++ b/modules/programs/tui/zellij/module.nix @@ -0,0 +1,12 @@ +{pkgs, ...}: let + # I am patching zellij because of this issue: + # https://github.com/zellij-org/zellij/pull/2548 + patched-zellij = pkgs.zellij.overrideAttrs (old: { + patches = [./zellij-good-scrolling.patch]; + doCheck = false; + }); +in { + environment.systemPackages = builtins.attrValues { + inherit patched-zellij; + }; +} diff --git a/modules/programs/tui/zellij/zellij-good-scrolling.patch b/modules/programs/tui/zellij/zellij-good-scrolling.patch new file mode 100644 index 0000000..c7ba14d --- /dev/null +++ b/modules/programs/tui/zellij/zellij-good-scrolling.patch @@ -0,0 +1,22 @@ +--- a/zellij-server/src/panes/grid.rs ++++ b/zellij-server/src/panes/grid.rs +@@ -271,7 +271,7 @@ fn subtract_isize_from_usize(u: usize, i: isize) -> usize { + macro_rules! dump_screen { + ($lines:expr) => {{ + let mut is_first = true; +- let mut buf = "".to_owned(); ++ let mut buf = String::with_capacity($lines.iter().map(|l| l.len()).sum()); + + for line in &$lines { + if line.is_canonical && !is_first { +@@ -280,8 +280,7 @@ macro_rules! dump_screen { + let s: String = (&line.columns).into_iter().map(|x| x.character).collect(); + // Replace the spaces at the end of the line. Sometimes, the lines are + // collected with spaces until the end of the panel. +- let re = Regex::new("([^ ])[ ]*$").unwrap(); +- buf.push_str(&(re.replace(&s, "${1}"))); ++ buf.push_str(&s.trim_end_matches(' ')); + is_first = false; + } + buf + diff --git a/modules/services/uwsm/module.nix b/modules/services/uwsm/module.nix new file mode 100644 index 0000000..8a35c6d --- /dev/null +++ b/modules/services/uwsm/module.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.modules.services.uwsm; + inherit (lib.modules) mkIf; + inherit (lib.options) mkEnableOption; +in { + options.modules.services.uwsm.enable = mkEnableOption "uwsm"; + config = mkIf cfg.enable { + programs.uwsm = { + enable = true; + package = pkgs.uwsm; + waylandCompositors = { + hyprland = { + prettyName = "Hyprland"; + comment = "Hyprland managed with UWSM"; + binPath = "/run/current-system/sw/bin/Hyprland"; + }; + }; + }; + }; +} diff --git a/packages/helix.nix b/packages/helix.nix index 137600e..52ab14b 100644 --- a/packages/helix.nix +++ b/packages/helix.nix @@ -25,6 +25,8 @@ solargraph, tinymist, typescript-language-server, + rustfmt, + clippy, ... }: let inherit (lib) getExe; @@ -256,6 +258,8 @@ helix rust-analyzer + rustfmt + clippy # typst lsp tinymist