Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
4.1 kB · 158 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159{ lib, stdenv, pname, version, src, meta, makeShellWrapper, wrapGAppsHook3, alsa-lib, at-spi2-atk, at-spi2-core, atk, cairo, cups, dbus, expat, gdk-pixbuf, glib, gtk3, libX11, libXcomposite, libXdamage, libXext, libXfixes, libXrandr, libdrm, libxcb, libxkbcommon, libxshmfence, libGL, libappindicator-gtk3, libgbm, nspr, nss, pango, systemd, udev, xdg-utils,
# The 1Password polkit file requires a list of users for whom polkit # integrations should be enabled. This should be a list of strings that # correspond to usernames. polkitPolicyOwners ? [ ],}:let # Convert the polkitPolicyOwners variable to a polkit-compatible string for the polkit file. policyOwners = lib.concatStringsSep " " (map (user: "unix-user:${user}") polkitPolicyOwners);
instdenv.mkDerivation { inherit pname version src meta ;
nativeBuildInputs = [ makeShellWrapper wrapGAppsHook3 ]; buildInputs = [ glib ];
dontConfigure = true; dontBuild = true; dontPatchELF = true; dontWrapGApps = true;
installPhase = let rpath = lib.makeLibraryPath [ alsa-lib at-spi2-atk at-spi2-core atk cairo cups dbus expat gdk-pixbuf glib gtk3 libX11 libXcomposite libXdamage libXext libXfixes libXrandr libdrm libxcb libxkbcommon libxshmfence libGL libappindicator-gtk3 libgbm nspr nss pango systemd ] + ":${lib.getLib stdenv.cc.cc}/lib64"; in '' runHook preInstall
mkdir -p $out/bin $out/share/1password cp -a * $out/share/1password
# Desktop file install -Dt $out/share/applications resources/${pname}.desktop substituteInPlace $out/share/applications/${pname}.desktop \ --replace-fail 'Exec=/opt/1Password/${pname}' 'Exec=${pname}'
'' + (lib.optionalString (polkitPolicyOwners != [ ]) '' # Polkit file mkdir -p $out/share/polkit-1/actions substitute com.1password.1Password.policy.tpl $out/share/polkit-1/actions/com.1password.1Password.policy --replace-fail "\''${POLICY_OWNERS}" "${policyOwners}" '') + ''
# Icons cp -a resources/icons $out/share
interp="$(cat $NIX_CC/nix-support/dynamic-linker)" patchelf --set-interpreter $interp $out/share/1password/{1password,1Password-BrowserSupport,1Password-LastPass-Exporter,op-ssh-sign} patchelf --set-rpath ${rpath}:$out/share/1password $out/share/1password/{1password,1Password-BrowserSupport,1Password-LastPass-Exporter,op-ssh-sign} for file in $(find $out -type f -name \*.so\* ); do patchelf --set-rpath ${rpath}:$out/share/1password $file done
ln -s $out/share/1password/op-ssh-sign $out/bin/op-ssh-sign
runHook postInstall '';
preFixup = '' # makeWrapper defaults to makeBinaryWrapper due to wrapGAppsHook # but we need a shell wrapper specifically for `NIXOS_OZONE_WL`. # Electron is trying to open udev via dlopen() # and for some reason that doesn't seem to be impacted from the rpath. # Adding udev to LD_LIBRARY_PATH fixes that. # Make xdg-open overrideable at runtime. makeShellWrapper $out/share/1password/1password $out/bin/1password \ "''${gappsWrapperArgs[@]}" \ --suffix PATH : ${lib.makeBinPath [ xdg-utils ]} \ --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ udev ]} # Currently half broken on wayland (e.g. no copy functionality) # See: https://github.com/NixOS/nixpkgs/pull/232718#issuecomment-1582123406 # Remove this comment when upstream fixes: # https://1password.community/discussion/comment/624011/#Comment_624011 #--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" '';
passthru.updateScript = ./update.sh;}