diff --git a/.files b/.files
new file mode 100644
index 0000000..ad0fcfe
Binary files /dev/null and b/.files differ
diff --git a/.meta b/.meta
new file mode 100644
index 0000000..564e909
--- /dev/null
+++ b/.meta
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/.rev b/.rev
new file mode 100644
index 0000000..6101ee2
--- /dev/null
+++ b/.rev
@@ -0,0 +1,10 @@
+
+
+ c13d6236de38e787d77bd63ca1069d2d
+ 510.47.03
+
+ RBrownFactory
+ To be used by chromium / hwloc
+ 991743
+
+
diff --git a/.servicemark b/.servicemark
new file mode 100644
index 0000000..063c137
--- /dev/null
+++ b/.servicemark
@@ -0,0 +1 @@
+375c8617a8177fc4ef6bf0eb9b70e238
diff --git a/_service b/_service
new file mode 100644
index 0000000..e6ecb04
--- /dev/null
+++ b/_service
@@ -0,0 +1,16 @@
+
+
+ git
+ https://github.com/NVIDIA/nvidia-settings.git
+ 510.47.03
+ @PARENT_TAG@
+ src/libXNVCtrl
+ libXNVCtrl
+
+
+
+ xz
+ *.tar
+
+
+
diff --git a/libXNVCtrl-510.47.03.obscpio b/libXNVCtrl-510.47.03.obscpio
new file mode 120000
index 0000000..4c845c9
--- /dev/null
+++ b/libXNVCtrl-510.47.03.obscpio
@@ -0,0 +1 @@
+/ipfs/bafybeiceknsjfkzq23kbvod755ii2j7olfyfszypefff4gomakvswz4tiy
\ No newline at end of file
diff --git a/libXNVCtrl.changes b/libXNVCtrl.changes
new file mode 100644
index 0000000..81706c3
--- /dev/null
+++ b/libXNVCtrl.changes
@@ -0,0 +1,9 @@
+-------------------------------------------------------------------
+Fri Jul 29 13:19:16 UTC 2022 - Callum Farmer
+
+- Initial packaging of libXNVCtrl version 510.47.03
+ * nothing changed between 510.47.03 and 515.57
+- Add required patches:
+ * shared-library.patch
+ * persistent-nvidia-id-string.patch
+
diff --git a/libXNVCtrl.obsinfo b/libXNVCtrl.obsinfo
new file mode 100644
index 0000000..7896983
--- /dev/null
+++ b/libXNVCtrl.obsinfo
@@ -0,0 +1,4 @@
+name: libXNVCtrl
+version: 510.47.03
+mtime: 1643742892
+commit: 8bb057c8b1ab4cecbbf3916e248ff486fe548066
diff --git a/libXNVCtrl.spec b/libXNVCtrl.spec
new file mode 100644
index 0000000..a1585d2
--- /dev/null
+++ b/libXNVCtrl.spec
@@ -0,0 +1,77 @@
+#
+# spec file for package libXNVCtrl
+#
+# Copyright (c) 2022 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+Name: libXNVCtrl
+Version: 510.47.03
+Release: 0
+Summary: NV-CONTROL X library
+License: MIT
+Group: Development/Libraries/C and C++
+URL: https://github.com/NVIDIA/nvidia-settings
+Source0: %{name}-%{version}.tar.xz
+Patch0: shared-library.patch
+Patch1: persistent-nvidia-id-string.patch
+BuildRequires: pkgconfig
+BuildRequires: pkgconfig(xv)
+
+%description
+The NV-CONTROL X extension provides a mechanism for X clients to query
+and set configuration parameters of the NVIDIA X driver.
+State set by the NV-CONTROL X extension is assumed to be persistent
+only for the current server generation.
+
+%package -n libXNVCtrl0
+Summary: NV-CONTROL X extension library
+Group: System/Libraries
+
+%description -n libXNVCtrl0
+The NV-CONTROL X extension provides a mechanism for X clients to query
+and set configuration parameters of the NVIDIA X driver.
+State set by the NV-CONTROL X extension is assumed to be persistent
+only for the current server generation.
+
+%package devel
+Summary: Development files for the NV-CONTROL X extension library
+Group: Development/Libraries/C and C++
+Requires: libXNVCtrl0 = %{version}
+
+%description devel
+This package contains the development files for the
+NV-CONTROL X extension library
+
+%prep
+%autosetup -p0
+
+%build
+%make_build
+
+%install
+mkdir -p %{buildroot}%{_includedir}/NVCtrl
+mkdir -p %{buildroot}%{_libdir}
+install -m0644 ./*.h %{buildroot}%{_includedir}/NVCtrl
+cp -a ./libXNVCtrl.so* %{buildroot}%{_libdir}
+
+%ldconfig_scriptlets -n libXNVCtrl0
+
+%files -n libXNVCtrl0
+%{_libdir}/libXNVCtrl.so.*
+
+%files -n libXNVCtrl-devel
+%{_libdir}/libXNVCtrl.so
+%{_includedir}/NVCtrl
+
+%changelog
diff --git a/persistent-nvidia-id-string.patch b/persistent-nvidia-id-string.patch
new file mode 100644
index 0000000..30daa42
--- /dev/null
+++ b/persistent-nvidia-id-string.patch
@@ -0,0 +1,15 @@
+---
+ utils.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- utils.mk
++++ utils.mk
+@@ -524,7 +524,7 @@ define GENERATE_NVIDSTRING
+ # g_nvid_string.c depends on all objects except g_nvid_string.o, and version.mk
+ $(NVIDSTRING): $$(filter-out $$(call BUILD_OBJECT_LIST,$$(NVIDSTRING)), $(3)) $$(VERSION_MK)
+ $(at_if_quiet)$$(MKDIR) $$(dir $$@)
+- $(at_if_quiet)$$(ECHO) "const char $(1)[] = \"nvidia id: NVIDIA $$(strip $(2)) for $$(TARGET_ARCH) $$(NVIDIA_VERSION) $$(NVIDSTRING_BUILD_TYPE_STRING) (`$$(WHOAMI)`@`$$(HOSTNAME)`) `$$(DATE)`\";" > $$@
++ $(at_if_quiet)$$(ECHO) "const char $(1)[] = \"nvidia id: NVIDIA $$(strip $(2)) for $$(TARGET_ARCH) $$(NVIDIA_VERSION) $$(NVIDSTRING_BUILD_TYPE_STRING) (abuild@host) `$$(DATE) -d @$$(SOURCE_DATE_EPOCH)`\";" > $$@
+ $(at_if_quiet)$$(ECHO) "const char *const p$$(strip $(1)) = $(1) + 11;" >> $$@;
+ endef
+
diff --git a/shared-library.patch b/shared-library.patch
new file mode 100644
index 0000000..b7fac53
--- /dev/null
+++ b/shared-library.patch
@@ -0,0 +1,36 @@
+diff -Naur nvidia-settings-430.26.old/src/libXNVCtrl/Makefile nvidia-settings-430.26/src/libXNVCtrl/Makefile
+--- Makefile 2019-06-16 21:49:43.008676795 +0200
++++ Makefile 2019-06-16 21:50:31.462519476 +0200
+@@ -51,7 +51,9 @@
+ .PHONY: clean
+
+ all: $(LIBXNVCTRL)
++all: $(LIBXNVCTRL_SHARED)
+
+ clean:
+ rm -rf $(LIBXNVCTRL) *~ \
+ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d
++ rm -f $(LIBXNVCTRL_SHARED) $(LIBXNVCTRL_SHARED).*
+diff -Naur nvidia-settings-430.26.old/src/libXNVCtrl/xnvctrl.mk nvidia-settings-430.26/src/libXNVCtrl/xnvctrl.mk
+--- xnvctrl.mk 2019-06-16 21:49:43.008676795 +0200
++++ xnvctrl.mk 2019-06-18 18:48:30.736176713 +0200
+@@ -37,7 +37,8 @@
+ XNVCTRL_CFLAGS ?=
+
+
+-LIBXNVCTRL = $(OUTPUTDIR)/libXNVCtrl.a
++LIBXNVCTRL = libXNVCtrl.a
++LIBXNVCTRL_SHARED = libXNVCtrl.so
+
+ LIBXNVCTRL_SRC = $(XNVCTRL_DIR)/NVCtrl.c
+
+@@ -47,3 +48,9 @@
+
+ $(LIBXNVCTRL) : $(LIBXNVCTRL_OBJ)
+ $(call quiet_cmd,AR) ru $@ $(LIBXNVCTRL_OBJ)
++
++$(LIBXNVCTRL_SHARED): $(LIBXNVCTRL_OBJ)
++ $(RM) $@ $@.*
++ $(CC) -shared -Wl,-soname=$@.0 -o $@.0.0.0 $(LDFLAGS) $^ -lXext -lX11
++ ln -s $@.0.0.0 $@.0
++ ln -s $@.0 $@