diff --git a/flake.lock b/flake.lock index 7f8c39a..bca1abf 100644 --- a/flake.lock +++ b/flake.lock @@ -188,11 +188,11 @@ ] }, "locked": { - "lastModified": 1775247674, - "narHash": "sha256-MCaiC3iWarAsmu8KJXgJHb1H8lf+BD9gymvxkbmNVdc=", + "lastModified": 1775360939, + "narHash": "sha256-XUBlSgUFdvTh6+K5LcI5mJu5F5L8scmJDMRiZM484TM=", "owner": "nix-community", "repo": "home-manager", - "rev": "03bdcf84f092956943dcf9ef164481e463512716", + "rev": "2097a5c82bdc099c6135eae4b111b78124604554", "type": "github" }, "original": { @@ -301,11 +301,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1775165818, - "narHash": "sha256-Bkb1ha9bB8IiWIBW2Z6shj2Erqx08VH1I9ljYl8zxGU=", + "lastModified": 1775343634, + "narHash": "sha256-y5X04LWh/RDH7FE3y1xEDD+RP8mkfGGiXXZ9u0hky2g=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "f25473b21b45ab8ded4a0dbba69eb6b6660d568e", + "rev": "3a7bd8fea2ca9711da5523dc185c05ea30ec0f35", "type": "github" }, "original": { @@ -656,11 +656,11 @@ "nixpkgs-nixcord": "nixpkgs-nixcord" }, "locked": { - "lastModified": 1775215862, - "narHash": "sha256-YoFvBMHRE4jCUoAk73bsUOo20j1sQV2NQm4BgQCKqSA=", + "lastModified": 1775318803, + "narHash": "sha256-oas+Aq3lRrasp8N8RA6JF1ATj7Nn4S3NynaR4qlZY3A=", "owner": "kaylorben", "repo": "nixcord", - "rev": "164e25500dcda5261d23242788ece7ab4f0a4619", + "rev": "cad6925837d79126d8557955901c926ce96df2c3", "type": "github" }, "original": { @@ -725,11 +725,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1774802402, - "narHash": "sha256-L1UJ/zxKTyyaGGmytH6OYlgQ0HGSMhvPkvU+iz4Mkb8=", + "lastModified": 1775307257, + "narHash": "sha256-y9hEecHH4ennFwIcw1n480YCGh73DkEmizmQnyXuvgg=", "owner": "nix-community", "repo": "nixvim", - "rev": "cbd8536a05d1aae2593cb5c9ace1010c8c5845cb", + "rev": "2e008bb941f72379d5b935d5bfe70ed8b7c793ff", "type": "github" }, "original": { @@ -784,11 +784,11 @@ ] }, "locked": { - "lastModified": 1775188331, - "narHash": "sha256-/0BoSi0Dg0ON7IW0oscM12WSPBaMSCn36XTt0lHZoy8=", + "lastModified": 1775365543, + "narHash": "sha256-f50qrK0WwZ9z5EdaMGWOTtALgSF7yb7XwuE7LjCuDmw=", "owner": "Mic92", "repo": "sops-nix", - "rev": "8f093d0d2f08f37317778bd94db5951d6cce6c46", + "rev": "a4ee2de76efb759fe8d4868c33dec9937897916f", "type": "github" }, "original": { diff --git a/home/default.nix b/home/default.nix index b58f1e5..e3dc032 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,4 +1,13 @@ -{ config, primaryUser, inputs, self, pkgs, lib, ... }: { +{ + config, + primaryUser, + inputs, + self, + pkgs, + lib, + ... +}: +{ imports = [ ./packages.nix @@ -16,9 +25,11 @@ ./obsidian.nix ./desktop - + ./xdg.nix inputs.sops-nix.homeManagerModules.sops - ] ++ lib.optionals (!pkgs.stdenv.isDarwin) [ ./xdg.nix ]; + ]; + + nixpkgs.config.allowUnfree = true; catppuccin = { enable = false; @@ -100,19 +111,18 @@ sops = { defaultSopsFile = ../secrets/secrets.yaml; defaultSopsFormat = "yaml"; - age.keyFile = if pkgs.stdenv.isDarwin then - "/Users/${primaryUser}/.config/nix/secrets/keys.txt" - else - "/home/${primaryUser}/.config/nix/secrets/keys.txt"; + age.keyFile = + if pkgs.stdenv.isDarwin then + "/Users/${primaryUser}/.config/nix/secrets/keys.txt" + else + "/home/${primaryUser}/.config/nix/secrets/keys.txt"; secrets = { GROQ_API_KEY = { }; OPENWEATHER_API_KEY = { }; ssh_private_key = { - path = if pkgs.stdenv.isDarwin then - "/Users/${primaryUser}/.ssh/ssh" - else - "/home/${primaryUser}/.ssh/ssh"; + path = + if pkgs.stdenv.isDarwin then "/Users/${primaryUser}/.ssh/ssh" else "/home/${primaryUser}/.ssh/ssh"; mode = "0600"; }; }; diff --git a/home/desktop/default.nix b/home/desktop/default.nix index 4272ba6..12a6125 100644 --- a/home/desktop/default.nix +++ b/home/desktop/default.nix @@ -1,23 +1,32 @@ -{ pkgs, inputs, ... }: { - imports = [ inputs.catppuccin.homeModules.catppuccin ] - ++ pkgs.lib.optionals (!pkgs.stdenv.isDarwin) [ - ./hyprland - ./rofi - ./waybar - ./gtk.nix - ./qt.nix - ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ ./sketchybar.nix ]; +{ + pkgs, + inputs, + lib, + ... +}: +{ + imports = [ + inputs.catppuccin.homeModules.catppuccin + ./hyprland + ./rofi + ./waybar + ./gtk.nix + ./qt.nix + ./sketchybar.nix + ]; - _module.args.compositor = - if pkgs.stdenv.isDarwin then "quartz" else "hyprland"; + _module.args.compositor = if pkgs.stdenv.isDarwin then "quartz" else "hyprland"; - home = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { - packages = with pkgs; [ waypaper swww ]; + home = lib.mkIf (!pkgs.stdenv.isDarwin) { + packages = with pkgs; [ + waypaper + awww + ]; file.".config/waypaper/config.ini".source = ./waypaper.ini; }; # TODO: Qutebrowser install - programs = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { + programs = lib.mkIf (!pkgs.stdenv.isDarwin) { mangohud = { enable = true; settings = { diff --git a/home/desktop/gtk.nix b/home/desktop/gtk.nix index 1fcdc58..92f07f5 100644 --- a/home/desktop/gtk.nix +++ b/home/desktop/gtk.nix @@ -4,7 +4,7 @@ let theme_name = "Catppuccin-GTK-Dark"; in { - home = { + home = lib.mkIf (!pkgs.stdenv.isDarwin) { packages = with pkgs; [ adwaita-icon-theme ]; @@ -20,7 +20,7 @@ in ".config/gtk-4.0/assets".source = "${theme}/share/themes/${theme_name}/gtk-4.0/assets"; }; }; - gtk = { + gtk = lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; font = { name = "FiraCode Nerd Font Propo"; @@ -41,7 +41,7 @@ in }; gtk3.extraConfig.gtk-application-prefer-dark-theme = 1; }; - dconf = { + dconf = lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; settings = { "org/gnome/desktop/interface" = { diff --git a/home/desktop/hyprland/default.nix b/home/desktop/hyprland/default.nix index 222edbd..a427864 100644 --- a/home/desktop/hyprland/default.nix +++ b/home/desktop/hyprland/default.nix @@ -196,7 +196,7 @@ in # ]; exec-once = [ - "swww-daemon & disown" + "awww-daemon & disown" "waybar &" ]; diff --git a/home/desktop/qt.nix b/home/desktop/qt.nix index 1ef26f5..c74d202 100644 --- a/home/desktop/qt.nix +++ b/home/desktop/qt.nix @@ -1,12 +1,15 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: { - qt = { + qt = lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; style.name = "kvantum"; platformTheme.name = "kvantum"; }; - home.packages = with pkgs; [ - kdePackages.qt6ct - kdePackages.qtstyleplugin-kvantum - ]; + home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) ( + with pkgs; + [ + kdePackages.qt6ct + kdePackages.qtstyleplugin-kvantum + ] + ); } diff --git a/home/desktop/sketchybar.nix b/home/desktop/sketchybar.nix index 90d3ae4..f632114 100644 --- a/home/desktop/sketchybar.nix +++ b/home/desktop/sketchybar.nix @@ -1,5 +1,6 @@ -{ pkgs, ... }: { - programs.sketchybar = { +{ pkgs, lib, ... }: +{ + programs.sketchybar = lib.mkIf pkgs.stdenv.isDarwin { enable = true; configType = "lua"; sbarLuaPackage = pkgs.sbarlua; diff --git a/home/desktop/waybar/configs/mako.sh b/home/desktop/waybar/configs/mako.sh new file mode 100644 index 0000000..6e53428 --- /dev/null +++ b/home/desktop/waybar/configs/mako.sh @@ -0,0 +1,6 @@ +#!/bin/sh +if makoctl mode | grep -q do-not-disturb; then + echo '{"text":"󰂛","class":"disabled"}' +else + echo '{"text":"󰂚","class":"enabled"}' +fi diff --git a/home/desktop/waybar/waybar/common.nix b/home/desktop/waybar/waybar/common.nix new file mode 100644 index 0000000..fb5a64f --- /dev/null +++ b/home/desktop/waybar/waybar/common.nix @@ -0,0 +1,181 @@ +{ + widgets = { + "group/media" = { + orientation = "horizontal"; + + modules = [ + "mpris" + "custom/cava" + "wireplumber" + ]; + }; + + mpris = { + format = "{player_icon}"; + format-paused = "{status_icon}"; + max-length = 100; + player-icons = { + default = "||"; + mpv = "||"; + }; + status-icons = { + paused = "▶"; + }; + }; + + "custom/cava" = { + exec = "sh ~/.config/waybar/cava.sh"; + format = "{} ♪"; + on-click = "hyprctl dispatch focuswindow class:spotify"; + }; + + wireplumber = { + format = "{volume}%"; + format-muted = ""; + max-volume = 110; + scroll-step = 0.2; + }; + + "group/hardware" = { + orientation = "horizontal"; + modules = [ + "cpu" + "network" + "memory" + "disk" + "temperature" + ]; + }; + + network = { + # Wifi + tooltip = true; + format-wifi = "{icon} "; + format-icons = [ + "󰤟" + "󰤢" + "󰤥" + ]; + rotate = 0; + + # Ethernet + format-ethernet = "⇵{bandwidthTotalBits}"; + tooltip-format = "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}\nCurrent󰈀 : {bandwidthTotalBits}\nUp 󰶣: {bandwidthUpBits}\nDown 󰶡: {bandwidthDownBits}"; + format-linked = "󰈀 {ifname} (No IP)"; + format-disconnected = " "; + tooltip-format-disconnected = "Disconnected"; + interval = 2; + }; + + memory = { + interval = 1; + #rotate = 270; + format = "{icon} {percentage}%"; + format-icons = [ + "󰝦" + "󰪞" + "󰪟" + "󰪠" + "󰪡" + "󰪢" + "󰪣" + "󰪤" + "󰪥" + ]; + max-length = 10; + }; + + cpu = { + interval = 1; + format = "{icon} {usage}%"; + #rotate = 270; + format-icons = [ + "󰝦" + "󰪞" + "󰪟" + "󰪠" + "󰪡" + "󰪢" + "󰪣" + "󰪤" + "󰪥" + ]; + }; + + temperature = { + format = " {temperatureC}°C"; + thermal-zone = 0; + hwmon-path = "/sys/class/thermal/thermal_zone1/temp"; + critical-threshold = 80; + }; + + disk = { + format = " {percentage_free}%"; + tooltip = true; + tooltip-format = "{free} / {total} ({percentage_free})"; + }; + + clock = { + format = "{:%a %b %d, %I:%M %p}"; + rotate = 0; + on-click = " "; + tooltip-format = "{calendar}"; + calendar = { + mode = "month"; + mode-mon-col = 3; + on-scroll = 1; + on-click-right = "mode"; + format = { + months = "{}"; + weekdays = "{}"; + today = "{}"; + }; + }; + actions = { + on-click-right = "mode"; + on-click-forward = "tz_up"; + on-click-backward = "tz_down"; + on-scroll-up = "shift_up"; + on-scroll-down = "shift_down"; + }; + }; + + "custom/nixicon" = { + format = " "; + on-click = "rofi -show drun -theme $HOME/.config/rofi/custom.rasi"; + tooltip = false; + }; + + "custom/weather" = { + format = "{}"; + return-type = "json"; + exec = '' + curl -s -X GET "https://api.openweathermap.org/data/2.5/weather?lat=52.281311&lon=10.527029&appid=$(cat $OPENWEATHER_API_KEY)&units=metric&lang=en" | jq -c '{text: "\(.name) \(.main.temp)C°"}' + ''; + interval = 120; + on-click = '' + data=$(curl -s -X GET "https://api.openweathermap.org/data/2.5/weather?lat=52.281311&lon=10.527029&appid=$(cat $OPENWEATHER_API_KEY)&units=metric&lang=en") + city=$(echo "$data" | jq -r '.name') + temp=$(echo "$data" | jq -r '.main.temp') + feels=$(echo "$data" | jq -r '.main.feels_like') + humidity=$(echo "$data" | jq -r '.main.humidity') + wind=$(echo "$data" | jq -r '.wind.speed') + clouds=$(echo "$data" | jq -r '.clouds.all') + sunrise=$(echo "$data" | jq -r '.sys.sunrise | strftime("%H:%M")') + sunset=$(echo "$data" | jq -r '.sys.sunset | strftime("%H:%M")') + notify-send "$city" "Temperature: $temp °C\nFeels Like: $feels °C\nHumidity: $humidity%\nWind: $wind m/s\nClouds: $clouds%\nSunrise at: $sunrise\nSunset at: $sunset" -u normal --icon="$HOME/Pictures/Avatar/avatar_weather_no_bg.png" + ''; + }; + + "custom/wallpaper" = { + format = "【{} 】"; + exec = "basename $(swww query | grep -oP 'image: \\K.*')"; + interval = 5; + on-click = "waypaper"; + tooltip = true; + tooltip-format = "{}"; + max-length = 30; + }; + }; + +} diff --git a/home/desktop/waybar/waybar/configs/cava.sh b/home/desktop/waybar/waybar/configs/cava.sh new file mode 100644 index 0000000..a12dac4 --- /dev/null +++ b/home/desktop/waybar/waybar/configs/cava.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Not my own work. Credit to original author + +#----- Optimized bars animation without much CPU usage increase -------- +bar="▁▂▃▄▅▆▇█" +dict="s/;//g" + +# Calculate the length of the bar outside the loop +bar_length=${#bar} + +# Create dictionary to replace char with bar +for ((i = 0; i < bar_length; i++)); do + dict+=";s/$i/${bar:$i:1}/g" +done + +# Create cava config +config_file="/tmp/bar_cava_config" +cat >"$config_file" < + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/home/desktop/waybar/waybar/configs/style.css b/home/desktop/waybar/waybar/configs/style.css new file mode 100644 index 0000000..a8d969e --- /dev/null +++ b/home/desktop/waybar/waybar/configs/style.css @@ -0,0 +1,191 @@ +@import "catppuccin.css"; + +* { + border: none; + font-family: "FiraCode Nerd Font"; + font-size: 15px; + min-height: 10px; +} + +window#waybar { + background: @crust; +} + +window#waybar.hidden { + opacity: 0.2; +} +󠀰 +/* - Genera rules for visible modules -- */ +#media, +#clock, +#cpu, +#memory, +#disk, +#temperature, +#network, +#custom-wallpaper, +#media, +#custom-weather { + color: @crust; + margin-top: 6px; + margin-bottom: 6px; + padding-left: 10px; + padding-right: 10px; + transition: none; +} + +/* Separation to the left */ +#custom-nixicon, +#cpu { + margin-left: 5px; + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; +} + +/* Separation to the rigth */ +#clock, +#temperature { + margin-right: 20px; + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; +} + +/* -- Specific styles -- */ + +#custom-nixicon { + background-image: url("nix-snowflake.svg"); + background-size: contain; + background-repeat: no-repeat; + background-position: center; + min-height: 24px; + min-width: 24px; + + padding: 0px; + padding-right: 15px; + padding-left: 10px; + margin-top: 6px; + margin-bottom: 6px; + margin-left: 15px; +} + +/* Hardware Group */ +#clock { + background: @yellow; +} + +#cpu { + background: @blue; +} + +#memory { + background: @red; +} + +#disk { + background: @peach; +} + +#temperature { + background: @sky; +} + +#network { + background: @lavender; + padding-right: 13px; +} + +/* Workspace */ +#workspaces { + border-radius: 10px; + margin: 6px 5px; + padding: 0px 6px; +} + +#workspaces button { + color: @text; + background: transparent; + padding: 4px 4px; + transition: color 0.3s ease, text-shadow 0.3s ease, transform 0.3s ease; + border: none; +} + +#workspaces button.occupied { + color: @red; +} + +#workspaces button.active { + color: @green; + text-shadow: 0 0 4px @green; +} + +#workspaces button:hover { + color: @teal; + border: none; +} + +#workspaces button.active:hover {} + + + +/* Media Group */ +#media { + background: @overlay2; + border-radius: 10px; + color: @crust; + margin-left: 20px; +} + +#custom-cava { + color: @sky; +} + +#wireplumber, #custom-cava, #mpris { + margin-left: 10px; + margin-right: 5px; +} + +#wireplumber { + margin-right: 5px; +} + + +/* Weather */ +#custom-weather { + background: @sky; + color: @crust; + border-radius: 10px; + margin-right: 20px; +} + +#custom-mako { + color: @red; + margin-top: 6px; + margin-bottom: 6px; + padding-left: 6px; + padding-right: 6px; +} + +#custom-mako.enabled { + color: @red; +} + +#custom-mako.disabled { + color: @overlay1; +} + +/* SwayNC */ +#custom-notification { + font-family: "NotoSansMono Nerd Font"; + background: @green; + border-radius: 10px; + padding-left: 10px; + padding-right: 5px; +} + +/* Wallpaper */ +#custom-wallpaper { + background: @red; + color: @mantle; + border-radius: 10px; + margin-left: 5px; +} diff --git a/home/desktop/waybar/waybar/configs/style.min.css b/home/desktop/waybar/waybar/configs/style.min.css new file mode 100644 index 0000000..dc25e86 --- /dev/null +++ b/home/desktop/waybar/waybar/configs/style.min.css @@ -0,0 +1 @@ +*{border:none;min-height:10px;font-family:FiraCode Nerd Font;font-size:15px}window#waybar{background:@crust}window#waybar.hidden{opacity:.2}󠀰 #media,#clock,#cpu,#memory,#disk,#temperature,#network,#custom-wallpaper,#media,#custom-weather{color:@crust;margin-top:6px;margin-bottom:6px;padding-left:10px;padding-right:10px;transition:none}#custom-nixicon,#cpu{border-top-left-radius:10px;border-bottom-left-radius:10px;margin-left:5px}#clock,#temperature{border-top-right-radius:10px;border-bottom-right-radius:10px;margin-right:20px}#custom-nixicon{background-image:url(nix-snowflake.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;min-width:24px;min-height:24px;margin-top:6px;margin-bottom:6px;margin-left:15px;padding:0 15px 0 10px}#clock{background:@yellow}#cpu{background:@blue}#memory{background:@red}#disk{background:@peach}#temperature{background:@sky}#network{background:@lavender;padding-right:13px}#workspaces{border-radius:10px;margin:6px 5px;padding:0 6px}#workspaces button{color:@text;background:0 0;border:none;padding:4px;transition:color .3s,text-shadow .3s,transform .3s}#workspaces button.occupied{color:@red}#workspaces button.active{color:@green;text-shadow:0 0 4px @green}#workspaces button:hover{color:@teal;border:none}#media{background:@overlay2;color:@crust;border-radius:10px;margin-left:20px}#custom-cava{color:@green}#wireplumber,#custom-cava,#mpris{margin-left:10px;margin-right:5px}#wireplumber{margin-right:5px}#custom-weather{background:@sky;color:@crust;border-radius:10px;margin-right:20px}#custom-notification{background:@green;border-radius:10px;padding-left:10px;padding-right:5px;font-family:NotoSansMono Nerd Font}#custom-wallpaper{background:@red;color:@mantle;border-radius:10px;margin-left:5px} diff --git a/home/desktop/waybar/waybar/default.nix b/home/desktop/waybar/waybar/default.nix new file mode 100644 index 0000000..abb663d --- /dev/null +++ b/home/desktop/waybar/waybar/default.nix @@ -0,0 +1,20 @@ +{ + pkgs, + compositor ? "hyprland", + ... +}: +{ + + programs.waybar = { + enable = true; + package = pkgs.waybar; + } + // (import ./dual.nix { inherit compositor; }); + home = { + packages = with pkgs; [ cava ]; + file.".config/waybar" = { + source = ./configs; + recursive = true; + }; + }; +} diff --git a/home/desktop/waybar/waybar/dual.nix b/home/desktop/waybar/waybar/dual.nix new file mode 100644 index 0000000..a0ccabb --- /dev/null +++ b/home/desktop/waybar/waybar/dual.nix @@ -0,0 +1,51 @@ +{ + compositor ? "hyprland", +}: +let + common = import ./common.nix; + wm = if compositor == "hyprland" then import ./hyprland-wm.nix else import ./niri-wm.nix; + workspaceModule = if compositor == "hyprland" then "hyprland/workspaces" else "niri/workspaces"; + notificationModule = if compositor == "hyprland" then "custom/mako" else "custom/swaync"; +in +{ + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ "DP-1" ]; + modules-left = [ + "custom/nixicon" + "clock" + ]; + modules-center = [ + workspaceModule + notificationModule + ]; + modules-right = [ + "group/hardware" + ]; + } + // common.widgets + // wm.widgets; + + secondBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ "HDMI-A-2" ]; + modules-left = [ + "group/media" + "custom/wallpaper" + ]; + modules-center = [ + workspaceModule + ]; + modules-right = [ "custom/weather" ]; + } + // common.widgets + // wm.widgets; + }; + +} diff --git a/home/desktop/waybar/waybar/hyprland-wm.nix b/home/desktop/waybar/waybar/hyprland-wm.nix new file mode 100644 index 0000000..5e5a3f2 --- /dev/null +++ b/home/desktop/waybar/waybar/hyprland-wm.nix @@ -0,0 +1,19 @@ +{ + widgets = { + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + default = " "; + active = " "; + }; + }; + "custom/mako" = { + tooltip = false; + format = "{}"; + return-type = "json"; + exec = "sh ~/.config/waybar/mako.sh"; + on-click = "makoctl mode -t do-not-disturb"; + interval = 1; + }; + }; +} diff --git a/home/desktop/waybar/waybar/niri-wm.nix b/home/desktop/waybar/waybar/niri-wm.nix new file mode 100644 index 0000000..ac653aa --- /dev/null +++ b/home/desktop/waybar/waybar/niri-wm.nix @@ -0,0 +1,31 @@ +{ + widgets = { + "niri/workspaces" = { + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; + }; + "custom/swaync" = { + tooltip = false; + format = "{icon}"; + format-icons = { + notification = ""; + none = " "; + dnd-notification = ""; + dnd-none = " "; + inhibited-notification = ""; + inhibited-none = " "; + dnd-inhibited-notification = ""; + dnd-inhibited-none = " "; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "swaync-client -t -sw"; + on-click-right = "swaync-client -d -sw"; + escape = true; + }; + }; +} diff --git a/home/fastfetch.jsonc b/home/fastfetch.jsonc index 052e1d9..02f7a01 100644 --- a/home/fastfetch.jsonc +++ b/home/fastfetch.jsonc @@ -4,9 +4,9 @@ "type": "kitty-icat", "source": "~/Pictures/Avatar/avatar_no_bg.png", // "height": 15, - "width": 36, + "width": 32, "padding": { - "top": 0, + "top": 2, "left": 0 } }, @@ -23,22 +23,22 @@ }, { "type": "cpu", - "key": "│ ├", + "key": "├ ", "keyColor": "green" }, { "type": "gpu", - "key": "│ ├󰍛", + "key": "├󰍛 ", "keyColor": "green" }, { "type": "disk", - "key": "│ ├", + "key": "├ ", "keyColor": "green" }, { "type": "memory", - "key": "└ └󰍛", + "key": "└󰍛 ", "keyColor": "green" }, { @@ -52,53 +52,54 @@ }, { "type": "os", - "key": " OS", + "key": "❄ OS", "keyColor": "yellow" }, { "type": "kernel", - "key": "│ ├", + "key": "├ ", "keyColor": "yellow" }, { "type": "bios", - "key": "│ ├", + "key": "├ ", "keyColor": "yellow" }, { "type": "packages", - "key": "│ ├󰏖", + "key": "├󰏖 ", "keyColor": "yellow" }, { "type": "shell", - "key": "└ └", + "key": "└ ", "keyColor": "yellow" }, "break", { - "type": "de", - "key": " DE", + "type": "wm", + "key": " WM", + "format": "{pretty-name}", "keyColor": "blue" }, { "type": "lm", - "key": "│ ├", + "key": "├ ", + "keyColor": "blue" + }, + { + "type": "font", + "key": "├󰉼 ", "keyColor": "blue" }, { - "type": "wm", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "wmtheme", - "key": "│ ├󰉼", + "type": "icons", + "key": "├󰉼 ", "keyColor": "blue" }, { "type": "terminal", - "key": "└ └", + "key": "└ ", "keyColor": "blue" }, { @@ -112,53 +113,26 @@ }, { "type": "command", - "key": " OS Age ", + "key": "├ OS Age ", "keyColor": "magenta", "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days" }, { "type": "uptime", - "key": " Uptime ", + "key": "├ Uptime ", "keyColor": "magenta" }, { "type": "datetime", - "key": " DateTime ", - "keyColor": "magenta" + "key": "├ Date Time ", + "keyColor": "magenta", + "format": "{11}.{4}.{1} {14}:{17}:{20}", }, { "type": "custom", "format": "\u001b[90m└────────────────────────────────────────────────────┘" }, "break", - { - "type": "custom", - "format": "\u001b[90m┌─────────────────────Networking─────────────────────┐" - }, - { - "type": "publicip", - "key": " Public ", - "keyColor": "magenta" - }, - { - "type": "localip", - "key": " Local ", - "keyColor": "magenta" - }, - { - "type": "dns", - "key": " DNS ", - "keyColor": "magenta" - }, - { - "type": "netio", - "key": " Net I/O ", - "keyColor": "magenta" - }, - { - "type": "custom", - "format": "\u001b[90m└────────────────────────────────────────────────────┘" - }, { "type": "colors", "paddingLeft": 2, diff --git a/home/neovim/default.nix b/home/neovim/default.nix index 2ae855d..9fe2f9f 100644 --- a/home/neovim/default.nix +++ b/home/neovim/default.nix @@ -15,13 +15,13 @@ ./avante.nix ./openscad.nix ./molten.nix - ./live-server.nix ./which-key.nix ]; home.packages = with pkgs; [ nil biome + gdb ]; programs.nixvim = { diff --git a/home/neovim/lint.nix b/home/neovim/lint.nix index ac178c6..c7d6642 100644 --- a/home/neovim/lint.nix +++ b/home/neovim/lint.nix @@ -35,7 +35,6 @@ lua54Packages.luacheck statix ruff - nodePackages.eslint clippy ]; }; diff --git a/home/neovim/live-server.nix b/home/neovim/live-server.nix index 20a13f1..c4df6ee 100644 --- a/home/neovim/live-server.nix +++ b/home/neovim/live-server.nix @@ -1,14 +1,17 @@ -{ pkgs, ... }: { +# TODO: Remove; nodePackages is unmaintained inside nixpkgs +{ pkgs, ... }: +{ # Live Server: Auto-reload browser for web development # Uses browser-sync for live reload functionality programs.nixvim = { - keymaps = [{ - mode = "n"; - key = "ls"; - action = - "terminal browser-sync start --server --files '*.html, *.css, *.js' --no-notify"; - options.desc = "Start live server (browser-sync)"; - }]; + keymaps = [ + { + mode = "n"; + key = "ls"; + action = "terminal browser-sync start --server --files '*.html, *.css, *.js' --no-notify"; + options.desc = "Start live server (browser-sync)"; + } + ]; extraPackages = with pkgs; [ nodePackages.browser-sync ]; }; diff --git a/home/neovim/openscad.nix b/home/neovim/openscad.nix index b4934ab..06d207d 100644 --- a/home/neovim/openscad.nix +++ b/home/neovim/openscad.nix @@ -1,4 +1,5 @@ -{ pkgs, ... }: { +{ pkgs, ... }: +{ # OpenSCAD: 3D modeling language support with syntax highlighting, # cheatsheet, snippets, offline manual and fuzzy help programs.nixvim = { @@ -8,13 +9,12 @@ settings = { fuzzy_finder = "fzf"; auto_open = true; - cheatsheet_toggle_key = "os"; + cheatsheet_toggle_key = ""; default_mappings = true; - exec_openscad_trig_key = "oo"; - help_manual_trig_key = "om"; - help_trig_key = "oh"; - top_toggle = "oc"; - + exec_openscad_trig_key = ""; + help_manual_trig_key = ""; + help_trig_key = ""; + top_toggle = ""; }; }; @@ -25,4 +25,5 @@ fzf ]; }; + } diff --git a/home/xdg.nix b/home/xdg.nix index e6ddaf7..97c171c 100644 --- a/home/xdg.nix +++ b/home/xdg.nix @@ -1,4 +1,9 @@ -{ pkgs, config, ... }: +{ + pkgs, + config, + lib, + ... +}: let browser = [ "floorp.desktop" ]; @@ -44,7 +49,7 @@ let }; in { - xdg = { + xdg = lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; cacheHome = config.home.homeDirectory + "/.local/cache"; diff --git a/nixos/default.nix b/nixos/default.nix index 3422670..3a59d81 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -1,4 +1,10 @@ -{ pkgs, inputs, primaryUser, ... }: { +{ + pkgs, + inputs, + primaryUser, + ... +}: +{ imports = [ ./fonts.nix ./sops.nix @@ -34,12 +40,19 @@ # nix config nix = { settings = { - experimental-features = [ "nix-command" "flakes" ]; + experimental-features = [ + "nix-command" + "flakes" + ]; max-jobs = "auto"; cores = 0; - substituters = - [ "https://hyprland.cachix.org" "https://nix-community.cachix.org" ]; + substituters = [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; @@ -61,14 +74,15 @@ info.enable = false; # Skip info pages }; - nixpkgs.config = { allowUnfree = true; }; + nixpkgs.config = { + allowUnfree = true; + }; programs = { fish.enable = true; hyprland = { enable = true; - package = - inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; }; steam.enable = true; dconf.enable = true; @@ -94,6 +108,11 @@ shell = pkgs.fish; isNormalUser = true; openssh.authorizedKeys.keyFiles = [ ../secrets/ssh-key ]; - extraGroups = [ "wheel" "video" "audio" "libvirtd" ]; + extraGroups = [ + "wheel" + "video" + "audio" + "libvirtd" + ]; }; }