diff --git a/flake.lock b/flake.lock index 9dffb7c4..83add693 100644 --- a/flake.lock +++ b/flake.lock @@ -37,6 +37,27 @@ "type": "github" } }, + "crane_2": { + "inputs": { + "nixpkgs": [ + "zjstatus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1718730147, + "narHash": "sha256-QmD6B6FYpuoCqu6ZuPJH896ItNquDkn0ulQlOn4ykN8=", + "owner": "ipetkov", + "repo": "crane", + "rev": "32c21c29b034d0a93fdb2379d6fabc40fc3d0e6c", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "firefox-nightly": { "inputs": { "cachix": "cachix", @@ -206,6 +227,26 @@ } }, "flake-utils_2": { + "inputs": { + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { "inputs": { "systems": "systems_2" }, @@ -223,6 +264,24 @@ "type": "github" } }, + "flake-utils_4": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "git-hooks": { "inputs": { "flake-compat": "flake-compat_4", @@ -356,7 +415,7 @@ "crane": "crane", "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs", "pre-commit-hooks-nix": "pre-commit-hooks-nix", "rust-overlay": "rust-overlay" @@ -531,6 +590,22 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1719082008, + "narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9693852a2070b398ee123a329e68f0dab5526681", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -561,13 +636,15 @@ "root": { "inputs": { "firefox-nightly": "firefox-nightly", + "flake-utils": "flake-utils_2", "hardware": "hardware", "home-manager": "home-manager", "lanzaboote": "lanzaboote", "neovim-nightly-overlay": "neovim-nightly-overlay", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", - "systems": "systems_3" + "systems": "systems_3", + "zjstatus": "zjstatus" } }, "rust-overlay": { @@ -595,6 +672,27 @@ "type": "github" } }, + "rust-overlay_2": { + "inputs": { + "nixpkgs": [ + "zjstatus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1719109180, + "narHash": "sha256-96dwGCV2yQxDozDATqbsM3YU0ft3Isw3cwVDO/eNCv8=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "5fc5f3a0d7eabf7db86851e6423f9d7fbceaf89d", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -639,6 +737,42 @@ "repo": "default-linux", "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" + } + }, + "zjstatus": { + "inputs": { + "crane": "crane_2", + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_3", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1719650330, + "narHash": "sha256-spoLPg8Ty7LvypwM4JpuWA06B/TUcIzyjs+N1nzGha4=", + "owner": "dj95", + "repo": "zjstatus", + "rev": "f5fd92d8ebd3152b0db4c85c6ff7b638c6f52d14", + "type": "github" + }, + "original": { + "owner": "dj95", + "repo": "zjstatus", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 9ae80a32..f704c7fd 100644 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,10 @@ systems.url = "github:nix-systems/default-linux"; hardware.url = "github:nixos/nixos-hardware"; lanzaboote.url = "github:nix-community/lanzaboote/v0.4.1"; + flake-utils = { + url = "github:numtide/flake-utils"; + inputs.systems.follows = "systems"; + }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; @@ -21,6 +25,8 @@ url = "github:nix-community/flake-firefox-nightly"; inputs.nixpkgs.follows = "nixpkgs"; }; + # Zellij Plugins + zjstatus.url = "github:dj95/zjstatus"; }; outputs = { self, diff --git a/home/extra/cnst.nix b/home/extra/cnst.nix index edaad4ef..b189e77c 100644 --- a/home/extra/cnst.nix +++ b/home/extra/cnst.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + inputs, + ... +}: { imports = [ ./zellij ./firefox @@ -18,6 +22,7 @@ # UTILITY wl-clipboard + inputs.zjstatus.packages.${system}.default xfce.thunar-volman xfce.thunar-archive-plugin gnome.file-roller diff --git a/home/extra/zellij/default.nix b/home/extra/zellij/default.nix index 25e2c09b..df7591df 100644 --- a/home/extra/zellij/default.nix +++ b/home/extra/zellij/default.nix @@ -1,86 +1,103 @@ { - home.shellAliases = { - zj = "zellij"; - }; - programs.zellij = { enable = true; enableZshIntegration = true; - - settings = { - # Make zellij UI more compact - ui = { - pane_frames = { - hide_session_name = true; - }; - }; - default_layout = "compact"; - copy_command = "wl-copy"; - on_force_close = "detach"; - default_shell = "zsh"; - default_mode = "normal"; - - theme = "gruvbox-dark"; - - themes = { - gruvbox-dark = { - fg = [ - 213 - 196 - 161 - ]; - bg = [ - 40 - 40 - 40 - ]; - black = [ - 60 - 56 - 54 - ]; - red = [ - 204 - 36 - 29 - ]; - green = [ - 152 - 151 - 26 - ]; - yellow = [ - 215 - 153 - 33 - ]; - blue = [ - 69 - 133 - 136 - ]; - magenta = [ - 177 - 98 - 134 - ]; - cyan = [ - 104 - 157 - 106 - ]; - white = [ - 251 - 241 - 199 - ]; - orange = [ - 214 - 93 - 14 - ]; - }; - }; - }; }; + home.shellAliases = { + zr = "zellij run --"; + zrf = "zellij run --floating --"; + ze = "zellij edit"; + zef = "zellij edit --floating"; + }; + + xdg.configFile."zellij/config.kdl".text = '' + default_layout "compact" + mouse_mode true + copy_on_select true + copy_command "wl-copy" + simplified_ui false + scrollback_editor "/home/cnst/.nix-profile/bin/nvim" + pane_frames true + on_force_close "detach" + + ui { + pane_frames { + rounded_corners false + } + } + + keybinds { + normal { + bind "Alt m" { + LaunchPlugin "file:~/.config/zellij/plugins/monocle.wasm" { + in_place true + kiosk true + }; + SwitchToMode "Normal" + } + bind "Ctrl f" { + LaunchOrFocusPlugin "file:~/.config/zellij/plugins/monocle.wasm" { + floating true + } + SwitchToMode "Normal" + } + bind "Alt 1" { GoToTab 1;} + bind "Alt 2" { GoToTab 2;} + bind "Alt 3" { GoToTab 3;} + bind "Alt 4" { GoToTab 4;} + } + + shared_except "locked" { + bind "Ctrl y" { + LaunchOrFocusPlugin "file:~/.config/zellij/plugins/room.wasm" { + floating true + ignore_case true + } + } + } + unbind "Ctrl b" "Ctrl h" "Ctrl g" "Alt j" + } + + themes { + gruvbox-dark { + bg "#282828" + fg "#D5C4A1" + black "#3C3836" + red "#CC241D" + green "#98971A" + yellow "#D79921" + blue "#458588" + magenta "#B16286" + cyan "#689D6A" + white "#FBF1C7" + orange "#D65D0E" + } + } + ''; + xdg.configFile."zellij/layouts/gruvbox.kdl".text = '' + layout { + pane split_direction="vertical" { + pane + } + + pane size=1 borderless=true { + plugin location="file:/home/cnst/.nix-profile/bin/zjstatus.wasm" { + format_left "#[fg=#FBF1C7,bold] {session} {mode} {tabs}" + format_right "#[bg=#8A8A8A,fg=#3C3836] #[bg=#8A8A8A,fg=#3C3836,bold]{swap_layout} #[bg=#3C3836,fg=#8A8A8A]" + + mode_locked "#[fg=#B16286,bold] {name} " + mode_normal "#[fg=#98971A,bold] {name} " + mode_resize "#[fg=#D75F00,bold] {name} " + mode_default_to_mode "resize" + + tab_normal "#[bg=#8A8A8A,fg=#3C3836] #[bg=#8A8A8A,fg=#3C3836,bold]{name} {sync_indicator}{fullscreen_indicator}{floating_indicator} #[bg=#3C3836,fg=#8A8A8A]" + tab_active "#[bg=#98971A,fg=#3C3836] #[bg=#98971A,fg=#3C3836,bold]{name} {sync_indicator}{fullscreen_indicator}{floating_indicator} #[bg=#3C3836,fg=#98971A]" + + tab_sync_indicator " " + tab_fullscreen_indicator "□ " + tab_floating_indicator "󰉈 " + } + } + } + ''; } diff --git a/home/extra/zellij/default.nixbak b/home/extra/zellij/default.nixbak new file mode 100644 index 00000000..25e2c09b --- /dev/null +++ b/home/extra/zellij/default.nixbak @@ -0,0 +1,86 @@ +{ + home.shellAliases = { + zj = "zellij"; + }; + + programs.zellij = { + enable = true; + enableZshIntegration = true; + + settings = { + # Make zellij UI more compact + ui = { + pane_frames = { + hide_session_name = true; + }; + }; + default_layout = "compact"; + copy_command = "wl-copy"; + on_force_close = "detach"; + default_shell = "zsh"; + default_mode = "normal"; + + theme = "gruvbox-dark"; + + themes = { + gruvbox-dark = { + fg = [ + 213 + 196 + 161 + ]; + bg = [ + 40 + 40 + 40 + ]; + black = [ + 60 + 56 + 54 + ]; + red = [ + 204 + 36 + 29 + ]; + green = [ + 152 + 151 + 26 + ]; + yellow = [ + 215 + 153 + 33 + ]; + blue = [ + 69 + 133 + 136 + ]; + magenta = [ + 177 + 98 + 134 + ]; + cyan = [ + 104 + 157 + 106 + ]; + white = [ + 251 + 241 + 199 + ]; + orange = [ + 214 + 93 + 14 + ]; + }; + }; + }; + }; +}