diff --git a/home/assets/evergarden-telescope.jpg b/home/assets/evergarden-telescope.jpg new file mode 100644 index 0000000..3f12938 Binary files /dev/null and b/home/assets/evergarden-telescope.jpg differ diff --git a/home/base.nix b/home/base.nix index 5b6bb7c..52c8723 100644 --- a/home/base.nix +++ b/home/base.nix @@ -16,6 +16,7 @@ }; programs.bash = { + enable = true; shellAliases = { "rebuild" = "sudo nixos-rebuild switch --update-input nixpkgs --update-input unstable --no-write-lock-file --refresh --flake git+https://github.com/adrlau/nix-dotfiles.git --upgrade"; "nixedit" = "vim /etc/nixos/nix-dotfiles/."; @@ -38,7 +39,7 @@ "tree" = "eza -T"; "neofetch" = "fastfetch"; }; - historyControl = ["ignoreboth" "erasedups"]; + historyControl = ["ignoredups" "ignorespace" "erasedups"]; historyIgnore = [ "ls" "cd" "exit" "cd .." ".." "la"]; }; diff --git a/home/colors.nix b/home/colors.nix index 7c3caea..3e7276d 100644 --- a/home/colors.nix +++ b/home/colors.nix @@ -1,52 +1,87 @@ -{ pkgs, config, nix-colors, ... }: { +{ pkgs, config, nix-colors, ... }: + +let + nix-colors-lib = nix-colors.lib.contrib { inherit pkgs; }; + + background = "010C09"; + foreground = "FFFFFF"; + offWhite = "F0FFF8"; + teal = "60C89A"; + red = "E64553"; + blue = "58B5E0"; + green = "79E05B"; + purple = "6B5BDC"; + magenta = "80D1A0"; + cyan = "5FE2C5"; + yellow = "F5D24D"; + orange = "FF8800"; + pink = "FF4EC9"; + grey = "888B8E"; + lightGrey = "F3FCF7"; + darkTeal = "154E44"; + lighterTeal = "2C7A6A"; + lightTeal = "B0E8DA"; + +in{ imports = [ nix-colors.homeManagerModules.default ]; + + # colorScheme = nix-colors-lib.colorSchemeFromPicture { + # path = ./assets/evergarden-telescope.jpg; + # variant = "dark"; + # }; colorScheme = { - slug = "cyberpunk-apathy-adjusted"; - name = "Cyberpunk Apathy Adjusted"; + slug = "cyberpunk-apathy"; + name = "Cyberpunk Apathy"; author = "Adrian G L (based on Apathy by Jannik Siebert)"; palette = { - base00 = "031A16"; # Background (kept original) - base01 = "2A6D62"; # Lighter Background (brighter) - base02 = "3D9F87"; # Selection Background (brighter) - base03 = "68D6A0"; # Comments, Invisibles, Line Highlighting (brighter) - base04 = "99E3D6"; # Dark Foreground (brighter) - base05 = "D1F5E3"; # Default Foreground, Caret, Delimiters, Operators (brighter) - base06 = "E0FCF8"; # Light Foreground (brighter) - base07 = "FFFFFF"; # Light Background (brighter) - base08 = "D066C2"; # Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted (brighter teal) - base09 = "6FBCDE"; # Integers, Boolean, Constants, XML Attributes, Markup Link Url (brighter blue) - base0A = "7E6BCC"; # Classes, Markup Bold, Search Text Background (brighter purple) - base0B = "6ACB9A"; # Strings, Inherited Class, Markup Code, Diff Inserted (brighter magenta) - base0C = "D26D6E"; # Support, Regular Expressions, Escape Characters, Markup Quotes (slightly adjusted red) - base0D = "E0C964"; # Functions, Methods, Attribute IDs, Headings (brighter yellow) - base0E = "8FCB5F"; # Keywords, Storage, Selector, Markup Italic, Diff Changed (brighter green) - base0F = "6FC8B8"; # Deprecated, Opening/Closing Embedded Language Tags (brighter cyan) + # Base16 color values with context-specific usage comments + base00 = background; # Default background + base01 = darkTeal; # Lighter background (used for status bars) + base02 = lighterTeal; # Selection background + base03 = teal; # Comments, secondary content, line highlighting + base04 = lightTeal; # Darker foreground (used for status bars) + base05 = foreground; # Default text and foreground + base06 = lightGrey; # Lighter foreground (used for inactive text) + base07 = offWhite; # Lightest background (used for highlights) + base08 = teal; # Variables, constants, markup link text + base09 = blue; # Integers, booleans, constants, and XML attributes + base0A = magenta; # Classes, headings, keywords + base0B = cyan; # Strings, literals, escape sequences + base0C = green; # Support and error colors + base0D = cyan; # Functions, methods, function names + base0E = red; # Keywords, storage, selectors + base0F = yellow; # Deprecated or obsolete code }; }; + programs.foot.settings.colors = { - alpha = "0.95"; # Slightly more transparent for a cyberpunk feel + alpha = "0.85"; + #set based on https://github.com/tinted-theming/base16-foot/blob/main/colors/base16-apathy.ini and https://github.com/tinted-theming/base16-schemes/blob/main/apathy.yaml + foreground = "${config.colorScheme.palette.base05}"; background = "${config.colorScheme.palette.base00}"; - regular0 = "${config.colorScheme.palette.base00}"; # Black - regular1 = "${config.colorScheme.palette.base08}"; # Red (now brighter teal) - regular2 = "${config.colorScheme.palette.base0B}"; # Green - regular3 = "${config.colorScheme.palette.base0A}"; # Yellow - regular4 = "${config.colorScheme.palette.base09}"; # Blue - regular5 = "${config.colorScheme.palette.base0E}"; # Magenta - regular6 = "${config.colorScheme.palette.base0C}"; # Cyan (now slightly adjusted red) - regular7 = "${config.colorScheme.palette.base05}"; # White - bright0 = "${config.colorScheme.palette.base03}"; # Bright Black - bright1 = "${config.colorScheme.palette.base08}"; # Bright Red (now brighter teal) - bright2 = "${config.colorScheme.palette.base0B}"; # Bright Green - bright3 = "${config.colorScheme.palette.base0A}"; # Bright Yellow - bright4 = "${config.colorScheme.palette.base09}"; # Bright Blue - bright5 = "${config.colorScheme.palette.base0E}"; # Bright Magenta - bright6 = "${config.colorScheme.palette.base0C}"; # Bright Cyan (now adjusted red) - bright7 = "${config.colorScheme.palette.base07}"; # Bright White - selection-foreground = "${config.colorScheme.palette.base00}"; # Dark background color for selected text - selection-background = "${config.colorScheme.palette.base0A}"; # Selection color + + regular0 = "${config.colorScheme.palette.base00}"; + regular1 = "${config.colorScheme.palette.base08}"; + regular2 = "${config.colorScheme.palette.base0B}"; + regular3 = "${config.colorScheme.palette.base0A}"; + regular4 = "${config.colorScheme.palette.base0D}"; + regular5 = "${config.colorScheme.palette.base0E}"; + regular6 = "${config.colorScheme.palette.base0C}"; + regular7 = "${config.colorScheme.palette.base05}"; + + bright0 = "${config.colorScheme.palette.base03}"; + bright1 = "${config.colorScheme.palette.base08}"; + bright2 = "${config.colorScheme.palette.base0B}"; + bright3 = "${config.colorScheme.palette.base0A}"; + bright4 = "${config.colorScheme.palette.base0D}"; + bright5 = "${config.colorScheme.palette.base0E}"; + bright6 = "${config.colorScheme.palette.base0C}"; + bright7 = "${config.colorScheme.palette.base07}"; + selection-foreground = "${config.colorScheme.palette.base00}"; + selection-background = "${config.colorScheme.palette.base0A}"; }; } diff --git a/home/full.nix b/home/full.nix index 2d52bd5..1292885 100644 --- a/home/full.nix +++ b/home/full.nix @@ -12,6 +12,11 @@ firefox gimp dconf + feh + ripgrep + eza + bottom + killall ]; } diff --git a/home/sway.nix b/home/sway.nix index 9f118f0..b1b523c 100644 --- a/home/sway.nix +++ b/home/sway.nix @@ -1,14 +1,18 @@ { pkgs, config, lib, ... }: +let + palette = config.colorScheme.palette; +in { imports = [ - #./fuzzle.nix - #./wofi.nix - ./foot.nix - ./fonts.nix - ./kanshi.nix + #./fuzzle.nix + #./wofi.nix + #./waybar.nix + ./foot.nix + ./fonts.nix + ./kanshi.nix ]; - + home.packages = with pkgs; [ wl-clipboard libsForQt5.qt5ct @@ -20,7 +24,7 @@ ## possible other options #kitty #alacrity - + #disply and background wdisplays @@ -33,16 +37,16 @@ networkmanagerapplet networkmanager libsForQt5.networkmanager-qt - mako + mako #lockscreen and related - wleave + wleave swayidle swaylock-effects #swaylock-fancy #migth change to this default may look prettier. #ligth and sound - brightnessctl + brightnessctl pavucontrol #sway automation @@ -54,9 +58,9 @@ #wofi-emoji bemoji fuzzel - - #screenshots + + #screenshots grim slurp @@ -99,18 +103,21 @@ _JAVA_AWT_WM_NONREPARENTING = 1; # gtk applications on wayland - # export GDK_BACKEND=wayland + #GTK_BACKEND="wayland"; }; - -wayland.windowManager.sway = let + +wayland.windowManager.sway = let cfg = config.wayland.windowManager.sway; in { wrapperFeatures.gtk = true; + systemd.enable = true; enable = true; config = rec { + modifier = "Mod4"; - terminal = "footclient"; + + terminal = "footclient"; menu = "fuzzel"; bars = [{ fonts.size = 16.0; @@ -134,6 +141,10 @@ in { "${cfg.config.down}" = "resize grow height 10 px or 10 ppt"; "${cfg.config.up}" = "resize shrink height 10 px or 10 ppt"; "${cfg.config.right}" = "resize grow width 10 px or 10 ppt"; + "Left" = "resize shrink width 10 px or 10 ppt"; + "Down" = "resize grow height 10 px or 10 ppt"; + "Up" = "resize shrink height 10 px or 10 ppt"; + "Right" = "resize grow width 10 px or 10 ppt"; }; keybindings = { "${cfg.config.modifier}+Return" = "exec ${cfg.config.terminal}"; @@ -219,7 +230,7 @@ in { "${cfg.config.modifier}+Shift+c" = "exec code"; "${cfg.config.modifier}+f11" = "exec grim -g \"$(slurp)\" ~/Pictures/screenshots/\"screenshot-`date +%F-%T`\".png"; "${cfg.config.modifier}+Print" = "exec grim -g \"$(slurp)\" ~/Pictures/screenshots/\"screenshot-`date +%F-%T`\".png"; - "Mod1+tab" = "workspace back_and_forth"; + "${cfg.config.modifier}+tab" = "workspace back_and_forth"; }; }; @@ -228,23 +239,18 @@ in { input type:keyboard xkb_capslock disabled input type:keyboard xkb_numlock enabled xwayland enable - - assign [class="autostart1"] workspace 1 - assign [class="autostart2"] workspace 2 - assign [class="autostart3"] workspace 3 - assign [class="autostart4"] workspace 4 - - smart_borders no_gaps + + smart_borders no_gaps smart_gaps on gaps inner 5 default_border pixel 1 default_floating_border pixel 2 titlebar_border_thickness 1 - client.focused #80a0ff #303030 #c6c6c6 #80a0ff #80a0ff - client.focused_inactive #80a0ff #303030 #c6c6c6 #80a0ff #80a0ff - client.unfocused #80a0ff #080808 #c6c6c6 #80a0ff #303030 - client.urgent #80a0ff #80a0ff #080808 #80a0ff + client.focused ${palette.base0D} ${palette.base00} ${palette.base05} ${palette.base0D} ${palette.base0D} + client.focused_inactive ${palette.base0D} ${palette.base00} ${palette.base05} ${palette.base0D} ${palette.base0D} + client.unfocused ${palette.base0D} ${palette.base03} ${palette.base05} ${palette.base0D} ${palette.base00} + client.urgent ${palette.base0D} ${palette.base0D} ${palette.base03} ${palette.base0D} for_window [title="(?:Open|Save) (?:File|Folder|As)"] floating enable for_window [title="(?:Open|Save) (?:File|Folder|As)"] resize set 1920 1080 @@ -260,12 +266,6 @@ in { for_window [app_id="dolphin"] floating enable for_window [app_id="file-manager"] floating enable - #client.focused $accent $accent #000000 #00ffcc $accent - #client.focused_inactive #000000 #000000 #ff9900 #000000 #000000 - #client.unfocused #000000 #000000 #00ffcc #000000 #000000 - #client.urgent #ff0000 #ff0000 #00ffcc #ff0000 #ff0000 - #client.placeholder #000000 #000000 #00ffcc #000000 #000000 - #client.background #000000 ''; }; } diff --git a/home/waybar.nix b/home/waybar.nix new file mode 100644 index 0000000..78b1185 --- /dev/null +++ b/home/waybar.nix @@ -0,0 +1,354 @@ +{ pkgs, config, nix-colors, ... }: + +let + palette = config.colorScheme.palette; +in{ + imports = [ + ]; + + + + programs.waybar = { + + enable = true; + + + + style = '' +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; +} + +window#waybar { + background-color: #${palette.base00}50; + border-bottom: 3px solid #${palette.base03}50; + color: ${palette.base05}; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #${palette.base07}; +} +*/ + +window#waybar.termite { + background-color: #${palette.base03}; +} + +window#waybar.chromium { + background-color: #${palette.base00}; + border: none; +} + +button { + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +button:hover { + background: inherit; + box-shadow: inset 0 -3px #${palette.base05}; +} + +/* you can set a style on hover for any module like this */ +#pulseaudio:hover { + background-color: #${palette.base0A}; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #${palette.base05}; +} + +#workspaces button:hover { + background: #${palette.base00}20; +} + +#workspaces button.focused { + background-color: #${palette.base03}; + box-shadow: inset 0 -3px #${palette.base05}; +} + +#workspaces button.urgent { + background-color: #${palette.base08}; +} + +#mode { + background-color: #${palette.base03}; + box-shadow: inset 0 -3px #${palette.base05}; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#power-profiles-daemon, +#mpd { + padding: 0 10px; + color: #${palette.base05}; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + background-color: #${palette.base03}; +} + +#battery { + background-color: #${palette.base05}; + color: #${palette.base00}; +} + +#battery.charging, #battery.plugged { + color: #${palette.base05}; + background-color: #${palette.base0B}; +} + +@keyframes blink { + to { + background-color: #${palette.base05}; + color: #${palette.base00}; + } +} + +/* Using steps() instead of linear as a timing function to limit cpu usage */ +#battery.critical:not(.charging) { + background-color: #${palette.base08}; + color: #${palette.base05}; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#power-profiles-daemon { + padding-right: 15px; +} + +#power-profiles-daemon.performance { + background-color: #${palette.base08}; + color: #${palette.base05}; +} + +#power-profiles-daemon.balanced { + background-color: #${palette.base0D}; + color: #${palette.base05}; +} + +#power-profiles-daemon.power-saver { + background-color: #${palette.base0B}; + color: ${palette.base00}; +} + +label:focus { + background-color: #${palette.base00}; +} + +#cpu { + background-color: #${palette.base0B}; + color: ${palette.base00}; +} + +#memory { + background-color: #${palette.base0E}; +} + +#disk { + background-color: #${palette.base09}; +} + +#backlight { + background-color: #${palette.base0C}; +} + +#network { + background-color: #${palette.base0D}; +} + +#network.disconnected { + background-color: #${palette.base08}; +} + +#pulseaudio { + background-color: #${palette.base0A}; + color: #${palette.base00}; +} + +#pulseaudio.muted { + background-color: #${palette.base0C}; + color: #${palette.base03}; +} + +#wireplumber { + background-color: #${palette.base07}; + color: #${palette.base00}; +} + +#wireplumber.muted { + background-color: #${palette.base08}; +} + +#custom-media { + background-color: #${palette.base0B}; + color: #${palette.base03}; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #${palette.base0B}; +} + +#custom-media.custom-vlc { + background-color: #${palette.base09}; +} + +#temperature { + background-color: #${palette.base0A}; +} + +#temperature.critical { + background-color: #${palette.base08}; +} + +#tray { + background-color: #${palette.base0D}; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #${palette.base08}; +} + +#idle_inhibitor { + background-color: #${palette.base00}; +} + +#idle_inhibitor.activated { + background-color: #${palette.base07}; + color: #${palette.base00}; +} + +#mpd { + background-color: #${palette.base0B}; + color: #${palette.base03}; +} + +#mpd.disconnected { + background-color: #${palette.base08}; +} + +#mpd.stopped { + background-color: #${palette.base0C}; +} + +#mpd.paused { + background-color: #${palette.base0B}; +} + +#language { + background: #${palette.base0C}; + color: #${palette.base0E}; + padding: 0 5px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state { + background: #${palette.base0B}; + color: #${palette.base00}; + padding: 0 0px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + background: #${palette.base00}20; +} + +#scratchpad { + background: #${palette.base00}20; +} + +#scratchpad.empty { + background-color: transparent; +} + +#privacy { + padding: 0; +} + +#privacy-item { + padding: 0 5px; + color: #${palette.base05}; +} + +#privacy-item.screenshare { + background-color: #${palette.base09}; +} + +#privacy-item.audio-in { + background-color: #${palette.base0B}; +} + +#privacy-item.audio-out { + background-color: #${palette.base0D}; +} + + ''; + + }; + + + + +} +