nix-dotfiles/modules/hm/webapp.nix

106 lines
2.5 KiB
Nix

{ pkgs, lib, ... }:
# Categories: https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry
let
# chrome-cmd = link: "${pkgs.google-chrome}/bin/google-chrome-stable --app=${link}";
# vivaldi-cmd = link: "${pkgs.vivaldi}/bin/vivaldi --app=${link}";
firefox-cmd = link: "firefox --new-window ${link}";
webAppBuilder =
{ desktopName
, name ? builtins.replaceStrings [ " " ] [ "_" ] desktopName
, link
, cmd ? firefox-cmd
, icon ? lib.toLower name
, comment ? null
, categories ? [ "Network" ]
,
}:
pkgs.makeDesktopItem {
inherit
name
icon
desktopName
comment
categories
;
exec = cmd link;
};
links = [
{
link = "https://chess.com";
desktopName = "Chess.com";
categories = [ "Game" ];
}
{
link = "https://google.com/calendar";
desktopName = "Google Calendar";
categories = [ "Office" ];
}
{
link = "https://keep.google.com";
desktopName = "Google Keep";
categories = [ "Office" ];
}
{
link = "https://play.google.com/books";
desktopName = "Google Play Books";
categories = [
"Office"
"Viewer"
];
}
# {
# link = "https://teams.microsoft.com";
# desktopName = "Microsoft Teams";
# categories = [ "Office" ];
# cmd = chrome-cmd;
# }
{
link = "https://monkeytype.com/";
desktopName = "Monkeytype";
categories = [ "Game" ];
}
{
link = "https://www.netflix.com";
desktopName = "Netflix";
categories = [ "AudioVideo" ];
}
{
link = "https://notion.so";
desktopName = "Notion";
categories = [ "Office" ];
}
{
link = "https://app.plex.tv";
desktopName = "Plex";
categories = [ "AudioVideo" ];
}
{
link = "https://primevideo.com";
desktopName = "Prime Video";
categories = [ "AudioVideo" ];
}
{
link = "https://mail.protonmail.com";
desktopName = "Protonmail";
categories = [ "Office" ];
}
{
link = "https://www.twitch.tv";
desktopName = "Twitch";
categories = [ "AudioVideo" ];
}
{
link = "https://web.whatsapp.com/";
desktopName = "WhatsApp";
}
{
link = "https://www.youtube.com";
desktopName = "YouTube";
categories = [ "AudioVideo" ];
}
];
in
{
home.packages = map webAppBuilder links;
}