From d3c866bd539f532a45b1e335090c966b4a35ab0d Mon Sep 17 00:00:00 2001 From: jolheiser Date: Fri, 7 Jul 2023 11:20:01 -0500 Subject: [PATCH] feat: prospect-mail Signed-off-by: jolheiser --- apps/git.nix | 12 +++- apps/ssh/config | 6 ++ machines/chai/default.nix | 8 ++- pkgs/prospect-mail/default.nix | 105 +++++++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 pkgs/prospect-mail/default.nix diff --git a/apps/git.nix b/apps/git.nix index 261293f..c22cf3b 100644 --- a/apps/git.nix +++ b/apps/git.nix @@ -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"; + } + ]; }; } diff --git a/apps/ssh/config b/apps/ssh/config index 31146af..3335133 100644 --- a/apps/ssh/config +++ b/apps/ssh/config @@ -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 \ No newline at end of file diff --git a/machines/chai/default.nix b/machines/chai/default.nix index 3f198f2..c61f315 100644 --- a/machines/chai/default.nix +++ b/machines/chai/default.nix @@ -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"; diff --git a/pkgs/prospect-mail/default.nix b/pkgs/prospect-mail/default.nix new file mode 100644 index 0000000..cf8675e --- /dev/null +++ b/pkgs/prospect-mail/default.nix @@ -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"]; + }) + ]; +}