feat: prospect-mail

Signed-off-by: jolheiser <john.olheiser@gmail.com>
teamcity
jolheiser 2023-07-07 11:20:01 -05:00
parent b5993b95be
commit d3c866bd53
Signed by: jolheiser
GPG Key ID: B853ADA5DA7BBF7A
4 changed files with 129 additions and 2 deletions

View File

@ -1,4 +1,8 @@
let
{
pkgs,
config,
...
}: let
key = "0xB853ADA5DA7BBF7A";
in {
programs.git = {
@ -38,5 +42,11 @@ in {
side-by-side = true;
};
};
includes = [
{
condition = "gitdir:~/ndlegis/";
path = "${config.xdg.configHome}/git/work-config";
}
];
};
}

View File

@ -32,4 +32,10 @@ Host codeberg.org
HostName codeberg.org
User git
IdentityFile ~/.ssh/github
IdentitiesOnly yes
Host ssh.dev.azure.com
HostName ssh.dev.azure.com
User git
IdentityFile ~/.ssh/ndlegis
IdentitiesOnly yes

View File

@ -43,14 +43,20 @@ in {
shell = pkgs.nushell;
};
nixpkgs.config.permittedInsecurePackages = [
"nodejs-16.20.1"
];
environment.systemPackages = with pkgs; [
globalprotect-openconnect
jetbrains.pycharm-professional
jetbrains.idea-ultimate
jetbrains.datagrip
subversion
teams
teams-for-linux
xorg.xauth
# Custom packages
(callPackage ../../pkgs/prospect-mail {})
];
system.stateVersion = "22.11";

View File

@ -0,0 +1,105 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
makeDesktopItem,
copyDesktopItems,
nodejs_16,
fetchYarnDeps,
fixup_yarn_lock,
electron,
libpulseaudio,
pipewire,
alsa-utils,
which,
}:
stdenv.mkDerivation rec {
pname = "prospect-mail";
version = "0.4.0";
src = fetchFromGitHub {
owner = "julian-alarcon";
repo = pname;
rev = "v${version}";
sha256 = "sha256-MIQgJFTqXuhShEU+iAV1VS2TAq1d/fQXU1Rct1XIEsM=";
};
offlineCache = fetchYarnDeps {
yarnLock = "${src}/yarn.lock";
sha256 = "sha256-rN15aGTROnfUgws7f+U8DXcj5dL6MC8DqUE+uxfH1Zo=";
};
nativeBuildInputs = [nodejs_16.pkgs.yarn fixup_yarn_lock nodejs_16 copyDesktopItems makeWrapper];
configurePhase = ''
runHook preConfigure
export HOME=$(mktemp -d)
yarn config --offline set yarn-offline-mirror $offlineCache
fixup_yarn_lock yarn.lock
yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
patchShebangs node_modules/
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
yarn --offline electron-builder \
--dir ${
if stdenv.isDarwin
then "--macos"
else "--linux"
} ${
if stdenv.hostPlatform.isAarch64
then "--arm64"
else "--x64"
} \
-c.electronDist=${electron}/lib/electron \
-c.electronVersion=${electron.version}
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/{applications,prospect-mail}
cp dist/${
if stdenv.isDarwin
then "darwin-"
else "linux-"
}${lib.optionalString stdenv.hostPlatform.isAarch64 "arm64-"}unpacked/resources/app.asar $out/share/prospect-mail/
pushd build/icons
for image in *png; do
mkdir -p $out/share/icons/hicolor/''${image%.png}/apps
cp -r $image $out/share/icons/hicolor/''${image%.png}/apps/prospect-mail.png
done
popd
# Linux needs 'aplay' for notification sounds, 'libpulse' for meeting sound, and 'libpipewire' for screen sharing
makeWrapper '${electron}/bin/electron' "$out/bin/prospect-mail" \
${lib.optionalString stdenv.isLinux ''
--prefix PATH : ${lib.makeBinPath [alsa-utils which]} \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [libpulseaudio pipewire]} \
''} \
--add-flags "$out/share/prospect-mail/app.asar" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = pname;
exec = pname;
icon = pname;
desktopName = "Outlook for Linux";
comment = "Outlook wrapper client for Linux";
categories = ["Network" "Email"];
})
];
}