weather stuff
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -2,4 +2,9 @@ hosts/nas/*.conf
|
||||
hosts/nas/*.users
|
||||
result
|
||||
*.raw
|
||||
.codegpt
|
||||
.codegpt
|
||||
.direnv
|
||||
shell.nix
|
||||
.vscode
|
||||
**/*/*.py
|
||||
.envrc
|
||||
34
flake.lock
generated
34
flake.lock
generated
@@ -296,6 +296,24 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"dxvk_2_git": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1752147070,
|
||||
"narHash": "sha256-FsjTB7yalDZ/qvMh2iFk3i4sRnKVS0lzT30aqBnFvLQ=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "e940893bdc00c3f76529bd05df4616d90ddb2444",
|
||||
"revCount": 7209,
|
||||
"submodules": true,
|
||||
"type": "git",
|
||||
"url": "https://github.com/doitsujin/dxvk"
|
||||
},
|
||||
"original": {
|
||||
"submodules": true,
|
||||
"type": "git",
|
||||
"url": "https://github.com/doitsujin/dxvk"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -1571,6 +1589,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pe_parse_git": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1732739339,
|
||||
"narHash": "sha256-DMwgFvEbsAf3hm7BdfN168qlFkDcoMcdIK7FMV/QGUQ=",
|
||||
"owner": "trailofbits",
|
||||
"repo": "pe-parse",
|
||||
"rev": "31ac5966503689d5693cd9fb520bd525a8710e17",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "trailofbits",
|
||||
"repo": "pe-parse",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pi4-disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -48,6 +49,8 @@ let
|
||||
udisks2
|
||||
unzip
|
||||
winetricks
|
||||
|
||||
inputs.desktop-lsfg.packages."x86_64-linux".default
|
||||
];
|
||||
in
|
||||
{
|
||||
@@ -116,6 +119,7 @@ in
|
||||
# Virtualisation configuration
|
||||
virtualisation = {
|
||||
libvirtd.enable = lib.mkDefault true;
|
||||
podman.enable = true;
|
||||
waydroid.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ in
|
||||
bottles
|
||||
unstable.compose2nix
|
||||
discord
|
||||
distrobox
|
||||
heroic
|
||||
stable.vmware-horizon-client
|
||||
jq
|
||||
|
||||
@@ -19,6 +19,9 @@ let
|
||||
};
|
||||
in
|
||||
{
|
||||
primaryDisplay = displayLeft;
|
||||
networkInterface = "wlp9s0";
|
||||
|
||||
wallpaper = [
|
||||
"${displayLeft.input}, /run/wallpaper.jpg"
|
||||
"${displayRight.input}, /run/wallpaper.jpg"
|
||||
@@ -61,6 +64,7 @@ in
|
||||
"wireplumber#sink"
|
||||
"wireplumber#source"
|
||||
"bluetooth"
|
||||
"network"
|
||||
"idle_inhibitor"
|
||||
"clock"
|
||||
"custom/weather"
|
||||
|
||||
@@ -79,7 +79,7 @@ in
|
||||
ratbagd.enable = lib.mkDefault true;
|
||||
|
||||
keyd = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
keyboards = {
|
||||
default = {
|
||||
ids = [ "*" ];
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
let
|
||||
mosquittoPort = 1883;
|
||||
zigbee2mqttPort = 8080;
|
||||
# "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||
|
||||
ha-bambulab = pkgs.stdenv.mkDerivation {
|
||||
pname = "ha-bambulab";
|
||||
version = "v2.1.5"; # Update with correct version
|
||||
|
||||
@@ -1,13 +1,23 @@
|
||||
let
|
||||
theme = import ../../modules/desktop-environments/hyprland/theme.nix;
|
||||
|
||||
# Displays
|
||||
display = {
|
||||
input = "eDP-1";
|
||||
resolution = "3456x2234";
|
||||
refreshRate = "60.00000";
|
||||
};
|
||||
in
|
||||
{
|
||||
primaryDisplay = display;
|
||||
networkInterface = "wlan0";
|
||||
|
||||
wallpaper = [
|
||||
"eDP-1, /run/wallpaper.jpg"
|
||||
"${display.input}, /run/wallpaper.jpg"
|
||||
];
|
||||
|
||||
monitor = [
|
||||
"eDP-1,3456x2234@60.00000,0x0,1.25,bitdepth,10,cm,hdr,sdrbrightness,1.2,sdrsaturation,0.98"
|
||||
"${display.input},${display.resolution}@${display.refreshRate},0x0,1.25,bitdepth,10,cm,hdr,sdrbrightness,1.2,sdrsaturation,0.98"
|
||||
];
|
||||
|
||||
# monitorv2 = {
|
||||
@@ -19,9 +29,9 @@ in
|
||||
# };
|
||||
|
||||
workspace = [
|
||||
"name:firefox, monitor:eDP-1, default:false, special, class:(.*firefox.*)"
|
||||
"name:discord, monitor:eDP-1, default:true, special, title:(.*vesktop.*), title:(.*Apple Music.*)"
|
||||
"name:steam, monitor:eDP-1, default:false, special, class:(.*[Ss]team.*)"
|
||||
"name:firefox, monitor:${display.input}, default:false, special, class:(.*firefox.*)"
|
||||
"name:discord, monitor:${display.input}, default:true, special, title:(.*vesktop.*), title:(.*Apple Music.*)"
|
||||
"name:steam, monitor:${display.input}, default:false, special, class:(.*[Ss]team.*)"
|
||||
];
|
||||
|
||||
windowRule = [
|
||||
|
||||
@@ -16,7 +16,7 @@ in
|
||||
./services.nix
|
||||
./sops.nix
|
||||
../../modules/desktop-environments/hyprland
|
||||
# ./hass.nix
|
||||
./hass.nix
|
||||
];
|
||||
|
||||
# Enable nix flakes and nix-command tools
|
||||
|
||||
@@ -210,6 +210,9 @@ in
|
||||
"float, class:(.*FileRoller.*)"
|
||||
"float, class:(.*wlogout.*)"
|
||||
"idleinhibit stayfocused, title:(.*mpv.*)"
|
||||
|
||||
"float, class:(.*nm-connection-editor.*)"
|
||||
"move onscreen cursor 0% 0%, class:(.*nm-connection-editor.*)"
|
||||
|
||||
"float, title:(Media viewer)"
|
||||
"float, class:(it.mijorus.smile),title:(Smile)"
|
||||
|
||||
@@ -151,30 +151,45 @@ in
|
||||
"bluetooth" = {
|
||||
on-click = "overskride";
|
||||
tooltip = true;
|
||||
format = "{format-off}";
|
||||
format-disabled = "";
|
||||
format-off = "";
|
||||
format-on = "";
|
||||
format-connected = "";
|
||||
format = "{icon}";
|
||||
tooltip-format = "{status}";
|
||||
tooltip-format-disabled = "{status}";
|
||||
tooltip-format-off = "{status}";
|
||||
tooltip-format-on = "{status}";
|
||||
tooltip-format-connected = "{status}";
|
||||
tooltip-format-enumerate-connected = { };
|
||||
format-icons = {
|
||||
disabled = "";
|
||||
off = "";
|
||||
on = "";
|
||||
connected = "";
|
||||
};
|
||||
};
|
||||
|
||||
network = {
|
||||
interface = "wlan0";
|
||||
format = "{ifname}";
|
||||
format-wifi = ""; # "{essid} ({signalStrength}%) ";
|
||||
format-ethernet = ""; # "{ipaddr}/{cidr} ";
|
||||
format-disconnected = "" ; # An empty format will hide the module.
|
||||
interface = hyprlandSettings.networkInterface;
|
||||
on-click = "nm-connection-editor";
|
||||
format = "{icon}";
|
||||
tooltip-format = "{ifname} via {gwaddr} ";
|
||||
tooltip-format-wifi = "{essid} ({signalStrength}%) ";
|
||||
tooltip-format-wifi = ''
|
||||
{essid} ({signalStrength}%) {icon}
|
||||
{bandwidthDownBits} {bandwidthUpBits}
|
||||
'';
|
||||
tooltip-format-ethernet = "{ifname} ";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
max-length = 50;
|
||||
format-icons = {
|
||||
wifi = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
ethernet = "";
|
||||
linked = "";
|
||||
disconnected = "";
|
||||
};
|
||||
};
|
||||
|
||||
idle_inhibitor = {
|
||||
@@ -245,6 +260,7 @@ in
|
||||
interval = 30;
|
||||
exec = "waybar-weather";
|
||||
return-type = "json";
|
||||
markup = "pango";
|
||||
};
|
||||
} // hyprlandSettings.waybar.extraModules or { };
|
||||
};
|
||||
@@ -253,6 +269,16 @@ in
|
||||
# window.eDP-1 * { font-size: 10px; }
|
||||
|
||||
style = ''
|
||||
.blink_me {
|
||||
animation: blinker 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes blinker {
|
||||
50% {
|
||||
color: ${settings.theme.nord.aurora.nord11};
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
font-family:
|
||||
Jetbrains Mono Nerd Font,
|
||||
@@ -321,6 +347,11 @@ in
|
||||
margin-right: ${hyprlandSettings.waybar.moduleStyle.window.margin-right or "4rem"};
|
||||
}
|
||||
|
||||
/* make window module transparent when no windows present */
|
||||
#window.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#custom-weather {
|
||||
color: ${settings.theme.nord.frost.nord10};
|
||||
background-color: ${settings.theme.nord.polarNight.nord0};
|
||||
@@ -367,6 +398,10 @@ in
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#network:hover {
|
||||
background: ${settings.theme.nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
color: ${settings.theme.nord.frost.nord9};
|
||||
background-color: ${settings.theme.nord.polarNight.nord0};
|
||||
@@ -387,6 +422,14 @@ in
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#wireplumber.source.muted {
|
||||
animation-name: blinker;
|
||||
animation-duration: 2s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
#wireplumber.source:hover {
|
||||
background: ${settings.theme.nord.polarNight.nord3};
|
||||
}
|
||||
@@ -399,6 +442,13 @@ in
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#wireplumber.sink.muted {
|
||||
animation-name: blinker;
|
||||
animation-duration: 5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
#wireplumber.sink:hover {
|
||||
background: ${settings.theme.nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
@@ -5,8 +5,11 @@ let
|
||||
#! nix-shell -i python3 --pure
|
||||
#! nix-shell -p python3 python3Packages.requests
|
||||
|
||||
"""get waybar weather"""
|
||||
import os
|
||||
import json
|
||||
from datetime import datetime
|
||||
import shutil
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import requests
|
||||
|
||||
@@ -61,58 +64,43 @@ let
|
||||
"395": "HeavySnowShowers",
|
||||
}
|
||||
|
||||
WEATHER_SYMBOL_EMOJI = {
|
||||
"Unknown": "✨",
|
||||
"Cloudy": "☁️",
|
||||
"Fog": "🌫",
|
||||
"HeavyRain": "🌧",
|
||||
"HeavyShowers": "🌧",
|
||||
"HeavySnow": "❄️",
|
||||
"HeavySnowShowers": "❄️",
|
||||
"LightRain": "🌦",
|
||||
"LightShowers": "🌦",
|
||||
"LightSleet": "🌧",
|
||||
"LightSleetShowers": "🌧",
|
||||
"LightSnow": "🌨",
|
||||
"LightSnowShowers": "🌨",
|
||||
"PartlyCloudy": "⛅️",
|
||||
"Sunny": "☀️",
|
||||
"ThunderyHeavyRain": "🌩",
|
||||
"ThunderyShowers": "⛈",
|
||||
"ThunderySnowShowers": "⛈",
|
||||
"VeryCloudy": "☁️",
|
||||
}
|
||||
|
||||
WEATHER_SYMBOL = {
|
||||
"Unknown": "✨",
|
||||
"Cloudy": "☁️",
|
||||
"Fog": "🌫",
|
||||
"HeavyRain": "🌧",
|
||||
"HeavyShowers": "🌧",
|
||||
"HeavySnow": "❄️",
|
||||
"HeavySnowShowers": "❄️",
|
||||
"LightRain": "🌦",
|
||||
"LightShowers": "🌦",
|
||||
"LightSleet": "🌧",
|
||||
"LightSleetShowers": "🌧",
|
||||
"LightSnow": "🌨",
|
||||
"LightSnowShowers": "🌨",
|
||||
"PartlyCloudy": "⛅️",
|
||||
"Sunny": "☀️",
|
||||
"ThunderyHeavyRain": "🌩",
|
||||
"ThunderyShowers": "⛈",
|
||||
"ThunderySnowShowers": "⛈",
|
||||
"VeryCloudy": "☁️",
|
||||
"Unknown": "",
|
||||
"Cloudy": "",
|
||||
"Fog": "",
|
||||
"HeavyRain": "",
|
||||
"HeavyShowers": "",
|
||||
"HeavySnow": "",
|
||||
"HeavySnowShowers": "",
|
||||
"LightRain": "",
|
||||
"LightShowers": "",
|
||||
"LightSleet": "",
|
||||
"LightSleetShowers": "",
|
||||
"LightSnow": "",
|
||||
"LightSnowShowers": "",
|
||||
"PartlyCloudy": "",
|
||||
"Sunny": "",
|
||||
"ThunderyHeavyRain": "",
|
||||
"ThunderyShowers": "",
|
||||
"ThunderySnowShowers": "",
|
||||
"VeryCloudy": "",
|
||||
}
|
||||
|
||||
WEATHER_CODES = {key: WEATHER_SYMBOL[value] for key, value in WWO_CODE.items()}
|
||||
|
||||
WIND_DIRECTION = [
|
||||
"↓", "↙", "←", "↖", "↑", "↗", "→", "↘",
|
||||
]
|
||||
WIND_DIRECTION = {
|
||||
"S": "↓",
|
||||
"SW": "↙",
|
||||
"W": "←",
|
||||
"NW": "↖",
|
||||
"N": "↑",
|
||||
"NE": "↗",
|
||||
"E": "→",
|
||||
"SE": "↘",
|
||||
}
|
||||
|
||||
MOON_PHASES = (
|
||||
"🌑", "🌒", "🌓", "🌔", "🌕", "🌖", "🌗", "🌘"
|
||||
"", "", "", "", "", "", "", ""
|
||||
)
|
||||
|
||||
WEATHER_SYMBOL_WI_DAY = {
|
||||
@@ -129,7 +117,7 @@ let
|
||||
"LightSleetShowers": "",
|
||||
"LightSnow": "",
|
||||
"LightSnowShowers": "",
|
||||
"PartlyCloudy": "",
|
||||
"PartlyCloudy": "",
|
||||
"Sunny": "",
|
||||
"ThunderyHeavyRain": "",
|
||||
"ThunderyShowers": "",
|
||||
@@ -153,8 +141,8 @@ let
|
||||
"LightSleetShowers": "",
|
||||
"LightSnow": "",
|
||||
"LightSnowShowers": "",
|
||||
"PartlyCloudy": "",
|
||||
"Sunny": "",
|
||||
"PartlyCloudy": "",
|
||||
"Sunny": "",
|
||||
"ThunderyHeavyRain": "",
|
||||
"ThunderyShowers": "",
|
||||
"ThunderySnowShowers": "",
|
||||
@@ -163,21 +151,6 @@ let
|
||||
|
||||
WEATHER_CODES_WI_NIGHT = {key: WEATHER_SYMBOL_WI_NIGHT[value] for key, value in WWO_CODE.items()}
|
||||
|
||||
WIND_DIRECTION_WI = [
|
||||
"", "", "", "", "", "", "", "",
|
||||
]
|
||||
|
||||
WIND_SCALE_WI = [
|
||||
"", "", "", "", "", "", "", "", "", "", "", "", "",
|
||||
]
|
||||
|
||||
MOON_PHASES_WI = (
|
||||
"", "", "", "", "", "", "",
|
||||
"", "", "", "", "", "", "",
|
||||
"", "", "", "", "", "", "",
|
||||
"", "", "", "", "", "", "",
|
||||
)
|
||||
|
||||
WEATHER_SYMBOL_WEGO = {
|
||||
"Unknown": [
|
||||
" .-. ",
|
||||
@@ -186,134 +159,137 @@ let
|
||||
" `-’ ",
|
||||
" • "],
|
||||
"Sunny": [
|
||||
"\033[38;5;226m \\ / \033[0m",
|
||||
"\033[38;5;226m .-. \033[0m",
|
||||
"\033[38;5;226m ― ( ) ― \033[0m",
|
||||
"\033[38;5;226m `-’ \033[0m",
|
||||
"\033[38;5;226m / \\ \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> \\ / </span>',
|
||||
'<span foreground=\"#FFFF00\"> .-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ― ( ) ― </span>',
|
||||
'<span foreground=\"#FFFF00\"> `-’ </span>',
|
||||
'<span foreground=\"#FFFF00\"> / \\ </span>'],
|
||||
"PartlyCloudy": [
|
||||
"\033[38;5;226m \\ /\033[0m ",
|
||||
"\033[38;5;226m _ /\"\"\033[38;5;250m.-. \033[0m",
|
||||
"\033[38;5;226m \\_\033[38;5;250m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;250m(___(__) \033[0m",
|
||||
" "],
|
||||
'<span foreground=\"#FFFF00\"> \\ / </span>',
|
||||
'<span foreground=\"#FFFF00\"> _ /\'\'</span>"<span foreground=\"#BBBBBB\">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> \\_</span>"<span foreground=\"#BBBBBB\">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#BBBBBB\">(___(__) </span>',
|
||||
' '
|
||||
],
|
||||
"Cloudy": [
|
||||
" ",
|
||||
"\033[38;5;250m .--. \033[0m",
|
||||
"\033[38;5;250m .-( ). \033[0m",
|
||||
"\033[38;5;250m (___.__)__) \033[0m",
|
||||
" "],
|
||||
' ',
|
||||
'<span foreground=\"#BBBBBB\"> .--. </span>',
|
||||
'<span foreground=\"#BBBBBB\"> .-( ). </span>',
|
||||
'<span foreground=\"#BBBBBB\"> (___.__)__) </span>',
|
||||
' '],
|
||||
"VeryCloudy": [
|
||||
" ",
|
||||
"\033[38;5;240;1m .--. \033[0m",
|
||||
"\033[38;5;240;1m .-( ). \033[0m",
|
||||
"\033[38;5;240;1m (___.__)__) \033[0m",
|
||||
" "],
|
||||
' ',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> .--. </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> .-( ). </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> (___.__)__) </span>',
|
||||
' '],
|
||||
"LightShowers": [
|
||||
"\033[38;5;226m _`/\"\"\033[38;5;250m.-. \033[0m",
|
||||
"\033[38;5;226m ,\\_\033[38;5;250m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;250m(___(__) \033[0m",
|
||||
"\033[38;5;111m ‘ ‘ ‘ ‘ \033[0m",
|
||||
"\033[38;5;111m ‘ ‘ ‘ ‘ \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> _`/\'\'</span>"<span foreground=\"#BBBBBB\">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ,\\_</span>"<span foreground=\"#BBBBBB\">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#BBBBBB\">(___(__) </span>',
|
||||
'<span foreground=\"#87afff\";"> ‘ ‘ ‘ ‘ </span>',
|
||||
'<span foreground=\"#87afff\";"> ‘ ‘ ‘ ‘ </span>'],
|
||||
"HeavyShowers": [
|
||||
"\033[38;5;226m _`/\"\"\033[38;5;240;1m.-. \033[0m",
|
||||
"\033[38;5;226m ,\\_\033[38;5;240;1m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;240;1m(___(__) \033[0m",
|
||||
"\033[38;5;21;1m ‚‘‚‘‚‘‚‘ \033[0m",
|
||||
"\033[38;5;21;1m ‚’‚’‚’‚’ \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> _`/\'\'</span>"<span foreground=\"#585858\"; font-weight: bold;">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ,\\_</span>"<span foreground=\"#585858\"; font-weight: bold;">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#585858\"; font-weight: bold;">(___(__) </span>',
|
||||
'<span foreground=\"#0000ff\"; font-weight: bold;"> ‚‘‚‘‚‘‚‘ </span>',
|
||||
'<span foreground=\"#0000ff\"; font-weight: bold;"> ‚’‚’‚’‚’ </span>'],
|
||||
"LightSnowShowers": [
|
||||
"\033[38;5;226m _`/\"\"\033[38;5;250m.-. \033[0m",
|
||||
"\033[38;5;226m ,\\_\033[38;5;250m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;250m(___(__) \033[0m",
|
||||
"\033[38;5;255m * * * \033[0m",
|
||||
"\033[38;5;255m * * * \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> _`/\'\'</span>"<span foreground=\"#BBBBBB\">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ,\\_</span>"<span foreground=\"#BBBBBB\">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#BBBBBB\">(___(__) </span>',
|
||||
'<span foreground=\"#eeeeee\";"> * * * </span>',
|
||||
'<span foreground=\"#eeeeee\";"> * * * </span>'],
|
||||
"HeavySnowShowers": [
|
||||
"\033[38;5;226m _`/\"\"\033[38;5;240;1m.-. \033[0m",
|
||||
"\033[38;5;226m ,\\_\033[38;5;240;1m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;240;1m(___(__) \033[0m",
|
||||
"\033[38;5;255;1m * * * * \033[0m",
|
||||
"\033[38;5;255;1m * * * * \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> _`/\'\'</span>"<span foreground=\"#585858\"; font-weight: bold;">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ,\\_</span>"<span foreground=\"#585858\"; font-weight: bold;">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#585858\"; font-weight: bold;">(___(__) </span>',
|
||||
'<span foreground=\"#eeeeee\"; font-weight: bold;"> * * * * </span>',
|
||||
'<span foreground=\"#eeeeee\"; font-weight: bold;"> * * * * </span>'],
|
||||
"LightSleetShowers": [
|
||||
"\033[38;5;226m _`/\"\"\033[38;5;250m.-. \033[0m",
|
||||
"\033[38;5;226m ,\\_\033[38;5;250m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;250m(___(__) \033[0m",
|
||||
"\033[38;5;111m ‘ \033[38;5;255m*\033[38;5;111m ‘ \033[38;5;255m* \033[0m",
|
||||
"\033[38;5;255m *\033[38;5;111m ‘ \033[38;5;255m*\033[38;5;111m ‘ \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> _`/\'\'</span>"<span foreground=\"#BBBBBB\">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ,\\_</span>"<span foreground=\"#BBBBBB\">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#BBBBBB\">(___(__) </span>',
|
||||
'<span foreground=\"#87afff\";"> ‘ </span>"<span foreground=\"#eeeeee\";">*</span>"<span foreground=\"#87afff\";"> ‘ </span>"<span foreground=\"#eeeeee\";">* </span>',
|
||||
'<span foreground=\"#eeeeee\";"> *</span>"<span foreground=\"#87afff\";"> ‘ </span>"<span foreground=\"#eeeeee\";">*</span>"<span foreground=\"#87afff\";"> ‘ </span>'],
|
||||
"ThunderyShowers": [
|
||||
"\033[38;5;226m _`/\"\"\033[38;5;250m.-. \033[0m",
|
||||
"\033[38;5;226m ,\\_\033[38;5;250m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;250m(___(__) \033[0m",
|
||||
"\033[38;5;228;5m ⚡\033[38;5;111;25m‘ ‘\033[38;5;228;5m⚡\033[38;5;111;25m‘ ‘ \033[0m",
|
||||
"\033[38;5;111m ‘ ‘ ‘ ‘ \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> _`/\'\'</span>"<span foreground=\"#BBBBBB\">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ,\\_</span>"<span foreground=\"#BBBBBB\">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#BBBBBB\">(___(__) </span>',
|
||||
'<span foreground=\"#ffff87\";"> ⚡\\</span>"<span foreground=\"#87afff\";">‘ ‘</span>"<span foreground=\"#ffff87\";">⚡\\</span>"<span foreground=\"#87afff\";">‘ ‘ </span>',
|
||||
'<span foreground=\"#87afff\";"> ‘ ‘ ‘ ‘ </span>'],
|
||||
"ThunderyHeavyRain": [
|
||||
"\033[38;5;240;1m .-. \033[0m",
|
||||
"\033[38;5;240;1m ( ). \033[0m",
|
||||
"\033[38;5;240;1m (___(__) \033[0m",
|
||||
"\033[38;5;21;1m ‚‘\033[38;5;228;5m⚡\033[38;5;21;25m‘‚\033[38;5;228;5m⚡\033[38;5;21;25m‚‘ \033[0m",
|
||||
"\033[38;5;21;1m ‚’‚’\033[38;5;228;5m⚡\033[38;5;21;25m’‚’ \033[0m"],
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> .-. </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> ( ). </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> (___(__) </span>',
|
||||
'<span foreground=\"#0000ff\"; font-weight: bold;"> ‚‘</span>"<span foreground=\"#ffff87\";">⚡\\</span>"<span foreground=\"#0000ff\";">‘‚</span>"<span foreground=\"#ffff87\";">⚡\\</span>"<span foreground=\"#0000ff\";">‚‘ </span>',
|
||||
'<span foreground=\"#0000ff\"; font-weight: bold;"> ‚’‚’</span>"<span foreground=\"#ffff87\";">⚡\\</span>"<span foreground=\"#0000ff\";">’‚’ </span>'],
|
||||
"ThunderySnowShowers": [
|
||||
"\033[38;5;226m _`/\"\"\033[38;5;250m.-. \033[0m",
|
||||
"\033[38;5;226m ,\\_\033[38;5;250m( ). \033[0m",
|
||||
"\033[38;5;226m /\033[38;5;250m(___(__) \033[0m",
|
||||
"\033[38;5;255m *\033[38;5;228;5m⚡\033[38;5;255;25m*\033[38;5;228;5m⚡\033[38;5;255;25m* \033[0m",
|
||||
"\033[38;5;255m * * * \033[0m"],
|
||||
'<span foreground=\"#FFFF00\"> _`/\'\'</span>"<span foreground=\"#BBBBBB\">.-. </span>',
|
||||
'<span foreground=\"#FFFF00\"> ,\\_</span>"<span foreground=\"#BBBBBB\">( ). </span>',
|
||||
'<span foreground=\"#FFFF00\"> /</span>"<span foreground=\"#BBBBBB\">(___(__) </span>',
|
||||
'<span foreground=\"#eeeeee\";"> *</span>"<span foreground=\"#ffff87\";">⚡\\</span>"<span foreground=\"#eeeeee\";">*</span>"<span foreground=\"#ffff87\";">⚡\\</span>"<span foreground=\"#eeeeee\";">* </span>',
|
||||
'<span foreground=\"#eeeeee\";"> * * * </span>'],
|
||||
"LightRain": [
|
||||
"\033[38;5;250m .-. \033[0m",
|
||||
"\033[38;5;250m ( ). \033[0m",
|
||||
"\033[38;5;250m (___(__) \033[0m",
|
||||
"\033[38;5;111m ‘ ‘ ‘ ‘ \033[0m",
|
||||
"\033[38;5;111m ‘ ‘ ‘ ‘ \033[0m"],
|
||||
'<span foreground=\"#BBBBBB\"> .-. </span>',
|
||||
'<span foreground=\"#BBBBBB\"> ( ). </span>',
|
||||
'<span foreground=\"#BBBBBB\"> (___(__) </span>',
|
||||
'<span foreground=\"#87afff\";"> ‘ ‘ ‘ ‘ </span>',
|
||||
'<span foreground=\"#87afff\";"> ‘ ‘ ‘ ‘ </span>'],
|
||||
"HeavyRain": [
|
||||
"\033[38;5;240;1m .-. \033[0m",
|
||||
"\033[38;5;240;1m ( ). \033[0m",
|
||||
"\033[38;5;240;1m (___(__) \033[0m",
|
||||
"\033[38;5;21;1m ‚‘‚‘‚‘‚‘ \033[0m",
|
||||
"\033[38;5;21;1m ‚’‚’‚’‚’ \033[0m"],
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> .-. </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> ( ). </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> (___(__) </span>',
|
||||
'<span foreground=\"#0000ff\"; font-weight: bold;"> ‚‘‚‘‚‘‚‘ </span>',
|
||||
'<span foreground=\"#0000ff\"; font-weight: bold;"> ‚’‚’‚’‚’ </span>'],
|
||||
"LightSnow": [
|
||||
"\033[38;5;250m .-. \033[0m",
|
||||
"\033[38;5;250m ( ). \033[0m",
|
||||
"\033[38;5;250m (___(__) \033[0m",
|
||||
"\033[38;5;255m * * * \033[0m",
|
||||
"\033[38;5;255m * * * \033[0m"],
|
||||
'<span foreground=\"#BBBBBB\"> .-. </span>',
|
||||
'<span foreground=\"#BBBBBB\"> ( ). </span>',
|
||||
'<span foreground=\"#BBBBBB\"> (___(__) </span>',
|
||||
'<span foreground=\"#eeeeee\";"> * * * </span>',
|
||||
'<span foreground=\"#eeeeee\";"> * * * </span>'],
|
||||
"HeavySnow": [
|
||||
"\033[38;5;240;1m .-. \033[0m",
|
||||
"\033[38;5;240;1m ( ). \033[0m",
|
||||
"\033[38;5;240;1m (___(__) \033[0m",
|
||||
"\033[38;5;255;1m * * * * \033[0m",
|
||||
"\033[38;5;255;1m * * * * \033[0m"],
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> .-. </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> ( ). </span>',
|
||||
'<span foreground=\"#585858\"; font-weight: bold;"> (___(__) </span>',
|
||||
'<span foreground=\"#eeeeee\"; font-weight: bold;"> * * * * </span>',
|
||||
'<span foreground=\"#eeeeee\"; font-weight: bold;"> * * * * </span>'],
|
||||
"LightSleet": [
|
||||
"\033[38;5;250m .-. \033[0m",
|
||||
"\033[38;5;250m ( ). \033[0m",
|
||||
"\033[38;5;250m (___(__) \033[0m",
|
||||
"\033[38;5;111m ‘ \033[38;5;255m*\033[38;5;111m ‘ \033[38;5;255m* \033[0m",
|
||||
"\033[38;5;255m *\033[38;5;111m ‘ \033[38;5;255m*\033[38;5;111m ‘ \033[0m"],
|
||||
'<span foreground=\"#BBBBBB\"> .-. </span>',
|
||||
'<span foreground=\"#BBBBBB\"> ( ). </span>',
|
||||
'<span foreground=\"#BBBBBB\"> (___(__) </span>',
|
||||
'<span foreground=\"#87afff\";"> ‘ </span>"<span foreground=\"#eeeeee\";">*</span>"<span foreground=\"#87afff\";"> ‘ </span>"<span foreground=\"#eeeeee\";">* </span>',
|
||||
'<span foreground=\"#eeeeee\";"> *</span>"<span foreground=\"#87afff\";"> ‘ </span>"<span foreground=\"#eeeeee\";">*</span>"<span foreground=\"#87afff\";"> ‘ </span>'],
|
||||
"Fog": [
|
||||
" ",
|
||||
"\033[38;5;251m _ - _ - _ - \033[0m",
|
||||
"\033[38;5;251m _ - _ - _ \033[0m",
|
||||
"\033[38;5;251m _ - _ - _ - \033[0m",
|
||||
" "],
|
||||
' ',
|
||||
'<span foreground=\"#c0c0c0\";"> _ - _ - _ - </span>',
|
||||
'<span foreground=\"#c0c0c0\";"> _ - _ - _ </span>',
|
||||
'<span foreground=\"#c0c0c0\";"> _ - _ - _ - </span>',
|
||||
' '],
|
||||
}
|
||||
|
||||
WEATHER_CODES_WEGO = {key: WEATHER_SYMBOL_WEGO[value] for key, value in WWO_CODE.items()}
|
||||
|
||||
data = {}
|
||||
|
||||
|
||||
weather = requests.get("https://wttr.in/?u&format=j1").json()
|
||||
moon = requests.get("https://wttr.in/?format=%m").text
|
||||
|
||||
|
||||
def format_time(time):
|
||||
"""get the time formatted"""
|
||||
return datetime.strptime(format_24_time(time), "%H").strftime("%I %p")
|
||||
|
||||
def format_24_time(time):
|
||||
"""get the time formatted"""
|
||||
return time.replace("00", "").zfill(2)
|
||||
|
||||
|
||||
def format_temp(temp):
|
||||
return (hour["FeelsLikeF"] + "°").ljust(3)
|
||||
"""get the temp formatted"""
|
||||
return (temp + "°").ljust(3)
|
||||
|
||||
|
||||
def format_chances(hour):
|
||||
"""get the chances formatted"""
|
||||
chances = {
|
||||
"chanceoffog": "Fog",
|
||||
"chanceoffrost": "Frost",
|
||||
@@ -326,60 +302,130 @@ let
|
||||
}
|
||||
|
||||
conditions = []
|
||||
for event in chances.keys():
|
||||
if int(hour[event]) > 0:
|
||||
conditions.append(chances[event] + " " + hour[event] + "%")
|
||||
for chance, event in chances.items():
|
||||
if int(hour[chance]) > 0:
|
||||
conditions.append(event + " " + hour[chance] + "%")
|
||||
return ", ".join(conditions)
|
||||
|
||||
def build_text(current_condition):
|
||||
"""build the text string"""
|
||||
feels_like_f = current_condition["FeelsLikeF"]
|
||||
weather_code = current_condition["weatherCode"]
|
||||
|
||||
tempint = int(weather["current_condition"][0]["FeelsLikeF"])
|
||||
extrachar = ""
|
||||
if tempint > 0 and tempint < 10:
|
||||
extrachar = "+"
|
||||
tempint = int(feels_like_f)
|
||||
extrachar = ""
|
||||
if 0 < tempint < 10:
|
||||
extrachar = "+"
|
||||
|
||||
current_weather = f"{WEATHER_CODES[weather_code]} {extrachar} {feels_like_f}°F"
|
||||
|
||||
data["text"] = (
|
||||
" "
|
||||
+ WEATHER_CODES[weather["current_condition"][0]["weatherCode"]]
|
||||
+ " "
|
||||
+ extrachar
|
||||
+ weather["current_condition"][0]["FeelsLikeF"]
|
||||
+ "°F"
|
||||
)
|
||||
return current_weather
|
||||
|
||||
data["tooltip"] = (
|
||||
f"<b>{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_F']}°</b>\n"
|
||||
)
|
||||
data["tooltip"] += f"Feels like: {weather['current_condition'][0]['FeelsLikeF']}°\n"
|
||||
data["tooltip"] += f"Wind: {weather['current_condition'][0]['windspeedMiles']}mph\n"
|
||||
data["tooltip"] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n"
|
||||
data["tooltip"] += f"Moon phase: {weather["weather"][0]['astronomy'][0]['moon_phase']} " + moon + "\n"
|
||||
for i, day in enumerate(weather["weather"]):
|
||||
data["tooltip"] += f"\n<b>"
|
||||
if i == 0:
|
||||
data["tooltip"] += "Today, "
|
||||
if i == 1:
|
||||
data["tooltip"] += "Tomorrow, "
|
||||
date = datetime.strptime(day['date'], "%Y-%m-%d").strftime("%a %b %d %Y")
|
||||
data["tooltip"] += f"{date}</b>\n"
|
||||
data["tooltip"] += f" {day['maxtempF']}°F {day['mintempF']}°F"
|
||||
data[
|
||||
"tooltip"
|
||||
] += f" {day['astronomy'][0]['sunrise']} {day['astronomy'][0]['sunset']}\n"
|
||||
for hour in day["hourly"]:
|
||||
def build_tooltip(current_condition, astronomy, moon_icon):
|
||||
"""build the tooltip text"""
|
||||
weather_description = current_condition['weatherDesc'][0]['value']
|
||||
feels_like_f = current_condition["FeelsLikeF"]
|
||||
temp_f = current_condition['temp_F']
|
||||
humidity = current_condition['humidity']
|
||||
wind_speed = current_condition['windspeedMiles']
|
||||
wind_dir = current_condition['winddir16Point']
|
||||
moon_phase = astronomy['moon_phase']
|
||||
wego = WEATHER_CODES_WEGO[current_condition['weatherCode']]
|
||||
|
||||
tooltip = f"{wego[0]}{weather_description} {temp_f}°\n"
|
||||
tooltip += f"{wego[1]}Feels like: {feels_like_f}°\n"
|
||||
tooltip += f"{wego[2]}Wind: {wind_speed}mph {WIND_DIRECTION[wind_dir]}\n"
|
||||
tooltip += f"{wego[3]}Humidity: {humidity}%\n"
|
||||
tooltip += f"{wego[4]}Moon phase: {moon_phase} " + moon_icon + "\n"
|
||||
|
||||
return tooltip
|
||||
|
||||
def build_forecast(weather):
|
||||
"""build a 3 day forecast"""
|
||||
tooltip = "\n"
|
||||
|
||||
for i, day in enumerate(weather):
|
||||
# determine day
|
||||
if i == 0:
|
||||
if int(format_24_time(hour["time"])) < datetime.now().hour - 2:
|
||||
tooltip += "Today, "
|
||||
if i == 1:
|
||||
tooltip += "Tomorrow, "
|
||||
# format the date
|
||||
date = datetime.strptime(day['date'], "%Y-%m-%d").strftime("%a %b %d %Y")
|
||||
tooltip += f"<b>{date}</b>\n"
|
||||
# set the high and low
|
||||
max_temp = day['maxtempF']
|
||||
min_temp = day['mintempF']
|
||||
tooltip += f" {max_temp}°F {min_temp}°F"
|
||||
|
||||
sunrise = day['astronomy'][0]['sunrise']
|
||||
sunset = day['astronomy'][0]['sunset']
|
||||
tooltip += f" {sunrise} {sunset}\n"
|
||||
|
||||
tooltip += build_hourly_forecast(i, day['hourly'], sunrise, sunset)
|
||||
return tooltip
|
||||
|
||||
|
||||
def build_hourly_forecast(day_num, hourly, sunrise, sunset):
|
||||
"""build an hourly forecast"""
|
||||
sunrise_hour = datetime.strptime(sunrise, "%I:%M %p").hour
|
||||
sunset_hour = datetime.strptime(sunset, "%I:%M %p").hour
|
||||
current_hour = datetime.now().hour
|
||||
tooltip = ""
|
||||
|
||||
for hour in hourly:
|
||||
time_24_hr = int(format_24_time(hour["time"]))
|
||||
|
||||
if day_num == 0:
|
||||
if time_24_hr < current_hour - 2:
|
||||
continue
|
||||
if int(format_24_time(hour["time"])) > datetime.strptime(day['astronomy'][0]['sunset'], "%I:%M %p").hour or int(format_24_time(hour["time"])) < datetime.strptime(day['astronomy'][0]['sunrise'], "%I:%M %p").hour:
|
||||
|
||||
# determine which code to use
|
||||
if is_night_hour(time_24_hr, sunrise_hour, sunset_hour):
|
||||
codes = WEATHER_CODES_WI_NIGHT
|
||||
else:
|
||||
codes = WEATHER_CODES_WI_DAY
|
||||
data[
|
||||
"tooltip"
|
||||
] += f"{format_time(hour['time'])} {codes[hour['weatherCode']]} {format_temp(hour['FeelsLikeF'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
|
||||
|
||||
current_time = format_time(hour['time'])
|
||||
current_weather_code = codes[hour['weatherCode']]
|
||||
feels_like = format_temp(hour['FeelsLikeF'])
|
||||
weather_desc = hour['weatherDesc'][0]['value']
|
||||
current_chances = format_chances(hour)
|
||||
|
||||
print(json.dumps(data))
|
||||
tooltip += f"{current_time} {current_weather_code} "
|
||||
tooltip += f"{feels_like} {weather_desc}, {current_chances}\n"
|
||||
|
||||
return tooltip
|
||||
|
||||
def is_night_hour(time_24_hr, sunrise_hour, sunset_hour):
|
||||
"""returns true if the hour is night"""
|
||||
before_sunrise = time_24_hr < sunrise_hour
|
||||
after_sunset = time_24_hr > sunset_hour
|
||||
return after_sunset or before_sunrise
|
||||
|
||||
def get_wttr_json():
|
||||
"""get the weather json"""
|
||||
weather = requests.get("https://wttr.in/?u&format=j1", timeout=30).json()
|
||||
moon = requests.get("https://wttr.in/?format=%m", timeout=30)
|
||||
moon_icon = moon.text
|
||||
|
||||
current_condition = weather["current_condition"][0]
|
||||
astronomy = weather["weather"][0]['astronomy'][0]
|
||||
|
||||
data["text"] = build_text(current_condition)
|
||||
data["tooltip"] = build_tooltip(current_condition, astronomy, moon_icon)
|
||||
data["tooltip"] += build_forecast(weather["weather"])
|
||||
|
||||
return json.dumps(data)
|
||||
|
||||
def main():
|
||||
"""main"""
|
||||
try:
|
||||
print(get_wttr_json())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
main()
|
||||
'';
|
||||
in
|
||||
{
|
||||
|
||||
@@ -177,7 +177,7 @@ in
|
||||
{
|
||||
size = "200, 50";
|
||||
position = "0, -80";
|
||||
monitor = settings.displayLeft.input;
|
||||
monitor = hyprlandSettings.primaryDisplay.input;
|
||||
dots_center = true;
|
||||
fade_on_empty = true;
|
||||
font_color = "rgb(202, 211, 245)";
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
clinfo
|
||||
cpufetch
|
||||
deadnix
|
||||
direnv
|
||||
firefox
|
||||
gamescope
|
||||
gamescope-wsi
|
||||
|
||||
@@ -14,27 +14,30 @@ let
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
mutableExtensionsDir = false;
|
||||
profiles = {
|
||||
default = {
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
extensions = with pkgs; [
|
||||
vscode-extensions.bbenoist.nix
|
||||
vscode-extensions.brettm12345.nixfmt-vscode
|
||||
vscode-extensions.cweijan.vscode-database-client2
|
||||
vscode-extensions.dendron.dendron-markdown-preview-enhanced
|
||||
vscode-extensions.jnoortheen.nix-ide
|
||||
vscode-extensions.ms-python.debugpy
|
||||
vscode-extensions.ms-python.pylint
|
||||
vscode-extensions.ms-python.python
|
||||
# vscode-extensions.ms-python.vscode-pylance
|
||||
vscode-extensions.redhat.vscode-xml
|
||||
vscode-extensions.redhat.vscode-yaml
|
||||
vscode-extensions.yy0931.vscode-sqlite3-editor
|
||||
programs = {
|
||||
vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
mutableExtensionsDir = false;
|
||||
profiles = {
|
||||
default = {
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
extensions = with pkgs; [
|
||||
vscode-extensions.arrterian.nix-env-selector
|
||||
vscode-extensions.bbenoist.nix
|
||||
vscode-extensions.brettm12345.nixfmt-vscode
|
||||
vscode-extensions.cweijan.vscode-database-client2
|
||||
vscode-extensions.dendron.dendron-markdown-preview-enhanced
|
||||
vscode-extensions.jnoortheen.nix-ide
|
||||
vscode-extensions.mkhl.direnv
|
||||
vscode-extensions.ms-python.debugpy
|
||||
vscode-extensions.ms-python.pylint
|
||||
vscode-extensions.ms-python.python
|
||||
# vscode-extensions.ms-python.vscode-pylance
|
||||
vscode-extensions.redhat.vscode-xml
|
||||
vscode-extensions.redhat.vscode-yaml
|
||||
vscode-extensions.yy0931.vscode-sqlite3-editor
|
||||
|
||||
# open-remote-ssh
|
||||
nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh
|
||||
@@ -59,81 +62,87 @@ in
|
||||
}
|
||||
];
|
||||
|
||||
userSettings = {
|
||||
userSettings = {
|
||||
|
||||
"editor" = {
|
||||
"defaultFormatter" = "brettm12345.nixfmt-vscode";
|
||||
"fontFamily" = "fira-code-nerd, FiraCode Nerd Font, Consolas, 'Courier New', monospace";
|
||||
"fontLigatures" = true;
|
||||
"renderWhitespace" = "all";
|
||||
};
|
||||
|
||||
"explorer" = {
|
||||
"confirmDelete" = false;
|
||||
"confirmDragAndDrop" = false;
|
||||
};
|
||||
|
||||
"git" = {
|
||||
"confirmSync" = false;
|
||||
"enableSmartCommit" = true;
|
||||
};
|
||||
|
||||
"github" = {
|
||||
"copilot.nextEditSuggestions.enabled" = true;
|
||||
"copilot.enable" = {
|
||||
"nix" = true;
|
||||
"editor" = {
|
||||
"defaultFormatter" = "brettm12345.nixfmt-vscode";
|
||||
"fontFamily" = "fira-code-nerd, FiraCode Nerd Font, Consolas, 'Courier New', monospace";
|
||||
"fontLigatures" = true;
|
||||
"renderWhitespace" = "all";
|
||||
};
|
||||
};
|
||||
|
||||
"[json]" = {
|
||||
"editor.defaultFormatter" = "vscode.json-language-features";
|
||||
};
|
||||
"explorer" = {
|
||||
"confirmDelete" = false;
|
||||
"confirmDragAndDrop" = false;
|
||||
};
|
||||
|
||||
"git" = {
|
||||
"confirmSync" = false;
|
||||
"enableSmartCommit" = true;
|
||||
};
|
||||
|
||||
"nix" = {
|
||||
"enableLanguageServer" = true;
|
||||
"formatterPath" = "nixpkgs-fmt";
|
||||
"serverPath" = "nixd";
|
||||
"serverSettings" = {
|
||||
"nixd" = {
|
||||
"formatting" = {
|
||||
"command" = [ "nixpkgs-fmt" ];
|
||||
};
|
||||
"options" = {
|
||||
# By default, this entriy will be read from `import <nixpkgs> { }`.
|
||||
# You can write arbitary Nix expressions here, to produce valid "options" declaration result.
|
||||
# Tip: for flake-based configuration, utilize `builtins.getFlake`
|
||||
"nixos" = {
|
||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").nixosConfigurations.<name>.options";
|
||||
"github" = {
|
||||
"copilot.nextEditSuggestions.enabled" = true;
|
||||
"copilot.enable" = {
|
||||
"nix" = true;
|
||||
};
|
||||
};
|
||||
|
||||
"[json]" = {
|
||||
"editor.defaultFormatter" = "vscode.json-language-features";
|
||||
};
|
||||
|
||||
"nix" = {
|
||||
"enableLanguageServer" = true;
|
||||
"formatterPath" = "nixpkgs-fmt";
|
||||
"serverPath" = "nixd";
|
||||
"serverSettings" = {
|
||||
"nixd" = {
|
||||
"formatting" = {
|
||||
"command" = [ "nixpkgs-fmt" ];
|
||||
};
|
||||
"home-manager" = {
|
||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").homeConfigurations.<name>.options";
|
||||
"options" = {
|
||||
# By default, this entriy will be read from `import <nixpkgs> { }`.
|
||||
# You can write arbitary Nix expressions here, to produce valid "options" declaration result.
|
||||
# Tip: for flake-based configuration, utilize `builtins.getFlake`
|
||||
"nixos" = {
|
||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").nixosConfigurations.<name>.options";
|
||||
};
|
||||
"home-manager" = {
|
||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").homeConfigurations.<name>.options";
|
||||
};
|
||||
# # Tip: use ${workspaceFolder} variable to define path
|
||||
# "nix-darwin" = {
|
||||
# "expr" = "(builtins.getFlake \"${workspaceFolder}/path/to/flake\").darwinConfigurations.<name>.options"
|
||||
# }
|
||||
};
|
||||
# # Tip: use ${workspaceFolder} variable to define path
|
||||
# "nix-darwin" = {
|
||||
# "expr" = "(builtins.getFlake \"${workspaceFolder}/path/to/flake\").darwinConfigurations.<name>.options"
|
||||
# }
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
"[nix]" = {
|
||||
"editor" = {
|
||||
"defaultFormatter" = "brettm12345.nixfmt-vscode";
|
||||
"tabSize" = 2;
|
||||
"[nix]" = {
|
||||
"editor" = {
|
||||
"defaultFormatter" = "brettm12345.nixfmt-vscode";
|
||||
"tabSize" = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
"security.workspace.trust.untrustedFiles" = "open";
|
||||
"security.workspace.trust.untrustedFiles" = "open";
|
||||
|
||||
"workbench" = {
|
||||
"colorCustomizations" = null;
|
||||
"editorAssociations" = {
|
||||
"*.db" = "default";
|
||||
"workbench" = {
|
||||
"colorCustomizations" = null;
|
||||
"editorAssociations" = {
|
||||
"*.db" = "default";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user