Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles
This commit is contained in:
@@ -140,7 +140,18 @@
|
|||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix = {
|
||||||
|
settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
substitute = true;
|
||||||
|
substituters = [
|
||||||
|
"https://yazi.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs.bash.shellInit = ''
|
programs.bash.shellInit = ''
|
||||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
|||||||
Binary file not shown.
58
home-modules/calendar-campuszeit-fix.nix
Normal file
58
home-modules/calendar-campuszeit-fix.nix
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
{ pkgs, user, ... }:
|
||||||
|
{
|
||||||
|
home.packages = let
|
||||||
|
u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" {
|
||||||
|
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||||
|
} /* python */ ''
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def replace_campus_timezone(directory):
|
||||||
|
if not os.path.isdir(directory):
|
||||||
|
print(f"Error: {directory} is not a valid directory.")
|
||||||
|
return
|
||||||
|
|
||||||
|
for filename in os.listdir(directory):
|
||||||
|
filepath = os.path.join(directory, filename)
|
||||||
|
if not os.path.isfile(filepath):
|
||||||
|
continue
|
||||||
|
|
||||||
|
with open(filepath, 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
if 'TZID:Europe/Berlin' in content or 'TZID="Europe/Berlin"' in content:
|
||||||
|
# Remove VTIMEZONE block for CampusNetZeit (optional depending on needs)
|
||||||
|
# Use a regex if multiple VTIMEZONE blocks may exist
|
||||||
|
start_idx = content.find('BEGIN:VTIMEZONE')
|
||||||
|
end_idx = content.find('END:VTIMEZONE', start_idx)
|
||||||
|
if start_idx != -1 and end_idx != -1:
|
||||||
|
content = content[:start_idx] + content[end_idx + len('END:VTIMEZONE\n'):]
|
||||||
|
|
||||||
|
# Replace all TZID references
|
||||||
|
content = content.replace('TZID:Europe/Berlin', 'TZID:Europe/Berlin')
|
||||||
|
content = content.replace('TZID="Europe/Berlin"', 'TZID="Europe/Berlin"')
|
||||||
|
|
||||||
|
with open(filepath, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print(f"Updated time zone in: {filename}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
print("Usage: python replace_timezone.py <directory>")
|
||||||
|
else:
|
||||||
|
replace_campus_timezone(sys.argv[1])
|
||||||
|
'';
|
||||||
|
in [
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "nx_fix_campuszeit";
|
||||||
|
text = /*bash*/ ''
|
||||||
|
echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY
|
||||||
|
read -r -p "Continue?"
|
||||||
|
sudo chown -R ${user} "$1"
|
||||||
|
${u}/bin/nx_fix_campuszeit_python "$1"
|
||||||
|
sudo chown -R radicale "$1"
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, rice, secrets, ... }:
|
{ config, pkgs, rice, user, secrets, ... }:
|
||||||
let
|
let
|
||||||
channels = [
|
channels = [
|
||||||
"Caedrel"
|
"Caedrel"
|
||||||
@@ -43,8 +43,14 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; };
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [ chatterino2 ];
|
packages = with pkgs; [
|
||||||
|
chatterino2
|
||||||
|
streamlink
|
||||||
|
mpv
|
||||||
|
];
|
||||||
file = {
|
file = {
|
||||||
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
|
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
|
||||||
{
|
{
|
||||||
@@ -76,10 +82,8 @@ in {
|
|||||||
"showUptime": true,
|
"showUptime": true,
|
||||||
"showViewerCount": true
|
"showViewerCount": true
|
||||||
},
|
},
|
||||||
"tabVisibility": 1,
|
"tabVisibility": 0,
|
||||||
"theme": {
|
"theme": { "name": "nxtheme.json" }
|
||||||
"name": "nxtheme.json"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"behaviour": {
|
"behaviour": {
|
||||||
"pauseOnHoverDuration": 5.0,
|
"pauseOnHoverDuration": 5.0,
|
||||||
@@ -93,615 +97,87 @@ in {
|
|||||||
},
|
},
|
||||||
"highlighting": {
|
"highlighting": {
|
||||||
"badges": [
|
"badges": [
|
||||||
{
|
{ "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
"alert": false,
|
{ "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
"color": "#7f7f3f49",
|
{ "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
"displayName": "Broadcaster",
|
{ "alert": false, "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
"name": "broadcaster",
|
{ "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
|
||||||
"showInMentions": false,
|
|
||||||
"sound": false,
|
|
||||||
"soundUrl": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alert": false,
|
|
||||||
"color": "#7f7f3f49",
|
|
||||||
"displayName": "Admin",
|
|
||||||
"name": "admin",
|
|
||||||
"showInMentions": false,
|
|
||||||
"sound": false,
|
|
||||||
"soundUrl": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alert": false,
|
|
||||||
"color": "#7f7f3f49",
|
|
||||||
"displayName": "Staff",
|
|
||||||
"name": "staff",
|
|
||||||
"showInMentions": false,
|
|
||||||
"sound": false,
|
|
||||||
"soundUrl": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alert": false,
|
|
||||||
"displayName": "Moderator",
|
|
||||||
"name": "moderator",
|
|
||||||
"showInMentions": false,
|
|
||||||
"sound": false,
|
|
||||||
"soundUrl": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alert": false,
|
|
||||||
"color": "#7f7f3578",
|
|
||||||
"displayName": "VIP",
|
|
||||||
"name": "vip",
|
|
||||||
"showInMentions": false,
|
|
||||||
"sound": false,
|
|
||||||
"soundUrl": ""
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"selfMessageHighlight": {
|
"selfMessageHighlight": { "color": "#73008cff", "enabled": true }
|
||||||
"color": "#73008cff",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"hotkeys": {
|
"hotkeys": {
|
||||||
"addedDefaults": [
|
"addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
|
||||||
"change channel",
|
|
||||||
"close popup window",
|
"change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
|
||||||
"create clip",
|
"close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
|
||||||
"delete",
|
"create clip": { "action": "createClip", "arguments": [], "category": "split", "keySequence": "Alt+X" },
|
||||||
"emote picker",
|
"delete": { "action": "delete", "arguments": [], "category": "split", "keySequence": "Ctrl+W" },
|
||||||
"focus down",
|
"emote picker": { "action": "openEmotesPopup", "arguments": [], "category": "splitInput", "keySequence": "Ctrl+E" },
|
||||||
"focus left",
|
"focus down": { "action": "focus", "arguments": [ "down" ], "category": "split", "keySequence": "Alt+Down" },
|
||||||
"focus right",
|
"focus left": { "action": "focus", "arguments": [ "left" ], "category": "split", "keySequence": "Alt+Left" },
|
||||||
"focus up",
|
"focus right": { "action": "focus", "arguments": [ "right" ], "category": "split", "keySequence": "Alt+Right" },
|
||||||
"go to end of input",
|
"focus up": { "action": "focus", "arguments": [ "up" ], "category": "split", "keySequence": "Alt+Up" },
|
||||||
"go to end of input with selection",
|
"go to end of input": { "action": "cursorToEnd", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "End" },
|
||||||
"go to start of input",
|
"go to end of input with selection": { "action": "cursorToEnd", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+End" },
|
||||||
"go to start of input with selection",
|
"go to start of input": { "action": "cursorToStart", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "Home" },
|
||||||
"new popup window",
|
"go to start of input with selection": { "action": "cursorToStart", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+Home" },
|
||||||
"new popup window from tab",
|
"new popup window": { "action": "popup", "arguments": [ "split" ], "category": "window", "keySequence": "Ctrl+N" },
|
||||||
"new split",
|
"new popup window from tab": { "action": "popup", "arguments": [ "window" ], "category": "window", "keySequence": "Ctrl+Shift+N" },
|
||||||
"new tab",
|
"new split": { "action": "newSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+T" },
|
||||||
"next message",
|
"new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
|
||||||
"open debug popup",
|
"next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
|
||||||
"open quick switcher",
|
"open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
|
||||||
"open settings",
|
"open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
|
||||||
"popup accept",
|
"open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
|
||||||
"popup focus search box",
|
"popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
|
||||||
"popup reject",
|
"popup focus search box": { "action": "search", "arguments": [], "category": "popupWindow", "keySequence": "Ctrl+F" },
|
||||||
"popup scroll down",
|
"popup reject": { "action": "reject", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
|
||||||
"popup scroll up",
|
"popup scroll down": { "action": "scrollPage", "arguments": [ "down" ], "category": "popupWindow", "keySequence": "PgDown" },
|
||||||
"popup select last tab",
|
"popup scroll up": { "action": "scrollPage", "arguments": [ "up" ], "category": "popupWindow", "keySequence": "PgUp" },
|
||||||
"popup select next tab",
|
"popup select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "popupWindow", "keySequence": "Ctrl+9" },
|
||||||
"popup select previous tab",
|
"popup select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "popupWindow", "keySequence": "Ctrl+Tab" },
|
||||||
"popup select tab #1",
|
"popup select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "popupWindow", "keySequence": "Ctrl+Shift+Tab" },
|
||||||
"popup select tab #2",
|
"popup select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "popupWindow", "keySequence": "Ctrl+1" },
|
||||||
"popup select tab #3",
|
"popup select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "popupWindow", "keySequence": "Ctrl+2" },
|
||||||
"popup select tab #4",
|
"popup select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "popupWindow", "keySequence": "Ctrl+3" },
|
||||||
"popup select tab #5",
|
"popup select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "popupWindow", "keySequence": "Ctrl+4" },
|
||||||
"popup select tab #6",
|
"popup select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "popupWindow", "keySequence": "Ctrl+5" },
|
||||||
"popup select tab #7",
|
"popup select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "popupWindow", "keySequence": "Ctrl+6" },
|
||||||
"popup select tab #8",
|
"popup select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "popupWindow", "keySequence": "Ctrl+7" },
|
||||||
"previous message",
|
"popup select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "popupWindow", "keySequence": "Ctrl+8" },
|
||||||
"reconnect",
|
"previous message": { "action": "previousMessage", "arguments": [], "category": "splitInput", "keySequence": "Up" },
|
||||||
"reload emotes",
|
"reconnect": { "action": "reconnect", "arguments": [], "category": "split", "keySequence": "Ctrl+F5" },
|
||||||
"remove tab",
|
"reload emotes": { "action": "reloadEmotes", "arguments": [], "category": "split", "keySequence": "F5" },
|
||||||
"reopen split",
|
"remove tab": { "action": "removeTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+W" },
|
||||||
"scroll page down",
|
"reopen split": { "action": "reopenSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+G" },
|
||||||
"scroll page up",
|
"scroll page down": { "action": "scrollPage", "arguments": [ "down" ], "category": "split", "keySequence": "PgDown" },
|
||||||
"scroll to bottom",
|
"scroll page up": { "action": "scrollPage", "arguments": [ "up" ], "category": "split", "keySequence": "PgUp" },
|
||||||
"scroll to top",
|
"scroll to bottom": { "action": "scrollToBottom", "arguments": [], "category": "split", "keySequence": "Ctrl+End" },
|
||||||
"select last tab",
|
"scroll to top": { "action": "scrollToTop", "arguments": [], "category": "split", "keySequence": "Ctrl+Home" },
|
||||||
"select next tab",
|
"select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "window", "keySequence": "Ctrl+9" },
|
||||||
"select previous tab",
|
"select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "window", "keySequence": "Ctrl+Tab" },
|
||||||
"select tab #1",
|
"select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "window", "keySequence": "Ctrl+Shift+Tab" },
|
||||||
"select tab #2",
|
"select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "window", "keySequence": "Ctrl+1" },
|
||||||
"select tab #3",
|
"select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "window", "keySequence": "Ctrl+2" },
|
||||||
"select tab #4",
|
"select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "window", "keySequence": "Ctrl+3" },
|
||||||
"select tab #5",
|
"select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "window", "keySequence": "Ctrl+4" },
|
||||||
"select tab #6",
|
"select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "window", "keySequence": "Ctrl+5" },
|
||||||
"select tab #7",
|
"select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "window", "keySequence": "Ctrl+6" },
|
||||||
"select tab #8",
|
"select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "window", "keySequence": "Ctrl+7" },
|
||||||
"send message",
|
"select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "window", "keySequence": "Ctrl+8" },
|
||||||
"send message and keep text",
|
"send message": { "action": "sendMessage", "arguments": [], "category": "splitInput", "keySequence": "Return" },
|
||||||
"show global search",
|
"send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
|
||||||
"show search",
|
"show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
|
||||||
"toggle live tabs only",
|
"show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
|
||||||
"toggle local r9k",
|
"toggle live tabs only": { "action": "setTabVisibility", "arguments": [ "toggleLiveOnly" ], "category": "window", "keySequence": "Ctrl+Shift+L" },
|
||||||
"toggle tab visibility",
|
"toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
|
||||||
"zoom in",
|
"toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
|
||||||
"zoom out",
|
"zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
|
||||||
"zoom reset"
|
"zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
|
||||||
],
|
"zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
|
||||||
"change channel": {
|
|
||||||
"action": "changeChannel",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Ctrl+R"
|
|
||||||
},
|
|
||||||
"close popup window": {
|
|
||||||
"action": "delete",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Esc"
|
|
||||||
},
|
|
||||||
"create clip": {
|
|
||||||
"action": "createClip",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Alt+X"
|
|
||||||
},
|
|
||||||
"delete": {
|
|
||||||
"action": "delete",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Ctrl+W"
|
|
||||||
},
|
|
||||||
"emote picker": {
|
|
||||||
"action": "openEmotesPopup",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Ctrl+E"
|
|
||||||
},
|
|
||||||
"focus down": {
|
|
||||||
"action": "focus",
|
|
||||||
"arguments": [
|
|
||||||
"down"
|
|
||||||
],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Alt+Down"
|
|
||||||
},
|
|
||||||
"focus left": {
|
|
||||||
"action": "focus",
|
|
||||||
"arguments": [
|
|
||||||
"left"
|
|
||||||
],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Alt+Left"
|
|
||||||
},
|
|
||||||
"focus right": {
|
|
||||||
"action": "focus",
|
|
||||||
"arguments": [
|
|
||||||
"right"
|
|
||||||
],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Alt+Right"
|
|
||||||
},
|
|
||||||
"focus up": {
|
|
||||||
"action": "focus",
|
|
||||||
"arguments": [
|
|
||||||
"up"
|
|
||||||
],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Alt+Up"
|
|
||||||
},
|
|
||||||
"go to end of input": {
|
|
||||||
"action": "cursorToEnd",
|
|
||||||
"arguments": [
|
|
||||||
"withoutSelection"
|
|
||||||
],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "End"
|
|
||||||
},
|
|
||||||
"go to end of input with selection": {
|
|
||||||
"action": "cursorToEnd",
|
|
||||||
"arguments": [
|
|
||||||
"withSelection"
|
|
||||||
],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Shift+End"
|
|
||||||
},
|
|
||||||
"go to start of input": {
|
|
||||||
"action": "cursorToStart",
|
|
||||||
"arguments": [
|
|
||||||
"withoutSelection"
|
|
||||||
],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Home"
|
|
||||||
},
|
|
||||||
"go to start of input with selection": {
|
|
||||||
"action": "cursorToStart",
|
|
||||||
"arguments": [
|
|
||||||
"withSelection"
|
|
||||||
],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Shift+Home"
|
|
||||||
},
|
|
||||||
"new popup window": {
|
|
||||||
"action": "popup",
|
|
||||||
"arguments": [
|
|
||||||
"split"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+N"
|
|
||||||
},
|
|
||||||
"new popup window from tab": {
|
|
||||||
"action": "popup",
|
|
||||||
"arguments": [
|
|
||||||
"window"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+Shift+N"
|
|
||||||
},
|
|
||||||
"new split": {
|
|
||||||
"action": "newSplit",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+T"
|
|
||||||
},
|
|
||||||
"new tab": {
|
|
||||||
"action": "newTab",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+Shift+T"
|
|
||||||
},
|
|
||||||
"next message": {
|
|
||||||
"action": "nextMessage",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Down"
|
|
||||||
},
|
|
||||||
"open debug popup": {
|
|
||||||
"action": "debug",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "F10"
|
|
||||||
},
|
|
||||||
"open quick switcher": {
|
|
||||||
"action": "openQuickSwitcher",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+K"
|
|
||||||
},
|
|
||||||
"open settings": {
|
|
||||||
"action": "openSettings",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+P"
|
|
||||||
},
|
|
||||||
"popup accept": {
|
|
||||||
"action": "accept",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Return"
|
|
||||||
},
|
|
||||||
"popup focus search box": {
|
|
||||||
"action": "search",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+F"
|
|
||||||
},
|
|
||||||
"popup reject": {
|
|
||||||
"action": "reject",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Esc"
|
|
||||||
},
|
|
||||||
"popup scroll down": {
|
|
||||||
"action": "scrollPage",
|
|
||||||
"arguments": [
|
|
||||||
"down"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "PgDown"
|
|
||||||
},
|
|
||||||
"popup scroll up": {
|
|
||||||
"action": "scrollPage",
|
|
||||||
"arguments": [
|
|
||||||
"up"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "PgUp"
|
|
||||||
},
|
|
||||||
"popup select last tab": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"last"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+9"
|
|
||||||
},
|
|
||||||
"popup select next tab": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"next"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+Tab"
|
|
||||||
},
|
|
||||||
"popup select previous tab": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"previous"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+Shift+Tab"
|
|
||||||
},
|
|
||||||
"popup select tab #1": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+1"
|
|
||||||
},
|
|
||||||
"popup select tab #2": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+2"
|
|
||||||
},
|
|
||||||
"popup select tab #3": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+3"
|
|
||||||
},
|
|
||||||
"popup select tab #4": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+4"
|
|
||||||
},
|
|
||||||
"popup select tab #5": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"4"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+5"
|
|
||||||
},
|
|
||||||
"popup select tab #6": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"5"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+6"
|
|
||||||
},
|
|
||||||
"popup select tab #7": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"6"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+7"
|
|
||||||
},
|
|
||||||
"popup select tab #8": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"category": "popupWindow",
|
|
||||||
"keySequence": "Ctrl+8"
|
|
||||||
},
|
|
||||||
"previous message": {
|
|
||||||
"action": "previousMessage",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Up"
|
|
||||||
},
|
|
||||||
"reconnect": {
|
|
||||||
"action": "reconnect",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Ctrl+F5"
|
|
||||||
},
|
|
||||||
"reload emotes": {
|
|
||||||
"action": "reloadEmotes",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "F5"
|
|
||||||
},
|
|
||||||
"remove tab": {
|
|
||||||
"action": "removeTab",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+Shift+W"
|
|
||||||
},
|
|
||||||
"reopen split": {
|
|
||||||
"action": "reopenSplit",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+G"
|
|
||||||
},
|
|
||||||
"scroll page down": {
|
|
||||||
"action": "scrollPage",
|
|
||||||
"arguments": [
|
|
||||||
"down"
|
|
||||||
],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "PgDown"
|
|
||||||
},
|
|
||||||
"scroll page up": {
|
|
||||||
"action": "scrollPage",
|
|
||||||
"arguments": [
|
|
||||||
"up"
|
|
||||||
],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "PgUp"
|
|
||||||
},
|
|
||||||
"scroll to bottom": {
|
|
||||||
"action": "scrollToBottom",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Ctrl+End"
|
|
||||||
},
|
|
||||||
"scroll to top": {
|
|
||||||
"action": "scrollToTop",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Ctrl+Home"
|
|
||||||
},
|
|
||||||
"select last tab": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"last"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+9"
|
|
||||||
},
|
|
||||||
"select next tab": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"next"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+Tab"
|
|
||||||
},
|
|
||||||
"select previous tab": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"previous"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+Shift+Tab"
|
|
||||||
},
|
|
||||||
"select tab #1": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+1"
|
|
||||||
},
|
|
||||||
"select tab #2": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+2"
|
|
||||||
},
|
|
||||||
"select tab #3": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+3"
|
|
||||||
},
|
|
||||||
"select tab #4": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+4"
|
|
||||||
},
|
|
||||||
"select tab #5": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"4"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+5"
|
|
||||||
},
|
|
||||||
"select tab #6": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"5"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+6"
|
|
||||||
},
|
|
||||||
"select tab #7": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"6"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+7"
|
|
||||||
},
|
|
||||||
"select tab #8": {
|
|
||||||
"action": "openTab",
|
|
||||||
"arguments": [
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+8"
|
|
||||||
},
|
|
||||||
"send message": {
|
|
||||||
"action": "sendMessage",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Return"
|
|
||||||
},
|
|
||||||
"send message and keep text": {
|
|
||||||
"action": "sendMessage",
|
|
||||||
"arguments": [
|
|
||||||
"keepInput"
|
|
||||||
],
|
|
||||||
"category": "splitInput",
|
|
||||||
"keySequence": "Ctrl+Return"
|
|
||||||
},
|
|
||||||
"show global search": {
|
|
||||||
"action": "showGlobalSearch",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Ctrl+Shift+F"
|
|
||||||
},
|
|
||||||
"show search": {
|
|
||||||
"action": "showSearch",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "split",
|
|
||||||
"keySequence": "Ctrl+F"
|
|
||||||
},
|
|
||||||
"toggle live tabs only": {
|
|
||||||
"action": "setTabVisibility",
|
|
||||||
"arguments": [
|
|
||||||
"toggleLiveOnly"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+Shift+L"
|
|
||||||
},
|
|
||||||
"toggle local r9k": {
|
|
||||||
"action": "toggleLocalR9K",
|
|
||||||
"arguments": [],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+H"
|
|
||||||
},
|
|
||||||
"toggle tab visibility": {
|
|
||||||
"action": "setTabVisibility",
|
|
||||||
"arguments": [
|
|
||||||
"toggle"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+U"
|
|
||||||
},
|
|
||||||
"zoom in": {
|
|
||||||
"action": "zoom",
|
|
||||||
"arguments": [
|
|
||||||
"in"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl++"
|
|
||||||
},
|
|
||||||
"zoom out": {
|
|
||||||
"action": "zoom",
|
|
||||||
"arguments": [
|
|
||||||
"out"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+-"
|
|
||||||
},
|
|
||||||
"zoom reset": {
|
|
||||||
"action": "zoom",
|
|
||||||
"arguments": [
|
|
||||||
"reset"
|
|
||||||
],
|
|
||||||
"category": "window",
|
|
||||||
"keySequence": "Ctrl+0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"misc": {
|
"misc": {
|
||||||
"currentVersion": "2.5.1",
|
"currentVersion": "2.5.3",
|
||||||
"lockNotebookLayout": false
|
"lockNotebookLayout": false
|
||||||
},
|
},
|
||||||
"similarity": {
|
"similarity": {
|
||||||
@@ -713,6 +189,12 @@ in {
|
|||||||
"ui": {
|
"ui": {
|
||||||
"lastSelectChannelTab": 0,
|
"lastSelectChannelTab": 0,
|
||||||
"lastSelectIrcConn": -1
|
"lastSelectIrcConn": -1
|
||||||
|
},
|
||||||
|
"external": {
|
||||||
|
"streamlink": {
|
||||||
|
"quality": "",
|
||||||
|
"options": "--config /home/${user}/.config/streamlink/config"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
@@ -732,7 +214,7 @@ in {
|
|||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let
|
".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let
|
||||||
tr = builtins.toString (rice.lib.float-to-drune rice.transparency);
|
# tr = builtins.toString (rice.lib.float-to-drune rice.transparency);
|
||||||
nh = rice.lib.nohash;
|
nh = rice.lib.nohash;
|
||||||
in /* json */ ''
|
in /* json */ ''
|
||||||
{
|
{
|
||||||
@@ -822,6 +304,24 @@ in {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
".local/share/chatterino/Settings/commands.json".text = ''
|
||||||
|
{
|
||||||
|
"commands": [
|
||||||
|
{
|
||||||
|
"name": "/sl",
|
||||||
|
"func": "/streamlink",
|
||||||
|
"showInMsgContextMenu": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
".config/streamlink/config".text = ''
|
||||||
|
twitch-api-header=Authorization=OAuth='$(cat ${config.sops.secrets."streamlink/twitch-oauth".path})'
|
||||||
|
player=mpv
|
||||||
|
player-args='--no-terminal'
|
||||||
|
twitch-low-latency
|
||||||
|
default-stream=best
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{ pkgs, hyper, ... }:
|
{ pkgs, hyper, ... }:
|
||||||
# lib.mkIf (host == "NxNORTH" || host == "NxACE")
|
|
||||||
pkgs.lib.mkIf (hyper.host == "NxNORTH")
|
pkgs.lib.mkIf (hyper.host == "NxNORTH")
|
||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
@@ -7,9 +6,11 @@ pkgs.lib.mkIf (hyper.host == "NxNORTH")
|
|||||||
protonup
|
protonup
|
||||||
mangohud
|
mangohud
|
||||||
|
|
||||||
|
prismlauncher
|
||||||
|
|
||||||
# heroic
|
# heroic
|
||||||
|
|
||||||
mindustry-wayland
|
# mindustry-wayland
|
||||||
]) ++ [ pkgs.heroic ];
|
]) ++ [ pkgs.heroic ];
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
||||||
|
|||||||
@@ -1,40 +1,13 @@
|
|||||||
{ pkgs, hyper, rice, ... }:
|
{ pkgs, hyper, rice, ... }:
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
git
|
|
||||||
delta
|
delta
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "git_monitor" ''
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# List of directories to check
|
|
||||||
directories=(
|
|
||||||
"$HOME/nix-dots"
|
|
||||||
"$HOME/obsidian-vault"
|
|
||||||
"$HOME/Pictures/wallpapers"
|
|
||||||
)
|
|
||||||
echo ""
|
|
||||||
for dir in "''${directories[@]}"; do
|
|
||||||
if [ -d "$dir" ]; then
|
|
||||||
cd "$dir" || { echo "Cannot change directory to $dir"; exit 1; }
|
|
||||||
echo "$(echo $dir | rev | cut -f 1 -d'/' | rev):"
|
|
||||||
if [[ $* == *--fetch* ]]; then
|
|
||||||
git fetch
|
|
||||||
fi
|
|
||||||
gst
|
|
||||||
echo ""
|
|
||||||
cd - > /dev/null || { echo "Cannot change back to the original directory"; exit 1; }
|
|
||||||
else
|
|
||||||
echo "Directory $dir does not exist."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
'')
|
|
||||||
|
|
||||||
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
|
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.gitFull;
|
||||||
userName = ''Lennart J. Kurzweg (Nx2)'';
|
userName = ''Lennart J. Kurzweg (Nx2)'';
|
||||||
userEmail = "git@${hyper.domain}";
|
userEmail = "git@${hyper.domain}";
|
||||||
delta = {
|
delta = {
|
||||||
@@ -46,6 +19,14 @@
|
|||||||
whitespace-error-style = "22 reverse";
|
whitespace-error-style = "22 reverse";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
extraConfig = {
|
||||||
|
credential = {
|
||||||
|
"https://git.da.dicos.de".username = pkgs.lib.mkIf (hyper.host =="NxWSL") "lkurzweg";
|
||||||
|
"https://git.da.dicos.de".password = pkgs.lib.mkIf (hyper.host =="NxWSL") "Test";
|
||||||
|
};
|
||||||
|
url."ssh://git@git.da.dicos.de/".insteadOf = pkgs.lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/";
|
||||||
|
pull.rebase = false; # true
|
||||||
|
};
|
||||||
};
|
};
|
||||||
programs.lazygit = {
|
programs.lazygit = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
python311Packages.python-lsp-server
|
python311Packages.python-lsp-server
|
||||||
jdt-language-server
|
jdt-language-server
|
||||||
ruff
|
ruff
|
||||||
# ruff-lsp
|
|
||||||
pyright
|
pyright
|
||||||
lldb # debugger for llvm stuff
|
lldb # debugger for llvm stuff
|
||||||
yaml-language-server # yaml
|
yaml-language-server # yaml
|
||||||
@@ -51,7 +50,7 @@
|
|||||||
preview-completion-insert = true;
|
preview-completion-insert = true;
|
||||||
completion-trigger-len = 1;
|
completion-trigger-len = 1;
|
||||||
auto-info = true;
|
auto-info = true;
|
||||||
true-color = false; # is detected automatically if set to false
|
true-color = true; # is detected automatically if set to false
|
||||||
undercurl = false; # is detected automatically if set to false
|
undercurl = false; # is detected automatically if set to false
|
||||||
rulers = [];
|
rulers = [];
|
||||||
bufferline = "always";
|
bufferline = "always";
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ in {
|
|||||||
|
|
||||||
workspace = let
|
workspace = let
|
||||||
d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||||
d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
|
d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
|
||||||
d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||||
# d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
|
# d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
|
||||||
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
|
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
glib
|
glib
|
||||||
glow
|
glow
|
||||||
gnumake
|
gnumake
|
||||||
|
htop
|
||||||
imagemagick
|
imagemagick
|
||||||
jq
|
jq
|
||||||
lolcat
|
lolcat
|
||||||
|
|||||||
8
home.nix
8
home.nix
@@ -103,7 +103,7 @@
|
|||||||
reflex
|
reflex
|
||||||
ripgrep
|
ripgrep
|
||||||
screen
|
screen
|
||||||
speedtest-go
|
# speedtest-go
|
||||||
spicetify-cli
|
spicetify-cli
|
||||||
sssnake
|
sssnake
|
||||||
swww
|
swww
|
||||||
@@ -121,14 +121,12 @@
|
|||||||
|
|
||||||
inputs.zen-browser.packages."${system}".default
|
inputs.zen-browser.packages."${system}".default
|
||||||
|
|
||||||
] ++ (if hyper.host != "NxACE" then [
|
] ++ (if (hyper.host != "NxACE") then [
|
||||||
signal-desktop
|
signal-desktop
|
||||||
obsidian
|
obsidian
|
||||||
zoom-us
|
zoom-us
|
||||||
inkscape
|
inkscape
|
||||||
] else {
|
] else []);
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
xdg = {
|
xdg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ syncthing:
|
|||||||
key.pem: ENC[AES256_GCM,data:zFgSrZelmXgTAm0Zl0HSTp+M4tLOQzksdYnA1NZPeu4R+mxMylilEtHzMp9zE7urz5gadjUEiguDBkfTOIzFeSLeUlXBDBWJhXf5JPZ403HES11qlIFdW8BPkzVC3X0N0KyydLdfhM0MAhZdyrRxn1ATc0ppvyqTpeN1rxNYMHTezRH9WMmKC9VS506rCIZrfOtEsuBpsxP6tTjOQ9AxuWV1z6/DRjv55U2EojZ/viM6sjGSsuDAYZQJBA7VQcNsw4PZu49OfA0czo7FbE6Gh6+TJ9PdMOUuo2/syH4yPBC7vqMECIBN4MHzhyoOTqcyZHIV5iJsZqTIbTN+CP72pPPrhs/a5K0GkyT0PPHVem+dGhyAJWQglSAlcK8kXWDP,iv:pzQOoQvFqoC3nIuGLNx97cCE7qO+PHCVw9G4K1mX2nk=,tag:zXUch/o/B97TlgHhAYUveA==,type:str]
|
key.pem: ENC[AES256_GCM,data:zFgSrZelmXgTAm0Zl0HSTp+M4tLOQzksdYnA1NZPeu4R+mxMylilEtHzMp9zE7urz5gadjUEiguDBkfTOIzFeSLeUlXBDBWJhXf5JPZ403HES11qlIFdW8BPkzVC3X0N0KyydLdfhM0MAhZdyrRxn1ATc0ppvyqTpeN1rxNYMHTezRH9WMmKC9VS506rCIZrfOtEsuBpsxP6tTjOQ9AxuWV1z6/DRjv55U2EojZ/viM6sjGSsuDAYZQJBA7VQcNsw4PZu49OfA0czo7FbE6Gh6+TJ9PdMOUuo2/syH4yPBC7vqMECIBN4MHzhyoOTqcyZHIV5iJsZqTIbTN+CP72pPPrhs/a5K0GkyT0PPHVem+dGhyAJWQglSAlcK8kXWDP,iv:pzQOoQvFqoC3nIuGLNx97cCE7qO+PHCVw9G4K1mX2nk=,tag:zXUch/o/B97TlgHhAYUveA==,type:str]
|
||||||
weechat:
|
weechat:
|
||||||
passphrase: ENC[AES256_GCM,data:3NVhMouf3wwMJTZCvIjbi5fjHJHxe25Q+wRo,iv:W8cShdM3iUyEiRCPNupMin3gfF+cqGxslD18CAvUW4c=,tag:DXBATGEhHjhXqy+J9BNVwg==,type:str]
|
passphrase: ENC[AES256_GCM,data:3NVhMouf3wwMJTZCvIjbi5fjHJHxe25Q+wRo,iv:W8cShdM3iUyEiRCPNupMin3gfF+cqGxslD18CAvUW4c=,tag:DXBATGEhHjhXqy+J9BNVwg==,type:str]
|
||||||
|
streamlink:
|
||||||
|
twitch-oauth: ENC[AES256_GCM,data:SvV0CBVL6MO0zqiRg2Ns00KNHLDfzgNObse5F69n,iv:h0DFbwIVKfJSoVowgO3voAOdHXIsw1D3O/aweFRVKcI=,tag:PW0gc+gzlfdOUvIoYIkywg==,type:str]
|
||||||
nx2site:
|
nx2site:
|
||||||
cloudflare:
|
cloudflare:
|
||||||
api-token-dns-edit: ENC[AES256_GCM,data:fR4fH6NqwtHI8aebEwjUn5JMoy3q3GXgu/dREe8JK7yRBIOhJ8BKuw==,iv:fQqLRYCN/7zhpHzYxMcn8q1aA7x4qd3qWGgrFWn2E/U=,tag:GJ1muJG755ch/84Sgcf2Vw==,type:str]
|
api-token-dns-edit: ENC[AES256_GCM,data:fR4fH6NqwtHI8aebEwjUn5JMoy3q3GXgu/dREe8JK7yRBIOhJ8BKuw==,iv:fQqLRYCN/7zhpHzYxMcn8q1aA7x4qd3qWGgrFWn2E/U=,tag:GJ1muJG755ch/84Sgcf2Vw==,type:str]
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ in
|
|||||||
efiSupport = true;
|
efiSupport = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
kernelPackages = pkgs.linuxPackages; # default kernel of pkgs
|
kernelPackages = pkgs.linuxPackages_6_12;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
wantedBy = [ "timers.target" ];
|
wantedBy = [ "timers.target" ];
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
OnBootSec = "40m";
|
OnBootSec = "40m";
|
||||||
OnUnitActiveSec = "24h";
|
OnUnitActiveSec = "12h";
|
||||||
Unit = "nx_cal_dicos.service";
|
Unit = "nx_cal_dicos.service";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -26,9 +26,9 @@ from ics.event import datetime
|
|||||||
NETTO_STUNDE = 18.46
|
NETTO_STUNDE = 18.46
|
||||||
WEEKLY = 12
|
WEEKLY = 12
|
||||||
|
|
||||||
week_dict = {}
|
# week_dict = {}
|
||||||
latest_week = 0
|
# latest_week = 0
|
||||||
latest_goal = WEEKLY
|
# latest_goal = WEEKLY
|
||||||
deficit = 0
|
deficit = 0
|
||||||
|
|
||||||
def fraction_to_unicode(frac):
|
def fraction_to_unicode(frac):
|
||||||
@@ -51,10 +51,10 @@ def fraction_to_unicode(frac):
|
|||||||
|
|
||||||
def modify_event(event):
|
def modify_event(event):
|
||||||
"""Modify the event if it contains 'DICOS' in the SUMMARY."""
|
"""Modify the event if it contains 'DICOS' in the SUMMARY."""
|
||||||
global week_dict
|
# global week_dict
|
||||||
global latest_goal
|
# global latest_goal
|
||||||
global latest_week
|
# global latest_week
|
||||||
global deficit
|
# global deficit
|
||||||
|
|
||||||
if event.name is not None and "DICOS" in event.name:
|
if event.name is not None and "DICOS" in event.name:
|
||||||
length = (event.end - event.begin).seconds / 3600
|
length = (event.end - event.begin).seconds / 3600
|
||||||
@@ -63,26 +63,29 @@ def modify_event(event):
|
|||||||
# Calculate total hours for DICOS events in the same week
|
# Calculate total hours for DICOS events in the same week
|
||||||
year, week, _ = event.begin.isocalendar()
|
year, week, _ = event.begin.isocalendar()
|
||||||
|
|
||||||
if week != latest_week:
|
# if week != latest_week:
|
||||||
try:
|
# try:
|
||||||
deficit = latest_goal - week_dict[f"{year}_{latest_week}"]
|
# deficit = latest_goal - week_dict[f"{year}_{latest_week}"]
|
||||||
except KeyError:
|
# except KeyError:
|
||||||
deficit = 0
|
# deficit = 0
|
||||||
|
|
||||||
week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0)
|
# week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0)
|
||||||
|
|
||||||
progress = week_dict[f"{year}_{week}"]
|
# progress = week_dict[f"{year}_{week}"]
|
||||||
goal = WEEKLY + deficit
|
# goal = WEEKLY + deficit
|
||||||
|
|
||||||
if week != latest_week:
|
# if week != latest_week:
|
||||||
latest_goal = goal
|
# latest_goal = goal
|
||||||
latest_week = week
|
# latest_week = week
|
||||||
|
|
||||||
new_description = [event.description.split("\n")[0] or "::"]
|
try:
|
||||||
|
new_description = [event.description.split("\n")[0]]
|
||||||
|
except AttributeError:
|
||||||
|
new_description = ["::"]
|
||||||
new_description.append("")
|
new_description.append("")
|
||||||
new_description.append(f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}€")
|
new_description.append(f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}€")
|
||||||
new_description.append(f"This weeks porgress: ({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})")
|
# new_description.append(f"This weeks porgress: ({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})")
|
||||||
new_description.append(f"This weeks deficit: {fraction_to_unicode(deficit)}")
|
# new_description.append(f"You're {fraction_to_unicode(abs(deficit))}h in the {'plus' if deficit < 0 else 'minus'} this week.")
|
||||||
|
|
||||||
event.description = "\n".join(new_description)
|
event.description = "\n".join(new_description)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{ pkgs, hyper, ... }:
|
{ pkgs, hyper, ... }:
|
||||||
# lib.mkIf (host == "NxNORTH" || host == "NxACE")
|
pkgs.lib.mkIf (hyper.host == "NxNORTH" || hyper.host == "NxACE")
|
||||||
pkgs.lib.mkIf (hyper.host == "NxNORTH")
|
|
||||||
{
|
{
|
||||||
programs = {
|
programs = {
|
||||||
steam = {
|
steam = {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ pkgs.lib.mkIf hyper.nvidia.enable
|
|||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
|
|
||||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
};
|
};
|
||||||
graphics = {
|
graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ let dns-user = "cloudflare"; in
|
|||||||
sub6 = "b8082b7afe9e80971fc9f9dda16ec284";
|
sub6 = "b8082b7afe9e80971fc9f9dda16ec284";
|
||||||
ssh = "c0f14f17f32d6595c202f041dd836eb3";
|
ssh = "c0f14f17f32d6595c202f041dd836eb3";
|
||||||
ssh6 = "f1ecb2d9d0522d4eec06437688ca76da";
|
ssh6 = "f1ecb2d9d0522d4eec06437688ca76da";
|
||||||
|
dev = "80e76834acc9243696d9763759b22147";
|
||||||
};
|
};
|
||||||
passord-file-path = config.sops.secrets."nx2site/cloudflare/global-api-key".path;
|
passord-file-path = config.sops.secrets."nx2site/cloudflare/global-api-key".path;
|
||||||
in pkgs.writers.writePython3Bin "dyn_dns" {
|
in pkgs.writers.writePython3Bin "dyn_dns" {
|
||||||
@@ -84,13 +85,14 @@ def main():
|
|||||||
|
|
||||||
# Perform DNS updates
|
# Perform DNS updates
|
||||||
# https://developers.cloudflare.com/api/operations/dns-records-for-a-zone-update-dns-record
|
# https://developers.cloudflare.com/api/operations/dns-records-for-a-zone-update-dns-record
|
||||||
print(f"${hyper.domain}: {update_record(record_id="${record_id.base}", record_name="${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}")
|
print(f"${hyper.domain}: {update_record(record_id="${record_id.base}", record_name="${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}", end=", ")
|
||||||
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub}", record_name="*.${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}")
|
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub}", record_name="*.${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}", end=", ")
|
||||||
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh}", record_name="ssh.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}")
|
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh}", record_name="ssh.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}", end=", ")
|
||||||
|
print(f"dev.${hyper.domain}: {update_record(record_id="${record_id.dev}", record_name="dev.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}", end=", ")
|
||||||
|
|
||||||
print(f"${hyper.domain}: {update_record(record_id="${record_id.base6}", record_name="${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}")
|
print(f"${hyper.domain}: {update_record(record_id="${record_id.base6}", record_name="${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}", end=", ")
|
||||||
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub6}", record_name="*.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}")
|
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub6}", record_name="*.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}", end=", ")
|
||||||
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh6}", record_name="ssh.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}")
|
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh6}", record_name="ssh.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}", end="")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ let git-user = "git"; in
|
|||||||
domain = "git.${hyper.domain}";
|
domain = "git.${hyper.domain}";
|
||||||
owner = "nx2";
|
owner = "nx2";
|
||||||
repo = "Gitea-Pitch-Black";
|
repo = "Gitea-Pitch-Black";
|
||||||
rev = "0.1.0";
|
rev = "0.1.1";
|
||||||
hash = "sha256-pU4YhgcPOT3PTcmBTjNE3FcyJgl39JGP41ckhRUKN7Y=";
|
hash = "sha256-40LzF/DobikNzrFjCSzvCT0g4x/CKS2JUWTf/CyJoJs=";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
"gitea-theme" = /* bash */ ''
|
"gitea-theme" = /* bash */ ''
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
};
|
};
|
||||||
certs = {
|
certs = {
|
||||||
"${hyper.domain}" = {
|
"${hyper.domain}" = {
|
||||||
extraDomainNames = builtins.map (subd: "${subd}.${hyper.domain}") [ "sync" "dev" ];
|
extraDomainNames = builtins.map (subd: "${subd}.${hyper.domain}") [ "sync" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
# appendConfig = '''';
|
# appendConfig = '''';
|
||||||
clientMaxBodySize = "20m";
|
clientMaxBodySize = "20m";
|
||||||
defaultHTTPListenPort = 80;
|
defaultHTTPListenPort = 80;
|
||||||
defaultListenAddresses = [ "0.0.0.0" ] ++ lib.optional config.networking.enableIPv6 "[::0]";
|
defaultListenAddresses = [ "0.0.0.0" ] ++ pkgs.lib.optional config.networking.enableIPv6 "[::0]";
|
||||||
defaultListen = dl;
|
defaultListen = dl;
|
||||||
defaultMimeTypes = "${pkgs.mailcap}/etc/nginx/mime.types";
|
defaultMimeTypes = "${pkgs.mailcap}/etc/nginx/mime.types";
|
||||||
defaultSSLListenPort = 443;
|
defaultSSLListenPort = 443;
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
listen = dl;
|
listen = dl;
|
||||||
locations = { "/" = { proxyPass = "http://127.0.0.1:8441"; }; };
|
locations = { "/" = { proxyPass = "http://127.0.0.1:8441"; }; };
|
||||||
};
|
};
|
||||||
"dav.${hyper.domain}" = lib.mkIf config.services.radicale.enable (vh // {
|
"dav.${hyper.domain}" = pkgs.lib.mkIf config.services.radicale.enable (vh // {
|
||||||
listen = dl;
|
listen = dl;
|
||||||
locations = { "/" = { proxyPass = "http://127.0.0.1:5232"; }; };
|
locations = { "/" = { proxyPass = "http://127.0.0.1:5232"; }; };
|
||||||
});
|
});
|
||||||
@@ -150,16 +150,22 @@
|
|||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"pnx.${hyper.domain}" = vh // {
|
||||||
|
listen = dl;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://127.0.0.1:8040";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"wip.${hyper.domain}" = vh // {
|
||||||
|
listen = dl;
|
||||||
|
};
|
||||||
"dev.${hyper.domain}" = vh // {
|
"dev.${hyper.domain}" = vh // {
|
||||||
listen = dl ++ [
|
listen = dl;
|
||||||
# { addr = "0.0.0.0"; port = 8000; ssl = true; }
|
locations."/" = {
|
||||||
# { addr = "[::0]"; port = 8000; ssl = true; }
|
proxyPass = "http://127.0.0.1:8080";
|
||||||
];
|
proxyWebsockets = true;
|
||||||
root = "/var/lib/hugo/nx2site/public";
|
};
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:8000";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
# is done atomatically
|
# is done atomatically
|
||||||
# "cal.${hyper.domain}" = vh // {
|
# "cal.${hyper.domain}" = vh // {
|
||||||
|
|||||||
Reference in New Issue
Block a user