feat: multi-machine structure + gruvbox theme + kitty + zsh modules
This commit is contained in:
@@ -20,10 +20,31 @@
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
|
|
||||||
"ayman@archThinkpad" = mkHome {
|
"ayman@archThinkpad" = mkHome {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [ ./home/base.nix ];
|
modules = [
|
||||||
|
./home/base.nix
|
||||||
|
./home/profiles/notebook.nix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"ayman@desktop" = mkHome {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
./home/base.nix
|
||||||
|
./home/profiles/desktop.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"ayman@homelab-01" = mkHome {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
./home/base.nix
|
||||||
|
./home/profiles/server.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,19 @@
|
|||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./modules/theme.nix
|
||||||
|
./modules/zsh.nix
|
||||||
|
./modules/kitty.nix
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
ripgrep
|
ripgrep
|
||||||
fd
|
fd
|
||||||
bat
|
bat
|
||||||
|
eza
|
||||||
|
fzf
|
||||||
|
jq
|
||||||
|
bottom
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
c = config.theme.colors;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
font = {
|
||||||
|
name = "JetBrains Mono";
|
||||||
|
size = 12;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
# Colors
|
||||||
|
background = c.bg;
|
||||||
|
foreground = c.fg;
|
||||||
|
selection_background = c.bg2;
|
||||||
|
selection_foreground = c.fg;
|
||||||
|
cursor = c.fg;
|
||||||
|
cursor_text_color = c.bg;
|
||||||
|
url_color = c.blue_b;
|
||||||
|
|
||||||
|
color0 = c.bg1; color8 = c.bg2;
|
||||||
|
color1 = c.red; color9 = c.red_b;
|
||||||
|
color2 = c.green; color10 = c.green_b;
|
||||||
|
color3 = c.yellow; color11 = c.yellow_b;
|
||||||
|
color4 = c.blue; color12 = c.blue_b;
|
||||||
|
color5 = c.purple; color13 = c.purple_b;
|
||||||
|
color6 = c.aqua; color14 = c.aqua_b;
|
||||||
|
color7 = c.fg4; color15 = c.fg1;
|
||||||
|
|
||||||
|
# Window
|
||||||
|
window_padding_width = 12;
|
||||||
|
background_opacity = "1.0";
|
||||||
|
background_blur = 32;
|
||||||
|
hide_window_decorations = "yes";
|
||||||
|
|
||||||
|
# Cursor
|
||||||
|
cursor_shape = "block";
|
||||||
|
cursor_blink_interval = 1;
|
||||||
|
|
||||||
|
# Scrollback
|
||||||
|
scrollback_lines = 3000;
|
||||||
|
|
||||||
|
# Selection
|
||||||
|
copy_on_select = "yes";
|
||||||
|
strip_trailing_spaces = "smart";
|
||||||
|
|
||||||
|
# Tab bar
|
||||||
|
tab_bar_style = "powerline";
|
||||||
|
tab_bar_align = "left";
|
||||||
|
tab_bar_edge = "top";
|
||||||
|
|
||||||
|
# Shell integration
|
||||||
|
shell_integration = "enabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
keybindings = {
|
||||||
|
"ctrl+shift+n" = "new_window";
|
||||||
|
"ctrl+t" = "new_tab";
|
||||||
|
"ctrl+plus" = "change_font_size all +1.0";
|
||||||
|
"ctrl+minus" = "change_font_size all -1.0";
|
||||||
|
"ctrl+0" = "change_font_size all 0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
options.theme.colors = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.str;
|
||||||
|
description = "Named color palette";
|
||||||
|
default = {
|
||||||
|
# Gruvbox Dark Medium
|
||||||
|
bg = "#282828";
|
||||||
|
bg0_h = "#1d2021";
|
||||||
|
bg0_s = "#32302f";
|
||||||
|
bg1 = "#3c3836";
|
||||||
|
bg2 = "#504945";
|
||||||
|
bg3 = "#665c54";
|
||||||
|
bg4 = "#7c6f64";
|
||||||
|
fg = "#ebdbb2";
|
||||||
|
fg1 = "#ebdbb2";
|
||||||
|
fg2 = "#d5c4a1";
|
||||||
|
fg3 = "#bdae93";
|
||||||
|
fg4 = "#a89984";
|
||||||
|
red = "#cc241d";
|
||||||
|
red_b = "#fb4934";
|
||||||
|
green = "#98971a";
|
||||||
|
green_b = "#b8bb26";
|
||||||
|
yellow = "#d79921";
|
||||||
|
yellow_b = "#fabd2f";
|
||||||
|
blue = "#458588";
|
||||||
|
blue_b = "#83a598";
|
||||||
|
purple = "#b16286";
|
||||||
|
purple_b = "#d3869b";
|
||||||
|
aqua = "#689d6a";
|
||||||
|
aqua_b = "#8ec07c";
|
||||||
|
orange = "#d65d0e";
|
||||||
|
orange_b = "#fe8019";
|
||||||
|
gray = "#928374";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
c = config.theme.colors;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
history = {
|
||||||
|
size = 50000;
|
||||||
|
save = 50000;
|
||||||
|
ignoreDups = true;
|
||||||
|
share = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# new
|
||||||
|
initContent = ''
|
||||||
|
PROMPT="%F{${c.green_b}}%n@%m%f %F{${c.yellow_b}}%~%f %F{${c.fg4}}»%f "
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
ls = "eza --icons";
|
||||||
|
ll = "eza -la --icons";
|
||||||
|
cat = "bat";
|
||||||
|
grep = "rg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
obs-studio
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
powertop
|
||||||
|
acpi
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Minimal — no GUI packages
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
neovim
|
||||||
|
];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user