Compare commits

...
10 Commits
Author SHA1 Message Date
ulve 8deacb654a update flake.lock 2026-08-16 09:20:15 +02:00
ulve 4dc26ccc2f upgrade 2026-08-09 10:27:06 +02:00
ulve 74b5b81d06 use codeberg remote for rssdownloader-src input 2026-08-02 10:19:57 +02:00
ulve 2ef012d0b0 use nh for rebuild alias; update noctalia color scheme 2026-08-02 10:10:52 +02:00
ulve 4d51d3d507 fix nixserve authorized key on fractalus 2026-08-02 10:07:06 +02:00
ulve 64cb43daf8 Add ZapZap desktop entry with Wayland override 2026-08-01 20:27:35 +02:00
ulve 981cdd8153 upgrade 2026-08-01 12:07:14 +02:00
ulve af6e5b99cd added rss downloader 2026-08-01 12:03:22 +02:00
ulve b230720ab5 upgrade 2026-07-26 10:36:55 +02:00
ulve b007f6cf1a upgrade 2026-07-26 10:36:38 +02:00
15 changed files with 136 additions and 75 deletions
+15
View File
@@ -0,0 +1,15 @@
[Desktop Entry]
Version=1.0
Name=ZapZap
Comment=WhatsApp Desktop for Linux
Exec=env QT_QPA_PLATFORM=wayland zapzap %u
Icon=com.rtosta.zapzap
Type=Application
Categories=Chat;Network;InstantMessaging;Qt;
Keywords=WhatsApp;Chat;ZapZap;
StartupWMClass=zapzap
MimeType=x-scheme-handler/whatsapp
Terminal=false
SingleMainWindow=true
X-GNOME-UsesNotifications=true
X-GNOME-SingleWindow=true
+9 -9
View File
@@ -1,35 +1,35 @@
layout { layout {
focus-ring { focus-ring {
active-color "#679ce4" active-color "#e367e4"
inactive-color "#101c2d" inactive-color "#2a132a"
urgent-color "#fd4663" urgent-color "#fd4663"
} }
border { border {
active-color "#679ce4" active-color "#e367e4"
inactive-color "#101c2d" inactive-color "#2a132a"
urgent-color "#fd4663" urgent-color "#fd4663"
} }
shadow { shadow {
color "#101c2d70" color "#2a132a70"
} }
tab-indicator { tab-indicator {
active-color "#679ce4" active-color "#e367e4"
inactive-color "#0c428d" inactive-color "#8c0c8d"
urgent-color "#fd4663" urgent-color "#fd4663"
} }
insert-hint { insert-hint {
color "#679ce480" color "#e367e480"
} }
} }
recent-windows { recent-windows {
highlight { highlight {
active-color "#679ce4" active-color "#e367e4"
urgent-color "#fd4663" urgent-color "#fd4663"
} }
} }
+15 -15
View File
@@ -1,25 +1,25 @@
{ {
"mPrimary": "#679ce4", "mPrimary": "#e367e4",
"mOnPrimary": "#080b0d", "mOnPrimary": "#0a060a",
"mSecondary": "#665cd6", "mSecondary": "#d65c9a",
"mOnSecondary": "#181e25", "mOnSecondary": "#251825",
"mTertiary": "#a166cc", "mTertiary": "#cc6667",
"mOnTertiary": "#181e25", "mOnTertiary": "#251825",
"mError": "#fd4663", "mError": "#fd4663",
"mOnError": "#181e25", "mOnError": "#251825",
"mSurface": "#101c2d", "mSurface": "#2a132a",
"mOnSurface": "#f2f2f3", "mOnSurface": "#f3f2f3",
"mSurfaceVariant": "#1a2f4c", "mSurfaceVariant": "#462046",
"mOnSurfaceVariant": "#afb2b6", "mOnSurfaceVariant": "#b6afb6",
"mOutline": "#5f6774", "mOutline": "#756075",
"mShadow": "#101c2d", "mShadow": "#2a132a",
"mHover": "#a166cc", "mHover": "#cc6667",
"mOnHover": "#181e25" "mOnHover": "#251825"
} }
+30 -30
View File
@@ -674,12 +674,12 @@
"appearance": "dark", "appearance": "dark",
"colorScheme": "Gruvbox", "colorScheme": "Gruvbox",
"darkMode": true, "darkMode": true,
"generationMethod": "tonal-spot", "generationMethod": "vibrant",
"paletteColors": [ "paletteColors": [
"#9ccaff", "#e48567",
"#bac8db", "#5ca1d6",
"#d6bee5", "#b4cc66",
"#ffb4ab" "#fd4663"
], ],
"path": "/home/ulve/.config/niri/wallpapers/Anime - Landscape.jpeg", "path": "/home/ulve/.config/niri/wallpapers/Anime - Landscape.jpeg",
"useWallpaperColors": true "useWallpaperColors": true
@@ -688,12 +688,12 @@
"appearance": "dark", "appearance": "dark",
"colorScheme": "Gruvbox", "colorScheme": "Gruvbox",
"darkMode": true, "darkMode": true,
"generationMethod": "tonal-spot", "generationMethod": "vibrant",
"paletteColors": [ "paletteColors": [
"#ffb5a0", "#e48c67",
"#e7bdb2", "#5c87d6",
"#d8c58d", "#aecc66",
"#ffb4ab" "#b56442"
], ],
"path": "/home/ulve/.config/niri/wallpapers/Anime-City-Night.png", "path": "/home/ulve/.config/niri/wallpapers/Anime-City-Night.png",
"useWallpaperColors": true "useWallpaperColors": true
@@ -702,12 +702,12 @@
"appearance": "dark", "appearance": "dark",
"colorScheme": "Gruvbox", "colorScheme": "Gruvbox",
"darkMode": true, "darkMode": true,
"generationMethod": "tonal-spot", "generationMethod": "vibrant",
"paletteColors": [ "paletteColors": [
"#b4c5ff", "#e47c67",
"#c1c5dd", "#5c81d6",
"#e2bbdb", "#becf6e",
"#ffb4ab" "#cb8172"
], ],
"path": "/home/ulve/.config/niri/wallpapers/Buildings.png", "path": "/home/ulve/.config/niri/wallpapers/Buildings.png",
"useWallpaperColors": true "useWallpaperColors": true
@@ -744,12 +744,12 @@
"appearance": "dark", "appearance": "dark",
"colorScheme": "Gruvbox", "colorScheme": "Gruvbox",
"darkMode": true, "darkMode": true,
"generationMethod": "tonal-spot", "generationMethod": "vibrant",
"paletteColors": [ "paletteColors": [
"#5ed4fd", "#67bbe4",
"#b3cad5", "#5c70d6",
"#c4c3eb", "#8866cc",
"#ffb4ab" "#fd4663"
], ],
"path": "/home/ulve/.config/niri/wallpapers/Fog-Forest-Everforest.png", "path": "/home/ulve/.config/niri/wallpapers/Fog-Forest-Everforest.png",
"useWallpaperColors": true "useWallpaperColors": true
@@ -758,12 +758,12 @@
"appearance": "dark", "appearance": "dark",
"colorScheme": "Gruvbox", "colorScheme": "Gruvbox",
"darkMode": true, "darkMode": true,
"generationMethod": "tonal-spot", "generationMethod": "vibrant",
"paletteColors": [ "paletteColors": [
"#a4c9ff", "#66aee6",
"#bcc7db", "#5059e2",
"#d9bde3", "#8f50e2",
"#ffb4ab" "#fd4663"
], ],
"path": "/home/ulve/.config/niri/wallpapers/Anime-Girl-Night-Sky.jpg", "path": "/home/ulve/.config/niri/wallpapers/Anime-Girl-Night-Sky.jpg",
"useWallpaperColors": true "useWallpaperColors": true
@@ -772,12 +772,12 @@
"appearance": "dark", "appearance": "dark",
"colorScheme": "Gruvbox", "colorScheme": "Gruvbox",
"darkMode": true, "darkMode": true,
"generationMethod": "monochrome", "generationMethod": "vibrant",
"paletteColors": [ "paletteColors": [
"#ffffff", "#67d8e4",
"#c6c6c6", "#5c8dd6",
"#e2e2e2", "#7066cc",
"#ffb4ab" "#fd4663"
], ],
"path": "/home/ulve/.config/niri/wallpapers/Dark_Nature.png", "path": "/home/ulve/.config/niri/wallpapers/Dark_Nature.png",
"useWallpaperColors": true "useWallpaperColors": true
Generated
+28 -11
View File
@@ -6,11 +6,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1784600306, "lastModified": 1786831869,
"narHash": "sha256-fFs6C2fVrhQtgXL5JlczqiTpGy/ALBVUky0DrSl5xEM=", "narHash": "sha256-ALhahxbdgnN8rMvlKmgB5py0etICwyYY75Uz0jLIpM4=",
"owner": "ogulcancelik", "owner": "ogulcancelik",
"repo": "herdr", "repo": "herdr",
"rev": "44f2211608618e56d4bd80ef9c2bac4d9c8be4d2", "rev": "51b7064ef0a02642393bab1d2eea0f4dbd8414d2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -26,11 +26,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1784350909, "lastModified": 1785119570,
"narHash": "sha256-ZWyzLbS1yKUTeFJLmdVuWNnHttL333/ldJbEE+KzCrM=", "narHash": "sha256-Rgs2xKnGLFWQscxUaXX07oyZeuMDOHEbqDOsgliLFGM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "4ce190229c73d44536caa7072f6308fb2d8feeb3", "rev": "d4fd24667c8cbef124bb70a20380cab75ec8474d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -58,11 +58,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1784432872, "lastModified": 1786711500,
"narHash": "sha256-IX7j5TvSD7hYC9NZ8mgmq7pZ97mYyl24Qs4Tz4uyvO4=", "narHash": "sha256-mB6w7h+UsvxLf3PY6U3hSDVWCfmn2Q6VtSw5JugbeY0=",
"rev": "fd1462031fdee08f65fd0b4c6b64e22239a77870", "rev": "02e08985a27c65ffd33d434eeb2e660a2e4dc84d",
"type": "tarball", "type": "tarball",
"url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.5591.fd1462031fde/nixexprs.tar.xz" "url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.7675.02e08985a27c/nixexprs.tar.xz"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
@@ -74,7 +74,24 @@
"inputs": { "inputs": {
"herdr": "herdr", "herdr": "herdr",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2",
"rssdownloader-src": "rssdownloader-src"
}
},
"rssdownloader-src": {
"flake": false,
"locked": {
"lastModified": 1785658646,
"narHash": "sha256-6slxsf1w3xbk1JSWmBmUEoph3Q7+0YHTKEQYU6OS8Yk=",
"ref": "refs/heads/master",
"rev": "50acb125217fafe12fb8e51d713d1c0d1dcd5a76",
"revCount": 1,
"type": "git",
"url": "https://codeberg.org/ulve/rssdownloader"
},
"original": {
"type": "git",
"url": "https://codeberg.org/ulve/rssdownloader"
} }
}, },
"rust-overlay": { "rust-overlay": {
+7 -1
View File
@@ -9,9 +9,14 @@
}; };
herdr.url = "github:ogulcancelik/herdr"; herdr.url = "github:ogulcancelik/herdr";
rssdownloader-src = {
url = "git+https://codeberg.org/ulve/rssdownloader";
flake = false;
};
}; };
outputs = {self, home-manager, nixpkgs, herdr, ...}: { outputs = {self, home-manager, nixpkgs, herdr, rssdownloader-src, ...}: {
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
@@ -64,6 +69,7 @@
nixosConfigurations.nixserve = nixpkgs.lib.nixosSystem { nixosConfigurations.nixserve = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit rssdownloader-src; };
modules = [ modules = [
./hosts/nixserve ./hosts/nixserve
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
+2 -2
View File
@@ -72,8 +72,8 @@
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
# macbook # macbook
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICpiU4gStAtrJOBSkQA2YJh98fpWPpxWtWgwAGzVa/wc johansson.olov@gmail.com" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICpiU4gStAtrJOBSkQA2YJh98fpWPpxWtWgwAGzVa/wc johansson.olov@gmail.com"
# phone # nixserve
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHCIwXs/XPwWfdvaAbGYYX8jVu6CP8MhR7qFTaW2hu6Go4X1+1RTuPQ5RwZSj5pKf2Cyn33pY9KuzIChpKLs9uZrNS08BO6SrcjNtcRJrUOAIq8uKqHOXmq2x2PXbHm6vKp5MwRRanQ/Pa1O2P8kYq8HIBlviD5jUzOtEj8neBfJ/x49+27eHvJdwD2whSy0uty7TfNJi180sJGmepjL4SftGTwcevyvkm+koHj0aDRXxOlFhtrpsbdagg4UHe04ljiUF9urGcA3BSRTKuYbSl+MBsX+YxS97Vi4zT6oqwfh5RPzNZ8v3kZaN51jB369UWlAws0+OgGxIfwVUCf6j1 nixserve" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAmkoqQiLfkT3d2MTYsqXgK9UzlcJ0TwYa20ITMdg+HY nixserve"
]; ];
description = "ulve"; description = "ulve";
extraGroups = [ "networkmanager" "wheel" ]; extraGroups = [ "networkmanager" "wheel" ];
+2 -1
View File
@@ -13,6 +13,7 @@
xdg.dataFile."applications/signal.desktop".source = ../../config/applications/signal.desktop; xdg.dataFile."applications/signal.desktop".source = ../../config/applications/signal.desktop;
xdg.dataFile."applications/vesktop.desktop".source = ../../config/applications/vesktop.desktop; xdg.dataFile."applications/vesktop.desktop".source = ../../config/applications/vesktop.desktop;
xdg.dataFile."applications/steam.desktop".source = ../../config/applications/steam.desktop; xdg.dataFile."applications/steam.desktop".source = ../../config/applications/steam.desktop;
xdg.dataFile."applications/zapzap.desktop".source = ../../config/applications/zapzap.desktop;
# ── Packages ───────────────────────────────────────────────────────────────── # ── Packages ─────────────────────────────────────────────────────────────────
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -30,7 +31,7 @@
telegram-desktop telegram-desktop
signal-desktop signal-desktop
vesktop vesktop
karere zapzap
# 3d printing # 3d printing
lycheeslicer lycheeslicer
+1 -1
View File
@@ -30,6 +30,6 @@
telegram-desktop telegram-desktop
signal-desktop signal-desktop
vesktop vesktop
karere zapzap
]; ];
} }
+1
View File
@@ -49,6 +49,7 @@
networking.firewall.allowedTCPPorts = [ 80 443 /* HTTP */ 111 2049 4000 4001 4002 20048 /* NFS */ 3923 /* copyparty */ ]; networking.firewall.allowedTCPPorts = [ 80 443 /* HTTP */ 111 2049 4000 4001 4002 20048 /* NFS */ 3923 /* copyparty */ ];
networking.firewall.allowedUDPPorts = [ 111 2049 4000 4001 4002 20048 /* NFS */ ]; networking.firewall.allowedUDPPorts = [ 111 2049 4000 4001 4002 20048 /* NFS */ ];
networking.firewall.trustedInterfaces = [ "tailscale0" ];
programs.zsh.enable = true; programs.zsh.enable = true;
security.polkit.enable = true; security.polkit.enable = true;
+1 -1
View File
@@ -8,7 +8,7 @@ let
bad() { echo -e " ''${R}''${N} $*"; } bad() { echo -e " ''${R}''${N} $*"; }
section(){ echo -e "\n''${W}''${B}$*''${N}"; } section(){ echo -e "\n''${W}''${B}$*''${N}"; }
echo -e "''${W}nixserve''${N} $(date '+%Y-%m-%d %H:%M') uptime: $(uptime -p | sed 's/up //') load: $(cut -d' ' -f1-3 /proc/loadavg)" echo -e "''${W}nixserve''${N} $(date '+%Y-%m-%d %H:%M') uptime: $(uptime | sed 's/.*up //; s/,.*//') load: $(cut -d' ' -f1-3 /proc/loadavg)"
# ZFS # ZFS
section "ZFS" section "ZFS"
+4
View File
@@ -5,4 +5,8 @@
programs.zsh.shellAliases = { programs.zsh.shellAliases = {
transfer = "transmission-remote localhost:9091"; transfer = "transmission-remote localhost:9091";
}; };
home.packages = with pkgs; [
weechat # irc client
];
} }
+7
View File
@@ -0,0 +1,7 @@
{ pkgs, src }:
pkgs.buildGoModule {
pname = "rssdownloader";
version = "0.1.0";
inherit src;
vendorHash = null;
}
+12 -2
View File
@@ -1,6 +1,8 @@
{ pkgs, ... }: { pkgs, rssdownloader-src, ... }:
let let
rssdownloader = pkgs.callPackage ./rssdownloader.nix { src = rssdownloader-src; };
proxyVhost = { upstream, websockets ? true, maxBodySize ? "1g" }: { proxyVhost = { upstream, websockets ? true, maxBodySize ? "1g" }: {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
@@ -41,7 +43,8 @@ in
lockdPort = 4001; lockdPort = 4001;
mountdPort = 4002; mountdPort = 4002;
exports = '' exports = ''
/media 192.168.50.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000,fsid=0) /media 192.168.50.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000,fsid=0,insecure)
/media 100.64.0.0/10(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000,fsid=0,insecure)
''; '';
}; };
@@ -137,6 +140,12 @@ in
dir = "/home/ulve/code/tailscale"; dir = "/home/ulve/code/tailscale";
}; };
systemd.services.colony-archive = dockerService {
name = "colony-archive";
description = "Colony Archive tabletop RPG campaign manager";
dir = "/home/ulve/code/colony-archive";
};
systemd.services.dozzle = { systemd.services.dozzle = {
description = "Dozzle Docker log viewer"; description = "Dozzle Docker log viewer";
after = [ "docker.service" "network.target" ]; after = [ "docker.service" "network.target" ];
@@ -163,5 +172,6 @@ virtualHosts."aftersummer.maybec.at" = proxyVhost { upstream = "http://127.0.0.
virtualHosts."bookthing.maybec.at" = proxyVhost { upstream = "http://127.0.0.1:8000"; }; virtualHosts."bookthing.maybec.at" = proxyVhost { upstream = "http://127.0.0.1:8000"; };
virtualHosts."jelly.maybec.at" = proxyVhost { upstream = "http://127.0.0.1:8096"; }; virtualHosts."jelly.maybec.at" = proxyVhost { upstream = "http://127.0.0.1:8096"; };
virtualHosts."photos.maybec.at" = proxyVhost { upstream = "http://[::1]:2283"; maxBodySize = "50g"; }; virtualHosts."photos.maybec.at" = proxyVhost { upstream = "http://[::1]:2283"; maxBodySize = "50g"; };
virtualHosts."colony.maybec.at" = proxyVhost { upstream = "http://127.0.0.1:3333"; };
}; };
} }
+2 -2
View File
@@ -9,7 +9,7 @@
enable = true; enable = true;
shellAliases = { shellAliases = {
n = "nvim"; n = "nvim";
rebuild = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles"; rebuild = "nh os switch ~/nixos-dotfiles";
upgrade = "nix flake update --flake ~/nixos-dotfiles && { command -v nh > /dev/null 2>&1 && nh os switch ~/nixos-dotfiles || sudo nixos-rebuild switch --flake ~/nixos-dotfiles; }"; upgrade = "nix flake update --flake ~/nixos-dotfiles && { command -v nh > /dev/null 2>&1 && nh os switch ~/nixos-dotfiles || sudo nixos-rebuild switch --flake ~/nixos-dotfiles; }";
}; };
}; };
@@ -25,7 +25,7 @@
]; ];
shellAliases = { shellAliases = {
n = "nvim"; n = "nvim";
rebuild = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles"; rebuild = "nh os switch ~/nixos-dotfiles";
upgrade = "nix flake update --flake ~/nixos-dotfiles && { command -v nh &>/dev/null && nh os switch ~/nixos-dotfiles || sudo nixos-rebuild switch --flake ~/nixos-dotfiles; }"; upgrade = "nix flake update --flake ~/nixos-dotfiles && { command -v nh &>/dev/null && nh os switch ~/nixos-dotfiles || sudo nixos-rebuild switch --flake ~/nixos-dotfiles; }";
tree = "eza --tree --level=2"; tree = "eza --tree --level=2";
ls = "eza --icons --all --header --long --git"; ls = "eza --icons --all --header --long --git";