diff --git a/flake.lock b/flake.lock index 9cc9bcf..64fa0fe 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "base16-schemes": { + "flake": false, + "locked": { + "lastModified": 1680729003, + "narHash": "sha256-M9LHTL24/W4oqgbYRkz0B2qpNrkefTs98pfj3MxIXnU=", + "owner": "tinted-theming", + "repo": "base16-schemes", + "rev": "dc048afa066287a719ddbab62b3e19e4b5110cf0", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-schemes", + "type": "github" + } + }, "devenv": { "inputs": { "flake-compat": "flake-compat", @@ -189,6 +205,25 @@ "type": "github" } }, + "nix-colors": { + "inputs": { + "base16-schemes": "base16-schemes", + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1682108218, + "narHash": "sha256-tMr7BbxualFQlN+XopS8rMMgf2XR9ZfRuwIZtjsWmfI=", + "owner": "misterio77", + "repo": "nix-colors", + "rev": "b92df8f5eb1fa20d8e09810c03c9dc0d94ef2820", + "type": "github" + }, + "original": { + "owner": "misterio77", + "repo": "nix-colors", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1693663421, @@ -205,6 +240,21 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1680397293, + "narHash": "sha256-wBpJ73+tJ8fZSWb4tzNbAVahC4HSo2QG3nICDy4ExBQ=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "b18d328214ca3c627d3cc3f51fd9d1397fdbcd7a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-regression": { "locked": { "lastModified": 1643052045, @@ -286,6 +336,7 @@ "devenv": "devenv", "home-manager": "home-manager", "hyprland": "hyprland", + "nix-colors": "nix-colors", "nixpkgs": "nixpkgs", "nixpkgs-unstable": "nixpkgs-unstable" } diff --git a/flake.nix b/flake.nix index fbaee79..37479c4 100644 --- a/flake.nix +++ b/flake.nix @@ -19,10 +19,10 @@ url = "github:cachix/devenv/main"; inputs.nixpkgs.follows = "nixpkgs"; }; - + nix-colors.url = "github:misterio77/nix-colors"; }; - outputs = inputs @ { self, nixpkgs, home-manager, hyprland, devenv, ... }: + outputs = { self, nixpkgs, home-manager, hyprland, devenv, ... }@inputs: let system = "x86_64-linux"; @@ -40,6 +40,7 @@ nixosConfigurations = ( import ./hosts { inherit (nixpkgs) lib; + specialArgs = { inherit inputs; }; inherit inputs user system home-manager hyprland devenv; } ); diff --git a/hosts/configuration.nix b/hosts/configuration.nix index c5f61ac..b7b1a14 100644 --- a/hosts/configuration.nix +++ b/hosts/configuration.nix @@ -58,7 +58,7 @@ environment = { variables = { - TERMINAL = "kitty"; + TERMINAL = "alacritty"; EDITOR = "nvim"; VISUAL = "nvim"; }; diff --git a/hosts/default.nix b/hosts/default.nix index c4af70f..d82d957 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -20,9 +20,10 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { inherit user devenv; }; + home-manager.extraSpecialArgs = { inherit user devenv inputs; }; home-manager.users.${user} = { imports = [ (import ./home.nix) ] ++ [ (import ./thinkpad/home.nix) ]; + }; } ]; diff --git a/hosts/home.nix b/hosts/home.nix index 5d360d2..4bd46cf 100644 --- a/hosts/home.nix +++ b/hosts/home.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, stable, user, devenv, ... }: +{ config, lib, pkgs, stable, user, devenv, inputs, ... }: { imports = # Home Manager Modules @@ -6,8 +6,12 @@ [ (import ../modules/programs/wofi.nix) ] ++ [ (import ../modules/editors/nvim/home.nix) ] ++ [ (import ../modules/programs/devenv/home.nix) ] ++ + [ (import ../modules/programs/kitty.nix) ] ++ [ (import ../modules/shell/tmux/home.nix) ] ++ [ (import ../modules/editors/lvim/home.nix) ] ++ + [ (import ../modules/themes/home.nix) ] ++ + [ (import ../modules/programs/mako.nix) ] ++ + [ (import ../modules/programs/alacritty.nix) ] ++ [ (import ../modules/shell/zsh/home.nix) ]; @@ -21,6 +25,7 @@ homeDirectory = "/home/${user}"; packages = with pkgs; [ + libnotify jetbrains.datagrip kubernetes-helm argocd diff --git a/modules/desktop/hyprland/default.nix b/modules/desktop/hyprland/default.nix index 7f220a0..9a2342a 100644 --- a/modules/desktop/hyprland/default.nix +++ b/modules/desktop/hyprland/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, system, hyprland, ... }: +{ config, lib, pkgs, system, inputs, ... }: let exec = "exec Hyprland"; in @@ -48,7 +48,7 @@ in programs = { hyprland = { enable = true; - package = hyprland.packages.${pkgs.system}.hyprland; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; }; }; diff --git a/modules/desktop/hyprland/home.nix b/modules/desktop/hyprland/home.nix index 457537f..528defc 100644 --- a/modules/desktop/hyprland/home.nix +++ b/modules/desktop/hyprland/home.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: let hyprlandConf = '' @@ -16,7 +16,7 @@ let border_size=3 gaps_in=5 gaps_out=7 - col.active_border=rgba(33ccffee) rgba(00ff99ee) 45deg + col.active_border=rgba(${config.colorScheme.colors.base05}ee) rgba(${config.colorScheme.colors.base08}ee) 45deg col.inactive_border=0x66333333 layout=dwindle } diff --git a/modules/programs/alacritty.nix b/modules/programs/alacritty.nix new file mode 100644 index 0000000..5818299 --- /dev/null +++ b/modules/programs/alacritty.nix @@ -0,0 +1,57 @@ +{ pkgs, config, ... }: + +{ + programs.alacritty.enable = true; + programs.alacritty.settings = { + colors = with config.colorScheme.colors; { + bright = { + black = "0x${base03}"; + blue = "0x${base0D}"; + cyan = "0x${base0C}"; + green = "0x${base0B}"; + magenta = "0x${base0E}"; + red = "0x${base08}"; + white = "0x${base07}"; + yellow = "0x${base0A}"; + }; + cursor = { + cursor = "0x${base06}"; + text = "0x${base05}"; + }; + normal = { + black = "0x${base00}"; + blue = "0x${base0D}"; + cyan = "0x${base0C}"; + green = "0x${base0B}"; + magenta = "0x${base0E}"; + red = "0x${base08}"; + white = "0x${base05}"; + yellow = "0x${base0A}"; + }; + primary = { + background = "0x${base00}"; + foreground = "0x${base05}"; + }; + }; + font = { + normal = { + family = "MonoLisa"; + style = "Regular"; + }; + bold = { + family = "MonoLisa"; + style = "Bold"; + }; + italic = { + family = "MonoLisa"; + style = "Italic"; + }; + bold_italic = { + family = "MonoLisa"; + style = "Bold Italic"; + }; + size = 14; + #bold_italic = {}; + }; + }; +} diff --git a/modules/programs/devenv/home.nix b/modules/programs/devenv/home.nix index 141df24..0969c8a 100644 --- a/modules/programs/devenv/home.nix +++ b/modules/programs/devenv/home.nix @@ -1,8 +1,8 @@ -{ config, lib, pkgs, user, devenv, ... }: { +{ config, lib, pkgs, user, devenv, inputs, ... }: { home.packages = with pkgs; [ cachix - devenv.packages.${system}.devenv + inputs.devenv.packages.${system}.devenv ]; programs.direnv.enable = true; diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix new file mode 100644 index 0000000..9edc977 --- /dev/null +++ b/modules/programs/kitty.nix @@ -0,0 +1,77 @@ +{ config, lib, pkgs, ... }: + +{ + home = { + packages = with pkgs; [ + kitty + ]; + }; + + home.file = { + ".config/kitty/kitty.conf" = { + text = '' + include ./theme.conf + font_family SauceCodePro Nerd Font + font_size 14.0 + + background_opacity 1.0 + + show_hyperlink_targets yes + + allow_hyperlinks yes + + #term xterm-kitty + term xterm-256color + + confirm_os_window_close 0 + ''; + }; + }; + + home.file = { + ".config/kitty/theme.conf" = { + text = '' + + # Kitty window border colors + active_border_color #${config.colorScheme.colors.base07} + inactive_border_color #${config.colorScheme.colors.base02} + bell_border_color #${config.colorScheme.colors.base0A} + + # URL underline color when hovering with mouse + url_color #${config.colorScheme.colors.base06} + + # Colors for marks (marked text in the terminal) + mark1_foreground #${config.colorScheme.colors.base00} + mark1_background #${config.colorScheme.colors.base07} + mark2_foreground #${config.colorScheme.colors.base00} + mark2_background #${config.colorScheme.colors.base0E} + mark3_foreground #${config.colorScheme.colors.base00} + mark3_background #${config.colorScheme.colors.base0D} + + background #${config.colorScheme.colors.base00} + foreground #${config.colorScheme.colors.base05} + cursor #${config.colorScheme.colors.base06} + cursor_text_color #${config.colorScheme.colors.base00} + color0 #${config.colorScheme.colors.base03} + color1 #${config.colorScheme.colors.base08} + color2 #${config.colorScheme.colors.base0B} + color3 #${config.colorScheme.colors.base0A} + color4 #${config.colorScheme.colors.base0D} + color5 #${config.colorScheme.colors.base0F} + color6 #${config.colorScheme.colors.base0C} + color7 #${config.colorScheme.colors.base03} + color8 #${config.colorScheme.colors.base04} + color9 #${config.colorScheme.colors.base08} + color10 #${config.colorScheme.colors.base0B} + color11 #${config.colorScheme.colors.base0A} + color12 #${config.colorScheme.colors.base0D} + color13 #${config.colorScheme.colors.base0F} + color14 #${config.colorScheme.colors.base0C} + color15 #${config.colorScheme.colors.base04} + selection_foreground #${config.colorScheme.colors.base00} + selection_background #${config.colorScheme.colors.base06} + ''; + }; + }; +} + diff --git a/modules/programs/mako.nix b/modules/programs/mako.nix new file mode 100644 index 0000000..f1bc329 --- /dev/null +++ b/modules/programs/mako.nix @@ -0,0 +1,15 @@ +{ pkgs, config, ... }: + +{ + + services.mako = with config.colorScheme.colors; { + enable = true; + backgroundColor = "#${base01}"; + borderColor = "#${base0E}"; + borderRadius = 5; + borderSize = 2; + textColor = "#${base04}"; + layer = "overlay"; + }; + +} diff --git a/modules/programs/wofi.nix b/modules/programs/wofi.nix index 5a1aa08..0dd4f30 100644 --- a/modules/programs/wofi.nix +++ b/modules/programs/wofi.nix @@ -32,11 +32,11 @@ in hide_scroll=true ''; }; - ".config/wofi/style.css" = with colors.scheme.doom; { + ".config/wofi/style.css" = { text = '' window { margin: 0px; - background-color: #${bg}; + background-color: #${config.colorScheme.colors.base00}; } #input { @@ -45,10 +45,10 @@ in padding: 4px 10px; margin: 4px; border: none; - color: #dfdfdf; + color: #${config.colorScheme.colors.base08}; font-weight: bold; - background-color: #${bg}; - outline: #dfdfdf; + background-color: #${config.colorScheme.colors.base00}; + outline: #fff; } #inner-box { @@ -61,20 +61,24 @@ in padding: 3px; border: none; border-radius: 10px; - border: 3px solid #${text}; + border: 3px solid #${config.colorScheme.colors.base05}; } + #text { + color: #${config.colorScheme.colors.base09}; + } + #text:selected { - color: #282c34; + color: #${config.colorScheme.colors.base08}; background-color: transparent; } #entry:selected { - background-color: #${text}; + background-color: #${config.colorScheme.colors.base05}; } ''; }; - ".config/wofi/power.sh" = with colors.scheme.doom; { + ".config/wofi/power.sh" = { executable = true; text = '' #!/bin/sh diff --git a/modules/shell/tmux/home.nix b/modules/shell/tmux/home.nix index 502adf8..c440289 100644 --- a/modules/shell/tmux/home.nix +++ b/modules/shell/tmux/home.nix @@ -1,4 +1,4 @@ -{ pkgs, config, ... }: +{ pkgs, config, user, ... }: { programs.tmux = { enable = true; @@ -6,12 +6,12 @@ plugins = with pkgs.tmuxPlugins; [ sensible yank - { - plugin = power-theme; - extraConfig = '' - set -g @tmux_power_theme 'sky' - ''; - } + # { + # plugin = power-theme; + # extraConfig = '' + # set -g @tmux_power_theme 'sky' + # ''; + # } resurrect continuum ]; @@ -107,8 +107,118 @@ fzf --reverse --header jump-to-session --preview 'tmux capture-pane -pt {}' |\ xargs tmux switch-client -t" + # THEME + + right_arrow_icon='' + left_arrow_icon='' + upload_speed_icon='' + download_speed_icon='' + session_icon='' + user_icon='' + time_icon='' + date_icon='' + time_format='%T' + date_format='%F' + + # short for Theme-Colour + TC="#${config.colorScheme.colors.base09}" + + G01=#080808 #232 + G02=#121212 #233 + G03=#1c1c1c #234 + #G04=#262626 #235 + G04=#${config.colorScheme.colors.base00} #235 + G05=#303030 #236 + #G06=#3a3a3a #237 + G06=#${config.colorScheme.colors.base02} #237 + G07=#444444 #238 + G08=#4e4e4e #239 + G09=#585858 #240 + G10=#626262 #241 + G11=#6c6c6c #242 + G12=#767676 #243 + + FG="#${config.colorScheme.colors.base03}" + BG="#${config.colorScheme.colors.base00}" + + # Status options + set-option -gq status-interval 1 + set-option -gq status on + + # Basic status bar colors + set-option -gq status-fg "$FG" + set-option -gq status-bg "$BG" + set-option -gq status-attr none + + # tmux-prefix-highlight + set-option -gq @prefix_highlight_fg "$BG" + set-option -gq @prefix_highlight_bg "$FG" + set-option -gq @prefix_highlight_show_copy_mode 'on' + set-option -gq @prefix_highlight_copy_mode_attr "fg=$TC,bg=$BG,bold" + set-option -gq @prefix_highlight_output_prefix "#[fg=$TC]#[bg=$BG]$left_arrow_icon#[bg=$TC]#[fg=$BG]" + set-option -gq @prefix_highlight_output_suffix "#[fg=$TC]#[bg=$BG]$right_arrow_icon" + + #      + # Left side of status bar + set-option -gq status-left-bg "$G04" + set-option -gq status-left-fg "G12" + set-option -gq status-left-length 150 + user=${user} + LS="#[fg=$G04,bg=$TC,bold] $user_icon $user@#h #[fg=$TC,bg=$G06,nobold]$right_arrow_icon#[fg=$TC,bg=$G06] $session_icon #S " + LS="$LS#[fg=$G06,bg=$BG]$right_arrow_icon" + LS="$LS#{prefix_highlight}" + + set-option -gq status-left "$LS" + + # Right side of status bar + set-option -gq status-right-bg "$BG" + set-option -gq status-right-fg "G12" + set-option -gq status-right-length 150 + RS="#[fg=$G06]$left_arrow_icon#[fg=$TC,bg=$G06] $time_icon $time_format #[fg=$TC,bg=$G06]$left_arrow_icon#[fg=$G04,bg=$TC] $date_icon $date_format " + + set-option -gq status-right "$RS" + + # Window status + set-option -gq window-status-format " #I:#W#F " + set-option -gq window-status-current-format "#[fg=$BG,bg=$G06]$right_arrow_icon#[fg=$TC,bold] #I:#W#F #[fg=$G06,bg=$BG,nobold]$right_arrow_icon" + + # Window separator + set-option -gq window-status-separator "" + + # Window status alignment + set-option -gq status-justify centre + + # Current window status + set-option -gq window-status-current-statys "fg=$TC,bg=$BG" + + # Pane border + set-option -gq pane-border-style "fg=$G07,bg=default" + + # Active pane border + set-option -gq pane-active-border-style "fg=$TC,bg=$BG" + + # Pane number indicator + set-option -gq display-panes-colour "$G07" + set-option -gq display-panes-active-colour "$TC" + + # Clock mode + set-option -gq clock-mode-colour "$TC" + set-option -gq clock-mode-style 24 + + # Message + set-option -gq message-style "fg=$TC,bg=$BG" + + # Command message + set-option -gq message-command-style "fg=$TC,bg=$BG" + + # Copy mode highlight + set-option -gq mode-style "bg=$TC,fg=$FG" + + # vim: set ft=tmux tw=0 nowrap: + ''; }; + programs.tmate = { enable = true; }; diff --git a/modules/themes/home.nix b/modules/themes/home.nix new file mode 100644 index 0000000..7dec467 --- /dev/null +++ b/modules/themes/home.nix @@ -0,0 +1,11 @@ +{ pkgs, inputs, ... }: + +{ + imports = [ inputs.nix-colors.homeManagerModules.default ]; + # choose a theme from here https://github.com/tinted-theming/base16-schemes/tree/main + #colorScheme = inputs.nix-colors.colorSchemes.gruvbox-dark-medium; + colorScheme = inputs.nix-colors.colorSchemes.everforest; + + + +}