Compare commits

..

4 commits

Author SHA1 Message Date
Vinzenz Schroeter
da3ac92eb6 headscale: enable DERP 2026-01-25 12:23:49 +01:00
Vinzenz Schroeter
2a68f77860 headscale/blog: fix url, force ssl, proxy websockets 2026-01-25 12:23:49 +01:00
Vinzenz Schroeter
af4e09ebd7 vpn2: split nginx config 2026-01-25 12:23:49 +01:00
Vinzenz Schroeter
56b1e85109 add headscale 2026-01-25 12:23:49 +01:00
38 changed files with 445 additions and 492 deletions

84
flake.lock generated
View file

@ -186,11 +186,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"type": "github"
},
"original": {
@ -284,11 +284,11 @@
]
},
"locked": {
"lastModified": 1770260404,
"narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
"lastModified": 1768949235,
"narHash": "sha256-TtjKgXyg1lMfh374w5uxutd6Vx2P/hU81aEhTxrO2cg=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
"rev": "75ed713570ca17427119e7e204ab3590cc3bf2a5",
"type": "github"
},
"original": {
@ -332,11 +332,11 @@
]
},
"locked": {
"lastModified": 1769799857,
"narHash": "sha256-88IFXZ7Sa1vxbz5pty0Io5qEaMQMMUPMonLa3Ls/ss4=",
"lastModified": 1768908532,
"narHash": "sha256-HIdLXEFaUVE8FiaCPJbCfBMsnF+mVtDub8Jwj2BD+mk=",
"owner": "nix-community",
"repo": "naersk",
"rev": "9d4ed44d8b8cecdceb1d6fd76e74123d90ae6339",
"rev": "8d97452673640eb7fabe428e8b6a425bc355008b",
"type": "github"
},
"original": {
@ -359,11 +359,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1770400632,
"narHash": "sha256-TsOt49sYfzmxSTj2wKHKK2ZToCByLJLxPbwbu1brDt0=",
"lastModified": 1769170609,
"narHash": "sha256-LiyaKNga2z/iG4pNr86iQLySEDoOytEzTCblxzRjnCk=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "652dbeb0ac2c481dee5b57be972c6fd6feb38adc",
"rev": "08d6e6adf34b0af12be7eaeacc0b4c1a8580b3da",
"type": "github"
},
"original": {
@ -392,11 +392,11 @@
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1770394936,
"narHash": "sha256-Pa0fkyLYUR+pZh7phPENDUo4mJIweaAm0uV83iUUlX8=",
"lastModified": 1768678265,
"narHash": "sha256-Ub8eed4DsfIDWyg30xEe+8bSxL/z5Af/gCjmvJ0V/Hs=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "549148d27779d024255a84535b42b947f1c2a113",
"rev": "d7184a04b904e07113f4623610775ae78d32394c",
"type": "github"
},
"original": {
@ -427,11 +427,11 @@
]
},
"locked": {
"lastModified": 1770431965,
"narHash": "sha256-vVMfSjrmeYGfT+dj5eLZ8xNnJP62gvdW32IFQk606wM=",
"lastModified": 1769134548,
"narHash": "sha256-16UWbfkIEaG728vwCdXM5C/8f1NLqBwZc039p8Yj9CA=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "2b53743c0c65c6c525952fce502fe6eaa0913300",
"rev": "969bb9a90fa1365e8b5028d1b67dbd439b268675",
"type": "github"
},
"original": {
@ -463,11 +463,11 @@
]
},
"locked": {
"lastModified": 1769813415,
"narHash": "sha256-nnVmNNKBi1YiBNPhKclNYDORoHkuKipoz7EtVnXO50A=",
"lastModified": 1764234087,
"narHash": "sha256-NHF7QWa0ZPT8hsJrvijREW3+nifmF2rTXgS2v0tpcEA=",
"owner": "nix-community",
"repo": "nixos-generators",
"rev": "8946737ff703382fda7623b9fab071d037e897d5",
"rev": "032a1878682fafe829edfcf5fdfad635a2efe748",
"type": "github"
},
"original": {
@ -478,11 +478,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1770464364,
"narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=",
"lastModified": 1769089682,
"narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457",
"rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
"type": "github"
},
"original": {
@ -494,11 +494,11 @@
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1769909678,
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "72716169fe93074c333e8d0173151350670b824c",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"type": "github"
},
"original": {
@ -509,11 +509,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1770380644,
"narHash": "sha256-P7dWMHRUWG5m4G+06jDyThXO7kwSk46C1kgjEWcybkE=",
"lastModified": 1768875095,
"narHash": "sha256-dYP3DjiL7oIiiq3H65tGIXXIT1Waiadmv93JS0sS+8A=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ae67888ff7ef9dff69b3cf0cc0fbfbcd3a722abe",
"rev": "ed142ab1b3a092c4d149245d0c4126a5d7ea00b0",
"type": "github"
},
"original": {
@ -549,11 +549,11 @@
]
},
"locked": {
"lastModified": 1770486118,
"narHash": "sha256-eto9txBNwwlQmi445yHZ+x+7mMbyYnbcSn5jG+WJpQU=",
"lastModified": 1769190062,
"narHash": "sha256-HXy1M80RWBW7cIIMQ/bBV/pMa3NmK6MYOOz/kA4bHIw=",
"owner": "nix-community",
"repo": "NUR",
"rev": "efe9288eff027bbef3bc02ff23937751d20f64c1",
"rev": "82023efed13ef3c1bfe99f0cd669139b4a2d2694",
"type": "github"
},
"original": {
@ -747,11 +747,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1770308890,
"narHash": "sha256-7bx8Bn9B2g/loBaz+uLwdKI2rUW+RhDPyP/MqAgvrxU=",
"lastModified": 1768493544,
"narHash": "sha256-9qk2W/6GJWLAFXNruK/zdJ0bm3bfP50vJFbtuAjQpa4=",
"owner": "nix-community",
"repo": "stylix",
"rev": "7e7fa955abac04a8e118b1cedf930a8fd41c34a6",
"rev": "362306faaa7459bebf8eabf135879785f3da9bd2",
"type": "github"
},
"original": {
@ -864,11 +864,11 @@
]
},
"locked": {
"lastModified": 1770228511,
"narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=",
"lastModified": 1768158989,
"narHash": "sha256-67vyT1+xClLldnumAzCTBvU0jLZ1YBcf4vANRWP3+Ak=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "337a4fe074be1042a35086f15481d763b8ddc0e7",
"rev": "e96d59dff5c0d7fddb9d113ba108f03c3ef99eca",
"type": "github"
},
"original": {
@ -897,11 +897,11 @@
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1770167989,
"narHash": "sha256-rE2WTxKHe3KMG/Zr5YUNeKHkZfWwSFl7yJXrOKnunHg=",
"lastModified": 1768765571,
"narHash": "sha256-C1JbyJ3ftogmN3vmLNfyPtnJw2wY64TiUTIhFtk1Leg=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "0947c4685f6237d4f8045482ce0c62feab40b6c4",
"rev": "ed1cef792b4def3321ff9ab5479df09609f17a69",
"type": "github"
},
"original": {

View file

@ -105,16 +105,16 @@
}:
let
devices = {
muede-lpt2 = {
vinzenz-lpt2 = {
system = "x86_64-linux";
home-manager-users = {
inherit (self.homeConfigurations) muede;
inherit (self.homeConfigurations) vinzenz;
};
};
muede-pc2 = {
vinzenz-pc2 = {
system = "x86_64-linux";
home-manager-users = {
inherit (self.homeConfigurations) muede;
inherit (self.homeConfigurations) vinzenz;
};
};
ronja-pc = {
@ -197,7 +197,7 @@
homeModules = importModuleDir ./homeModules;
homeConfigurations = {
muede = ./homeConfigurations/muede;
vinzenz = ./homeConfigurations/vinzenz;
ronja = ./homeConfigurations/ronja;
};

View file

@ -1,330 +0,0 @@
/* #region stylix overrides*/
.modules-left #workspaces button,
.modules-left #workspaces button.focused,
.modules-left #workspaces button.active,
.modules-center #workspaces button,
.modules-center #workspaces button.focused,
.modules-center #workspaces button.active,
.modules-right #workspaces button,
.modules-right #workspaces button.focused,
.modules-right #workspaces button.active {
border-bottom: unset;
}
/* #endregion */
* {
font-family: monospace;
font-size: 13px;
}
window#waybar {
transition-property: background-color;
transition-duration: 0.5s;
/* Gradient border spanning the entire waybar window */
border-bottom: 3px solid transparent;
background-clip: padding-box, border-box;
background-origin: padding-box, border-box;
background-image:
linear-gradient(135deg, @base00, @base01),
linear-gradient(135deg, @base0C, @base09);
}
/* Common pill styling for all widgets */
#clock,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#mode,
#scratchpad,
#mpd,
#custom-weather,
#battery,
#power-profiles-daemon,
#idle_inhibitor,
#custom-swaync,
#bluetooth,
#mpris,
#upower,
#workspaces,
#window,
#tray,
#custom-wlogout,
#privacy-item {
margin: 0px 4px 6px;
padding: 0px 8px;
background: linear-gradient(135deg, @base02, @base01);
border-radius: 15px;
border: 2px solid;
transition: all 0.3s ease;
}
/* special treatment for weird sized widgets */
#custom-wlogout,
#power-profiles-daemon,
#idle_inhibitor {
padding: 0px 10px 0px 8px;
}
#workspaces {
padding-left: 0;
padding-right: 0;
}
/* Individual widget colors */
#workspaces,
#window,
#tray {
border-color: @base0D;
}
#workspaces button {
padding: 0 6px;
background-color: transparent;
color: @base05;
border-radius: 15px;
border: none;
transition: all 0.3s ease;
}
#workspaces button:hover {
background: @base03;
}
#workspaces button.focused,
#workspaces button.active {
background-color: @base03;
color: @base07;
}
#workspaces button.urgent {
background-color: @base08;
color: @base00;
}
#clock {
color: @base07;
border-color: @base0D;
}
#cpu {
color: @base09;
border-color: @base09;
}
#memory {
color: @base0E;
border-color: @base0E;
}
#disk {
color: @base0D;
border-color: @base0D;
}
#temperature {
color: @base08;
border-color: @base08;
}
#backlight {
color: @base0A;
border-color: @base0A;
}
#network {
color: @base0B;
border-color: @base0B;
}
#pulseaudio,
#wireplumber {
color: @base0D;
border-color: @base0D;
}
#custom-media {
color: @base0E;
border-color: @base0E;
}
#mode {
color: @base05;
border-color: @base03;
box-shadow: inset 0 -3px @base05;
}
#mpd {
color: @base0E;
border-color: @base0E;
}
#custom-weather {
color: @base0B;
border-color: @base0B;
}
#battery,
#power-profiles-daemon,
#idle_inhibitor {
color: @base05;
border-color: @base03;
}
#custom-swaync {
color: @base0E;
border-color: @base0E;
}
#bluetooth {
color: @base0D;
border-color: @base0D;
}
#mpris {
color: @base0E;
border-color: @base0E;
}
#upower {
color: @base0B;
border-color: @base0B;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
/* Battery states with colored glows */
#battery.charging {
box-shadow: 0 0 6px rgba(168, 201, 255, 0.6);
border-color: @base0B;
color: @base0B;
}
#battery.warning:not(.charging) {
box-shadow: 0 0 6px rgba(209, 98, 164, 0.6);
border-color: @base0A;
color: @base0A;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.critical:not(.charging) {
box-shadow: 0 0 6px rgba(243, 139, 168, 0.8);
border-color: @base08;
color: @base08;
animation-name: blink;
animation-duration: 0.5s;
/* Using steps() instead of linear as a timing function to limit cpu usage */
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
/* Bluetooth connected state */
#bluetooth.connected {
box-shadow: 0 0 6px rgba(137, 180, 250, 0.5);
}
/* Power profiles with state-appropriate glows */
#power-profiles-daemon.performance {
box-shadow: 0 0 6px rgba(243, 139, 168, 0.6);
border-color: @base08;
color: @base08;
}
#power-profiles-daemon.balanced {
box-shadow: 0 0 6px rgba(137, 180, 250, 0.6);
border-color: @base0D;
color: @base0D;
}
#power-profiles-daemon.power-saver {
box-shadow: 0 0 6px rgba(168, 201, 255, 0.6);
border-color: @base0B;
color: @base0B;
}
/* Idle inhibitor with state glow */
#idle_inhibitor.activated {
box-shadow: 0 0 6px rgba(137, 180, 250, 0.6);
border-color: @base0D;
color: @base0D;
}
/* MPD states with glows */
#mpd.playing {
box-shadow: 0 0 6px rgba(168, 201, 255, 0.5);
border-color: @base0B;
color: @base0B;
}
#mpd.paused {
box-shadow: 0 0 6px rgba(203, 166, 247, 0.5);
border-color: @base0E;
color: @base0E;
}
#mpd.disconnected,
#mpd.stopped {
color: @base04;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
box-shadow: 0 0 6px rgba(243, 139, 168, 0.8);
border-color: @base08;
}
#privacy {
padding: 0;
}
#privacy-item.screenshare {
box-shadow: 0 0 6px rgba(209, 98, 164, 0.6);
border-color: @base0A;
color: @base0A;
}
#privacy-item.audio-in {
box-shadow: 0 0 6px rgba(168, 201, 255, 0.6);
border-color: @base0B;
color: @base0B;
}
#privacy-item.audio-out {
box-shadow: 0 0 6px rgba(137, 180, 250, 0.6);
border-color: @base0D;
color: @base0D;
}
/* Custom wlogout button */
#custom-wlogout {
color: @base08;
border-color: @base08;
}
#custom-wlogout:hover {
box-shadow: 0 0 6px rgba(243, 139, 168, 0.5);
}

View file

@ -56,7 +56,7 @@
from = pink_dark;
to = pink_light;
};
gap-size = 6;
gap-size = 8;
in
{
background-color = "transparent";

View file

@ -33,6 +33,9 @@
style_user = "bg:color_r fg:text_r";
style_root = "bold bg:color_r fg:text_r";
show_always = true;
aliases = {
"vinzenz" = "müde";
};
};
os = {
disabled = false;
@ -44,8 +47,8 @@
format = "$hostname";
ssh_symbol = "";
aliases = {
"muede-lpt2" = "lpt";
"muede-pc2" = "pc";
"vinzenz-lpt2" = "lpt";
"vinzenz-pc2" = "pc";
};
};
container = {

View file

@ -0,0 +1,223 @@
/* #region stylix overrides*/
.modules-left #workspaces button,
.modules-left #workspaces button.focused,
.modules-left #workspaces button.active,
.modules-center #workspaces button,
.modules-center #workspaces button.focused,
.modules-center #workspaces button.active,
.modules-right #workspaces button,
.modules-right #workspaces button.focused,
.modules-right #workspaces button.active {
border-bottom: unset;
}
/* #endregion */
* {
font-family: sans-serif;
}
window#waybar {
transition-property: background-color;
transition-duration: 0.5s;
background: transparent;
}
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.termite {
background-color: #3f3f3f;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
.modules-left,
.modules-center,
.modules-right {
border: 0px solid #fff;
padding-bottom: 4px;
background-clip: content-box, padding-box;
background-image:
linear-gradient(90deg, @base01, @base01),
linear-gradient(90deg, #a30262, #4a6bb1);
}
.modules-center,
.modules-left {
border-bottom-right-radius: 15px;
padding-right: 4px;
}
.modules-center,
.modules-right {
border-bottom-left-radius: 15px;
padding-left: 4px;
}
widget {
margin: 0px 4px;
}
#workspaces,
#window,
#tray {
padding: 4px 6px;
margin-left: 6px;
margin-right: 6px;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #ffffff;
border-radius: 15px;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused,
#workspaces button.active {
background-color: @base03;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727d;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: #ffffff;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
color: #f53c3c;
}
#power-profiles-daemon.balanced {
color: #2980b9;
}
#power-profiles-daemon.power-saver {
color: #2ecc71;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#language {
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
background-color: #cf5700;
}
#privacy-item.audio-in {
background-color: #1ca000;
}
#privacy-item.audio-out {
background-color: #0069d4;
}

View file

@ -37,24 +37,37 @@
"custom/swaync"
];
modules-right = [
"mpris"
"wireplumber"
"bluetooth"
"backlight"
"network"
"power-profiles-daemon"
"idle_inhibitor"
"group/system-tray"
#"image"
"custom/weather"
"temperature"
"cpu"
"memory"
"disk"
# "battery"
"upower"
"group/status-infos"
"custom/wlogout"
];
"group/system-tray" = {
orientation = "inherit";
modules = [
"mpris"
"wireplumber"
"bluetooth"
"backlight"
"network"
"power-profiles-daemon"
"idle_inhibitor"
];
};
"group/status-infos" = {
orientation = "inherit";
modules = [
"custom/weather"
"temperature"
"cpu"
"memory"
"disk"
# "battery"
"upower"
];
};
"niri/workspaces" = {
format = "{icon}";
};
@ -63,17 +76,17 @@
icon = true;
};
network = {
#interface = "wlo1";
interface = "wlo1";
format = "{ifname}";
format-wifi = " {essid}";
format-ethernet = "󰈀";
format-linked = "󱘖";
format-disconnected = "󰣽";
format-wifi = " ";
format-ethernet = "󰈀 ";
format-linked = "󱘖 ";
format-disconnected = "󰣽 ";
tooltip-format = "{ifname} via {gwaddr}";
tooltip-format-wifi = "{essid} ({signalStrength}%)";
tooltip-format-ethernet = "{ifname} {ipaddr}/{cidr}";
tooltip-format-disconnected = "Disconnected";
max-length = 20;
max-length = 50;
};
clock = {
format = "{:%a, %d. %b %H:%M}";
@ -104,7 +117,7 @@
icon-size = 14;
};
battery = {
format = "{icon} {capacity}%";
format = "{capacity}% {icon}";
format-icons = [
"󰂎" # 0%
"󰁺" # 10%
@ -163,20 +176,19 @@
};
cpu = {
interval = 1;
format = " {usage:>2}%@{avg_frequency:>3.2f}";
format = "{usage:3}%@{avg_frequency:4}";
};
disk = {
format = " {percentage_free}% {specific_total:>2.1f}";
unit = "TB";
format = "{free}/{total}";
};
"custom/wlogout" = {
format = "";
format = " ";
tooltip = false;
on-click = "wlogout";
min-width = 20;
};
idle_inhibitor = {
format = "{icon}";
format = "{icon} ";
format-icons = {
activated = "";
deactivated = "";
@ -201,7 +213,7 @@
# on-click = "playerctl play-pause";
# };
mpris = {
format = "{status_icon} {player}";
format = "{status_icon} {player} ";
tooltip-format = "{player} ({status_icon} {status}) {dynamic}";
status-icons = {
playing = "";
@ -210,7 +222,7 @@
};
};
memory = {
format = " {}%";
format = "{}% ";
};
power-profiles-daemon = {
format = "{icon}";
@ -224,7 +236,7 @@
};
};
wireplumber = {
format = "{icon} {volume}%";
format = "{volume}% {icon}";
format-muted = "";
format-icons = [
""
@ -233,16 +245,16 @@
];
};
temperature = {
format = " {temperatureC}°C";
format = "{temperatureC}°C ";
};
tray = {
spacing = 4;
show-passive-items = true;
};
bluetooth = {
format = " {status}";
format-connected = " {device_alias}";
format-connected-battery = " {device_alias} {device_battery_percentage}%";
format = " {status} ";
format-connected = " {device_alias} ";
format-connected-battery = " {device_alias} {device_battery_percentage}% ";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
@ -254,7 +266,7 @@
in
{
tooltip = true;
format = "{icon} {0}";
format = "{icon} {0} ";
format-icons = {
notification = "󱅫";
none = "󰂜";
@ -272,7 +284,7 @@
escape = true;
};
"custom/weather" = {
format = "{}";
format = "{}°";
tooltip = true;
interval = 3600;
exec = "${lib.getBin pkgs.wttrbar}/bin/wttrbar --nerd";

View file

@ -2,7 +2,7 @@
{
config.programs.zsh = {
initContent = ''
export PATH=$PATH:$HOME/.cargo/bin
export PATH=$PATH:/home/vinzenz/.cargo/bin
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

View file

@ -6,7 +6,7 @@
...
}:
{
options.muede.gnome-extensions =
options.vinzenz.gnome-extensions =
let
mkDefaultEnabledOption =
name:
@ -40,7 +40,7 @@
config =
let
cfg = config.muede.gnome-extensions;
cfg = config.vinzenz.gnome-extensions;
in
lib.mkIf cfg.enable (
lib.mkMerge [

View file

@ -14,9 +14,9 @@
users.users = {
root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv pc2 home roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC lpt2-roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv vinzenz-pc2 home roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC vinzenz-lpt2-roaming"
];
};
};

View file

@ -0,0 +1,43 @@
{ pkgs, ... }:
let
blog-domain-socket = "/run/nginx/blog.sock";
anubis-domain-socket = "/run/anubis/anubis-main/anubis.sock";
anubis-metrics-socket = "/run/anubis/anubis-main/anubis-metrics.sock";
in
{
systemd.services = {
nginx.serviceConfig.SupplementaryGroups = [ "anubis" ];
anubis-main.serviceConfig.SupplementaryGroups = [ "nginx" ];
};
services = {
nginx.virtualHosts = {
"zerforschen.plus" = {
enableACME = true;
forceSSL = true;
locations = {
"/_metrics".proxyPass = "http://unix:" + anubis-metrics-socket + ":/metrics";
"/".proxyPass = "http://unix:" + anubis-domain-socket;
};
};
"blog-in-anubis" = {
root = pkgs.zerforschen-plus-content;
listen = [
{
addr = "unix:" + blog-domain-socket;
}
];
};
};
anubis.instances.main = {
enable = true;
settings = {
BIND = anubis-domain-socket;
TARGET = "unix://" + blog-domain-socket;
METRICS_BIND = anubis-metrics-socket;
};
};
};
}

View file

@ -2,6 +2,8 @@
imports = [
./hardware.nix
./nginx.nix
./headscale.nix
./blog.nix
];
config = {
@ -12,9 +14,9 @@
users.users.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICdYqY3Y1/f1bsAi5Qfyr/UWuX9ixu96IeAlhoQaJkbf"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv pc2 home roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC lpt2-roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv vinzenz-pc2 home roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC vinzenz-lpt2-roaming"
];
system.autoUpgrade.allowReboot = true;

View file

@ -0,0 +1,43 @@
let
headscale-port = 8668;
in
{
# sudo tailscale up --reset --force-reauth --login-server https://uplink.darkest.space --operator=$USER
services = {
headscale = {
enable = true;
address = "localhost";
port = headscale-port;
settings = {
server_url = "https://uplink.darkest.space/";
dns = {
override_local_dns = false;
base_domain = "high-gravity.space";
};
derp = {
server = {
enabled = true;
verify_clients = true;
stun_listen_addr = "0.0.0.0:3478";
ipv4 = "78.46.242.90";
ipv6 = "2a01:4f8:c013:65dd::1";
};
urls = [ ];
};
};
};
nginx.virtualHosts."uplink.darkest.space" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://localhost:${builtins.toString headscale-port}";
proxyWebsockets = true;
};
};
};
# for DERP
networking.firewall.allowedUDPPorts = [ 3478 ];
}

View file

@ -1,62 +1,19 @@
{ pkgs, ... }:
let
blog-domain-socket = "/run/nginx/blog.sock";
anubis-domain-socket = "/run/anubis/anubis-main/anubis.sock";
anubis-metrics-socket = "/run/anubis/anubis-main/anubis-metrics.sock";
in
{
security.acme = {
acceptTerms = true;
defaults.email = "acme@zerforschen.plus";
};
systemd.services = {
nginx.serviceConfig.SupplementaryGroups = [ "anubis" ];
anubis-main.serviceConfig.SupplementaryGroups = [ "nginx" ];
};
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
virtualHosts = {
"zerforschen.plus" = {
addSSL = true;
enableACME = true;
locations = {
"/_metrics".proxyPass = "http://unix:" + anubis-metrics-socket + ":/metrics";
"/".proxyPass = "http://unix:" + anubis-domain-socket;
};
};
"blog-in-anubis" = {
root = pkgs.zerforschen-plus-content;
listen = [
{
addr = "unix:" + blog-domain-socket;
}
];
};
};
};
anubis.instances.main = {
enable = true;
settings = {
BIND = anubis-domain-socket;
TARGET = "unix://" + blog-domain-socket;
METRICS_BIND = anubis-metrics-socket;
};
};
services.nginx = {
enable = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
};
networking.firewall.allowedTCPPorts = [
80
443
5201
];
}

View file

@ -11,7 +11,7 @@
self.nixosModules.gnome
self.nixosModules.steam
self.nixosModules.wine-gaming
self.nixosModules.muede-desktop-settings
self.nixosModules.vinzenz-desktop-settings
];
config = {

View file

@ -2,12 +2,12 @@
{
imports = [
./hardware.nix
self.nixosModules.user-muede
self.nixosModules.user-vinzenz
self.nixosModules.gnome
self.nixosModules.wine-gaming
self.nixosModules.steam
self.nixosModules.podman
self.nixosModules.muede-desktop-settings
self.nixosModules.vinzenz-desktop-settings
self.nixosModules.intel-graphics
self.nixosModules.secure-boot
];
@ -27,9 +27,9 @@
# Configure console keymap
console.keyMap = "de";
users.users.muede.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv pc2 home roaming"
users.users.vinzenz.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1CRn4yYTL4XUdCebE8Z4ZeuMujBjorTdWifg911EOv vinzenz-pc2 home roaming"
];
programs = {

View file

@ -2,15 +2,15 @@
{
imports = [
./hardware.nix
# ./vscode-server.nix
# ./hass.nix
./vscode-server.nix
./hass.nix
self.nixosModules.user-muede
self.nixosModules.user-vinzenz
self.nixosModules.gnome
self.nixosModules.wine-gaming
self.nixosModules.steam
self.nixosModules.podman
self.nixosModules.muede-desktop-settings
self.nixosModules.vinzenz-desktop-settings
self.nixosModules.amd-graphics
self.nixosModules.secure-boot
];
@ -30,10 +30,10 @@
# Configure console keymap
console.keyMap = "de";
users.users.muede.openssh.authorizedKeys.keys = [
users.users.vinzenz.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrY6tcgnoC/xbgL7vxSjddEY9MBxRXe9n2cAHt88/TT home roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC lpt2-roaming"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJUpbpB3KEKVoKWsKoar9J4RNah8gmQoSH6jQEw5dY vinzenz-pixel-JuiceSSH"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNpLDmctyqGpow/ElQvdhY4BLBPS/sigDJ1QEcC7wC vinzenz-lpt2-roaming"
];
environment.systemPackages = with pkgs; [ lact ];

View file

@ -5,7 +5,7 @@
...
}:
{
options.muede = {
options.vinzenz = {
keep-gnome-default-apps = lib.mkEnableOption "keep gnome default apps";
};
@ -37,7 +37,7 @@
gpaste.enable = true;
};
}
(lib.mkIf (!config.muede.keep-gnome-default-apps) {
(lib.mkIf (!config.vinzenz.keep-gnome-default-apps) {
environment.gnome.excludePackages = with pkgs; [
cheese # photo booth
epiphany # web browser

View file

@ -1,10 +1,10 @@
{ pkgs, ... }:
{
users.users.muede = {
users.users.vinzenz = {
isNormalUser = true;
uid = 1000;
name = "muede";
name = "vinzenz";
description = "müde";
home = "/home/vinzenz";
extraGroups = [
"networkmanager"
"wheel"
@ -21,7 +21,7 @@
autoSubUidGidRange = true;
};
nix.settings.trusted-users = [ "muede" ];
nix.settings.trusted-users = [ "vinzenz" ];
allowedUnfreePackages = [
"rider"