Add Teams, disable Ferdium, refactor Hyprland

Enable teams-for-linux and disable ferdium in system modules; add both
to core packages. Simplify Hyprland configuration by using direct
settings for animations, window rules, env, exec‑once and hypridle.
Remove unused Microsoft Teams PWA entry.
This commit is contained in:
2026-01-07 19:49:21 +01:00
parent 28daa28c6b
commit 9d9ed0f04b
17 changed files with 243 additions and 298 deletions

View File

@@ -3,7 +3,6 @@ _: {
Development editors and IDEs
*/
vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
zed-editor = {
enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = true; # Remote Server: enable remote editing capabilities
@@ -13,27 +12,21 @@ _: {
Web browsers
*/
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
/*
System utilities
*/
btop.enable = true; # Btop: a resource monitor for the terminal
cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool
peaclock.enable = true; # Peaclock: Clock, timer, and stopwatch for the terminal
/*
Communication and synchronization
*/
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = true; # Vesktop: a communitydriven Discord client
/*
@@ -68,7 +61,6 @@ _: {
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool
};
};
}

View File

@@ -55,6 +55,8 @@ _: {
slack.enable = true; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community
/*
Productivity / Knowledge Management
@@ -79,7 +81,7 @@ _: {
*/
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
galculator.enable = false; # Galculator: simple calculator
gedit.enable = false; # Gedit: GNOME text editor
gedit.enable = true; # Gedit: GNOME text editor
winboat.enable = false; # Winboat: Windows remote desktop via RDP
adb.enable = false; # ADB: Android SDK platform tools
};

View File

@@ -3,7 +3,6 @@ _: {
Development editors and IDEs
*/
vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
zed-editor = {
enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = true; # Remote Server: enable remote editing capabilities
@@ -13,27 +12,21 @@ _: {
Web browsers
*/
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
/*
System utilities
*/
btop.enable = true; # Btop: a resource monitor for the terminal
cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool
peaclock.enable = true; # Peaclock: Clock, timer, and stopwatch for the terminal
/*
Communication and synchronization
*/
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = true; # Vesktop: a communitydriven Discord client
/*
@@ -68,7 +61,6 @@ _: {
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool
};
};
}

View File

@@ -55,6 +55,8 @@ _: {
slack.enable = true; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community
/*
Productivity / Knowledge Management

View File

@@ -3,7 +3,6 @@ _: {
Development editors and IDEs
*/
vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
zed-editor = {
enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = true; # Remote Server: enable remote editing capabilities
@@ -13,27 +12,21 @@ _: {
Web browsers
*/
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
/*
System utilities
*/
btop.enable = true; # Btop: a resource monitor for the terminal
cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool
peaclock.enable = true; # Peaclock: Clock, timer, and stopwatch for the terminal
/*
Communication and synchronization
*/
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = true; # Vesktop: a communitydriven Discord client
/*
@@ -68,7 +61,6 @@ _: {
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool
};
};
}

View File

@@ -55,6 +55,8 @@ _: {
slack.enable = true; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community
/*
Productivity / Knowledge Management

View File

@@ -47,6 +47,8 @@
bottles = bottles;
heroic = heroic;
adb = android-tools;
teams = teams-for-linux;
ferdium = ferdium;
};
in {
imports = builtins.attrValues (builtins.mapAttrs mkPackage packages);

View File

@@ -1,6 +1,5 @@
_: {
wayland.windowManager.hyprland.settings = {
animations = {
wayland.windowManager.hyprland.settings.animations = {
enabled = true;
bezier = [
"wind, -1.05, 0.9, 0.1, 1.05"
@@ -18,5 +17,4 @@ _: {
"workspaces, 0, 5, wind"
];
};
};
}

View File

@@ -1,8 +1,6 @@
_: {
wayland.windowManager.hyprland.settings = {
# name "Dynamic"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
wayland.windowManager.hyprland.settings.animations = {
enabled = true;
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
@@ -21,5 +19,4 @@ _: {
"workspaces, 1, 5, wind"
];
};
};
}

View File

@@ -1,8 +1,6 @@
_: {
wayland.windowManager.hyprland.settings = {
# Name: END-4
# Credit: END-4 project https://github.com/end-4/dots-hyprland
animations = {
wayland.windowManager.hyprland.settings.animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
@@ -33,5 +31,4 @@ _: {
"workspaces, 1, 7, menu_decel, slide"
];
};
};
}

View File

@@ -1,8 +1,6 @@
_: {
wayland.windowManager.hyprland.settings = {
# name "moving"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
wayland.windowManager.hyprland.settings.animations = {
enabled = true;
bezier = [
"overshot, 0.05, 0.9, 0.1, 1.05"
@@ -20,5 +18,4 @@ _: {
"workspaces, 1, 6, default"
];
};
};
}

View File

@@ -1,7 +1,5 @@
_: {
wayland.windowManager.hyprland = {
settings = {
env = [
wayland.windowManager.hyprland.settings.env = [
"NIXOS_OZONE_WL, 1"
"NIXPKGS_ALLOW_UNFREE, 1"
"XDG_CURRENT_DESKTOP, Hyprland"
@@ -31,6 +29,4 @@ _: {
"TERMINAL,kitty"
"XDG_TERMINAL_EMULATOR,kitty"
];
};
};
}

View File

@@ -4,8 +4,7 @@
stylixImage
;
in {
wayland.windowManager.hyprland.settings = {
exec-once = [
wayland.windowManager.hyprland.settings.exec-once = [
"wl-paste --type text --watch cliphist store" # Saves text
"wl-paste --type image --watch cliphist store" # Saves images
"dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
@@ -20,5 +19,4 @@ in {
"nm-applet --indicator"
"sleep 1.0 && swww img ${stylixImage}"
];
};
}

View File

@@ -1,6 +1,5 @@
_: {
services = {
hypridle = {
services.hypridle = {
enable = true;
settings = {
general = {
@@ -21,5 +20,4 @@ _: {
];
};
};
};
}

View File

@@ -26,9 +26,7 @@ in {
enableXdgAutostart = true;
variables = ["--all"];
};
xwayland = {
enable = true;
};
xwayland.enable = true;
settings = {
input = {
kb_layout = "${keyboardLayout}";
@@ -131,9 +129,7 @@ in {
direct_scanout = 0;
};
debug = {
full_cm_proto = true;
};
debug.full_cm_proto = true;
master = {
new_status = "master";
@@ -142,9 +138,7 @@ in {
};
# Ensure Xwayland windows render at integer scale; compositor scales them
xwayland = {
force_zero_scaling = true;
};
xwayland.force_zero_scaling = true;
};
extraConfig = "

View File

@@ -1,101 +1,94 @@
_: {
wayland.windowManager.hyprland = {
settings = {
windowrule = [
wayland.windowManager.hyprland.settings.windowrule = [
# XWayland specific rules
#"noblur, xwayland:1" # Helps prevent odd borders/shadows for xwayland apps
# downside it can impact other xwayland apps
# This rule is a template for a more targeted approach
"noblur, class:^(\bresolve\b)$, xwayland:1" # Window rule for just resolve
"no_blur on, match:class resolve, match:xwayland 1" # Window rule for just resolve
# Application tags
"tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$"
"tag +terminal, class:^(com.mitchellh.ghostty|org.wezfurlong.wezterm|Alacritty|kitty|kitty-dropterm)$"
"tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$"
"tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr)$"
"tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$"
"tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$"
"tag +projects, class:^(codium|codium-url-handler|VSCodium)$"
"tag +projects, class:^(VSCode|code-url-handler)$"
"tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$"
"tag +im, class:^([Ff]erdium)$"
"tag +im, class:^([Ww]hatsapp-for-linux)$"
"tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$"
"tag +im, class:^(teams-for-linux)$"
"tag +games, class:^(gamescope)$"
"tag +games, class:^(steam_app_\d+)$"
"tag +gamestore, class:^([Ss]team)$"
"tag +gamestore, title:^([Ll]utris)$"
"tag +gamestore, class:^(com.heroicgameslauncher.hgl)$"
"tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$"
"tag +settings, class:^([Rr]ofi)$"
"tag +settings, class:^(file-roller|org.gnome.FileRoller)$"
"tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$"
"tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$"
"tag +settings, class:^(nwg-look|qt5ct|qt6ct|[Yy]ad)$"
"tag +settings, class:(xdg-desktop-portal-gtk)"
"tag +settings, class:(.blueman-manager-wrapped)"
"tag +settings, class:(nwg-displays)"
"tag +file-manager, match:class [Tt]hunar|org\.gnome\.Nautilus|[Pp]cmanfm-qt"
"tag +terminal, match:class com\.mitchellh\.ghostty|org\.wezfurlong\.wezterm|Alacritty|kitty|kitty-dropterm"
"tag +browser, match:class [Ff]irefox|org\.mozilla\.firefox|[Ff]irefox-esr"
"tag +browser, match:class [Ll]ibrewolf|io\.gitlab\.librewolf-community"
"tag +browser, match:class [Gg]oogle-chrome(-beta|-dev|-unstable)?|[Cc]hromium-browser(-beta|-dev|-unstable)?"
"tag +projects, match:class VSCode|code|code-url-handler|codium|codium-url-handler|VSCodium|VSCodium-url-handler"
"tag +projects, match:class dev\.zed\.Zed"
"tag +im, match:class [Dd]iscord|[Ww]ebCord|[Vv]esktop"
"tag +im, match:class [Ff]erdium"
"tag +im, match:class [Ss]ignal"
"tag +im, match:class [Ss]lack"
"tag +im, match:class [Tt]eams-for-linux"
"tag +games, match:class gamescope"
"tag +games, match:class ?:steam_app_\d+"
"tag +games, match:class tf_linux64"
"tag +gamestore, match:class [Ss]team"
"tag +gamestore, match:title [Ll]utris"
"tag +gamestore, match:class com\.heroicgameslauncher\.hgl"
"tag +settings, match:class gnome-disks|wihotspot(-gui)?"
"tag +settings, match:class [Rr]ofi"
"tag +settings, match:class file-roller|org\.gnome\.FileRoller"
"tag +settings, match:class nm-applet|nm-connection-editor|blueman-manager"
"tag +settings, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol"
"tag +settings, match:class nwg-look|qt5ct|qt6ct|[Yy]ad"
"tag +settings, match:class xdg-desktop-portal-gtk"
"tag +settings, match:class ?:blueman-manager-wrapped"
"tag +settings, match:class nwg-displays"
# Position and movement rules
"move 72% 7%,title:^(Picture-in-Picture)$"
"center, class:^([Ff]erdium)$"
"center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$"
"center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)"
"center, title:^(Authentication Required)$"
"move 72% 7%, match:title Picture-in-Picture"
"center on, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol"
"center on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*"
"center on, match:title Authentication Required"
# Idle inhibit rules
"idleinhibit fullscreen, class:^(*)$"
"idleinhibit fullscreen, title:^(*)$"
"idleinhibit fullscreen, fullscreen:1"
"idle_inhibit fullscreen, match:class .*"
"idle_inhibit fullscreen, match:title .*"
"idle_inhibit fullscreen, match:fullscreen 1"
# Float rules
"float, class:^([Ww]aypaper)$"
"float, tag:settings*"
"float, class:^([Ff]erdium)$"
"float, title:^(Picture-in-Picture)$"
"float, class:^(mpv)$"
"float, title:^(Authentication Required)$"
"float, title:^(War in Tunnels)$"
"float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)"
"float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)"
"float, class:^([Ss]team)$, title:negative:^([Ss]team)$"
"float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)"
"float, class:^(galculator)$"
"float, initialTitle:(Add Folder to Workspace)"
"float, initialTitle:(Open Files)"
"float, initialTitle:(wants to save)"
"float on, match:class [Ww]aypaper"
"float on, match:tag settings*"
"float on, match:title Picture-in-Picture"
"float on, match:class mpv"
"float on, match:title Authentication Required"
"float on, match:title War in Tunnels"
"float on, match:class codium|codium-url-handler|VSCodium, match:title negative:.*(?:codium|VSCodium).*"
"float on, match:class com\.heroicgameslauncher\.hgl, match:title negative Heroic Games Launcher"
"float on, match:class [Ss]team, match:title negative:[Ss]team"
"float on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*"
"float on, match:class galculator"
"float on, match:initial_title Add Folder to Workspace"
"float on, match:initial_title Open Files"
"float on, match:initial_title wants to save"
# Size rules
"size 70% 60%, initialTitle:(Open Files)"
"size 70% 60%, initialTitle:(Add Folder to Workspace)"
"size 70% 70%, tag:settings*"
"size 60% 70%, class:^([Ff]erdium)$"
"size 70% 70%, class:^(mpv)$"
"size 70% 60%, match:initial_title Open Files"
"size 70% 60%, match:initial_title Add Folder to Workspace"
"size 70% 70%, match:tag settings*"
"size 70% 70%, match:class mpv"
# Tile rules
"tile, class:^(affinity.exe)$"
"tile, class:^(dev.zed.Zed)$"
"tile on, match:class affinity\.exe"
"tile on, match:class dev\.zed\.Zed"
# Opacity rules
"opacity 1.0 1.0, tag:browser*"
"opacity 0.9 0.8, tag:projects*"
"opacity 0.94 0.86, tag:im*"
"opacity 0.9 0.8, tag:file-manager*"
"opacity 0.8 0.7, tag:terminal*"
"opacity 0.8 0.7, tag:settings*"
"opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$"
"opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui"
"opacity 0.95 0.75, title:^(Picture-in-Picture)$"
"opacity 1.0 1.0, match:tag browser*"
"opacity 0.9 0.8, match:tag projects*"
"opacity 0.94 0.86, match:tag im*"
"opacity 0.9 0.8, match:tag file-manager*"
"opacity 0.8 0.7, match:tag terminal*"
"opacity 0.8 0.7, match:tag settings*"
"opacity 0.8 0.7, match:class gedit|org\.gnome\.TextEditor|mousepad"
"opacity 0.9 0.8, match:class seahorse # gnome-keyring gui"
"opacity 0.95 0.75, match:title Picture-in-Picture"
# Picture-in-Picture specific rules
"pin, title:^(Picture-in-Picture)$"
"keepaspectratio, title:^(Picture-in-Picture)$"
"pin on, match:title Picture-in-Picture"
"keep_aspect_ratio on, match:title Picture-in-Picture"
# Games specific rules
"noblur, tag:games*"
"fullscreen, tag:games*"
"no_blur on, match:tag games*"
"fullscreen on, match:tag games*"
];
};
};
}

View File

@@ -62,19 +62,12 @@
iconUrl = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/glance.png";
iconSha = "sha256-xyFlmPpt+DABoGX5oBqj/aQVdxtmNflat9Jb2BE7SOY=";
}
{
name = "microsoftTeams";
displayName = "Microsoft Teams";
url = "https://teams.microsoft.com/v2/";
iconUrl = "https://i.pinimg.com/236x/e6/b6/28/e6b628706696320cd0ede93f7053abd8.jpg";
iconSha = "sha256-bZVmoWHeG8rycS8lj7LQaxFggXINjUx/7NWKPVhPTFw=";
}
];
in {
options.xdgDesktopEntries = {
enable = lib.mkEnableOption "PWA Apps";
entries = builtins.listToAttrs (
builtins.map (app: {
map (app: {
name = app.name;
value = {
enable = lib.mkEnableOption "Enable ${app.displayName} PWA";