diff --git a/flake.lock b/flake.lock index daca824..00aefab 100644 --- a/flake.lock +++ b/flake.lock @@ -63,6 +63,21 @@ "type": "github" } }, + "crane": { + "locked": { + "lastModified": 1765739568, + "narHash": "sha256-gQYx35Of4UDKUjAYvmxjUEh/DdszYeTtT6MDin4loGE=", + "owner": "ipetkov", + "repo": "crane", + "rev": "67d2baff0f9f677af35db61b32b5df6863bcc075", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -214,6 +229,24 @@ "type": "github" } }, + "flake-utils_3": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -410,6 +443,22 @@ "type": "github" } }, + "nixpkgs_4": { + "locked": { + "lastModified": 1765934234, + "narHash": "sha256-pJjWUzNnjbIAMIc5gRFUuKCDQ9S1cuh3b2hKgA7Mc4A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "af84f9d270d404c17699522fab95bbf928a2d92f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { "flake-parts": "flake-parts_2", @@ -461,7 +510,8 @@ "nixpkgs": "nixpkgs_2", "nixvim": "nixvim", "overseer": "overseer", - "sops-nix": "sops-nix" + "sops-nix": "sops-nix", + "zjstatus": "zjstatus" } }, "rust-analyzer-src": { @@ -481,6 +531,27 @@ "type": "github" } }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "zjstatus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765939271, + "narHash": "sha256-7F/d+ZrTYyOxnBZcleQZjOOEWc1IMXR/CLLRLLsVtHo=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "8028944c1339469124639da276d403d8ab7929a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "sops-nix": { "inputs": { "nixpkgs": [ @@ -562,6 +633,21 @@ "type": "github" } }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -582,6 +668,27 @@ "repo": "treefmt-nix", "type": "github" } + }, + "zjstatus": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1771148613, + "narHash": "sha256-nLzdw8jskekSRrunxBDCA0NCHr/2aJjcXqZ1Fcqm5eY=", + "owner": "dj95", + "repo": "zjstatus", + "rev": "7a039f56da80681408454d6e175fde3f54b9e592", + "type": "github" + }, + "original": { + "owner": "dj95", + "repo": "zjstatus", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 8f99825..50fbb13 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,7 @@ flake = false; }; nixvim.url = "github:nix-community/nixvim"; + zjstatus.url = "github:dj95/zjstatus"; llm-agents.url = "github:numtide/llm-agents.nix"; disko = { url = "github:nix-community/disko"; diff --git a/hosts/chidi/default.nix b/hosts/chidi/default.nix index ca20e4e..6a3e000 100644 --- a/hosts/chidi/default.nix +++ b/hosts/chidi/default.nix @@ -39,6 +39,7 @@ ../../profiles/ripgrep.nix ../../profiles/ssh.nix ../../profiles/starship.nix + ../../profiles/zellij.nix ../../profiles/zk.nix ../../profiles/zoxide.nix ../../profiles/zsh.nix diff --git a/hosts/jason/default.nix b/hosts/jason/default.nix index 43242f6..a779b7e 100644 --- a/hosts/jason/default.nix +++ b/hosts/jason/default.nix @@ -38,6 +38,7 @@ ../../profiles/ripgrep.nix ../../profiles/ssh.nix ../../profiles/starship.nix + ../../profiles/zellij.nix ../../profiles/zk.nix ../../profiles/zoxide.nix ../../profiles/zsh.nix diff --git a/hosts/tahani/default.nix b/hosts/tahani/default.nix index 8c0ee40..8313569 100644 --- a/hosts/tahani/default.nix +++ b/hosts/tahani/default.nix @@ -40,6 +40,7 @@ ../../profiles/ripgrep.nix ../../profiles/ssh.nix ../../profiles/starship.nix + ../../profiles/zellij.nix ../../profiles/zk.nix ../../profiles/zoxide.nix ../../profiles/zsh.nix diff --git a/overlays/zjstatus.nix b/overlays/zjstatus.nix new file mode 100644 index 0000000..5641864 --- /dev/null +++ b/overlays/zjstatus.nix @@ -0,0 +1,3 @@ +{inputs}: final: prev: { + zjstatus = inputs.zjstatus.packages.${prev.stdenv.hostPlatform.system}.default; +} diff --git a/profiles/zellij.nix b/profiles/zellij.nix new file mode 100644 index 0000000..06086c2 --- /dev/null +++ b/profiles/zellij.nix @@ -0,0 +1,52 @@ +{pkgs, ...}: { + programs.zellij = { + enable = true; + settings = { + theme = "catppuccin-latte"; + default_layout = "default"; + default_shell = "${pkgs.nushell}/bin/nu"; + pane_frames = false; + show_startup_tips = false; + show_release_notes = false; + }; + }; + + xdg.configFile."zellij/layouts/default.kdl".text = '' + layout { + default_tab_template { + pane split_direction="vertical" { + pane + } + + pane size=1 borderless=true { + plugin location="file:${pkgs.zjstatus}/bin/zjstatus.wasm" { + hide_frame_for_single_pane "true" + + format_left "{mode}#[fg=#1e66f5,bg=#eff1f5,bold] {session}#[bg=#eff1f5] {tabs}" + format_right "{datetime}" + format_space "#[bg=#eff1f5]" + + mode_normal "#[fg=#eff1f5,bg=#1e66f5] " + mode_locked "#[fg=#eff1f5,bg=#fe640b] L " + mode_tab "#[fg=#eff1f5,bg=#40a02b] T " + mode_pane "#[fg=#eff1f5,bg=#8839ef] P " + mode_session "#[fg=#eff1f5,bg=#04a5e5] S " + mode_resize "#[fg=#eff1f5,bg=#df8e1d] R " + mode_move "#[fg=#eff1f5,bg=#ea76cb] M " + mode_search "#[fg=#eff1f5,bg=#d20f39] S " + + tab_normal "#[fg=#acb0be,bg=#eff1f5] {index} {name} {fullscreen_indicator}{sync_indicator}{floating_indicator}" + tab_active "#[fg=#eff1f5,bg=#1e66f5,bold,underline] {index} {name} {fullscreen_indicator}{sync_indicator}{floating_indicator}" + tab_fullscreen_indicator "□ " + tab_sync_indicator " " + tab_floating_indicator "󰉈 " + + datetime "#[fg=#4c4f69,bg=#eff1f5] {format} " + datetime_format "%A, %d %b %Y %H:%M" + datetime_timezone "Europe/Berlin" + } + } + } + } + ''; +}