vaultwarden: Add update script to keep web vault in sync

- Adds an update script to fetch the compatible web vault version
- Removes `vaultwarden-vault` from top-level to prevent independent
updates through e.g. r-ryantm. Istead the vault is now accessible
at `vaultwarden.webvault`.
- The name webvault was chosen because it is the title of the projects
README and it makes it clearer, that this is the web UI.

Changed files
+36 -7
nixos
modules
services
security
vaultwarden
pkgs
tools
security
top-level
+2 -2
nixos/modules/services/security/vaultwarden/default.nix
···
webVaultPackage = mkOption {
type = package;
-
default = pkgs.vaultwarden-vault;
-
defaultText = literalExpression "pkgs.vaultwarden-vault";
+
default = pkgs.vaultwarden.webvault;
+
defaultText = literalExpression "pkgs.vaultwarden.webvault";
description = lib.mdDoc "Web vault package to use.";
};
};
+10 -2
pkgs/tools/security/vaultwarden/default.nix
···
-
{ lib, stdenv, rustPlatform, fetchFromGitHub, fetchurl, nixosTests
+
{ lib, stdenv, callPackage, rustPlatform, fetchFromGitHub, fetchurl, nixosTests
, pkg-config, openssl
, libiconv, Security, CoreServices
, dbBackend ? "sqlite", libmysqlclient, postgresql }:
+
+
let
+
webvault = callPackage ./webvault.nix {};
+
in
rustPlatform.buildRustPackage rec {
pname = "vaultwarden";
···
buildFeatures = dbBackend;
-
passthru.tests = nixosTests.vaultwarden;
+
passthru = {
+
inherit webvault;
+
tests = nixosTests.vaultwarden;
+
updateScript = callPackage ./update.nix {};
+
};
meta = with lib; {
description = "Unofficial Bitwarden compatible server written in Rust";
+22
pkgs/tools/security/vaultwarden/update.nix
···
+
{ writeShellScript
+
, lib
+
, nix-update
+
, curl
+
, git
+
, gnugrep
+
, gnused
+
, jq
+
}:
+
+
writeShellScript "update-vaultwarden" ''
+
PATH=${lib.makeBinPath [ curl git gnugrep gnused jq nix-update ]}
+
+
set -euxo pipefail
+
+
VAULTWARDEN_VERSION=$(curl --silent https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest | jq -r '.tag_name')
+
nix-update "vaultwarden" --version "$VAULTWARDEN_VERSION"
+
+
URL="https://raw.githubusercontent.com/dani-garcia/vaultwarden/''${VAULTWARDEN_VERSION}/docker/Dockerfile.j2"
+
WEBVAULT_VERSION=$(curl --silent "$URL" | grep "set vault_version" | sed -E "s/.*\"([^\"]+)\".*/\\1/")
+
nix-update "vaultwarden.webvault" --version "$WEBVAULT_VERSION"
+
''
+1 -1
pkgs/tools/security/vaultwarden/vault.nix pkgs/tools/security/vaultwarden/webvault.nix
···
{ lib, stdenv, fetchurl, nixosTests }:
stdenv.mkDerivation rec {
-
pname = "vaultwarden-vault";
+
pname = "vaultwarden-webvault";
version = "2022.11.1";
src = fetchurl {
+1
pkgs/top-level/aliases.nix
···
varnish63 = throw "varnish63 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-07-26
varnish65 = throw "varnish65 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-09-15
varnish70 = throw "varnish70 was removed from nixpkgs, because it was superseded upstream. Please switch to a different release"; # Added 2022-03-17
+
vaultwarden-vault = vaultwarden.webvault; # Added 2022-12-13
varnish71 = throw "varnish71 was removed from nixpkgs, because it was superseded upstream. Please switch to a different release"; # Added 2022-11-08
vdirsyncerStable = vdirsyncer; # Added 2020-11-08, see https://github.com/NixOS/nixpkgs/issues/103026#issuecomment-723428168
venus = throw "venus has been removed from nixpkgs, as it's unmaintained"; # Added 2021-02-05
-2
pkgs/top-level/all-packages.nix
···
vaultwarden-mysql = vaultwarden.override { dbBackend = "mysql"; };
vaultwarden-postgresql = vaultwarden.override { dbBackend = "postgresql"; };
-
vaultwarden-vault = callPackage ../tools/security/vaultwarden/vault.nix { };
-
vazir-fonts = callPackage ../data/fonts/vazir-fonts { };
vhs = callPackage ../applications/misc/vhs { };