Skip to content

Commit

Permalink
linkding: init at 1.33.0
Browse files Browse the repository at this point in the history
Including service options.

Closes #341665.
  • Loading branch information
l0b0 committed Oct 9, 2024
1 parent 8ff900b commit 3985f03
Show file tree
Hide file tree
Showing 7 changed files with 197 additions and 0 deletions.
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -1450,6 +1450,7 @@
./services/web-apps/lanraragi.nix
./services/web-apps/lemmy.nix
./services/web-apps/limesurvey.nix
./services/web-apps/linkding.nix
./services/web-apps/mainsail.nix
./services/web-apps/mastodon.nix
./services/web-apps/matomo.nix
Expand Down
41 changes: 41 additions & 0 deletions nixos/modules/services/web-apps/linkding.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
config,
lib,
options,
pkgs,
...
}:
{
options.services.linkding = {
dataDir = lib.mkOption {
type = lib.types.str;
default = "/etc/linkding/data";
description = "The directory where linkding stores its data files.";
};

enable = lib.mkEnableOption "linkding service";

package = lib.mkPackageOption pkgs "linkding" { };

port = lib.mkOption {
default = 9090;
description = "Port on which linkding will listen for connections.";
type = lib.types.port;
};
};

config = lib.mkIf config.services.linkding.enable {
systemd.services.linkding = {
description = "linkding";

environment = {
LD_HOST_DATA_DIR = config.services.linkding.dataDir;
LD_HOST_PORT = builtins.toString config.services.linkding.port;
};

serviceConfig.ExecStart = "${config.services.linkding.package}/bin/linkding";
};
};

meta.maintainers = [ lib.maintainers.l0b0 ];
}
1 change: 1 addition & 0 deletions nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,7 @@ in {
installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});
invidious = handleTest ./invidious.nix {};
isolate = handleTest ./isolate.nix {};
linkding = discoverTests (import ./web-apps/linkding { inherit handleTest; });
livebook-service = handleTest ./livebook-service.nix {};
pyload = handleTest ./pyload.nix {};
oci-containers = handleTestOn ["aarch64-linux" "x86_64-linux"] ./oci-containers.nix {};
Expand Down
5 changes: 5 additions & 0 deletions nixos/tests/web-apps/linkding/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ handleTest }:
{
defaults = handleTest ./defaults.nix { };
overrides = handleTest ./overrides.nix { };
}
19 changes: 19 additions & 0 deletions nixos/tests/web-apps/linkding/defaults.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import ../../make-test-python.nix (
{ lib, ... }:
let
nodeName = "server";
in
{
name = "linkding-defaults";

nodes."${nodeName}" = {
services.linkding.enable = true;
};

testScript = ''
${nodeName}.wait_for_unit("linkding.service")
'';

meta.maintainers = [ lib.maintainers.l0b0 ];
}
)
32 changes: 32 additions & 0 deletions nixos/tests/web-apps/linkding/overrides.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import ../../make-test-python.nix (
{ lib, ... }:
let
nodeName = "server";
in
{
name = "linkding-overrides";

nodes."${nodeName}" =
{
options,
pkgs,
...
}:
{
services.linkding = {
dataDir = "/tmp/linkding";
enable = true;
package = pkgs.linkding.overrideAttrs (_old: {
name = "custom-linkding";
});
port = options.services.linkding.port.default + 1;
};
};

testScript = ''
${nodeName}.wait_for_unit("linkding.service")
'';

meta.maintainers = [ lib.maintainers.l0b0 ];
}
)
98 changes: 98 additions & 0 deletions pkgs/by-name/li/linkding/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
{
fetchFromGitHub,
fetchNpmDeps,
lib,
nix-update-script,
nixosTests,
nodejs,
npmHooks,
pkgs,
python3Packages,
}:
let
pname = "linkding";
version = "1.33.0";

src = fetchFromGitHub {
owner = "sissbruecker";
repo = "linkding";
rev = "v${version}";
hash = "sha256-D4HJWtbUpIlK1PihjmzNP3AZIgA1LJAt0B99U2ezS0M=";
};
in
python3Packages.buildPythonApplication {
inherit pname src version;

npmDeps = fetchNpmDeps {
inherit src;
name = "${pname}-npm-deps";
hash = "sha256-hcBNCv630M2uWblwDB8hFV7DX1xVAJyfEbwzyIKOvXA=";
};

nativeBuildInputs = [
nodejs
npmHooks.npmConfigHook
python3Packages.beautifulsoup4
python3Packages.bleach
python3Packages.bleach-allowlist
python3Packages.django
#python3Packages.django-registration
python3Packages.django-widget-tweaks
python3Packages.djangorestframework
python3Packages.huey
python3Packages.markdown
python3Packages.mozilla-django-oidc
python3Packages.psycopg2-binary
python3Packages.python-dateutil
python3Packages.requests
python3Packages.supervisor
#python3Packages.uWSGI
python3Packages.waybackpy
];

build-system = [
python3Packages.setuptools
];

buildPhase = ''
runHook preBuild
mkdir --parents data/{favicons,previews} dist
npm run build
python manage.py collectstatic
runHook postBuild
'';

nativeCheckInputs = [
python3Packages.black
python3Packages.coverage
python3Packages.django-debug-toolbar
python3Packages.playwright
python3Packages.pytest
python3Packages.pytest-django
python3Packages.pytest-xdist
];

checkPhase = ''
python manage.py test bookmarks.tests
export PLAYWRIGHT_BROWSERS_PATH=${pkgs.playwright-driver.browsers}
export PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=true
python manage.py test bookmarks.e2e --pattern="e2e_test_*.py"
'';

passthru = {
tests = {
nixos = nixosTests.linkding;
};
updateScript = nix-update-script { };
};

meta = with lib; {
description = "Self-hosted bookmark manager";
homepage = "https://github.com/sissbruecker/linkding";
license = licenses.mit;
maintainers = with maintainers; [ l0b0 ];
};
}

0 comments on commit 3985f03

Please sign in to comment.