hannah-eee/arch-wiki-docs huggingface dataset:
Nomad

Nomad
is a workload orchestrator to deploy and manage containers and non-containerized applications.
Installation
Install
the
nomad
package.
Known issues
NVIDIA not supported
NVIDIA support has been disabled due to there being no way to disable a non-existent driver being loaded. When compiled with NVIDIA support, the instance immediately crashes with the following error:
/usr/bin/nomad: undefined symbol: nvmlDeviceGetGraphicsRunningProcesses
The NVIDIA driver plugin will be externalised, see GitHub issue
#8330
.
Default plugin directory
The default plugin directory
/var/lib/nomad/plugins
has been changed to
/usr/lib/nomad/plugins
to reflect
FHS
.
Configuration
Nomad loads all configuration files in the
/etc/nomad.d
directory on startup.
See
https://learn.hashicorp.com/tutorials/nomad/security-enable-tls
to set up TLS encryption with Nomad.
Server
Create a configuration file at
/etc/nomad.d/server.hcl
:
Note
Replace the
bootstrap_expect
value with the number of Nomad servers you are deploying; three or five is recommended.
/etc/nomad.d/server.hcl
server {
  enabled = true
  bootstrap_expect = 3
}
Client
Create a configuration file at
/etc/nomad.d/client.hcl
:
/etc/nomad.d/client.hcl
client {
  enabled = true
}
Task drivers
Task drivers
are used by Nomad clients to execute a task and provide resource isolation.
Nomad ships with support for the following task drivers out of the box:
Docker
(requires
docker
)
Java
(requires
jre-openjdk
or
jre-openjdk-headless
)
QEMU
(requires
qemu-desktop
)
exec
&
raw_exec
containerd
In order to use the containerd driver,
Install
the
nomad-driver-containerd
package.
Enable the plugin in the client configuration, then
Reload
nomad.service
.
/etc/nomad.d/containerd.hcl
plugin "containerd-driver" {
  config {
    # Arch Linux uses cgroups v2 by default
    # For cgroups v1, use "io.containerd.runc.v1"
    containerd_runtime = "io.containerd.runc.v2"
  }
}
Note
More configuration parameters can be found in
upstream documentation
[
dead link
2025-08-16—HTTP 404]
.
podman
In order to user the podman driver,
Install
the
nomad-driver-podman
.
Nomad requires
podman.service
to be
started
.
Note
podman.service
can also be started as a user systemd unit.
Enable the driver in the client configuration, then
reload
nomad.service
.
/etc/nomad.d/podman.hcl
plugin "nomad-driver-podman" {
  config {
    # Arch Linux socket path for podman differs from the default value of socket_path (unix://run/podman/io.podman)
    socket_path = "unix://run/podman/podman.sock"
    # In case podman.service was started as user
    socket_path = "unix://run/user/
USER_UID
/podman/podman.sock"
  }
}
Note
More configuration parameters can be found in
upstream documentation
.
See also
Official documentation
External task driver documentation
Notion-app

Note
Not to be confused with the window manager
Notion
.
From
Wikipedia
:
Notion is a note-taking software and project management software that is used for note-taking, task management, project management, knowledge management, and personal knowledge management. The app uses databases and markdown pages for use in personal and collaboration work.
Installation
Install
notion-app-electron
AUR
.
Tips and tricks
Reset local cache
The
official Notion wiki
provides a guide for Windows and Mac, but not for Linux since only the web browser version is provided and no native version.
If you have to reset the locally cached Notion data because of technical bugs, delete all the content of the
~/.config/Notion
folder.
On next startup of Notion, you will have to log in again. The data will be fetched fresh from Notion servers.
See also
The official website
Wikipedia's page
Notion

Related articles
Window manager
This article or section is out of date.
Reason:
Looking at the list of files provided by
notion
, the
/usr/share/xsessions/notion.desktop
is provided. The keys mentioned in
#Usage
look like they have changed (according to the man page and
getting started tour
) (Discuss in
Talk:Notion
)
Note
Not to be confused with the note-taking application
Notion-app
.
Notion
is a tiling, tabbed
window manager
for X.
Installation
Install
notion
.
Starting
Run
notion
with
xinit
.
With a display manager
To start/select Notion with a
display manager
, a standard .desktop file can be created in the
/usr/share/xsessions/
directory. An example
notion.desktop
file can be found below:
[Desktop Entry]
Name=Notion
Comment=This session logs you into Notion
Exec=/usr/bin/notion
TryExec=/usr/bin/notion
Icon=
Type=XSession
See the
display manager
article for more details.
Usage
You can view Notion's man page during use with the F1 key and pressing the return key, this will tell you the default key bindings for Notion. You can also access the man page for other programs this way by pressing F1, typing in the program's name and pressing return. Besides the manual there is also a
getting started tour
available for a quick overview of Notion.
Configuration
Notion can be configured using Lua. To get started, copy
/etc/notion/cfg_notion.lua
to
~/.notion
. For more information, read
Configuring and Extending Notion using Lua
.
See also
https://notionwm.net/
- Notion website
https://raboof.github.io/notion-doc/notionconf/
- Configuring and Extending Notion using Lua
https://github.com/raboof/notion/
- Notion GitHub
NTFS

Related articles
File systems
NTFS-3G
From
Wikipedia
:
NTFS (New Technology File System)
is a proprietary journaling file system developed by Microsoft. Starting with Windows NT 3.1, it is the default file system of the Windows NT family.
The
ntfs3
kernel driver provides read and write support for the file system.
There are no userspace utilities alongside the kernel driver. To format partitions and perform maintenance, you can
install
the
ntfsprogs
package from
NTFS-3G
or use a Windows machine.
Tips and tricks
Improving performance
You can enable the
prealloc
mount(8)
option to decrease fragmentation in case of parallel write operations (most useful for HDD).
Prevent creation of names not allowed by Windows
NTFS itself does not have restrictions for characters and names used, but
Windows does
.
ntfs3 supports
windows_names
mount(8)
option. Use it to strictly maintain compatibility.
Known issues
Explicit file system type required to mount
ntfs3
may require the file system type to mount, or may otherwise mount read-only, see
#File system mounts read-only
.
To be able to mount the file system, specify its type as
ntfs3
. For example, using
mount(8)
's
-t
/
--types
option:
# mount -t ntfs3 /dev/
sdxY
/mnt
Or using
fstab
:
/etc/fstab
/dev/
sdxY
/mnt
ntfs3 defaults 0 0
Troubleshooting
File system mounts read-only
The kernel from
linux
package has enabled
CONFIG_NTFS_FS
compatibility option
[1]
. It mimics the legacy driver behavior and mounts the file system read-only when
ntfs
type is used for mount.
To mount the file system read-write, use
ntfs3
type. See
#Explicit file system type required to mount
.
unknown filesystem type 'ntfs'
When
mounting
NTFS, you can encounter an error such as:
mount:
/mnt
: unknown filesystem type 'ntfs'
See
#Explicit file system type required to mount
.
If you want to use
ntfs3
as the default driver for
ntfs
partitions, such
udev
rule does the trick:
/etc/udev/rules.d/ntfs3_by_default.rules
SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs3"
Although, this method is not recommended and can confuse some 3rd party tools.
Unable to mount with ntfs3 with partition marked dirty
When trying to mount a good NTFS partition (i.e. which successfully mounts with NTFS-3G and for which
ntfsfix --no-action
does not report any error), you may get the following error:
mount:
/mnt
: wrong fs type, bad option, bad superblock on
/dev/sdb1
, missing codepage or helper program, or other error.
       dmesg(1) may have more information after failed mount system call.
ntfs3 will not mount a partition where the volume is marked dirty without the force option.
dmesg
explicitly helps recognizing the situation, saying:
sdb1
: volume is dirty and "force" flag is not set!
You can try passing the
--clear-dirty
argument to
ntfsfix(8)
to clean it.
[2]
See also
NTFS3 kernel documentation
NTFS3 Driver FAQ
– Paragon Software Group
NTFS3 performance comparison
NTPsec

Related articles
Network Time Protocol daemon
Time synchronization
The NTP is an unencrypted UDP based protocol and has been
abused
for attacks in the past. There have been
several
attempts
to provide replacements, however the difficult nature of the protocol and its usage make this quite challenging. While the NTP provides capabilities for encryption, they have been proven to be
unreliable
. With
NTPsec
a
'secure'
replacement is possible.
Installation
You can install NTPsec via the
ntpsec
AUR
package.
It is necessary to import a new GPG key to your keyring with:
$ gpg --recv-keys 5A22E330161C3978
gpg: key 5A22E330161C3978: 6 signatures not checked due to missing keys
gpg: key 5A22E330161C3978: public key "NTPsec Contact <contact@ntpsec.org>" imported
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   8  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 8u
gpg: next trustdb check due at 2019-12-03
gpg: Total number processed: 1
gpg:               imported: 1
Starting the service
Normally
start/enable
the
ntpd.service
.
Note
Currently,
ntpsec
AUR
will only uninstall
ntp
during its installation. If you were using
another NTP implementation
, make sure to
stop/disable
the service
Enable NTS
NTS
is a method for using TLS/SSL to authenticate NTP traffic on the net
Note
The NTP Pool and the Arch NT Pool does not currently support NTS.
Append the keyword
nts
to the end of your server lines. Do this only for servers that speak NTS. If the server uses a port other than
4460
for NTS key exchange, you also need to specify the port number.
For example:
/etc/ntp.d/use-pool
server time.cloudflare.com         nts iburst
server virginia.time.system76.com  nts iburst
server nts.netnod.se:4460          nts iburst
Here is
an unofficial list of NTP servers supporting NTS
.
Warning
You should not pick some random hosts from the Internet but ask your local authorities, other public entities, or corporations with existing NTP service to add NTS.
See also
Wikipedia:Network Time Protocol#NTPsec
NTS-QuickStart
Nullmailer

Nullmailer is a small mail program that allows you (or your system) to send mails through an existing email account (using an SMTP server). Technically, this is a
MTA
. Nullmailer is particularly useful on systems that are not always online (like a travelling laptop).
Installation
Install
the package
nullmailer
.
Configuration
Configuration files are located in
/etc/nullmailer/
. Each file contains one option and the possible configurations are not particularly well documented. Below we give an example of a configuration to use gmail as a relay host.
After setting the configurations,
start/enable
the
nullmailer.service
.
Example: gmail
In the file
/etc/nullmailer/remotes
you need to set the connection to the relay host. For gmail:
/etc/nullmailer/remotes
smtp.gmail.com smtp --port=465 --auth-login --user=
gmail_address
--pass=
password
--ssl
You can also use starttls.
Note
You are encoding your password in this file. Make sure the permissions are set correctly so that only you can read it. The default settings are safe, but please check.
In the file
/etc/nullmailer/me
, you need to encode the
hostname
of your computer.
In the file
/etc/nullmailer/defaultdomain
, you need to set the gmail domain:
/etc/nullmailer/defaultdomain
gmail.com
Note
In the configuration after installation, this file is missing. However, it is required by
nullmailer.service
. If you get an error message
Condition check resulted in Nullmailer relay-only MTA being skipped.
in the journal, this might refer to this file.
Other configurations
In the file
/etc/nullmailer/pausetime
you can set the minimum time to pause between  successive  queue  runs  when there  are  messages  in  the  queue, in seconds. This defaults to 60, which for a travelling laptop is way too soon. You can set this to one hour for example:
3600
In the file
/etc/nullmailer/sendtimeout
you can set how long nullmailer tries to send a particular message before giving up. The default is one hour, 3 minutes might be a more reasonable cutoff:
180
Testing
You can test the configuration by sending a test email:
$ echo "Subject: sendmail test" | sendmail -v
recipient_address
See also
Official page, only a reference to a mailing list:
untroubled.org/nullmailer
.
A "for Dummies" style blog post with useful configuration tips:
www.troubleshooters.com/linux/nullmailer
.
Nyxt

Nyxt
[nýkst] is a keyboard-driven web browser designed for hackers. Inspired by
Emacs
and
Vim
, it has familiar keybindings (
Emacs
,
vi
,
CUA
), and is infinitely extensible in
Common Lisp
.
Installation
Install
the
nyxt
package.
Usage
When first opened, nyxt provides a short tutorial on how to use the browser, its features and basic keybinds.
For more information, refer to the
manual
.
Configuration
Nyxt can be configured using either in-browser GUI or by directly modifying its config file.
By default all configuration files reside in
~/.config/nyxt
.
Tips and tricks
Change default keybinds
By default nyxt uses the CUA set of keybinds, these can either be changed in the browser settings or by adding this code snippet to
~/.config/nyxt/config.lisp
:
;; emacs keybinds
(define-configuration buffer
  ((default-modes
    (pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))))
or if you prefer vi-style keybinds:
;; vi keybinds
(define-configuration buffer
  ((default-modes
    (pushnew 'nyxt/mode/vi:vi-normal-mode %slot-value%))))
Adblocking
Nyxt comes with a builtin adblocker, to enable it put the following in
~/.config/nyxt/config.lisp
:
(define-configuration web-buffer
  ((default-modes
    (pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))))
Fingerprinting
Using tor
To proxy requests over
Tor
, including downloads:
(define-configuration nyxt/mode/proxy:proxy-mode
  ((nyxt/mode/proxy:proxy (make-instance 'proxy
                                         :url (quri:uri "socks5://localhost:9050")
                                         :allowlist '("localhost" "localhost:8080")
                                         :proxied-downloads-p t))))
(define-configuration web-buffer
  ((default-modes (append '(proxy-mode) %slot-value%))))
Reduce tracking mode
reduce-tracking-mode makes fingerprinting harder by changing the user agent, language, timezone (as to make them more generic) and removing tracking elements from URLs.
To enable it, simply add this to
~/.config/nyxt/config.lisp
:
(define-configuration web-buffer
  ((default-modes
    (pushnew 'nyxt/mode/reduce-tracking:reduce-tracking-mode %slot-value%))))
Troubleshooting
Videos not playing / Webpages crashing
HTML5 video support requires gstreamer and its associated plugins.
Not having them might prevent the browser from playing video, it also might make those pages crash.
Blank pages
If you experience blank websites, you may try to disable compositing by adding the following line to
~/.config/nyxt/config.lisp
(setf (uiop/os:getenv "WEBKIT_DISABLE_COMPOSITING_MODE") "1")
See also
Homepage
GitHub repository
ObexFTP

ObexFTP
implements the
OBEX
protocol, used to transfer files. OBEX was adopted by the organization overseeing the
Bluetooth
standards and
Android
supports it since version 2.1.
Installation
Install
the
obexftp
AUR
package.
For a Tcl/Tk front-end
install
obextool
AUR
.
Note
Since a
2024
package split
bluez-obex
must also be installed and its service enabled according to
Bluetooth#Installation
instructions. If this was missed earlier, doing so alone may already provide file-transfer functionality with other bluetooth tools.
Usage
Obex Object Push
To send a file, find out the channel of the OBEX Push service:
$ sdptool search --bdaddr
MAC_address
OPUSH
Then send the file to that channel using the following command from
[1]
:
$ obexftp --nopath --noconn --uuid none --bluetooth
MAC_address
--channel
channel
--put
file
ObexFTP
If your device supports the Obex FTP service but you do not wish to mount the device you can transfer files to and from the device using the obexftp command.
To send a file to a device run the command:
$ obexftp -b
MAC_address
-p /path/to/file
To retrieve a file from a device run the command:
$ obexftp -b
MAC_address
-g filename
Note
Ensure that the file you are retrieving is in the device's
exchange folder
. If the file is in a subfolder of the exchange folder then provide the correct path in the command.
ObexFS
Another option, rather than using KDE or Gnome Bluetooth packages, is ObexFS which allows for the mounting of phones which are treated like any other filesystem.
Note
To use ObexFS, one needs a device that provides an ObexFTP service (e.g. the
BlueFTP
freeware ObexFTP server).
Mount supported phones by running:
$ obexfs -b
MAC_address
mountpoint
Once you have finished, to unmount the device use the command:
$ fusermount -u
mountpoint
For more mounting options see
http://dev.zuckschwerdt.org/openobex/wiki/ObexFs
Note
Ensure that the bluetooth device you are mounting is
not
set to mount
read-only
. You should be able to do this from the device's settings. If the device is mounted
read-only
you may encounter a permissions error when trying to transfer files to the device.
Official repositories web interface

This article or section is a candidate for moving to
Official repositories/Web interface
.
Notes:
For me it looks very natural to make it a subpage—the same main topic, the very same beginning of the article name. (Discuss in
Talk:Official repositories web interface
)
This article or section needs expansion.
Reason:
This API does not have any other documentation: if you have knowledge of Django, please help adding any missing functionalities by looking at the
source code
. (Discuss in
Talk:Official repositories web interface
)
Related articles
Aurweb RPC interface
This article provides documentation for the web interface through which it is possible to query the official repositories and obtain results in JSON format.
Package information
Base URL:
https://archlinux.org/packages/
Details
Syntax:
/
repository
/
architecture
/
package
/json/
Example:
https://archlinux.org/packages/core/x86_64/coreutils/json/
Files
Syntax:
/
repository
/
architecture
/
package
/files/json/
Example:
https://archlinux.org/packages/core/x86_64/coreutils/files/json/
Package search
The interface supports the same query parameters as the
HTML search form
, except for
sort
.
Base URL:
https://www.archlinux.org/packages/search/json/
Name or description
Parameter:
q
Example:
https://archlinux.org/packages/search/json/?q=pacman
Exact name
Parameter:
name
Example:
https://archlinux.org/packages/search/json/?name=coreutils
Description
Parameter:
desc
Example:
https://archlinux.org/packages/search/json/?desc=pacman
Repository
It is possible to use this parameter more than once in order to search in more than one repository (but note that omitting it altogether will search in all repositories).
Parameter:
repo
Values:
Core
,
Core-Testing
,
Extra
,
Extra-Testing
,
Multilib
,
Multilib-Testing
.
Example:
https://archlinux.org/packages/search/json/?q=cursor&repo=Core&repo=Extra
Architecture
It is possible to use this parameter more than once in order to search for more than one architecture (but note that omitting it altogether will search for all architectures).
Parameter:
arch
Values:
any
,
x86_64
Example:
https://archlinux.org/packages/search/json/?q=cursor&arch=any&arch=x86_64
Maintainer
Parameter:
maintainer
Example:
https://archlinux.org/packages/search/json/?repo=Extra&maintainer=orphan
Packager
Parameter:
packager
Flagged
Parameter:
flagged
Values:
Flagged
,
Not+Flagged
Example:
https://archlinux.org/packages/search/json/?arch=x86_64&flagged=Flagged
See also
Forum thread
Initial feature request:
FS#13026
Kittypack: A silly little tool to poke archlinux.org/packages for info
Oidentd

oidentd
is an
ident
(
RFC:1413
compliant) daemon that runs on Linux, Darwin, FreeBSD, OpenBSD, NetBSD and Solaris.
oidentd
can handle IP masqueraded/NAT connections on Linux, Darwin, FreeBSD (ipf only), OpenBSD and NetBSD.
oidentd
has a flexible mechanism for specifying ident responses. Users can be granted permission to specify their own ident responses. Responses can be specified according to host and port pairs.
Installation
Install
the
oidentd
package.
Configuration
With no global nor user configuration file(s), the users' ident replies will be that of their login name. This makes configuration files optional. See
oidentd.conf(5)
for more detail.
Global configuration
You may create the global configuration file
/etc/oidentd.conf
.
According to the manual, the following is suitable for a global configuration.
/etc/oidentd.conf
default {
     default {
          deny spoof
          deny spoof_all
          deny spoof_privport
          allow random
          allow random_numeric
          allow numeric
          allow hide
     }
}
user root {
     default {
          force reply "UNKNOWN"
     }
}
Which says, "Grant all users the ability to generate random numeric ident replies, the ability to generate numeric ident replies, and the ability to hide their identities on all ident queries. Explicitly deny the ability to spoof ident responses. And reply with `UNKNOWN' for all successful ident queries for root."
User configuration
Additionally and/or alternatively, each user may create their own local configuration file,
$HOME/.oidentd.conf
.
~/.oidentd.conf
global { reply "unknown" }
to irc.example.org { reply "example" }
Which says, "Reply with `unknown' to all successful ident lookups, but reply with `example' to ident lookups for connections to irc.example.org."
The global configuration file will dictate what works in the user's local configuration file.
Starting oidentd
With
oidentd
installed and configured,
start
oidentd.socket
to start the daemon. If you want to have
oidentd
start up automatically every time you start your computer, then you need to
enable
oidentd.socket
.
Oil Shell

Oil Shell
(OSH) is a Bash-compatible UNIX
command-line shell
. OSH can be run on most UNIX-like operating systems, including GNU/Linux. It is written in Python (v2.7), but ships with a native executable. The dialect of Bash recognized by OSH is called the OSH language.
Installation
Install
the
oil
package.
Smoke Test
Make sure that OSH has been installed correctly by running the following in a terminal:
$ osh
This will start an OSH session and display a shell prompt:
osh$
Identify an installed binary and attempt to invoke it in the OSH session to confirm that the output is correct.
For example:
osh$ ls
...
Making OSH your default shell
See
Command-line shell#Changing your default shell
.
Removal
See
Command-line shell#Uninstalling shell
.
Troubleshooting
Reproducible bugs/errors may be reported on
Github
. When filing a report, please include the output of OSH when it is running in verbose mode. To enable verbose mode, execute the following:
$> export OVM_VERBOSE=1
See also
Oil Github
Oil Project Home
Oil Twitter Feed
Oil Subreddit
Omnikey Cardman 5321

This page explains how to get the Omnikey Cardman 5321 SmartCard Reader up and running.
Installation
Install
the
pcsc-tools
, and
omnikey_ifdokccid
AUR
packages.
Start
pcscd.service
.
Test with pcsc_scan
You can test the installation by running
pcsc_scan
. If everything worked fine, you should get something like that:
PC/SC device scanner
V 1.4.16 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.5.5
Scanning present readers...
0: OMNIKEY CardMan 5x21 00 00
1: OMNIKEY CardMan 5x21 00 01

Sun Feb 21 18:21:05 2010
 Reader 0: OMNIKEY CardMan 5x21 00 00
  Card state: Card removed, 

Sun Feb 21 18:21:05 2010
 Reader 1: OMNIKEY CardMan 5x21 00 01
  Card state: Card removed, 

Sun Feb 21 18:21:11 2010
 Reader 1: OMNIKEY CardMan 5x21 00 01
  Card state: Card inserted, 
  ATR: 3B 89 80 01 4A 43 4F 50 34 31 56 32 32 4D

ATR: 3B 89 80 01 4A 43 4F 50 34 31 56 32 32 4D
+ TS = 3B --> Direct Convention
+ T0 = 89, Y(1): 1000, K: 9 (historical bytes)
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1 
-----
+ Historical bytes: 4A 43 4F 50 34 31 56 32 32
  Category indicator byte: 4A (proprietary format)
+ TCK = 4D (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 89 80 01 4A 43 4F 50 34 31 56 32 32 4D
	New Zealand e-Passport
OnexPlayer X1 A

This article or section does not follow the
Laptop page guidelines
.
Reason:
Misses some section. (Discuss in
Talk:OnexPlayer X1 A
)
Hardware
PCI/USB ID
Working?
GPU
1002:1900
Yes
Wi-Fi
8086:2725
Yes
Bluetooth
8087:0032
Yes
Audio
1022:15e3
Yes
Keyboard/Pointer
258a:001e
Yes
Webcam
3252:0004
Yes
Fingerprint
2808:c652
No
Accelerometer
wrong device id
OnexPlayer X1 A is a 10.95" detectable laptop with a 1600x2560 portrait display, touchscreen, and accelerometer for tablet mode.
Screen orientation
The display panel is physically portrait (1600x2560) and requires rotation for normal laptop use: see
Tablet PC#Screen rotation
.
Touchscreen
The touchscreen (NVTK0603) requires calibration to match the display rotation.
Turbo Button and LED
A Turbo Button and its associated LED are located at the top right corner.  
The driver for these has been included in the mainline kernel.
/sys/devices/platform/oxp-platform/tt_led
controls/indicates the LED state.
/sys/devices/platform/oxp-platform/tt_toggle
configures the button behavior:
When set to
1
, pressing the button generates a keyboard event (
Super+Ctrl+Alt
).
When set to
0
, pressing the button only toggles the LED.
Oolite

Oolite
is a space trading / simulation game based on the well-known Elite game from the 80's.
Installation
Install
the
oolite
AUR
package.
Troubleshooting
Oolite uses shaders extensively which may not work well with all drivers, especially the gallium OSS drivers.
By default Oolite starts with full shaders, if it hangs on the title screen follow these 3 steps:
Testing for shader problem
Run Oolite from terminal with this command:
$ LIBGL_ALWAYS_INDIRECT=1 oolite
If Oolite works, the problem is with the shaders. In case this does not help, you have a different problem. Post about this on the Arch Linux forums or register a bug.
Verify which setting works
Edit
~/GNUstep/Defaults/.GNUstepDefaults
and look for these lines at the bottom:
<key>shader-mode</key>
	<integer>3</integer>
Try changing the value of this key to 2 and 1 and test if Oolite runs normally (
whithout
setting
LIBGL_ALWAYS_INDIRECT
).
Note
The lines with shader-mode key are not always present, but it is safe to add them.
Feedback
For the value of shader-mode that works, please post
~/.Oolite/Logs/Latest.log
on the
Oolite forum
, along with the highest shader-mode value that works for you.
This info will be used to determine the correct default shader setting for Oolite for your card/driver combination. This will then become part of the Oolite graphics configuration data in a later version.
OpenDJ

Related articles
LDAP Authentication
LDAP Hosts
OpenLDAP
OpenDJ
is an LDAPv3 compliant open source
directory service
, which has been developed for the Java platform, providing a high performance, highly available, and secure store for managing identities.
It is an alternative to
OpenLDAP
.
Installation
opendj
AUR
package contains LDAP server and many LDAP related utilities such as
ldapsearch
which is also provided by
OpenLDAP
.
Note
Tools from
opendj
AUR
are prefixed with
opendj-
to avoid causing conflicts.
Configuration
This article or section needs expansion.
Reason:
TODO (Discuss in
Talk:OpenDJ
)
You can
start/enable
opendj.service
.
Upgrade
After installing newer
opendj
AUR
version, you will need to upgrade its database by executing:
# /usr/share/opendj/upgrade
Troubleshooting
OpenDJ server log files are located in
/var/lib/opendj/logs/
.
Specifically take a look at
server.out
and
errors
files.
You can also check the
unit status
of
opendj.service
.
Tips
You can use Control Panel for some configuration:
# OPENDJ_JAVA_ARGS="-Xmx2048m" opendj-control-panel
See also
Official OpenDJ Documentation
LDAP authentication
OpenLDAP
OpenPGP card

Related articles
Data-at-rest encryption
List of applications/Security#Encryption, signing, steganography
Nitrokey
OpenPGP
OpenPGP-card-tools
Smartcards
Yubikey
OpenPGP card
describes an open standard for an application that runs on hardware security devices. Both open and closed source implementations exist.
The motivation to use OpenPGP card devices, as for all hardware security devices, is to not expose the private key material to the host computer.
With OpenPGP card it is possible to cover all
OpenPGP
private key operations: Decryption and signing.
Installation
OpenPGP card devices can either be used with
pcsclite
and the
ccid
driver or with
gnupg
which includes its own, custom
CCID
driver.
Note
GnuPG
can optionally
use the standard pcsclite smartcard middleware
to access OpenPGP card devices.
Key slots
OpenPGP card devices offer three dedicated slots for private key material, one each for signing, decryption and authentication.
Note
Some
YubiKey
devices offer a proprietary extension of the OpenPGP card standard, that adds a fourth special-purpose key slot called
attestation
.
Ssh-agent
Using private key material in an authentication slot
SSH
logins can be performed by an
ssh-agent
implementation that can use OpenPGP card devices.
Available options include
GnuPG as ssh-agent
and
openpgp-card-ssh-agent
.
Further use-cases
OpenPGP card devices can be used in a wide range of contexts to perform
OpenPGP
operations for signing and decryption.
Typical uses include
signing commits with git
and
data-at-rest encryption
when integrating
Thunderbird with OpenPGP cards
or when using
pass
for passwords.
See also
"Functional Specification of the OpenPGP application on ISO Smart Card Operating Systems" by Achim Pietig
Gnuk - An OpenPGP card implementation in C targeting STM32F103 processors
opcard-rs - OpenPGP card implementation in Rust
SmartPGP - JavaCard implementation of the OpenPGP card specification
Yubico's closed source OpenPGP card implementation
openresolv

Related articles
systemd-resolvconf
openresolv
is a
resolvconf
implementation, i.e. a
resolv.conf
management framework.
Although openresolv is most known for allowing multiple applications to modify
/etc/resolv.conf
, it is currently the only standard way to implement:
dynamic control of a DNS resolver (other than glibc),
dynamic
conditional forwarding
.
Tip
An alternative implementation is
systemd-resolvconf
, but it can only be used with
systemd-resolved
.
Installation
Install
the
openresolv
package.
Usage
openresolv provides
resolvconf(8)
and is configured in
/etc/resolvconf.conf
. See
resolvconf.conf(5)
for supported options.
Running
resolvconf -u
will generate
/etc/resolv.conf
.
This article or section needs expansion.
Reason:
Provide common usage examples. (Discuss in
Talk:Openresolv
)
Users
DHCP
clients:
dhcpcd
has a hook which uses
resolvconf
if it is installed.
iwd#Enable built-in network configuration
Network managers
:
netctl
(used by default)
NetworkManager#Use openresolv
(limited to a single interface)
VPN
clients:
OpenConnect
OpenVPN#DNS
strongSwan
WireGuard
Subscribers
openresolv can be configured to pass name servers and search domains to DNS resolvers. The supported resolvers are:
BIND
dnsmasq#openresolv
pdnsd
powerdns-recursor
Unbound
See the
official documentation
for instructions.
Tips and tricks
Defining multiple values for options
The man page does not mention it, but to define multiple values, for options that support it (e.g.
name_servers
,
resolv_conf_options
etc.) in
/etc/resolvconf.conf
, you need to write them space separated inside quotes. E.g.:
/etc/resolvconf.conf
resolv_conf_options="edns0 single-request"
name_servers="192.168.35.1 fd7b:d0bd:7a6e::1"
Oracle Database client

This document will explain how to install the Oracle database client under Arch Linux. The client is used to connect to Oracle databases running on other machines.
Installation
Due to the way Oracle provides downloads of their software, the files cannot be retrieved automatically. You must download the necessary
.zip
files manually and place them in the same directory as the PKGBUILD from AUR, before running
makepkg
. You will need an Oracle account before you can log in and download the
.zip
files.
Relevant packages
The packages to be
installed
from the
AUR
are:
oracle-instantclient-basic
AUR
- core Oracle client, required by all the other packages and any precompiled binaries using the native Oracle API
oracle-instantclient-sdk
AUR
- C header files, required to compile software that accesses Oracle using the native API
oracle-instantclient-sqlplus
AUR
- SQL*Plus command line utility
oracle-instantclient-odbc
AUR
- UnixODBC connectivity
oracle-instantclient-jdbc
AUR
- Java connectivity
oracle-instantclient-tools
AUR
- Data Pump, SQL*Loader and Workload Replay Client
Installation paths
When using the packages in the AUR, the TNSNAMES file should be saved as
/etc/tnsnames.ora
.
ORACLE_HOME
should be set automatically to
/usr
in any new shells opened after the install, courtesy of
/etc/profile.d/oracle.sh
.
gqlplus
After installing sqlplus, you might also want to install
gqlplus
AUR
, a frontend to sqlplus that adds command history and tab completion.
Orthanc

Orthanc
is a lightweight open-source standalone
DICOM
server which can be extended via its
RESTful API
and plugin mechanism allowing new modules to be developed. Orthanc is built on top of
dcmtk
. A Web viewer, a
PostgreSQL
database back-end, a
MySQL
database back-end, and a reference implementation of
DICOMweb
are currently freely available as plugins.
[1]
Installation
Install
the
orthanc
AUR
package.
The latter will require
dcmtk
which is a collection of libraries and applications implementing large parts the DICOM standard.
Each time the lib
icu
is updated, you will have to rebuild
dcmtk
, otherwise
orthanc
AUR
will complain.
To launch Orthanc, simply
start/enable
orthanc.service
.
The DICOM files you upload to the Orthanc application are stored in
/var/lib/orthanc/
.
The JSON server configuration file is stored as
/etc/webapps/orthanc/config.json
.
Plugins
Orthanc is provided with a bunch of
plugins
, whose some of the official ones are packaged for Arch Linux as well.
Web viewer
This official plugin extends Orthanc with a Web viewer of medical images.
[2]
Install
orthanc-plugin-web-viewer
AUR
Add the path to the lib in the
Plugins
node of the JSON server configuration
"Plugins" : [
  "/usr/share/orthanc/plugins/libOrthancWebViewer.so",
],
Restart
the
orthanc.service
for the changes to take effect.
DICOMweb
This official plugin extends Orthanc with support of the DICOMweb protocols. More precisely, the plugin introduces a basic, reference implementation of WADO-URI, WADO-RS, QIDO-RS and STOW-RS, following DICOM PS3.18. The plugin simultaneously turns Orthanc into a DICOMweb server and into a DICOMweb client.
[3]
Install
orthanc-plugin-dicomweb
AUR
Add the path to the lib in the
Plugins
node of the JSON server configuration
"Plugins" : [
  "/usr/share/orthanc/plugins/libOrthancDicomWeb.so",
],
Restart
the
orthanc.service
for the changes to take effect.
Out-of-the-Box Experience

This article or section needs expansion.
Reason:
Add steps for other OOBE tools. (Discuss in
Talk:Out-of-the-Box Experience#General OEM provisioning page
)
Out-of-the-Box Experience is a setup process before a login manager where a new computer can be configured instead of doing it during install.
Installation
Install
the
gnome-initial-setup
package for
GDM
or
plasma-setup-git
AUR
for
plasma-login-manager
.
Configuration
GDM
First
enable
GDM
. Initial Setup uses GDM to run. Ensure that the system has no user accounts. GDM will detect the absence of users on boot and launch
gnome-initial-setup
.
Plasma Login Manager
Enable
plasma-setup.service
. Next time the computer is booted it will run the setup to create a new user, set system locale and set the theme. After finishing it will create
/etc/plasma-setup-done
to signify that the setup has run.
Overlay filesystem

From
the initial kernel commit
:
Overlayfs allows one, usually read-write, directory tree to be overlaid onto another, read-only directory tree. All modifications go to the upper, writable layer. This type of mechanism is most often used for live CDs but there is a wide variety of other uses.
The implementation differs from other "union filesystem" implementations in that after a file is opened all operations go directly to the underlying, lower or upper, filesystems. This simplifies the implementation and allows native performance in these cases.
Overlayfs has been in the Linux kernel since 3.18.
Installation
Overlayfs is enabled in the default kernel and the
overlay
kernel module
is automatically loaded upon issuing a mount command.
Usage
To mount an overlay use the following
mount
options:
# mount -t overlay overlay -o lowerdir=
/lower
,upperdir=
/upper
,workdir=
/work
/merged
Note
The working directory (
workdir
) needs to be an empty directory on the same filesystem as the upper directory.
The lower directory can be read-only or could be an overlay itself.
The upper directory is normally writable.
The workdir is used to prepare files as they are switched between the layers.
The lower directory can actually be a list of directories separated by
:
, all changes in the
merged
directory are still reflected in
upper
.
Example:
# mount -t overlay overlay -o lowerdir=
/lower1:/lower2:/lower3
,upperdir=
/upper
,workdir=
/work
/merged
Note
The order of lower directories is the rightmost is the lowest, thus the upper directory is on top of the first directory in the left-to-right list of lower directories; NOT on top of the last directory in the list, as the order might seem to suggest.
The above example will have the order:
/upper
/lower1 
/lower2
/lower3
To add an overlayfs entry to
/etc/fstab
use the following format:
/etc/fstab
overlay
/merged
overlay noauto,x-systemd.automount,lowerdir=
/lower
,upperdir=
/upper
,workdir=
/work
0 0
The
noauto
and
x-systemd.automount
mount options are necessary to prevent systemd from hanging on boot because it failed to mount the overlay. The overlay is now mounted whenever it is first accessed and requests are buffered until it is ready. See
fstab#Automount with systemd
.
Read-only overlay
Sometimes, it is only desired to create a read-only view of the combination of two or more directories. In that case, it can be created in an easier manner, as the directories
upper
and
work
are
not
required:
# mount -t overlay overlay -o lowerdir=
/lower1:/lower2
/merged
When
upperdir
is not specified, the overlay is automatically mounted as read-only.
See also
Overlay Filesystem documentation
Explaining overlayfs - What it does and how it works
Wikipedia:OverlayFS
OwnTone

OwnTone
is a free and open-source DAAP (iTunes) and
MPD
media server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.
OwnTone sends stream to multiple devices, but there are no multiple streams, because there are no multiple users or sessions.
Installation
Install
owntone-server
AUR
.
Start/enable
the
owntone.service
systemd unit.
Configuration
See the
official documentation
for detailed configuration options.
The configuration file is
/etc/owntone.conf
.
Running as the owntone user
The default user in
owntone.conf
is
owntone
. However, this user is not set in the service file.
Edit
owntone.service
and set the user:
/etc/systemd/system/owntone.service.d/override.conf
[Service]
User = owntone
If the service was started without the above changes, the user directory will be owned by
root
. Change the owner of the directory if needed with:
# chown owntone:owntone /var/lib/owntone
Once this is fixed,
pipewire
will be able to create its configuration files.
Example Firewall Configuration
Create application profile
/etc/ufw/applications.d/owntone
[owntone]
title=owntone
description=owntone media server
ports=3688,3689,6600/tcp
Implied Environment for the following instructions:
IPv4 LAN is
10.0.1.0/24
(change to match yours)
IPv6 LAN is
fd04:1bb:ab65:4c80::/64
(change to match yours)
Apple Home Security is set to "Anyone On the Same Network"
Apply the following instructions with changes to match your environment.
ufw allow from 10.0.1.0/24 to any app owntone comment 'owntone IPv4'
ufw allow from fd04:1bb:ab65:4c80::/64 to any app owntone comment 'owntone IPv6'
Listening UDP ports are dynamic, so allow LAN UDP traffic on all ports:
ufw allow from 10.0.1.0/24 to any proto udp comment 'multicast IPv4'
ufw allow from fd04:1bb:ab65:4c80::/64 to any proto udp comment 'multicast IPv6'
Bonjour application profile might need to be added. The following may need to be added:
ufw allow from 10.0.1.0/24 to 224.0.0.251 comment 'mDNS multicasts'
Package Maintainers

Package Maintainers
(previously called
Trusted Users
) are an official Arch Linux staff role. Package Maintainers fulfill the following tasks:
Maintain packages in the official repositories (aside from the
core
one).
Maintain, manage, and watch over the operation of the
AUR
.
The generic term "package maintainer" is also used to describe any person maintaining a package, regardless of the repository, as described in
Arch terminology#Package maintainer
.
How do I become a Package Maintainer?
The
minimum
requirements to becoming a Package Maintainer are as follows:
know basic shell scripting
maintain a few packages in AUR with clean, high-quality PKGBUILDs
basic community involvement (mailing list, forums, IRC)
proficiency with web search
a general idea of the kind of packages you want to maintain (basically, why do you want to become Package Maintainer?)
Even though you could become a Package Maintainer by merely fulfilling those minimum requirements, the people judging you during the
standard voting procedure
might expect more from you. Such as:
involvement in the bug tracker (reporting, research, info)
patches for Arch projects
involvement in a few open-source projects (even if they are your own)
If you still feel up to becoming a Package Maintainer after reading these lines, the first step is to find two Package Maintainers who agree to sponsor you. Once sponsored, you should write a witty application signed with your
OpenPGP
key to the
aur-general mailing list
.
Note
Should a Package Maintainer you contact decline to sponsor your application, you should make this fact known if you seek sponsorship from another Package Maintainer.
For more information, see the
Package Maintainer Bylaws
and
Package Maintainer guidelines
.
Active Package Maintainers
See
https://archlinux.org/people/package-maintainers/
Past Package Maintainers
See
https://archlinux.org/people/package-maintainer-fellows/
Packet Tracer

Related articles
GNS3
Packet Tracer
is a cross-platform visual network simulation tool for
Cisco
hardware on the
CCNA
level and can be used to prepare for the Cisco CCNA certification exam.
Packet Tracer
is an integral part of the
Cisco Networking Academy
, and provides authoring, assessment, and collaboration capabilities.
Installation
Note
Understand if you have permission from Cisco Systems to use this software. If you do not meet eligibility, discontinue your progress and consider alternatives such as
GNS3
.
From
Cisco's website
:
"Cisco Packet Tracer is available for free to all Cisco Networking Academy instructors, students, and alumni."
Download source package tarball
packettracer
AUR
can
not
be installed using automated methods (e.g.
AUR helper
) because the software's tarball must be downloaded first before building the package.
So, first
acquire the build files
for
packettracer
AUR
package.
Download Packet Tracer deb package
Log into
Cisco Networking Academy
(Skills For All / NetAcad) using your Cisco Account. Register an account if you do not have it.
Once in the Networking Academy portal,
download Cisco Packet Tracer 9.0.0
.
Place the .deb file inside the folder where
packettracer
AUR
's build files are located — that is the same folder where the
PKGBUILD
file is found.
Build and install
Build the package
; alternatively, build in a
clean chroot
.
Install the package
.
Note
Read the copyright file at
/usr/share/licenses/packettracer/COPYRIGHT
for the
End-user License Agreement (EULA)
and the
Supplemental End-user License Agreement (SEULA)
.
Usage
The installation process will put a AppImage executable file as
/usr/lib/packettracer/packettracer.AppImage
.
Please note that there will be no desktop file right after the installation. Packet Tracer will require a first run to accept the UELA via the command line:
$ /usr/lib/packettracer/packettracer.AppImage
then you can find a desktop file or keep running it via the AppImage as above.
The factual accuracy of this article or section is disputed.
Reason:
If any of the
FUSE
packages is needed, it must be placed in the
depends
array of the
packettracer
AUR
package. (Discuss in
Talk:Packet Tracer
)
Executing packettracer requires
FUSE
for execution.
Troubleshooting
Crashes under Wayland
If Packet Tracer crashes when started in a Wayland session, try running it with the
QT_QPA_PLATFORM
environment variable set to
xcb
. See
Wayland#Qt
for more details.
Wrong UI Size
If Packet Tracer's UI is rendered incorrectly, try modifying the
QT_DEVICE_PIXEL_RATIO
environment variable
, and then either reboot or logout.
Pacman development

Interested in Pacman Development? This page should help you get started.
Remember that if
you
think something belongs on this page, add it! The current pacman developers are not likely to know what people need to know and should be on this page.
References and links
Pacman Homepage
Latest NEWS/ChangeLog
Pacman on GitLab
Mailing List Archives
HACKING
Submitting Patches
Translation Help
IRC:
#archlinux-pacman
Developer repositories
A handful of the "regulars" have their own repositories with work in progress, working and feature branches, etc. Several are listed here, but feel free to add more that you may know about.
Allan McRae:
https://gitlab.archlinux.org/allan/pacman
Andrew Gregory:
https://github.com/andrewgregory/pacman
Git tips
Before using these tips, it is highly recommended to read the
Git
article.
Clone git repo - only needed once:
$ git clone
https://gitlab.archlinux.org/pacman/pacman.git
Enable useful hooks:
$ mv .git/hooks/applypatch-msg.sample .git/hooks/applypatch-msg
$ mv .git/hooks/commit-msg.sample .git/hooks/commit-msg
$ mv .git/hooks/pre-commit.sample .git/hooks/pre-commit
$ mv .git/hooks/pre-rebase.sample .git/hooks/pre-rebase
or
$ rename .sample "" .git/hooks/*.sample
Always do your work on a new local branch to save yourself headaches.
Make patch to master branch:
$ git format-patch master
Amend patch (do not use it after a push):
$ git commit -a --amend -s
Update master branch:
$ git checkout master
$ git pull
Merge changes on master with "
branch
":
$ git rebase master
branch
Get maint branch:
$ git checkout -b maint origin/maint
Add a remote repository:
$ git remote add toofishes
git://code.toofishes.net/dan/pacman.git
Get toofishes working branch:
$ git branch -r
$ git checkout -b toofishes-working toofishes/working