commit
d237e4e855
@ -108,3 +108,7 @@ charset = unset
|
||||
[lib/tests/*.plist]
|
||||
indent_style = tab
|
||||
insert_final_newline = unset
|
||||
|
||||
[pkgs/kde/generated/**]
|
||||
insert_final_newline = unset
|
||||
end_of_line = unset
|
||||
|
17
.github/CODEOWNERS
vendored
17
.github/CODEOWNERS
vendored
@ -185,11 +185,18 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
|
||||
# Licenses
|
||||
/lib/licenses.nix @alyssais
|
||||
|
||||
# Qt / KDE
|
||||
/pkgs/applications/kde @ttuegel
|
||||
/pkgs/desktops/plasma-5 @ttuegel
|
||||
/pkgs/development/libraries/kde-frameworks @ttuegel
|
||||
/pkgs/development/libraries/qt-5 @ttuegel
|
||||
# Qt
|
||||
/pkgs/development/libraries/qt-5 @NixOS/qt-kde
|
||||
/pkgs/development/libraries/qt-6 @NixOS/qt-kde
|
||||
|
||||
# KDE / Plasma 5
|
||||
/pkgs/applications/kde @NixOS/qt-kde
|
||||
/pkgs/desktops/plasma-5 @NixOS/qt-kde
|
||||
/pkgs/development/libraries/kde-frameworks @NixOS/qt-kde
|
||||
|
||||
# KDE / Plasma 6
|
||||
/pkgs/kde @NixOS/qt-kde
|
||||
/maintainers/scripts/kde @NixOS/qt-kde
|
||||
|
||||
# PostgreSQL and related stuff
|
||||
/pkgs/servers/sql/postgresql @thoughtpolice @marsam
|
||||
|
31
maintainers/scripts/kde/collect-licenses.sh
Executable file
31
maintainers/scripts/kde/collect-licenses.sh
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p gnutar jq reuse
|
||||
set -eu
|
||||
cd "$(dirname "$(readlink -f "$0")")"/../../..
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
trap 'rm -rf $TMPDIR' EXIT
|
||||
|
||||
echo "# Prebuilding sources..."
|
||||
nix-build -A kdePackages.sources --no-link || true
|
||||
|
||||
echo "# Evaluating sources..."
|
||||
declare -A sources
|
||||
eval "$(nix-instantiate --eval -A kdePackages.sources --json --strict | jq 'to_entries[] | "sources[" + .key + "]=" + .value' -r)"
|
||||
|
||||
echo "# Collecting licenses..."
|
||||
for k in "${!sources[@]}"; do
|
||||
echo "- Processing $k..."
|
||||
|
||||
if [ ! -f "${sources[$k]}" ]; then
|
||||
echo "Not found!"
|
||||
continue
|
||||
fi
|
||||
|
||||
mkdir "$TMPDIR/$k"
|
||||
tar -C "$TMPDIR/$k" -xf "${sources[$k]}"
|
||||
|
||||
(cd "$TMPDIR/$k"; reuse lint --json) | jq --arg name "$k" '{$name: .summary.used_licenses | sort}' -c > "$TMPDIR/$k.json"
|
||||
done
|
||||
|
||||
jq -s 'add' -S "$TMPDIR"/*.json > pkgs/kde/generated/licenses.json
|
11
maintainers/scripts/kde/collect-logs.nu
Executable file
11
maintainers/scripts/kde/collect-logs.nu
Executable file
@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i nu -p nushell
|
||||
cd $"($env.FILE_PWD)/../../.."
|
||||
|
||||
mkdir logs
|
||||
nix-env -qaP -f . -A kdePackages --json --out-path | from json | values | par-each { |it|
|
||||
echo $"Processing ($it.pname)..."
|
||||
if "outputs" in $it {
|
||||
nix-store --read-log $it.outputs.out | save -f $"logs/($it.pname).log"
|
||||
}
|
||||
}
|
36
maintainers/scripts/kde/collect-metadata.py
Executable file
36
maintainers/scripts/kde/collect-metadata.py
Executable file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i python3 -p "python3.withPackages(ps: [ ps.click ps.pyyaml ])"
|
||||
import pathlib
|
||||
|
||||
import click
|
||||
|
||||
import utils
|
||||
|
||||
@click.command
|
||||
@click.argument(
|
||||
"repo-metadata",
|
||||
type=click.Path(
|
||||
exists=True,
|
||||
file_okay=False,
|
||||
resolve_path=True,
|
||||
path_type=pathlib.Path,
|
||||
),
|
||||
)
|
||||
@click.option(
|
||||
"--nixpkgs",
|
||||
type=click.Path(
|
||||
exists=True,
|
||||
file_okay=False,
|
||||
resolve_path=True,
|
||||
writable=True,
|
||||
path_type=pathlib.Path,
|
||||
),
|
||||
default=pathlib.Path(__file__).parent.parent.parent.parent
|
||||
)
|
||||
def main(repo_metadata: pathlib.Path, nixpkgs: pathlib.Path):
|
||||
metadata = utils.KDERepoMetadata.from_repo_metadata_checkout(repo_metadata)
|
||||
out_dir = nixpkgs / "pkgs/kde/generated"
|
||||
metadata.write_json(out_dir)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main() # type: ignore
|
127
maintainers/scripts/kde/collect-missing-deps.py
Executable file
127
maintainers/scripts/kde/collect-missing-deps.py
Executable file
@ -0,0 +1,127 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i python3 -p python3
|
||||
import pathlib
|
||||
|
||||
OK_MISSING = {
|
||||
# we don't use precompiled QML
|
||||
'Qt6QuickCompiler',
|
||||
'Qt6QmlCompilerPlusPrivate',
|
||||
# usually used for version numbers
|
||||
'Git',
|
||||
# useless by itself, will warn if something else is not found
|
||||
'PkgConfig',
|
||||
# license verification
|
||||
'ReuseTool',
|
||||
# dev only
|
||||
'ClangFormat',
|
||||
# doesn't exist
|
||||
'Qt6X11Extras',
|
||||
}
|
||||
|
||||
OK_MISSING_BY_PACKAGE = {
|
||||
"angelfish": {
|
||||
"Qt6Feedback", # we don't have it
|
||||
},
|
||||
"attica": {
|
||||
"Python3", # only used for license checks
|
||||
},
|
||||
"discover": {
|
||||
"rpm-ostree-1", # we don't have rpm-ostree (duh)
|
||||
"Snapd", # we don't have snaps and probably never will
|
||||
},
|
||||
"elisa": {
|
||||
"UPNPQT", # upstream says it's broken
|
||||
},
|
||||
"extra-cmake-modules": {
|
||||
"Sphinx", # only used for docs, bloats closure size
|
||||
"QCollectionGenerator"
|
||||
},
|
||||
"kio-extras-kf5": {
|
||||
"KDSoapWSDiscoveryClient", # actually vendored on KF5 version
|
||||
},
|
||||
"kitinerary": {
|
||||
"OsmTools", # used for map data updates, we use prebuilt
|
||||
},
|
||||
"kosmindoormap": {
|
||||
"OsmTools", # same
|
||||
"Protobuf",
|
||||
},
|
||||
"kpty": {
|
||||
"UTEMPTER", # we don't have it and it probably wouldn't work anyway
|
||||
},
|
||||
"kpublictransport": {
|
||||
"OsmTools", # same
|
||||
"PolyClipping",
|
||||
"Protobuf",
|
||||
},
|
||||
"krfb": {
|
||||
"Qt6XkbCommonSupport", # not real
|
||||
},
|
||||
"kuserfeedback": {
|
||||
"Qt6Svg", # all used for backend console stuff we don't ship
|
||||
"QmlLint",
|
||||
"Qt6Charts",
|
||||
"FLEX",
|
||||
"BISON",
|
||||
"Php",
|
||||
"PhpUnit",
|
||||
},
|
||||
"kwin": {
|
||||
"display-info", # newer versions identify as libdisplay-info
|
||||
},
|
||||
"mlt": {
|
||||
"Qt5", # intentionally disabled
|
||||
"SWIG",
|
||||
},
|
||||
"plasma-desktop": {
|
||||
"scim", # upstream is dead, not packaged in Nixpkgs
|
||||
},
|
||||
"powerdevil": {
|
||||
"DDCUtil", # cursed, intentionally disabled
|
||||
},
|
||||
"pulseaudio-qt": {
|
||||
"Qt6Qml", # tests only
|
||||
"Qt6Quick",
|
||||
},
|
||||
"syntax-highlighting": {
|
||||
"XercesC", # only used for extra validation at build time
|
||||
}
|
||||
}
|
||||
|
||||
def main():
|
||||
here = pathlib.Path(__file__).parent.parent.parent.parent
|
||||
logs = (here / "logs").glob("*.log")
|
||||
|
||||
for log in sorted(logs):
|
||||
pname = log.stem
|
||||
|
||||
missing = []
|
||||
is_in_block = False
|
||||
with log.open(errors="replace") as fd:
|
||||
for line in fd:
|
||||
line = line.strip()
|
||||
if line.startswith("-- No package '"):
|
||||
package = line.removeprefix("-- No package '").removesuffix("' found")
|
||||
missing.append(package)
|
||||
if line == "-- The following OPTIONAL packages have not been found:" or line == "-- The following RECOMMENDED packages have not been found:":
|
||||
is_in_block = True
|
||||
elif line.startswith("--") and is_in_block:
|
||||
is_in_block = False
|
||||
elif line.startswith("*") and is_in_block:
|
||||
package = line.removeprefix("* ")
|
||||
missing.append(package)
|
||||
|
||||
missing = {
|
||||
package
|
||||
for package in missing
|
||||
if not any(package.startswith(i) for i in OK_MISSING | OK_MISSING_BY_PACKAGE.get(pname, set()))
|
||||
}
|
||||
|
||||
if missing:
|
||||
print(pname + ":")
|
||||
for line in missing:
|
||||
print(" -", line)
|
||||
print()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
113
maintainers/scripts/kde/generate-sources.py
Executable file
113
maintainers/scripts/kde/generate-sources.py
Executable file
@ -0,0 +1,113 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i python3 -p "python3.withPackages(ps: [ ps.beautifulsoup4 ps.click ps.httpx ps.jinja2 ps.pyyaml ])
|
||||
import base64
|
||||
import binascii
|
||||
import json
|
||||
import pathlib
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import bs4
|
||||
import click
|
||||
import httpx
|
||||
import jinja2
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
LEAF_TEMPLATE = jinja2.Template('''
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "{{ pname }}";
|
||||
}
|
||||
'''.strip())
|
||||
|
||||
ROOT_TEMPLATE = jinja2.Template('''
|
||||
{callPackage}: {
|
||||
{%- for p in packages %}
|
||||
{{ p }} = callPackage ./{{ p }} {};
|
||||
{%- endfor %}
|
||||
}
|
||||
'''.strip());
|
||||
|
||||
def to_sri(hash):
|
||||
raw = binascii.unhexlify(hash)
|
||||
b64 = base64.b64encode(raw).decode()
|
||||
return f"sha256-{b64}"
|
||||
|
||||
|
||||
@click.command
|
||||
@click.argument(
|
||||
"set",
|
||||
type=click.Choice(["frameworks", "gear", "plasma"]),
|
||||
required=True
|
||||
)
|
||||
@click.argument(
|
||||
"version",
|
||||
type=str,
|
||||
required=True
|
||||
)
|
||||
@click.option(
|
||||
"--nixpkgs",
|
||||
type=click.Path(
|
||||
exists=True,
|
||||
file_okay=False,
|
||||
resolve_path=True,
|
||||
writable=True,
|
||||
path_type=pathlib.Path,
|
||||
),
|
||||
default=pathlib.Path(__file__).parent.parent.parent.parent
|
||||
)
|
||||
def main(set: str, version: str, nixpkgs: pathlib.Path):
|
||||
root_dir = nixpkgs / "pkgs/kde"
|
||||
set_dir = root_dir / set
|
||||
generated_dir = root_dir / "generated"
|
||||
metadata = utils.KDERepoMetadata.from_json(generated_dir)
|
||||
|
||||
set_url = {
|
||||
"frameworks": "kf",
|
||||
"gear": "releases",
|
||||
"plasma": "plasma",
|
||||
}[set]
|
||||
|
||||
sources = httpx.get(f"https://kde.org/info/sources/source-{set_url}-{version}.html")
|
||||
sources.raise_for_status()
|
||||
bs = bs4.BeautifulSoup(sources.text, features="html.parser")
|
||||
|
||||
results = {}
|
||||
for item in bs.select("tr")[1:]:
|
||||
link = item.select_one("td:nth-child(1) a")
|
||||
assert link
|
||||
|
||||
hash = item.select_one("td:nth-child(3) tt")
|
||||
assert hash
|
||||
|
||||
project_name, version = link.text.rsplit("-", maxsplit=1)
|
||||
if project_name not in metadata.projects_by_name:
|
||||
print(f"Warning: unknown tarball: {project_name}")
|
||||
|
||||
results[project_name] = {
|
||||
"version": version,
|
||||
"url": "mirror://kde" + urlparse(link.attrs["href"]).path,
|
||||
"hash": to_sri(hash.text)
|
||||
}
|
||||
|
||||
pkg_dir = set_dir / project_name
|
||||
pkg_file = pkg_dir / "default.nix"
|
||||
if not pkg_file.exists():
|
||||
print(f"Generated new package: {set}/{project_name}")
|
||||
pkg_dir.mkdir(parents=True, exist_ok=True)
|
||||
with pkg_file.open("w") as fd:
|
||||
fd.write(LEAF_TEMPLATE.render(pname=project_name) + "\n")
|
||||
|
||||
set_dir.mkdir(parents=True, exist_ok=True)
|
||||
with (set_dir / "default.nix").open("w") as fd:
|
||||
fd.write(ROOT_TEMPLATE.render(packages=results.keys()) + "\n")
|
||||
|
||||
sources_dir = generated_dir / "sources"
|
||||
sources_dir.mkdir(parents=True, exist_ok=True)
|
||||
with (sources_dir / f"{set}.json").open("w") as fd:
|
||||
json.dump(results, fd, indent=2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main() # type: ignore
|
185
maintainers/scripts/kde/utils.py
Normal file
185
maintainers/scripts/kde/utils.py
Normal file
@ -0,0 +1,185 @@
|
||||
import collections
|
||||
import dataclasses
|
||||
import functools
|
||||
import json
|
||||
import pathlib
|
||||
import subprocess
|
||||
|
||||
import yaml
|
||||
|
||||
class DataclassEncoder(json.JSONEncoder):
|
||||
def default(self, it):
|
||||
if dataclasses.is_dataclass(it):
|
||||
return dataclasses.asdict(it)
|
||||
return super().default(it)
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class Project:
|
||||
name: str
|
||||
description: str | None
|
||||
project_path: str
|
||||
repo_path: str | None
|
||||
|
||||
def __hash__(self) -> int:
|
||||
return hash(self.name)
|
||||
|
||||
@classmethod
|
||||
def from_yaml(cls, path: pathlib.Path):
|
||||
data = yaml.safe_load(path.open())
|
||||
return cls(
|
||||
name=data["identifier"],
|
||||
description=data["description"],
|
||||
project_path=data["projectpath"],
|
||||
repo_path=data["repopath"]
|
||||
)
|
||||
|
||||
|
||||
def get_git_commit(path: pathlib.Path):
|
||||
return subprocess.check_output(["git", "-C", path, "rev-parse", "--short", "HEAD"]).decode().strip()
|
||||
|
||||
|
||||
def validate_unique(projects: list[Project], attr: str):
|
||||
seen = set()
|
||||
for item in projects:
|
||||
attr_value = getattr(item, attr)
|
||||
if attr_value in seen:
|
||||
raise Exception(f"Duplicate {attr}: {attr_value}")
|
||||
seen.add(attr_value)
|
||||
|
||||
|
||||
THIRD_PARTY = {
|
||||
"third-party/appstream": "appstream-qt",
|
||||
"third-party/cmark": "cmark",
|
||||
"third-party/gpgme": "gpgme",
|
||||
"third-party/kdsoap": "kdsoap",
|
||||
"third-party/libaccounts-qt": "accounts-qt",
|
||||
"third-party/libgpg-error": "libgpg-error",
|
||||
"third-party/libquotient": "libquotient",
|
||||
"third-party/packagekit-qt": "packagekit-qt",
|
||||
"third-party/poppler": "poppler",
|
||||
"third-party/qcoro": "qcoro",
|
||||
"third-party/qmltermwidget": "qmltermwidget",
|
||||
"third-party/qtkeychain": "qtkeychain",
|
||||
"third-party/signond": "signond",
|
||||
"third-party/taglib": "taglib",
|
||||
"third-party/wayland-protocols": "wayland-protocols",
|
||||
"third-party/wayland": "wayland",
|
||||
"third-party/zxing-cpp": "zxing-cpp",
|
||||
}
|
||||
|
||||
IGNORE = {
|
||||
"kdesupport/phonon-directshow",
|
||||
"kdesupport/phonon-mmf",
|
||||
"kdesupport/phonon-mplayer",
|
||||
"kdesupport/phonon-quicktime",
|
||||
"kdesupport/phonon-waveout",
|
||||
"kdesupport/phonon-xine"
|
||||
}
|
||||
|
||||
WARNED = set()
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class KDERepoMetadata:
|
||||
version: str
|
||||
projects: list[Project]
|
||||
dep_graph: dict[Project, set[Project]]
|
||||
|
||||
@functools.cached_property
|
||||
def projects_by_name(self):
|
||||
return {p.name: p for p in self.projects}
|
||||
|
||||
@functools.cached_property
|
||||
def projects_by_path(self):
|
||||
return {p.project_path: p for p in self.projects}
|
||||
|
||||
def try_lookup_package(self, path):
|
||||
if path in IGNORE:
|
||||
return None
|
||||
project = self.projects_by_path.get(path)
|
||||
if project is None and path not in WARNED:
|
||||
WARNED.add(path)
|
||||
print(f"Warning: unknown project {path}")
|
||||
return project
|
||||
|
||||
@classmethod
|
||||
def from_repo_metadata_checkout(cls, repo_metadata: pathlib.Path):
|
||||
projects = [
|
||||
Project.from_yaml(metadata_file)
|
||||
for metadata_file in repo_metadata.glob("projects-invent/**/metadata.yaml")
|
||||
] + [
|
||||
Project(id, None, project_path, None)
|
||||
for project_path, id in THIRD_PARTY.items()
|
||||
]
|
||||
|
||||
validate_unique(projects, "name")
|
||||
validate_unique(projects, "project_path")
|
||||
|
||||
self = cls(
|
||||
version=get_git_commit(repo_metadata),
|
||||
projects=projects,
|
||||
dep_graph={},
|
||||
)
|
||||
|
||||
dep_specs = [
|
||||
"dependency-data-common",
|
||||
"dependency-data-kf6-qt6"
|
||||
]
|
||||
dep_graph = collections.defaultdict(set)
|
||||
|
||||
for spec in dep_specs:
|
||||
spec_path = repo_metadata / "dependencies" / spec
|
||||
for line in spec_path.open():
|
||||
line = line.strip()
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
if not line:
|
||||
continue
|
||||
|
||||
dependent, dependency = line.split(": ")
|
||||
|
||||
dependent = self.try_lookup_package(dependent)
|
||||
if dependent is None:
|
||||
continue
|
||||
|
||||
dependency = self.try_lookup_package(dependency)
|
||||
if dependency is None:
|
||||
continue
|
||||
|
||||
dep_graph[dependent].add(dependency)
|
||||
|
||||
self.dep_graph = dep_graph
|
||||
|
||||
return self
|
||||
|
||||
def write_json(self, root: pathlib.Path):
|
||||
root.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
with (root / "projects.json").open("w") as fd:
|
||||
json.dump(self.projects_by_name, fd, cls=DataclassEncoder, sort_keys=True, indent=2)
|
||||
|
||||
with (root / "dependencies.json").open("w") as fd:
|
||||
deps = {k.name: sorted(dep.name for dep in v) for k, v in self.dep_graph.items()}
|
||||
json.dump({"version": self.version, "dependencies": deps}, fd, cls=DataclassEncoder, sort_keys=True, indent=2)
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, root: pathlib.Path):
|
||||
projects = [
|
||||
Project(**v) for v in json.load((root / "projects.json").open()).values()
|
||||
]
|
||||
|
||||
deps = json.load((root / "dependencies.json").open())
|
||||
self = cls(
|
||||
version=deps["version"],
|
||||
projects=projects,
|
||||
dep_graph={},
|
||||
)
|
||||
|
||||
dep_graph = collections.defaultdict(set)
|
||||
for dependent, dependencies in deps["dependencies"].items():
|
||||
for dependency in dependencies:
|
||||
dep_graph[self.projects_by_name[dependent]].add(self.projects_by_name[dependency])
|
||||
|
||||
self.dep_graph = dep_graph
|
||||
return self
|
@ -52,6 +52,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
}
|
||||
```
|
||||
|
||||
- Plasma 6 is now available and can be installed with `services.xserver.desktopManagers.plasma6.enable = true;`. Plasma 5 will likely be deprecated in the next release (24.11). Note that Plasma 6 runs as Wayland by default, and the X11 session needs to be explicitly selected if necessary.
|
||||
|
||||
## New Services {#sec-release-24.05-new-services}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
@ -0,0 +1,46 @@
|
||||
# This module defines a NixOS installation CD that contains Plasma 6.
|
||||
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ ./installation-cd-graphical-calamares.nix ];
|
||||
|
||||
isoImage.edition = "plasma6";
|
||||
|
||||
services.xserver = {
|
||||
desktopManager.plasma6.enable = true;
|
||||
|
||||
# Automatically login as nixos.
|
||||
displayManager = {
|
||||
sddm.enable = true;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = "nixos";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
# FIXME: using Qt5 builds of Maliit as upstream has not ported to Qt6 yet
|
||||
pkgs.maliit-framework
|
||||
pkgs.maliit-keyboard
|
||||
];
|
||||
|
||||
system.activationScripts.installerDesktop = let
|
||||
|
||||
# Comes from documentation.nix when xserver and nixos.enable are true.
|
||||
manualDesktopFile = "/run/current-system/sw/share/applications/nixos-manual.desktop";
|
||||
|
||||
homeDir = "/home/nixos/";
|
||||
desktopDir = homeDir + "Desktop/";
|
||||
|
||||
in ''
|
||||
mkdir -p ${desktopDir}
|
||||
chown nixos ${homeDir} ${desktopDir}
|
||||
|
||||
ln -sfT ${manualDesktopFile} ${desktopDir + "nixos-manual.desktop"}
|
||||
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop ${desktopDir + "gparted.desktop"}
|
||||
ln -sfT ${pkgs.calamares-nixos}/share/applications/io.calamares.calamares.desktop ${desktopDir + "io.calamares.calamares.desktop"}
|
||||
'';
|
||||
|
||||
}
|
@ -15,6 +15,7 @@ let
|
||||
defaultPinentryFlavor =
|
||||
if xserverCfg.desktopManager.lxqt.enable
|
||||
|| xserverCfg.desktopManager.plasma5.enable
|
||||
|| xserverCfg.desktopManager.plasma6.enable
|
||||
|| xserverCfg.desktopManager.deepin.enable then
|
||||
"qt"
|
||||
else if xserverCfg.desktopManager.xfce.enable then
|
||||
|
@ -96,6 +96,10 @@ let
|
||||
|
||||
pamOpts = { config, name, ... }: let cfg = config; in let config = parentConfig; in {
|
||||
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule [ "enableKwallet" ] [ "kwallet" "enable" ])
|
||||
];
|
||||
|
||||
options = {
|
||||
|
||||
name = mkOption {
|
||||
@ -462,16 +466,23 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
enableKwallet = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc ''
|
||||
If enabled, pam_wallet will attempt to automatically unlock the
|
||||
user's default KDE wallet upon login. If the user has no wallet named
|
||||
"kdewallet", or the login password does not match their wallet
|
||||
password, KDE will prompt separately after login.
|
||||
'';
|
||||
kwallet = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc ''
|
||||
If enabled, pam_wallet will attempt to automatically unlock the
|
||||
user's default KDE wallet upon login. If the user has no wallet named
|
||||
"kdewallet", or the login password does not match their wallet
|
||||
password, KDE will prompt separately after login.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkPackageOption pkgs.plasma5Packages "kwallet-pam" {
|
||||
pkgsText = "pkgs.plasma5Packages";
|
||||
};
|
||||
};
|
||||
|
||||
sssdStrictAccess = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
@ -686,7 +697,7 @@ let
|
||||
(config.security.pam.enableEcryptfs
|
||||
|| config.security.pam.enableFscrypt
|
||||
|| cfg.pamMount
|
||||
|| cfg.enableKwallet
|
||||
|| cfg.kwallet.enable
|
||||
|| cfg.enableGnomeKeyring
|
||||
|| config.services.intune.enable
|
||||
|| cfg.googleAuthenticator.enable
|
||||
@ -711,9 +722,7 @@ let
|
||||
{ name = "mount"; enable = cfg.pamMount; control = "optional"; modulePath = "${pkgs.pam_mount}/lib/security/pam_mount.so"; settings = {
|
||||
disable_interactive = true;
|
||||
}; }
|
||||
{ name = "kwallet5"; enable = cfg.enableKwallet; control = "optional"; modulePath = "${pkgs.plasma5Packages.kwallet-pam}/lib/security/pam_kwallet5.so"; settings = {
|
||||
kwalletd = "${pkgs.plasma5Packages.kwallet.bin}/bin/kwalletd5";
|
||||
}; }
|
||||
{ name = "kwallet"; enable = cfg.kwallet.enable; control = "optional"; modulePath = "${cfg.kwallet.package}/lib/security/pam_kwallet5.so"; }
|
||||
{ name = "gnome_keyring"; enable = cfg.enableGnomeKeyring; control = "optional"; modulePath = "${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so"; }
|
||||
{ name = "intune"; enable = config.services.intune.enable; control = "optional"; modulePath = "${pkgs.intune-portal}/lib/security/pam_intune.so"; }
|
||||
{ name = "gnupg"; enable = cfg.gnupg.enable; control = "optional"; modulePath = "${pkgs.pam_gnupg}/lib/security/pam_gnupg.so"; settings = {
|
||||
@ -848,9 +857,7 @@ let
|
||||
order = "user,group,default";
|
||||
debug = true;
|
||||
}; }
|
||||
{ name = "kwallet5"; enable = cfg.enableKwallet; control = "optional"; modulePath = "${pkgs.plasma5Packages.kwallet-pam}/lib/security/pam_kwallet5.so"; settings = {
|
||||
kwalletd = "${pkgs.plasma5Packages.kwallet.bin}/bin/kwalletd5";
|
||||
}; }
|
||||
{ name = "kwallet"; enable = cfg.kwallet.enable; control = "optional"; modulePath = "${cfg.kwallet.package}/lib/security/pam_kwallet5.so"; }
|
||||
{ name = "gnome_keyring"; enable = cfg.enableGnomeKeyring; control = "optional"; modulePath = "${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so"; settings = {
|
||||
auto_start = true;
|
||||
}; }
|
||||
|
@ -18,7 +18,7 @@ in
|
||||
# determines the default: later modules (if enabled) are preferred.
|
||||
# E.g., if Plasma 5 is enabled, it supersedes xterm.
|
||||
imports = [
|
||||
./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ./lumina.nix
|
||||
./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ./plasma6.nix ./lumina.nix
|
||||
./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix
|
||||
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
|
||||
./cinnamon.nix ./budgie.nix ./deepin.nix
|
||||
|
@ -362,7 +362,7 @@ in
|
||||
|
||||
security.pam.services.kde = { allowNullPassword = true; };
|
||||
|
||||
security.pam.services.login.enableKwallet = true;
|
||||
security.pam.services.login.kwallet.enable = true;
|
||||
|
||||
systemd.user.services = {
|
||||
plasma-early-setup = mkIf cfg.runUsingSystemd {
|
||||
|
276
nixos/modules/services/x11/desktop-managers/plasma6.nix
Normal file
276
nixos/modules/services/x11/desktop-managers/plasma6.nix
Normal file
@ -0,0 +1,276 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
utils,
|
||||
...
|
||||
}: let
|
||||
xcfg = config.services.xserver;
|
||||
cfg = xcfg.desktopManager.plasma6;
|
||||
|
||||
inherit (pkgs) kdePackages;
|
||||
inherit (lib) literalExpression mkDefault mkIf mkOption mkPackageOptionMD types;
|
||||
in {
|
||||
options = {
|
||||
services.xserver.desktopManager.plasma6 = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc "Enable the Plasma 6 (KDE 6) desktop environment.";
|
||||
};
|
||||
|
||||
enableQt5Integration = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc "Enable Qt 5 integration (theming, etc). Disable for a pure Qt 6 system.";
|
||||
};
|
||||
|
||||
notoPackage = mkPackageOptionMD pkgs "Noto fonts - used for UI by default" {
|
||||
default = ["noto-fonts"];
|
||||
example = "noto-fonts-lgc-plus";
|
||||
};
|
||||
};
|
||||
|
||||
environment.plasma6.excludePackages = mkOption {
|
||||
description = lib.mdDoc "List of default packages to exclude from the configuration";
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
example = literalExpression "[ pkgs.kdePackages.elisa ]";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.enable -> !config.services.xserver.desktopManager.plasma5.enable;
|
||||
message = "Cannot enable plasma5 and plasma6 at the same time!";
|
||||
}
|
||||
];
|
||||
|
||||
qt.enable = true;
|
||||
environment.systemPackages = with kdePackages; let
|
||||
requiredPackages = [
|
||||
# Hack? To make everything run on Wayland
|
||||
qtwayland
|
||||
# Needed to render SVG icons
|
||||
qtsvg
|
||||
|
||||
# Frameworks with globally loadable bits
|
||||
frameworkintegration # provides Qt plugin
|
||||
kauth # provides helper service
|
||||
kcoreaddons # provides extra mime type info
|
||||
kded # provides helper service
|
||||
kfilemetadata # provides Qt plugins
|
||||
kguiaddons # provides geo URL handlers
|
||||
kiconthemes # provides Qt plugins
|
||||
kimageformats # provides Qt plugins
|
||||
kio # provides helper service + a bunch of other stuff
|
||||
kpackage # provides kpackagetool tool
|
||||
kservice # provides kbuildsycoca6 tool
|
||||
kwallet # provides helper service
|
||||
kwallet-pam # provides helper service
|
||||
kwalletmanager # provides KCMs and stuff
|
||||
plasma-activities # provides plasma-activities-cli tool
|
||||
solid # provides solid-hardware6 tool
|
||||
phonon-vlc # provides Phonon plugin
|
||||
|
||||
# Core Plasma parts
|
||||
kwin
|
||||
pkgs.xwayland
|
||||
|
||||
kscreen
|
||||
libkscreen
|
||||
|
||||
kscreenlocker
|
||||
|
||||
kactivitymanagerd
|
||||
kde-cli-tools
|
||||
kglobalacceld
|
||||
kwrited # wall message proxy, not to be confused with kwrite
|
||||
|
||||
milou
|
||||
polkit-kde-agent-1
|
||||
|
||||
plasma-desktop
|
||||
plasma-workspace
|
||||
|
||||
# Crash handler
|
||||
drkonqi
|
||||
|
||||
# Application integration
|
||||
libplasma # provides Kirigami platform theme
|
||||
plasma-integration # provides Qt platform theme
|
||||
kde-gtk-config
|
||||
|
||||
# Artwork + themes
|
||||
breeze
|
||||
breeze-icons
|
||||
breeze-gtk
|
||||
ocean-sound-theme
|
||||
plasma-workspace-wallpapers
|
||||
pkgs.hicolor-icon-theme # fallback icons
|
||||
qqc2-breeze-style
|
||||
qqc2-desktop-style
|
||||
|
||||
# misc Plasma extras
|
||||
kdeplasma-addons
|
||||
|
||||
pkgs.xdg-user-dirs # recommended upstream
|
||||
|
||||
# Plasma utilities
|
||||
kmenuedit
|
||||
|
||||
kinfocenter
|
||||
plasma-systemmonitor
|
||||
ksystemstats
|
||||
libksysguard
|
||||
|
||||
spectacle
|
||||
systemsettings
|
||||
|
||||
# Gear
|
||||
baloo
|
||||
dolphin
|
||||
dolphin-plugins
|
||||
ffmpegthumbs
|
||||
kdegraphics-thumbnailers
|
||||
kde-inotify-survey
|
||||
kio-admin
|
||||
kio-extras
|
||||
kio-fuse
|
||||
];
|
||||
optionalPackages = [
|
||||
plasma-browser-integration
|
||||
konsole
|
||||
(lib.getBin qttools) # Expose qdbus in PATH
|
||||
|
||||
ark
|
||||
elisa
|
||||
gwenview
|
||||
okular
|
||||
kate
|
||||
khelpcenter
|
||||
print-manager
|
||||
];
|
||||
in
|
||||
requiredPackages
|
||||
++ utils.removePackagesByName optionalPackages config.environment.plasma6.excludePackages
|
||||
++ lib.optionals config.services.xserver.desktopManager.plasma6.enableQt5Integration [
|
||||
breeze.qt5
|
||||
plasma-integration.qt5
|
||||
pkgs.plasma5Packages.kwayland-integration
|
||||
kio-extras-kf5
|
||||
]
|
||||
# Optional hardware support features
|
||||
++ lib.optionals config.hardware.bluetooth.enable [bluedevil bluez-qt pkgs.openobex pkgs.obexftp]
|
||||
++ lib.optional config.networking.networkmanager.enable plasma-nm
|
||||
++ lib.optional config.hardware.pulseaudio.enable plasma-pa
|
||||
++ lib.optional config.services.pipewire.pulse.enable plasma-pa
|
||||
++ lib.optional config.powerManagement.enable powerdevil
|
||||
++ lib.optional config.services.colord.enable colord-kde
|
||||
++ lib.optional config.services.hardware.bolt.enable plasma-thunderbolt
|
||||
++ lib.optionals config.services.samba.enable [kdenetwork-filesharing pkgs.samba]
|
||||
++ lib.optional config.services.xserver.wacom.enable wacomtablet
|
||||
++ lib.optional config.services.flatpak.enable flatpak-kcm;
|
||||
|
||||
environment.pathsToLink = [
|
||||
# FIXME: modules should link subdirs of `/share` rather than relying on this
|
||||
"/share"
|
||||
"/libexec" # for drkonqi
|
||||
];
|
||||
|
||||
environment.etc."X11/xkb".source = xcfg.xkb.dir;
|
||||
|
||||
# Add ~/.config/kdedefaults to XDG_CONFIG_DIRS for shells, since Plasma sets that.
|
||||
# FIXME: maybe we should append to XDG_CONFIG_DIRS in /etc/set-environment instead?
|
||||
environment.sessionVariables.XDG_CONFIG_DIRS = ["$HOME/.config/kdedefaults"];
|
||||
|
||||
# Needed for things that depend on other store.kde.org packages to install correctly,
|
||||
# notably Plasma look-and-feel packages (a.k.a. Global Themes)
|
||||
#
|
||||
# FIXME: this is annoyingly impure and should really be fixed at source level somehow,
|
||||
# but kpackage is a library so we can't just wrap the one thing invoking it and be done.
|
||||
# This also means things won't work for people not on Plasma, but at least this way it
|
||||
# works for SOME people.
|
||||
environment.sessionVariables.KPACKAGE_DEP_RESOLVERS_PATH = "${kdePackages.frameworkintegration.out}/libexec/kf6/kpackagehandlers";
|
||||
|
||||
# Enable GTK applications to load SVG icons
|
||||
services.xserver.gdk-pixbuf.modulePackages = [pkgs.librsvg];
|
||||
|
||||
fonts.packages = [cfg.notoPackage pkgs.hack-font];
|
||||
fonts.fontconfig.defaultFonts = {
|
||||
monospace = ["Hack" "Noto Sans Mono"];
|
||||
sansSerif = ["Noto Sans"];
|
||||
serif = ["Noto Serif"];
|
||||
};
|
||||
|
||||
programs.ssh.askPassword = mkDefault "${kdePackages.ksshaskpass.out}/bin/ksshaskpass";
|
||||
|
||||
# Enable helpful DBus services.
|
||||
services.accounts-daemon.enable = true;
|
||||
# when changing an account picture the accounts-daemon reads a temporary file containing the image which systemsettings5 may place under /tmp
|
||||
systemd.services.accounts-daemon.serviceConfig.PrivateTmp = false;
|
||||
|
||||
services.power-profiles-daemon.enable = mkDefault true;
|
||||
services.system-config-printer.enable = mkIf config.services.printing.enable (mkDefault true);
|
||||
services.udisks2.enable = true;
|
||||
services.upower.enable = config.powerManagement.enable;
|
||||
services.xserver.libinput.enable = mkDefault true;
|
||||
|
||||
# Extra UDEV rules used by Solid
|
||||
services.udev.packages = [
|
||||
# libmtp has "bin", "dev", "out" outputs. UDEV rules file is in "out".
|
||||
pkgs.libmtp.out
|
||||
pkgs.media-player-info
|
||||
];
|
||||
|
||||
# Set up Dr. Konqi as crash handler
|
||||
systemd.packages = [kdePackages.drkonqi];
|
||||
systemd.services."drkonqi-coredump-processor@".wantedBy = ["systemd-coredump@.service"];
|
||||
|
||||
xdg.portal.enable = true;
|
||||
xdg.portal.extraPortals = [kdePackages.xdg-desktop-portal-kde];
|
||||
xdg.portal.configPackages = mkDefault [kdePackages.xdg-desktop-portal-kde];
|
||||
services.pipewire.enable = mkDefault true;
|
||||
|
||||
services.xserver.displayManager = {
|
||||
sessionPackages = [kdePackages.plasma-workspace];
|
||||
defaultSession = mkDefault "plasma";
|
||||
};
|
||||
services.xserver.displayManager.sddm = {
|
||||
package = kdePackages.sddm;
|
||||
theme = mkDefault "breeze";
|
||||
extraPackages = with kdePackages; [
|
||||
breeze-icons
|
||||
kirigami
|
||||
plasma5support
|
||||
qtsvg
|
||||
qtvirtualkeyboard
|
||||
];
|
||||
};
|
||||
|
||||
security.pam.services = {
|
||||
login.kwallet = {
|
||||
enable = true;
|
||||
package = kdePackages.kwallet-pam;
|
||||
};
|
||||
kde.kwallet = {
|
||||
enable = true;
|
||||
package = kdePackages.kwallet-pam;
|
||||
};
|
||||
kde-fingerprint = lib.mkIf config.services.fprintd.enable { fprintAuth = true; };
|
||||
kde-smartcard = lib.mkIf config.security.pam.p11.enable { p11Auth = true; };
|
||||
};
|
||||
|
||||
programs.dconf.enable = true;
|
||||
|
||||
programs.firefox.nativeMessagingHosts.packages = [kdePackages.plasma-browser-integration];
|
||||
|
||||
programs.chromium = {
|
||||
enablePlasmaBrowserIntegration = true;
|
||||
plasmaBrowserIntegrationPackage = pkgs.kdePackages.plasma-browser-integration;
|
||||
};
|
||||
|
||||
programs.kdeconnect.package = kdePackages.kdeconnect-kde;
|
||||
};
|
||||
}
|
@ -7,7 +7,10 @@ let
|
||||
cfg = dmcfg.sddm;
|
||||
xEnv = config.systemd.services.display-manager.environment;
|
||||
|
||||
sddm = cfg.package;
|
||||
sddm = cfg.package.override(old: {
|
||||
withWayland = cfg.wayland.enable;
|
||||
extraPackages = old.extraPackages or [] ++ cfg.extraPackages;
|
||||
});
|
||||
|
||||
iniFmt = pkgs.formats.ini { };
|
||||
|
||||
@ -140,6 +143,15 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
extraPackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
defaultText = "[]";
|
||||
description = lib.mdDoc ''
|
||||
Extra Qt plugins / QML libraries to add to the environment.
|
||||
'';
|
||||
};
|
||||
|
||||
autoNumlock = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@ -211,7 +223,7 @@ in
|
||||
keymap_variant = xcfg.xkb.variant;
|
||||
keymap_options = xcfg.xkb.options;
|
||||
};
|
||||
}; in "${pkgs.weston}/bin/weston --shell=fullscreen-shell.so -c ${westonIni}";
|
||||
}; in "${pkgs.weston}/bin/weston --shell=kiosk -c ${westonIni}";
|
||||
description = lib.mdDoc "Command used to start the selected compositor";
|
||||
};
|
||||
};
|
||||
@ -235,15 +247,7 @@ in
|
||||
}
|
||||
];
|
||||
|
||||
services.xserver.displayManager.job = {
|
||||
environment = {
|
||||
# Load themes from system environment
|
||||
QT_PLUGIN_PATH = "/run/current-system/sw/" + pkgs.qt5.qtbase.qtPluginPrefix;
|
||||
QML2_IMPORT_PATH = "/run/current-system/sw/" + pkgs.qt5.qtbase.qtQmlPrefix;
|
||||
};
|
||||
|
||||
execCmd = "exec /run/current-system/sw/bin/sddm";
|
||||
};
|
||||
services.xserver.displayManager.job.execCmd = "exec /run/current-system/sw/bin/sddm";
|
||||
|
||||
security.pam.services = {
|
||||
sddm.text = ''
|
||||
|
@ -177,6 +177,12 @@ in rec {
|
||||
inherit system;
|
||||
});
|
||||
|
||||
iso_plasma6 = forMatchingSystems supportedSystems (system: makeIso {
|
||||
module = ./modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix;
|
||||
type = "plasma6";
|
||||
inherit system;
|
||||
});
|
||||
|
||||
iso_gnome = forMatchingSystems supportedSystems (system: makeIso {
|
||||
module = ./modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix;
|
||||
type = "gnome";
|
||||
|
@ -695,6 +695,7 @@ in {
|
||||
plantuml-server = handleTest ./plantuml-server.nix {};
|
||||
plasma-bigscreen = handleTest ./plasma-bigscreen.nix {};
|
||||
plasma5 = handleTest ./plasma5.nix {};
|
||||
plasma6 = handleTest ./plasma6.nix {};
|
||||
plasma5-systemd-start = handleTest ./plasma5-systemd-start.nix {};
|
||||
plausible = handleTest ./plausible.nix {};
|
||||
please = handleTest ./please.nix {};
|
||||
|
64
nixos/tests/plasma6.nix
Normal file
64
nixos/tests/plasma6.nix
Normal file
@ -0,0 +1,64 @@
|
||||
import ./make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
{
|
||||
name = "plasma6";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ k900 ];
|
||||
};
|
||||
|
||||
nodes.machine = { ... }:
|
||||
|
||||
{
|
||||
imports = [ ./common/user-account.nix ];
|
||||
services.xserver.enable = true;
|
||||
services.xserver.displayManager.sddm.enable = true;
|
||||
# FIXME: this should be testing Wayland
|
||||
services.xserver.displayManager.defaultSession = "plasmax11";
|
||||
services.xserver.desktopManager.plasma6.enable = true;
|
||||
environment.plasma6.excludePackages = [ pkgs.kdePackages.elisa ];
|
||||
services.xserver.displayManager.autoLogin = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
};
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }: let
|
||||
user = nodes.machine.users.users.alice;
|
||||
xdo = "${pkgs.xdotool}/bin/xdotool";
|
||||
in ''
|
||||
with subtest("Wait for login"):
|
||||
start_all()
|
||||
machine.wait_for_file("/tmp/xauth_*")
|
||||
machine.succeed("xauth merge /tmp/xauth_*")
|
||||
|
||||
with subtest("Check plasmashell started"):
|
||||
machine.wait_until_succeeds("pgrep plasmashell")
|
||||
machine.wait_for_window("^Desktop ")
|
||||
|
||||
with subtest("Check that KDED is running"):
|
||||
machine.succeed("pgrep kded6")
|
||||
|
||||
with subtest("Ensure Elisa is not installed"):
|
||||
machine.fail("which elisa")
|
||||
|
||||
machine.succeed("su - ${user.name} -c 'xauth merge /tmp/xauth_*'")
|
||||
|
||||
with subtest("Run Dolphin"):
|
||||
machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 dolphin >&2 &'")
|
||||
machine.wait_for_window(" Dolphin")
|
||||
|
||||
with subtest("Run Konsole"):
|
||||
machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 konsole >&2 &'")
|
||||
machine.wait_for_window("Konsole")
|
||||
|
||||
with subtest("Run systemsettings"):
|
||||
machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 systemsettings >&2 &'")
|
||||
machine.wait_for_window("Settings")
|
||||
|
||||
with subtest("Wait to get a screenshot"):
|
||||
machine.execute(
|
||||
"${xdo} key Alt+F1 sleep 10"
|
||||
)
|
||||
machine.screenshot("screen")
|
||||
'';
|
||||
})
|
@ -1,82 +1,37 @@
|
||||
{ stdenv, lib, fetchFromGitHub
|
||||
, cmake, pkg-config, qttools
|
||||
, libxcb, libXau, pam, qtbase, wrapQtAppsHook, qtdeclarative
|
||||
, qtquickcontrols2 ? null, systemd, xkeyboardconfig
|
||||
{
|
||||
lib,
|
||||
callPackage,
|
||||
runCommand,
|
||||
qtwayland,
|
||||
wrapQtAppsHook,
|
||||
unwrapped ? callPackage ./unwrapped.nix {},
|
||||
withWayland ? false,
|
||||
extraPackages ? [],
|
||||
}:
|
||||
let
|
||||
isQt6 = lib.versions.major qtbase.version == "6";
|
||||
in stdenv.mkDerivation {
|
||||
pname = "sddm";
|
||||
version = "0.20.0-unstable-2023-12-29";
|
||||
runCommand "sddm-wrapped" {
|
||||
inherit (unwrapped) version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sddm";
|
||||
repo = "sddm";
|
||||
rev = "501129294be1487f753482c29949fc1c19ef340e";
|
||||
hash = "sha256-mLm987Ah0X9s0tBK2a45iERwYoh5JzWb3TFlSoxi8CA=";
|
||||
buildInputs = unwrapped.buildInputs ++ extraPackages ++ lib.optional withWayland qtwayland;
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
|
||||
passthru = {
|
||||
inherit unwrapped;
|
||||
};
|
||||
|
||||
patches = [
|
||||
./sddm-ignore-config-mtime.patch
|
||||
./sddm-default-session.patch
|
||||
];
|
||||
meta = unwrapped.meta;
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/greeter/waylandkeyboardbackend.cpp \
|
||||
--replace "/usr/share/X11/xkb/rules/evdev.xml" "${xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"
|
||||
'';
|
||||
cd ${unwrapped}
|
||||
|
||||
nativeBuildInputs = [ wrapQtAppsHook cmake pkg-config qttools ];
|
||||
for i in *; do
|
||||
if [ "$i" == "bin" ]; then
|
||||
continue
|
||||
fi
|
||||
ln -s ${unwrapped}/$i $out/$i
|
||||
done
|
||||
|
||||
buildInputs = [
|
||||
libxcb
|
||||
libXau
|
||||
pam
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtquickcontrols2
|
||||
systemd
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "BUILD_WITH_QT6" isQt6)
|
||||
"-DCONFIG_FILE=/etc/sddm.conf"
|
||||
"-DCONFIG_DIR=/etc/sddm.conf.d"
|
||||
|
||||
# Set UID_MIN and UID_MAX so that the build script won't try
|
||||
# to read them from /etc/login.defs (fails in chroot).
|
||||
# The values come from NixOS; they may not be appropriate
|
||||
# for running SDDM outside NixOS, but that configuration is
|
||||
# not supported anyway.
|
||||
"-DUID_MIN=1000"
|
||||
"-DUID_MAX=29999"
|
||||
|
||||
# we still want to run the DM on VT 7 for the time being, as 1-6 are
|
||||
# occupied by getties by default
|
||||
"-DSDDM_INITIAL_VT=7"
|
||||
|
||||
"-DQT_IMPORTS_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
|
||||
"-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
|
||||
"-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
|
||||
"-DSYSTEMD_SYSUSERS_DIR=${placeholder "out"}/lib/sysusers.d"
|
||||
"-DSYSTEMD_TMPFILES_DIR=${placeholder "out"}/lib/tmpfiles.d"
|
||||
"-DDBUS_CONFIG_DIR=${placeholder "out"}/share/dbus-1/system.d"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
# remove empty scripts
|
||||
rm "$out/share/sddm/scripts/Xsetup" "$out/share/sddm/scripts/Xstop"
|
||||
for f in $out/share/sddm/themes/**/theme.conf ; do
|
||||
substituteInPlace $f \
|
||||
--replace 'background=' "background=$(dirname $f)/"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "QML based X11 display manager";
|
||||
homepage = "https://github.com/sddm/sddm";
|
||||
maintainers = with maintainers; [ abbradar ttuegel ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl2Plus;
|
||||
};
|
||||
}
|
||||
for i in bin/*; do
|
||||
makeQtWrapper ${unwrapped}/$i $out/$i --set SDDM_GREETER_DIR $out/bin
|
||||
done
|
||||
''
|
||||
|
14
pkgs/applications/display-managers/sddm/greeter-path.patch
Normal file
14
pkgs/applications/display-managers/sddm/greeter-path.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp
|
||||
index 07fccde..dd22a07 100644
|
||||
--- a/src/daemon/Greeter.cpp
|
||||
+++ b/src/daemon/Greeter.cpp
|
||||
@@ -83,7 +83,8 @@ namespace SDDM {
|
||||
QString Greeter::greeterPathForQt(int qtVersion)
|
||||
{
|
||||
const QString suffix = qtVersion == 5 ? QString() : QStringLiteral("-qt%1").arg(qtVersion);
|
||||
- return QStringLiteral(BIN_INSTALL_DIR "/sddm-greeter%1").arg(suffix);
|
||||
+ const QString greeterDir = qEnvironmentVariable("SDDM_GREETER_DIR", QStringLiteral(BIN_INSTALL_DIR));
|
||||
+ return QStringLiteral("%1/sddm-greeter%2").arg(greeterDir).arg(suffix);
|
||||
}
|
||||
|
||||
bool Greeter::start() {
|
86
pkgs/applications/display-managers/sddm/unwrapped.nix
Normal file
86
pkgs/applications/display-managers/sddm/unwrapped.nix
Normal file
@ -0,0 +1,86 @@
|
||||
{ stdenv, lib, fetchFromGitHub
|
||||
, cmake, pkg-config, qttools
|
||||
, libxcb, libXau, pam, qtbase, qtdeclarative
|
||||
, qtquickcontrols2 ? null, systemd, xkeyboardconfig
|
||||
}:
|
||||
let
|
||||
isQt6 = lib.versions.major qtbase.version == "6";
|
||||
in stdenv.mkDerivation(finalAttrs: {
|
||||
pname = "sddm-unwrapped";
|
||||
version = "0.21.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sddm";
|
||||
repo = "sddm";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-r5mnEWham2WnoEqRh5tBj/6rn5mN62ENOCmsLv2Ht+w=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./greeter-path.patch
|
||||
./sddm-ignore-config-mtime.patch
|
||||
./sddm-default-session.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/greeter/waylandkeyboardbackend.cpp \
|
||||
--replace "/usr/share/X11/xkb/rules/evdev.xml" "${xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config qttools ];
|
||||
|
||||
buildInputs = [
|
||||
libxcb
|
||||
libXau
|
||||
pam
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtquickcontrols2
|
||||
systemd
|
||||
];
|
||||
|
||||
# We will wrap manually later
|
||||
dontWrapQtApps = true;
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "BUILD_WITH_QT6" isQt6)
|
||||
"-DCONFIG_FILE=/etc/sddm.conf"
|
||||
"-DCONFIG_DIR=/etc/sddm.conf.d"
|
||||
|
||||
# Set UID_MIN and UID_MAX so that the build script won't try
|
||||
# to read them from /etc/login.defs (fails in chroot).
|
||||
# The values come from NixOS; they may not be appropriate
|
||||
# for running SDDM outside NixOS, but that configuration is
|
||||
# not supported anyway.
|
||||
"-DUID_MIN=1000"
|
||||
"-DUID_MAX=29999"
|
||||
|
||||
# we still want to run the DM on VT 7 for the time being, as 1-6 are
|
||||
# occupied by getties by default
|
||||
"-DSDDM_INITIAL_VT=7"
|
||||
|
||||
"-DQT_IMPORTS_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
|
||||
"-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
|
||||
"-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
|
||||
"-DSYSTEMD_SYSUSERS_DIR=${placeholder "out"}/lib/sysusers.d"
|
||||
"-DSYSTEMD_TMPFILES_DIR=${placeholder "out"}/lib/tmpfiles.d"
|
||||
"-DDBUS_CONFIG_DIR=${placeholder "out"}/share/dbus-1/system.d"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
# remove empty scripts
|
||||
rm "$out/share/sddm/scripts/Xsetup" "$out/share/sddm/scripts/Xstop"
|
||||
for f in $out/share/sddm/themes/**/theme.conf ; do
|
||||
substituteInPlace $f \
|
||||
--replace 'background=' "background=$(dirname $f)/"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "QML based X11 display manager";
|
||||
homepage = "https://github.com/sddm/sddm";
|
||||
maintainers = with maintainers; [ abbradar ttuegel k900 ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl2Plus;
|
||||
};
|
||||
})
|
@ -13,7 +13,7 @@ IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
|
||||
Many of the packages released upstream are not yet built in Nixpkgs due to lack
|
||||
of demand. To add a Nixpkgs build for an upstream package, copy one of the
|
||||
existing packages here and modify it as necessary. A simple example package that
|
||||
still shows most of the available features is in `./gwenview.nix`.
|
||||
still shows most of the available features is in `./gwenview`.
|
||||
|
||||
# Updates
|
||||
|
||||
@ -92,7 +92,7 @@ let
|
||||
ghostwriter = callPackage ./ghostwriter.nix {};
|
||||
granatier = callPackage ./granatier.nix {};
|
||||
grantleetheme = callPackage ./grantleetheme {};
|
||||
gwenview = callPackage ./gwenview.nix {};
|
||||
gwenview = callPackage ./gwenview {};
|
||||
incidenceeditor = callPackage ./incidenceeditor.nix {};
|
||||
itinerary = callPackage ./itinerary.nix {};
|
||||
juk = callPackage ./juk.nix {};
|
||||
|
@ -16,6 +16,10 @@ mkDerivation {
|
||||
maintainers = [ lib.maintainers.ttuegel ];
|
||||
mainProgram = "gwenview";
|
||||
};
|
||||
|
||||
# Fix build with versioned kImageAnnotator
|
||||
patches = [./kimageannotator.patch];
|
||||
|
||||
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
|
||||
buildInputs = [
|
||||
baloo kactivities kio kitemmodels kparts libkdcraw libkipi phonon
|
56
pkgs/applications/kde/gwenview/kimageannotator.patch
Normal file
56
pkgs/applications/kde/gwenview/kimageannotator.patch
Normal file
@ -0,0 +1,56 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 01db0fb1..06319c54 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -166,12 +166,12 @@ if(NOT WITHOUT_X11)
|
||||
endif()
|
||||
|
||||
if (QT_MAJOR_VERSION STREQUAL "5")
|
||||
- find_package(kImageAnnotator)
|
||||
- set_package_properties(kImageAnnotator PROPERTIES URL "https://github.com/ksnip/kImageAnnotator" DESCRIPTION "The kImageAnnotator library provides tools to annotate" TYPE REQUIRED)
|
||||
- if(kImageAnnotator_FOUND)
|
||||
+ find_package(kImageAnnotator-Qt5)
|
||||
+ set_package_properties(kImageAnnotator-Qt5 PROPERTIES URL "https://github.com/ksnip/kImageAnnotator" DESCRIPTION "The kImageAnnotator library provides tools to annotate" TYPE REQUIRED)
|
||||
+ if(kImageAnnotator-Qt5_FOUND)
|
||||
set(KIMAGEANNOTATOR_FOUND 1)
|
||||
- find_package(kColorPicker REQUIRED)
|
||||
- if(NOT kImageAnnotator_VERSION VERSION_LESS 0.5.0)
|
||||
+ find_package(kColorPicker-Qt5 REQUIRED)
|
||||
+ if(NOT kImageAnnotator-Qt5_VERSION VERSION_LESS 0.5.0)
|
||||
set(KIMAGEANNOTATOR_CAN_LOAD_TRANSLATIONS 1)
|
||||
endif()
|
||||
endif()
|
||||
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
|
||||
index 8c136835..ef4cff74 100644
|
||||
--- a/app/CMakeLists.txt
|
||||
+++ b/app/CMakeLists.txt
|
||||
@@ -157,6 +157,6 @@ target_link_libraries(slideshowfileitemaction
|
||||
KF${QT_MAJOR_VERSION}::KIOWidgets
|
||||
KF${QT_MAJOR_VERSION}::Notifications)
|
||||
|
||||
-if(kImageAnnotator_FOUND)
|
||||
+if(kImageAnnotator-Qt5_FOUND)
|
||||
target_link_libraries(gwenview kImageAnnotator::kImageAnnotator)
|
||||
endif()
|
||||
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
|
||||
index 05a2ea67..4167a1bb 100644
|
||||
--- a/lib/CMakeLists.txt
|
||||
+++ b/lib/CMakeLists.txt
|
||||
@@ -157,7 +157,7 @@ set(gwenviewlib_SRCS
|
||||
touch/touch_helper.cpp
|
||||
${GV_JPEG_DIR}/transupp.c
|
||||
)
|
||||
-if (kImageAnnotator_FOUND)
|
||||
+if (kImageAnnotator-Qt5_FOUND)
|
||||
set(gwenviewlib_SRCS ${gwenviewlib_SRCS}
|
||||
annotate/annotatedialog.cpp
|
||||
annotate/annotateoperation.cpp
|
||||
@@ -338,7 +338,7 @@ if (GWENVIEW_SEMANTICINFO_BACKEND_BALOO)
|
||||
)
|
||||
endif()
|
||||
|
||||
-if(kImageAnnotator_FOUND)
|
||||
+if(kImageAnnotator-Qt5_FOUND)
|
||||
target_link_libraries(gwenviewlib kImageAnnotator::kImageAnnotator)
|
||||
endif()
|
||||
|
@ -1,9 +1,8 @@
|
||||
{ mkDerivation
|
||||
, lib
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, substituteAll
|
||||
, qtbase
|
||||
, qtsvg
|
||||
, qtwebengine
|
||||
, qtdeclarative
|
||||
, extra-cmake-modules
|
||||
@ -46,6 +45,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtsvg
|
||||
cpp-utilities
|
||||
qtutilities
|
||||
boost
|
||||
@ -74,7 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
doCheck = !stdenv.isDarwin;
|
||||
preCheck = ''
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
export QT_PLUGIN_PATH="${qtbase.bin}/${qtbase.qtPluginPrefix}"
|
||||
export QT_PLUGIN_PATH="${lib.getBin qtbase}/${qtbase.qtPluginPrefix}"
|
||||
'';
|
||||
# don't test --help on Darwin because output is .app
|
||||
doInstallCheck = !stdenv.isDarwin;
|
||||
@ -83,6 +83,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DQT_PACKAGE_PREFIX=Qt${lib.versions.major qtbase.version}"
|
||||
"-DKF_PACKAGE_PREFIX=KF${lib.versions.major qtbase.version}"
|
||||
"-DBUILD_TESTING=ON"
|
||||
# See https://github.com/Martchus/syncthingtray/issues/208
|
||||
"-DEXCLUDE_TESTS_FROM_ALL=OFF"
|
||||
|
87
pkgs/by-name/li/libappimage/package.nix
Normal file
87
pkgs/by-name/li/libappimage/package.nix
Normal file
@ -0,0 +1,87 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
cmake,
|
||||
autoconf,
|
||||
automake,
|
||||
libtool,
|
||||
pkg-config,
|
||||
boost,
|
||||
cairo,
|
||||
fuse,
|
||||
glib,
|
||||
libarchive,
|
||||
librsvg,
|
||||
squashfuse,
|
||||
xdg-utils-cxx,
|
||||
zlib,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libappimage";
|
||||
version = "1.0.4-5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AppImageCommunity";
|
||||
repo = "libappimage";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-V9Ilo0zFo9Urke+jCA4CSQB5tpzLC/S5jmon+bA+TEU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix build with GCC 13
|
||||
# FIXME: remove in next release
|
||||
(fetchpatch {
|
||||
url = "https://github.com/AppImageCommunity/libappimage/commit/1e0515b23b90588ce406669134feca56ddcbbe43.patch";
|
||||
hash = "sha256-WIMvXNqC1stgPiBTRpXHWq3edIRnQomtRSW2qO52TRo=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace cmake/libappimage.pc.in \
|
||||
--replace 'libdir=''${prefix}/@CMAKE_INSTALL_LIBDIR@' 'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' \
|
||||
--replace 'includedir=''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@' 'includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@'
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DUSE_SYSTEM_BOOST=1"
|
||||
"-DUSE_SYSTEM_LIBARCHIVE=1"
|
||||
"-DUSE_SYSTEM_SQUASHFUSE=1"
|
||||
"-DUSE_SYSTEM_XDGUTILS=1"
|
||||
"-DUSE_SYSTEM_XZ=1"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
fuse
|
||||
libarchive
|
||||
squashfuse
|
||||
xdg-utils-cxx
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
cairo
|
||||
glib
|
||||
librsvg
|
||||
zlib
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Implements functionality for dealing with AppImage files";
|
||||
homepage = "https://github.com/AppImageCommunity/libappimage/";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ k900 ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
30
pkgs/by-name/xd/xdg-utils-cxx/package.nix
Normal file
30
pkgs/by-name/xd/xdg-utils-cxx/package.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xdg-utils-cxx";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "azubieta";
|
||||
repo = "xdg-utils-cxx";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-hEN0xqZUNfMOIrw3q+x4kEFhYoqmyn7W3f2w8AGw2wI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Implementation of the FreeDesktop specifications to be used in c++ projects";
|
||||
homepage = "https://github.com/azubieta/xdg-utils-cxx";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ k900 ];
|
||||
mainProgram = "xdg-utils-cxx";
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -1,14 +1,15 @@
|
||||
{ stdenv, lib, fetchFromGitLab, doxygen, glib, libaccounts-glib, pkg-config, qmake, qtbase, wrapQtAppsHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "accounts-qt";
|
||||
version = "1.16";
|
||||
version = "1.16-unstable-2023-11-24";
|
||||
|
||||
# pinned to fork with Qt6 support
|
||||
src = fetchFromGitLab {
|
||||
sha256 = "1vmpjvysm0ld8dqnx8msa15hlhrkny02cqycsh4k2azrnijg0xjz";
|
||||
rev = "VERSION_${version}";
|
||||
owner = "nicolasfella";
|
||||
repo = "libaccounts-qt";
|
||||
owner = "accounts-sso";
|
||||
rev = "18557f7def9af8f4a9e0e93e9f575ae11e5066aa";
|
||||
hash = "sha256-8FGZmg2ljSh1DYZfklMTrWN7Sdlk/Atw0qfpbb+GaBc=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ glib libaccounts-glib ];
|
||||
|
@ -1,19 +1,29 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase }:
|
||||
{ lib, stdenv, fetchFromGitHub, cmake, qtbase }:
|
||||
|
||||
mkDerivation rec {
|
||||
let
|
||||
isQt6 = lib.versions.major qtbase.version == "6";
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "kcolorpicker";
|
||||
version = "0.2.0";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ksnip";
|
||||
repo = "kColorPicker";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ahmMj/yzQiRP9oJwDuhJGxe849kxNsoGFDZ2CGQNhKs=";
|
||||
hash = "sha256-gkjlIiLB3/074EEFrQUa0djvVt/C44O3afqqNis64P0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ qtbase ];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "BUILD_WITH_QT6" isQt6)
|
||||
(lib.cmakeBool "BUILD_SHARED_LIBS" true)
|
||||
];
|
||||
|
||||
# Library only
|
||||
dontWrapQtApps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Qt based Color Picker with popup menu";
|
||||
homepage = "https://github.com/ksnip/kColorPicker";
|
||||
|
@ -1,18 +1,29 @@
|
||||
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, kcolorpicker, qttools }:
|
||||
{ lib, stdenv, fetchFromGitHub, cmake, qttools, qtbase, qtsvg, kcolorpicker }:
|
||||
|
||||
mkDerivation rec {
|
||||
let
|
||||
isQt6 = lib.versions.major qtbase.version == "6";
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "kimageannotator";
|
||||
version = "0.6.1";
|
||||
version = "0.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ksnip";
|
||||
repo = "kImageAnnotator";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-lNoYAJ5yTC5H0gWPVkBGhLroRhFCPyC1DsVBy0IrqL4=";
|
||||
hash = "sha256-Dq9CM/D3nA7MaY9rfwqF/UAw/+1ptKLf3P8jhFdngKk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake qttools ];
|
||||
buildInputs = [ qtbase kcolorpicker ];
|
||||
buildInputs = [ qtbase qtsvg ];
|
||||
propagatedBuildInputs = [ kcolorpicker ];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "BUILD_WITH_QT6" isQt6)
|
||||
(lib.cmakeBool "BUILD_SHARED_LIBS" true)
|
||||
];
|
||||
|
||||
# Library only
|
||||
dontWrapQtApps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tool for annotating images";
|
||||
|
@ -1,14 +1,15 @@
|
||||
{ stdenv, lib, fetchFromGitLab, qmake, qtbase, wrapQtAppsHook, doxygen }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "signond";
|
||||
version = "8.61";
|
||||
version = "8.61-unstable-2023-11-24";
|
||||
|
||||
# pinned to fork with Qt6 support
|
||||
src = fetchFromGitLab {
|
||||
owner = "accounts-sso";
|
||||
repo = pname;
|
||||
rev = "VERSION_${version}";
|
||||
sha256 = "sha256-d7JZmGpjIvSN9l1nvKbBZjF0OR5L5frPTGHF/pNEqHE=";
|
||||
owner = "nicolasfella";
|
||||
repo = "signond";
|
||||
rev = "c8ad98249af541514ff7a81634d3295e712f1a39";
|
||||
hash = "sha256-0FcSVF6cPuFEU9h7JIbanoosW/B4rQhFPOq7iBaOdKw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
84
pkgs/kde/default.nix
Normal file
84
pkgs/kde/default.nix
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
lib,
|
||||
generateSplicesForMkScope,
|
||||
makeScopeWithSplicing',
|
||||
fetchurl,
|
||||
fetchFromGitLab,
|
||||
libsForQt5,
|
||||
qt6Packages,
|
||||
cmark,
|
||||
gpgme,
|
||||
taglib,
|
||||
wayland-protocols,
|
||||
wayland,
|
||||
zxing-cpp,
|
||||
}: let
|
||||
allPackages = self: let
|
||||
frameworks = import ./frameworks {inherit (self) callPackage;};
|
||||
gear = import ./gear {inherit (self) callPackage;};
|
||||
plasma = import ./plasma {inherit (self) callPackage;};
|
||||
|
||||
sets = ["gear" "frameworks" "plasma"];
|
||||
|
||||
loadUrls = set: lib.importJSON (./generated/sources + "/${set}.json");
|
||||
allUrls = lib.attrsets.mergeAttrsList (map loadUrls sets);
|
||||
|
||||
sources = lib.mapAttrs (_: v:
|
||||
(fetchurl {
|
||||
inherit (v) url hash;
|
||||
})
|
||||
// {inherit (v) version;})
|
||||
allUrls;
|
||||
in (
|
||||
qt6Packages
|
||||
// frameworks
|
||||
// gear
|
||||
// plasma
|
||||
// {
|
||||
inherit sources;
|
||||
|
||||
mkKdeDerivation = self.callPackage (import ./lib/mk-kde-derivation.nix self) {};
|
||||
|
||||
# THIRD PARTY
|
||||
inherit
|
||||
cmark
|
||||
gpgme
|
||||
taglib
|
||||
wayland
|
||||
wayland-protocols
|
||||
zxing-cpp
|
||||
;
|
||||
|
||||
# Alias to match metadata
|
||||
kquickimageeditor = self.kquickimageedit;
|
||||
|
||||
# Alias because it's just data
|
||||
plasma-wayland-protocols = libsForQt5.plasma-wayland-protocols;
|
||||
|
||||
selenium-webdriver-at-spi = null; # Used for integration tests that we don't run, stub
|
||||
# Not ported to Qt6 yet
|
||||
kdevelop-pg-qt = null;
|
||||
okteta = null;
|
||||
libmediawiki = null;
|
||||
|
||||
alpaka = self.callPackage ./misc/alpaka {};
|
||||
kdiagram = self.callPackage ./misc/kdiagram {};
|
||||
kdsoap-ws-discovery-client = self.callPackage ./misc/kdsoap-ws-discovery-client {};
|
||||
kirigami-addons = self.callPackage ./misc/kirigami-addons {};
|
||||
kio-fuse = self.callPackage ./misc/kio-fuse {};
|
||||
ktextaddons = self.callPackage ./misc/ktextaddons {};
|
||||
kunifiedpush = self.callPackage ./misc/kunifiedpush {};
|
||||
kweathercore = self.callPackage ./misc/kweathercore {};
|
||||
mpvqt = self.callPackage ./misc/mpvqt {};
|
||||
oxygen-icons = self.callPackage ./misc/oxygen-icons {};
|
||||
phonon = self.callPackage ./misc/phonon {};
|
||||
phonon-vlc = self.callPackage ./misc/phonon-vlc {};
|
||||
polkit-qt-1 = self.callPackage ./misc/polkit-qt-1 {};
|
||||
pulseaudio-qt = self.callPackage ./misc/pulseaudio-qt {};
|
||||
}
|
||||
);
|
||||
in
|
||||
makeScopeWithSplicing' {
|
||||
otherSplices = generateSplicesForMkScope "kdePackages";
|
||||
f = allPackages;
|
||||
}
|
4
pkgs/kde/frameworks/attica/default.nix
Normal file
4
pkgs/kde/frameworks/attica/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "attica";
|
||||
}
|
10
pkgs/kde/frameworks/baloo/default.nix
Normal file
10
pkgs/kde/frameworks/baloo/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
lmdb,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "baloo";
|
||||
|
||||
extraBuildInputs = [qtdeclarative lmdb];
|
||||
}
|
9
pkgs/kde/frameworks/bluez-qt/default.nix
Normal file
9
pkgs/kde/frameworks/bluez-qt/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "bluez-qt";
|
||||
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
16
pkgs/kde/frameworks/breeze-icons/default.nix
Normal file
16
pkgs/kde/frameworks/breeze-icons/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
python3,
|
||||
libxml2,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "breeze-icons";
|
||||
|
||||
extraNativeBuildInputs = [
|
||||
(python3.withPackages (ps: [ps.lxml]))
|
||||
libxml2
|
||||
];
|
||||
|
||||
# lots of icons, takes forever, does absolutely nothing
|
||||
dontStrip = true;
|
||||
}
|
74
pkgs/kde/frameworks/default.nix
Normal file
74
pkgs/kde/frameworks/default.nix
Normal file
@ -0,0 +1,74 @@
|
||||
{callPackage}: {
|
||||
attica = callPackage ./attica {};
|
||||
baloo = callPackage ./baloo {};
|
||||
bluez-qt = callPackage ./bluez-qt {};
|
||||
breeze-icons = callPackage ./breeze-icons {};
|
||||
extra-cmake-modules = callPackage ./extra-cmake-modules {};
|
||||
frameworkintegration = callPackage ./frameworkintegration {};
|
||||
kapidox = callPackage ./kapidox {};
|
||||
karchive = callPackage ./karchive {};
|
||||
kauth = callPackage ./kauth {};
|
||||
kbookmarks = callPackage ./kbookmarks {};
|
||||
kcalendarcore = callPackage ./kcalendarcore {};
|
||||
kcmutils = callPackage ./kcmutils {};
|
||||
kcodecs = callPackage ./kcodecs {};
|
||||
kcolorscheme = callPackage ./kcolorscheme {};
|
||||
kcompletion = callPackage ./kcompletion {};
|
||||
kconfig = callPackage ./kconfig {};
|
||||
kconfigwidgets = callPackage ./kconfigwidgets {};
|
||||
kcontacts = callPackage ./kcontacts {};
|
||||
kcoreaddons = callPackage ./kcoreaddons {};
|
||||
kcrash = callPackage ./kcrash {};
|
||||
kdav = callPackage ./kdav {};
|
||||
kdbusaddons = callPackage ./kdbusaddons {};
|
||||
kdeclarative = callPackage ./kdeclarative {};
|
||||
kded = callPackage ./kded {};
|
||||
kdesu = callPackage ./kdesu {};
|
||||
kdnssd = callPackage ./kdnssd {};
|
||||
kdoctools = callPackage ./kdoctools {};
|
||||
kfilemetadata = callPackage ./kfilemetadata {};
|
||||
kglobalaccel = callPackage ./kglobalaccel {};
|
||||
kguiaddons = callPackage ./kguiaddons {};
|
||||
kholidays = callPackage ./kholidays {};
|
||||
ki18n = callPackage ./ki18n {};
|
||||
kiconthemes = callPackage ./kiconthemes {};
|
||||
kidletime = callPackage ./kidletime {};
|
||||
kimageformats = callPackage ./kimageformats {};
|
||||
kio = callPackage ./kio {};
|
||||
kirigami = callPackage ./kirigami {};
|
||||
kitemmodels = callPackage ./kitemmodels {};
|
||||
kitemviews = callPackage ./kitemviews {};
|
||||
kjobwidgets = callPackage ./kjobwidgets {};
|
||||
knewstuff = callPackage ./knewstuff {};
|
||||
knotifications = callPackage ./knotifications {};
|
||||
knotifyconfig = callPackage ./knotifyconfig {};
|
||||
kpackage = callPackage ./kpackage {};
|
||||
kparts = callPackage ./kparts {};
|
||||
kpeople = callPackage ./kpeople {};
|
||||
kplotting = callPackage ./kplotting {};
|
||||
kpty = callPackage ./kpty {};
|
||||
kquickcharts = callPackage ./kquickcharts {};
|
||||
krunner = callPackage ./krunner {};
|
||||
kservice = callPackage ./kservice {};
|
||||
kstatusnotifieritem = callPackage ./kstatusnotifieritem {};
|
||||
ksvg = callPackage ./ksvg {};
|
||||
ktexteditor = callPackage ./ktexteditor {};
|
||||
ktexttemplate = callPackage ./ktexttemplate {};
|
||||
ktextwidgets = callPackage ./ktextwidgets {};
|
||||
kunitconversion = callPackage ./kunitconversion {};
|
||||
kuserfeedback = callPackage ./kuserfeedback {};
|
||||
kwallet = callPackage ./kwallet {};
|
||||
kwidgetsaddons = callPackage ./kwidgetsaddons {};
|
||||
kwindowsystem = callPackage ./kwindowsystem {};
|
||||
kxmlgui = callPackage ./kxmlgui {};
|
||||
modemmanager-qt = callPackage ./modemmanager-qt {};
|
||||
networkmanager-qt = callPackage ./networkmanager-qt {};
|
||||
prison = callPackage ./prison {};
|
||||
purpose = callPackage ./purpose {};
|
||||
qqc2-desktop-style = callPackage ./qqc2-desktop-style {};
|
||||
solid = callPackage ./solid {};
|
||||
sonnet = callPackage ./sonnet {};
|
||||
syndication = callPackage ./syndication {};
|
||||
syntax-highlighting = callPackage ./syntax-highlighting {};
|
||||
threadweaver = callPackage ./threadweaver {};
|
||||
}
|
8
pkgs/kde/frameworks/extra-cmake-modules/default.nix
Normal file
8
pkgs/kde/frameworks/extra-cmake-modules/default.nix
Normal file
@ -0,0 +1,8 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "extra-cmake-modules";
|
||||
|
||||
outputs = ["out"];
|
||||
|
||||
setupHook = ./ecm-hook.sh;
|
||||
}
|
128
pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh
Normal file
128
pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh
Normal file
@ -0,0 +1,128 @@
|
||||
# shellcheck shell=bash
|
||||
# Variables we use here are set by the stdenv, no use complaining about them
|
||||
# shellcheck disable=SC2164
|
||||
|
||||
ecmEnvHook() {
|
||||
addToSearchPath XDG_DATA_DIRS "$1/share"
|
||||
addToSearchPath XDG_CONFIG_DIRS "$1/etc/xdg"
|
||||
}
|
||||
addEnvHooks "$targetOffset" ecmEnvHook
|
||||
|
||||
ecmPostHook() {
|
||||
# Because we need to use absolute paths here, we must set *all* the paths.
|
||||
# Keep this in sync with https://github.com/KDE/extra-cmake-modules/blob/master/kde-modules/KDEInstallDirs6.cmake
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
cmakeFlags+=" -DKDE_INSTALL_BUNDLEDIR=${!outputBin}/Applications/KDE"
|
||||
fi
|
||||
|
||||
cmakeFlags+=" -DKDE_INSTALL_EXECROOTDIR=${!outputBin}"
|
||||
cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin"
|
||||
cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin"
|
||||
cmakeFlags+=" -DKDE_INSTALL_LIBDIR=${!outputLib}/lib"
|
||||
cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputLib}/libexec"
|
||||
cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake"
|
||||
|
||||
if [ -n "${qtPluginPrefix-}" ]; then
|
||||
cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputBin}/$qtPluginPrefix"
|
||||
cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputBin}/$qtPluginPrefix"
|
||||
fi
|
||||
|
||||
if [ -n "${qtQmlPrefix-}" ]; then
|
||||
cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputBin}/$qtQmlPrefix"
|
||||
fi
|
||||
|
||||
cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include"
|
||||
cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var"
|
||||
cmakeFlags+=" -DKDE_INSTALL_SHAREDSTATEDIR=/com" # ???
|
||||
cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputBin}/share"
|
||||
cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputBin}/share"
|
||||
cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputBin}/share/doc/HTML"
|
||||
cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputBin}/share/config.kcfg"
|
||||
cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputBin}/share/kconf_update"
|
||||
cmakeFlags+=" -DKDE_INSTALL_KAPPTEMPLATESDIR=${!outputDev}/share/kdevappwizard/templates"
|
||||
cmakeFlags+=" -DKDE_INSTALL_KFILETEMPLATESDIR=${!outputDev}/share/kdevfiletemplates/templates"
|
||||
cmakeFlags+=" -DKDE_INSTALL_KXMLGUIDIR=${!outputBin}/share/kxmlgui6"
|
||||
cmakeFlags+=" -DKDE_INSTALL_KNOTIFYRCDIR=${!outputBin}/share/knotifications6"
|
||||
cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputBin}/share/icons"
|
||||
cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale"
|
||||
cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputBin}/share/sounds"
|
||||
cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputBin}/share/templates"
|
||||
cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputBin}/share/wallpapers"
|
||||
cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputBin}/share/applications"
|
||||
cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputBin}/share/desktop-directories"
|
||||
cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputBin}/share/mime/packages"
|
||||
cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputBin}/share/appdata"
|
||||
cmakeFlags+=" -DKDE_INSTALL_QTQCHDIR=${!outputLib}/share/doc/qch"
|
||||
cmakeFlags+=" -DKDE_INSTALL_QCHDIR=${!outputLib}/share/doc/qch"
|
||||
cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputBin}/share/man"
|
||||
cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputBin}/share/info"
|
||||
cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputBin}/share/dbus-1"
|
||||
cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputBin}/share/dbus-1/interfaces"
|
||||
cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputBin}/share/dbus-1/services"
|
||||
cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputBin}/share/dbus-1/system-services"
|
||||
cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputBin}/etc"
|
||||
cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputBin}/etc/xdg"
|
||||
cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputBin}/etc/xdg/autostart"
|
||||
cmakeFlags+=" -DKDE_INSTALL_LOGGINGCATEGORIESDIR=${!outputLib}/share/qlogging-categories6"
|
||||
cmakeFlags+=" -DKDE_INSTALL_SYSTEMDUNITDIR=${!outputBin}/lib/systemd"
|
||||
cmakeFlags+=" -DKDE_INSTALL_SYSTEMDUSERUNITDIR=${!outputBin}/share/systemd/user"
|
||||
}
|
||||
postHooks+=(ecmPostHook)
|
||||
|
||||
xdgDataSubdirs=( \
|
||||
"config.kcfg" "kconf_update" "knotifications6" "icons" "locale" "sounds" "templates" \
|
||||
"wallpapers" "applications" "desktop-directories" "mime" "appdata" "dbus-1" \
|
||||
)
|
||||
|
||||
# ecmHostPathsSeen is an associative array of the paths that have already been
|
||||
# seen by ecmHostPathHook.
|
||||
declare -gA ecmHostPathsSeen
|
||||
|
||||
ecmHostPathIsNotSeen() {
|
||||
if [[ -n "${ecmHostPathsSeen["$1"]:-}" ]]; then
|
||||
# The path has been seen before.
|
||||
return 1
|
||||
else
|
||||
# The path has not been seen before.
|
||||
# Now it is seen, so record it.
|
||||
ecmHostPathsSeen["$1"]=1
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
ecmHostPathHook() {
|
||||
ecmHostPathIsNotSeen "$1" || return 0
|
||||
|
||||
local xdgConfigDir="$1/etc/xdg"
|
||||
if [ -d "$xdgConfigDir" ]
|
||||
then
|
||||
qtWrapperArgs+=(--prefix XDG_CONFIG_DIRS : "$xdgConfigDir")
|
||||
fi
|
||||
|
||||
for xdgDataSubdir in "${xdgDataSubdirs[@]}"
|
||||
do
|
||||
if [ -d "$1/share/$xdgDataSubdir" ]
|
||||
then
|
||||
qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "$1/share")
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
local manDir="$1/man"
|
||||
if [ -d "$manDir" ]
|
||||
then
|
||||
qtWrapperArgs+=(--prefix MANPATH : "$manDir")
|
||||
fi
|
||||
|
||||
local infoDir="$1/info"
|
||||
if [ -d "$infoDir" ]
|
||||
then
|
||||
qtWrapperArgs+=(--prefix INFOPATH : "$infoDir")
|
||||
fi
|
||||
|
||||
if [ -d "$1/dbus-1" ]
|
||||
then
|
||||
propagatedUserEnvPkgs+=" $1"
|
||||
fi
|
||||
}
|
||||
addEnvHooks "$targetOffset" ecmHostPathHook
|
11
pkgs/kde/frameworks/frameworkintegration/default.nix
Normal file
11
pkgs/kde/frameworks/frameworkintegration/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
pkg-config,
|
||||
packagekit-qt,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "frameworkintegration";
|
||||
|
||||
extraNativeBuildInputs = [pkg-config];
|
||||
extraBuildInputs = [packagekit-qt];
|
||||
}
|
4
pkgs/kde/frameworks/kapidox/default.nix
Normal file
4
pkgs/kde/frameworks/kapidox/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kapidox";
|
||||
}
|
12
pkgs/kde/frameworks/karchive/default.nix
Normal file
12
pkgs/kde/frameworks/karchive/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
pkg-config,
|
||||
xz,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "karchive";
|
||||
|
||||
extraNativeBuildInputs = [qttools pkg-config];
|
||||
extraBuildInputs = [xz];
|
||||
}
|
13
pkgs/kde/frameworks/kauth/default.nix
Normal file
13
pkgs/kde/frameworks/kauth/default.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kauth";
|
||||
|
||||
# Late resolve paths so things end up in their own prefix
|
||||
# FIXME(later): discuss with upstream
|
||||
patches = [./fix-paths.patch];
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
17
pkgs/kde/frameworks/kauth/fix-paths.patch
Normal file
17
pkgs/kde/frameworks/kauth/fix-paths.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff --git a/KF6AuthConfig.cmake.in b/KF6AuthConfig.cmake.in
|
||||
index 4ee3f92..65a40d5 100644
|
||||
--- a/KF6AuthConfig.cmake.in
|
||||
+++ b/KF6AuthConfig.cmake.in
|
||||
@@ -4,9 +4,9 @@ set(KAUTH_STUB_FILES_DIR "@PACKAGE_KDE_INSTALL_DATADIR_KF@/kauth/")
|
||||
|
||||
set(KAUTH_BACKEND_NAME "@KAUTH_BACKEND_NAME@")
|
||||
set(KAUTH_HELPER_BACKEND_NAME "@KAUTH_HELPER_BACKEND_NAME@")
|
||||
-set(KAUTH_POLICY_FILES_INSTALL_DIR "@KAUTH_POLICY_FILES_INSTALL_DIR@")
|
||||
-set(KAUTH_HELPER_INSTALL_DIR "@KAUTH_HELPER_INSTALL_DIR@")
|
||||
-set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "@KAUTH_HELPER_INSTALL_ABSOLUTE_DIR@")
|
||||
+set(KAUTH_POLICY_FILES_INSTALL_DIR "${KDE_INSTALL_DATADIR}/polkit-1/actions")
|
||||
+set(KAUTH_HELPER_INSTALL_DIR "${KDE_INSTALL_LIBEXECDIR}")
|
||||
+set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "${KDE_INSTALL_LIBEXECDIR}")
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
9
pkgs/kde/frameworks/kbookmarks/default.nix
Normal file
9
pkgs/kde/frameworks/kbookmarks/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kbookmarks";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
9
pkgs/kde/frameworks/kcalendarcore/default.nix
Normal file
9
pkgs/kde/frameworks/kcalendarcore/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
libical,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcalendarcore";
|
||||
|
||||
extraBuildInputs = [libical];
|
||||
}
|
9
pkgs/kde/frameworks/kcmutils/default.nix
Normal file
9
pkgs/kde/frameworks/kcmutils/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcmutils";
|
||||
|
||||
extraPropagatedBuildInputs = [qtdeclarative];
|
||||
}
|
11
pkgs/kde/frameworks/kcodecs/default.nix
Normal file
11
pkgs/kde/frameworks/kcodecs/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
gperf,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcodecs";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
extraBuildInputs = [gperf];
|
||||
}
|
4
pkgs/kde/frameworks/kcolorscheme/default.nix
Normal file
4
pkgs/kde/frameworks/kcolorscheme/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcolorscheme";
|
||||
}
|
9
pkgs/kde/frameworks/kcompletion/default.nix
Normal file
9
pkgs/kde/frameworks/kcompletion/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcompletion";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
11
pkgs/kde/frameworks/kconfig/default.nix
Normal file
11
pkgs/kde/frameworks/kconfig/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kconfig";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
extraPropagatedBuildInputs = [qtdeclarative];
|
||||
}
|
9
pkgs/kde/frameworks/kconfigwidgets/default.nix
Normal file
9
pkgs/kde/frameworks/kconfigwidgets/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kconfigwidgets";
|
||||
|
||||
extraBuildInputs = [qttools];
|
||||
}
|
4
pkgs/kde/frameworks/kcontacts/default.nix
Normal file
4
pkgs/kde/frameworks/kcontacts/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcontacts";
|
||||
}
|
12
pkgs/kde/frameworks/kcoreaddons/default.nix
Normal file
12
pkgs/kde/frameworks/kcoreaddons/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
shared-mime-info,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcoreaddons";
|
||||
|
||||
extraNativeBuildInputs = [qttools shared-mime-info];
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
4
pkgs/kde/frameworks/kcrash/default.nix
Normal file
4
pkgs/kde/frameworks/kcrash/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kcrash";
|
||||
}
|
4
pkgs/kde/frameworks/kdav/default.nix
Normal file
4
pkgs/kde/frameworks/kdav/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kdav";
|
||||
}
|
9
pkgs/kde/frameworks/kdbusaddons/default.nix
Normal file
9
pkgs/kde/frameworks/kdbusaddons/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kdbusaddons";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
11
pkgs/kde/frameworks/kdeclarative/default.nix
Normal file
11
pkgs/kde/frameworks/kdeclarative/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
spirv-tools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kdeclarative";
|
||||
|
||||
extraNativeBuildInputs = [spirv-tools];
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
4
pkgs/kde/frameworks/kded/default.nix
Normal file
4
pkgs/kde/frameworks/kded/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kded";
|
||||
}
|
7
pkgs/kde/frameworks/kdesu/default.nix
Normal file
7
pkgs/kde/frameworks/kdesu/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kdesu";
|
||||
|
||||
# Look for NixOS SUID wrapper first
|
||||
patches = [./kdesu-search-for-wrapped-daemon-first.patch];
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
From 01af4d2a098e5819c09bca37568941dcd4b89d0b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
|
||||
Date: Thu, 16 Jul 2020 13:21:42 -0300
|
||||
Subject: [PATCH] Search for the daemon first in /run/wrappers/bin
|
||||
|
||||
If looking first in libexec, the eventually wrapped one in
|
||||
/run/wrappers/bin can not be found.
|
||||
---
|
||||
src/client.cpp | 13 ++++++++-----
|
||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/client.cpp b/src/client.cpp
|
||||
index 44fbacd..6b5abf5 100644
|
||||
--- a/src/client.cpp
|
||||
+++ b/src/client.cpp
|
||||
@@ -384,11 +384,14 @@ int KDEsuClient::stopServer()
|
||||
|
||||
static QString findDaemon()
|
||||
{
|
||||
- QString daemon = QFile::decodeName(KDE_INSTALL_FULL_LIBEXECDIR_KF "/kdesud");
|
||||
- if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH
|
||||
- daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud"));
|
||||
- if (daemon.isEmpty()) {
|
||||
- qCWarning(KSU_LOG) << "kdesud daemon not found.";
|
||||
+ QString daemon = QFile::decodeName("/run/wrappers/bin/kdesud");
|
||||
+ if (!QFile::exists(daemon)) { // if not in wrappers
|
||||
+ daemon = QFile::decodeName(KDE_INSTALL_FULL_LIBEXECDIR_KF "/kdesud");
|
||||
+ if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH
|
||||
+ daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud"));
|
||||
+ if (daemon.isEmpty()) {
|
||||
+ qCWarning(KSU_LOG) << "kdesud daemon not found.";
|
||||
+ }
|
||||
}
|
||||
}
|
||||
return daemon;
|
||||
--
|
||||
2.27.0
|
||||
|
11
pkgs/kde/frameworks/kdnssd/default.nix
Normal file
11
pkgs/kde/frameworks/kdnssd/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
avahi,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kdnssd";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
extraBuildInputs = [avahi];
|
||||
}
|
18
pkgs/kde/frameworks/kdoctools/default.nix
Normal file
18
pkgs/kde/frameworks/kdoctools/default.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
docbook_xml_dtd_45,
|
||||
docbook-xsl-nons,
|
||||
perl,
|
||||
perlPackages,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kdoctools";
|
||||
|
||||
# lots of self-references, the output is pretty small (~5MB), not worth trying to untangle
|
||||
outputs = ["out"];
|
||||
|
||||
# Perl could be used both at build time and at runtime.
|
||||
extraNativeBuildInputs = [perl perlPackages.URI];
|
||||
extraBuildInputs = [docbook_xml_dtd_45 docbook-xsl-nons];
|
||||
extraPropagatedBuildInputs = [perl perlPackages.URI];
|
||||
}
|
14
pkgs/kde/frameworks/kfilemetadata/cmake-install-paths.patch
Normal file
14
pkgs/kde/frameworks/kfilemetadata/cmake-install-paths.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||
index 84cc68c..2e02194 100644
|
||||
--- a/src/CMakeLists.txt
|
||||
+++ b/src/CMakeLists.txt
|
||||
@@ -85,7 +85,7 @@ install(TARGETS KF6FileMetaData EXPORT KF6FileMetaDataTargets ${KF_INSTALL_TARGE
|
||||
|
||||
install(EXPORT KF6FileMetaDataTargets
|
||||
NAMESPACE KF6::
|
||||
- DESTINATION ${KDE_INSTALL_LIBDIR}/cmake/KF6FileMetaData
|
||||
+ DESTINATION ${KDE_INSTALL_FULL_CMAKEPACKAGEDIR}/KF6FileMetaData
|
||||
FILE KF6FileMetaDataTargets.cmake)
|
||||
|
||||
install(FILES
|
||||
|
21
pkgs/kde/frameworks/kfilemetadata/default.nix
Normal file
21
pkgs/kde/frameworks/kfilemetadata/default.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
pkg-config,
|
||||
attr,
|
||||
ebook_tools,
|
||||
exiv2,
|
||||
ffmpeg,
|
||||
kconfig,
|
||||
kdegraphics-mobipocket,
|
||||
libappimage,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kfilemetadata";
|
||||
|
||||
# Fix installing cmake files into wrong directory
|
||||
# FIXME(later): upstream
|
||||
patches = [./cmake-install-paths.patch];
|
||||
|
||||
extraNativeBuildInputs = [pkg-config];
|
||||
extraBuildInputs = [attr ebook_tools exiv2 ffmpeg kconfig kdegraphics-mobipocket libappimage];
|
||||
}
|
9
pkgs/kde/frameworks/kglobalaccel/default.nix
Normal file
9
pkgs/kde/frameworks/kglobalaccel/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kglobalaccel";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
12
pkgs/kde/frameworks/kguiaddons/default.nix
Normal file
12
pkgs/kde/frameworks/kguiaddons/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtwayland,
|
||||
pkg-config,
|
||||
wayland,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kguiaddons";
|
||||
|
||||
extraNativeBuildInputs = [pkg-config];
|
||||
extraBuildInputs = [qtwayland wayland];
|
||||
}
|
11
pkgs/kde/frameworks/kholidays/default.nix
Normal file
11
pkgs/kde/frameworks/kholidays/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kholidays";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
9
pkgs/kde/frameworks/ki18n/default.nix
Normal file
9
pkgs/kde/frameworks/ki18n/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "ki18n";
|
||||
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
15
pkgs/kde/frameworks/kiconthemes/default.nix
Normal file
15
pkgs/kde/frameworks/kiconthemes/default.nix
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
qtsvg,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kiconthemes";
|
||||
|
||||
extraBuildInputs = [
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qttools
|
||||
];
|
||||
}
|
13
pkgs/kde/frameworks/kidletime/default.nix
Normal file
13
pkgs/kde/frameworks/kidletime/default.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtwayland,
|
||||
pkg-config,
|
||||
wayland-protocols,
|
||||
xorg,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kidletime";
|
||||
|
||||
extraNativeBuildInputs = [pkg-config];
|
||||
extraBuildInputs = [qtwayland xorg.libXScrnSaver wayland-protocols];
|
||||
}
|
16
pkgs/kde/frameworks/kimageformats/default.nix
Normal file
16
pkgs/kde/frameworks/kimageformats/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
pkg-config,
|
||||
libheif,
|
||||
libjxl,
|
||||
libavif,
|
||||
libraw,
|
||||
openexr_3,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kimageformats";
|
||||
|
||||
extraCmakeFlags = ["-DKIMAGEFORMATS_HEIF=1"];
|
||||
extraNativeBuildInputs = [pkg-config];
|
||||
extraBuildInputs = [libheif libjxl libavif libraw openexr_3];
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
From af54a2a37655df26a33bc6783cb472c38f65322f Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Tuegel <ttuegel@mailbox.org>
|
||||
Date: Sun, 28 Mar 2021 10:31:12 -0500
|
||||
Subject: [PATCH 1/2] Remove impure smbd search path
|
||||
|
||||
---
|
||||
src/core/ksambashare.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/core/ksambashare.cpp b/src/core/ksambashare.cpp
|
||||
index e810ce4..7cfb4e6 100644
|
||||
--- a/src/core/ksambashare.cpp
|
||||
+++ b/src/core/ksambashare.cpp
|
||||
@@ -61,7 +61,7 @@ KSambaSharePrivate::~KSambaSharePrivate()
|
||||
bool KSambaSharePrivate::isSambaInstalled()
|
||||
{
|
||||
const bool daemonExists =
|
||||
- !QStandardPaths::findExecutable(QStringLiteral("smbd"), {QStringLiteral("/usr/sbin/"), QStringLiteral("/usr/local/sbin/")}).isEmpty();
|
||||
+ !QStandardPaths::findExecutable(QStringLiteral("smbd")).isEmpty();
|
||||
if (!daemonExists) {
|
||||
qCDebug(KIO_CORE_SAMBASHARE) << "KSambaShare: Could not find smbd";
|
||||
}
|
||||
--
|
||||
2.30.1
|
||||
|
18
pkgs/kde/frameworks/kio/default.nix
Normal file
18
pkgs/kde/frameworks/kio/default.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qt5compat,
|
||||
qttools,
|
||||
acl,
|
||||
attr,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kio";
|
||||
|
||||
patches = [
|
||||
# Remove hardcoded smbd search path
|
||||
# FIXME(later): discuss with upstream?
|
||||
./0001-Remove-impure-smbd-search-path.patch
|
||||
];
|
||||
|
||||
extraBuildInputs = [qt5compat qttools acl attr];
|
||||
}
|
14
pkgs/kde/frameworks/kirigami/default.nix
Normal file
14
pkgs/kde/frameworks/kirigami/default.nix
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtsvg,
|
||||
qttools,
|
||||
qtdeclarative,
|
||||
qt5compat,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kirigami";
|
||||
|
||||
extraNativeBuildInputs = [qtsvg qttools];
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
extraPropagatedBuildInputs = [qt5compat];
|
||||
}
|
9
pkgs/kde/frameworks/kitemmodels/default.nix
Normal file
9
pkgs/kde/frameworks/kitemmodels/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kitemmodels";
|
||||
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
9
pkgs/kde/frameworks/kitemviews/default.nix
Normal file
9
pkgs/kde/frameworks/kitemviews/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kitemviews";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
9
pkgs/kde/frameworks/kjobwidgets/default.nix
Normal file
9
pkgs/kde/frameworks/kjobwidgets/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kjobwidgets";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
16
pkgs/kde/frameworks/knewstuff/default.nix
Normal file
16
pkgs/kde/frameworks/knewstuff/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
qttools,
|
||||
kcmutils,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "knewstuff";
|
||||
|
||||
# Late resolve knsrcdir so other things install to their own prefix
|
||||
# FIXME(later): upstream
|
||||
patches = [./delay-resolving-knsrcdir.patch];
|
||||
|
||||
extraBuildInputs = [qtdeclarative qttools];
|
||||
extraPropagatedBuildInputs = [kcmutils];
|
||||
}
|
14
pkgs/kde/frameworks/knewstuff/delay-resolving-knsrcdir.patch
Normal file
14
pkgs/kde/frameworks/knewstuff/delay-resolving-knsrcdir.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/KF6NewStuffCoreConfig.cmake.in b/KF6NewStuffCoreConfig.cmake.in
|
||||
index d70f7132..f75e9fce 100644
|
||||
--- a/KF6NewStuffCoreConfig.cmake.in
|
||||
+++ b/KF6NewStuffCoreConfig.cmake.in
|
||||
@@ -20,7 +20,7 @@ if (NOT @BUILD_SHARED_LIBS@)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
-set(KDE_INSTALL_KNSRCDIR "@KDE_INSTALL_DATADIR@/knsrcfiles")
|
||||
+set(KDE_INSTALL_KNSRCDIR "${KDE_INSTALL_DATADIR}/knsrcfiles")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/KF6NewStuffCoreTargets.cmake")
|
||||
@PACKAGE_INCLUDE_CORE_QCHTARGETS@
|
||||
|
12
pkgs/kde/frameworks/knotifications/default.nix
Normal file
12
pkgs/kde/frameworks/knotifications/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
qtdeclarative,
|
||||
libcanberra,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "knotifications";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
extraBuildInputs = [qtdeclarative libcanberra];
|
||||
}
|
9
pkgs/kde/frameworks/knotifyconfig/default.nix
Normal file
9
pkgs/kde/frameworks/knotifyconfig/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
libcanberra,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "knotifyconfig";
|
||||
|
||||
extraBuildInputs = [libcanberra];
|
||||
}
|
8
pkgs/kde/frameworks/kpackage/default.nix
Normal file
8
pkgs/kde/frameworks/kpackage/default.nix
Normal file
@ -0,0 +1,8 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kpackage";
|
||||
|
||||
# Follow symlinks when resolving packages
|
||||
# FIXME(later): upstream
|
||||
patches = [./follow-symlinks.patch];
|
||||
}
|
13
pkgs/kde/frameworks/kpackage/follow-symlinks.patch
Normal file
13
pkgs/kde/frameworks/kpackage/follow-symlinks.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/kpackage/packageloader.cpp b/src/kpackage/packageloader.cpp
|
||||
index 9dbd1f6..c50a6e5 100644
|
||||
--- a/src/kpackage/packageloader.cpp
|
||||
+++ b/src/kpackage/packageloader.cpp
|
||||
@@ -128,7 +128,7 @@ QList<KPluginMetaData> PackageLoader::listPackages(const QString &packageFormat,
|
||||
}
|
||||
|
||||
for (auto const &plugindir : std::as_const(paths)) {
|
||||
- QDirIterator it(plugindir, QStringList{QStringLiteral("metadata.json")}, QDir::Files, QDirIterator::Subdirectories);
|
||||
+ QDirIterator it(plugindir, QStringList{QStringLiteral("metadata.json")}, QDir::Files, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
|
||||
std::unordered_set<QString> dirs;
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
4
pkgs/kde/frameworks/kparts/default.nix
Normal file
4
pkgs/kde/frameworks/kparts/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kparts";
|
||||
}
|
9
pkgs/kde/frameworks/kpeople/default.nix
Normal file
9
pkgs/kde/frameworks/kpeople/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kpeople";
|
||||
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
9
pkgs/kde/frameworks/kplotting/default.nix
Normal file
9
pkgs/kde/frameworks/kplotting/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kplotting";
|
||||
|
||||
extraBuildInputs = [qttools];
|
||||
}
|
4
pkgs/kde/frameworks/kpty/default.nix
Normal file
4
pkgs/kde/frameworks/kpty/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kpty";
|
||||
}
|
9
pkgs/kde/frameworks/kquickcharts/default.nix
Normal file
9
pkgs/kde/frameworks/kquickcharts/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kquickcharts";
|
||||
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
9
pkgs/kde/frameworks/krunner/default.nix
Normal file
9
pkgs/kde/frameworks/krunner/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
plasma-activities,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "krunner";
|
||||
|
||||
extraBuildInputs = [plasma-activities];
|
||||
}
|
10
pkgs/kde/frameworks/kservice/default.nix
Normal file
10
pkgs/kde/frameworks/kservice/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kservice";
|
||||
|
||||
patches = [
|
||||
# follow symlinks when generating sycoca
|
||||
# FIXME(later): upstream
|
||||
./qdiriterator-follow-symlinks.patch
|
||||
];
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
diff --git a/src/sycoca/kbuildsycoca.cpp b/src/sycoca/kbuildsycoca.cpp
|
||||
index b125299..0682b90 100644
|
||||
--- a/src/sycoca/kbuildsycoca.cpp
|
||||
+++ b/src/sycoca/kbuildsycoca.cpp
|
||||
@@ -207,7 +207,7 @@ bool KBuildSycoca::build()
|
||||
const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_resourceSubdir, QStandardPaths::LocateDirectory);
|
||||
qCDebug(SYCOCA) << "Looking for subdir" << m_resourceSubdir << "=>" << dirs;
|
||||
for (const QString &dir : dirs) {
|
||||
- QDirIterator it(dir, QDirIterator::Subdirectories);
|
||||
+ QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
|
||||
while (it.hasNext()) {
|
||||
const QString filePath = it.next();
|
||||
Q_ASSERT(filePath.startsWith(dir)); // due to the line below...
|
9
pkgs/kde/frameworks/kstatusnotifieritem/default.nix
Normal file
9
pkgs/kde/frameworks/kstatusnotifieritem/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kstatusnotifieritem";
|
||||
|
||||
extraNativeBuildInputs = [qttools];
|
||||
}
|
10
pkgs/kde/frameworks/ksvg/default.nix
Normal file
10
pkgs/kde/frameworks/ksvg/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
qtsvg,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "ksvg";
|
||||
|
||||
extraBuildInputs = [qtdeclarative qtsvg];
|
||||
}
|
11
pkgs/kde/frameworks/ktexteditor/default.nix
Normal file
11
pkgs/kde/frameworks/ktexteditor/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
qtspeech,
|
||||
editorconfig-core-c,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "ktexteditor";
|
||||
|
||||
extraBuildInputs = [qtdeclarative qtspeech editorconfig-core-c];
|
||||
}
|
9
pkgs/kde/frameworks/ktexttemplate/default.nix
Normal file
9
pkgs/kde/frameworks/ktexttemplate/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtdeclarative,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "ktexttemplate";
|
||||
|
||||
extraBuildInputs = [qtdeclarative];
|
||||
}
|
13
pkgs/kde/frameworks/ktextwidgets/default.nix
Normal file
13
pkgs/kde/frameworks/ktextwidgets/default.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qtspeech,
|
||||
qttools,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "ktextwidgets";
|
||||
|
||||
extraBuildInputs = [
|
||||
qtspeech
|
||||
qttools
|
||||
];
|
||||
}
|
4
pkgs/kde/frameworks/kunitconversion/default.nix
Normal file
4
pkgs/kde/frameworks/kunitconversion/default.nix
Normal file
@ -0,0 +1,4 @@
|
||||
{mkKdeDerivation}:
|
||||
mkKdeDerivation {
|
||||
pname = "kunitconversion";
|
||||
}
|
12
pkgs/kde/frameworks/kuserfeedback/default.nix
Normal file
12
pkgs/kde/frameworks/kuserfeedback/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
mkKdeDerivation,
|
||||
qttools,
|
||||
qtsvg,
|
||||
}:
|
||||
mkKdeDerivation {
|
||||
pname = "kuserfeedback";
|
||||
|
||||
# Disable server-side stuff we don't care about
|
||||
extraCmakeFlags = ["-DENABLE_CONSOLE=0" "-DENABLE_CLI=0"];
|
||||
extraNativeBuildInputs = [qttools qtsvg];
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user