<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="machine-info">
  <refentryinfo>
    <title>machine-info</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>machine-info</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>machine-info</refname>
    <refpurpose>Local machine information file</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>/etc/machine-info</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>The <filename>/etc/machine-info</filename> file contains
    machine metadata.</para>

    <para>The format of <filename>machine-info</filename> is a newline-separated list of environment-like
    shell-compatible variable assignments, ignoring comments and empty lines. It is possible to source the
    configuration from shell scripts, however, beyond mere variable assignments no shell features are
    supported, allowing applications to read the file without implementing a shell compatible execution
    engine. See
    <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry> for a
    detailed description of the format.</para>

    <para><filename>/etc/machine-info</filename> contains metadata about the machine that is set by the user
    or administrator. The settings configured here have the highest precedence. When not set, appropriate
    values may be determined automatically, based on the information about the hardware or other
    configuration files. It is thus completely fine for this file to not be present.</para>

    <para>You may use
    <citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    to change the settings of this file from the command line.</para>
  </refsect1>

  <refsect1>
    <title>Options</title>

    <para>The following machine metadata parameters may be set using
    <filename>/etc/machine-info</filename>:</para>

    <variablelist class='environment-variables'>

      <varlistentry>
        <term><varname>PRETTY_HOSTNAME=</varname></term>

        <listitem><para>A pretty human-readable UTF-8 machine
        identifier string. This should contain a name like
        <literal>Lennart's Laptop</literal> which is useful to present
        to the user and does not suffer by the syntax limitations of
        internet domain names. If possible, the internet hostname as
        configured in <filename>/etc/hostname</filename> should be
        kept similar to this one. Example: if this value is
        <literal>Lennart's Computer</literal> an Internet hostname of
        <literal>lennarts-computer</literal> might be a good choice.
        If this parameter is not set, an application should fall back
        to the Internet hostname for presentation
        purposes.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ICON_NAME=</varname></term>

        <listitem><para>An icon identifying this machine according to
        the <ulink
        url="https://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html">XDG
        Icon Naming Specification</ulink>. If this parameter is not
        set, an application should fall back to
        <literal>computer</literal> or a similar icon
        name.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>CHASSIS=</varname></term>

        <listitem><para>The chassis type. Currently, the following
        chassis types are defined:
        <literal>desktop</literal>,
        <literal>laptop</literal>,
        <literal>convertible</literal>,
        <literal>server</literal>,
        <literal>tablet</literal>,
        <literal>handset</literal>,
        <literal>watch</literal>, and
        <literal>embedded</literal>,
        as well as the special chassis types
        <literal>vm</literal> and
        <literal>container</literal> for
        virtualized systems that lack an immediate physical chassis.</para>

        <para>Note that most systems allow detection of the chassis type automatically (based on firmware
        information or suchlike). This setting should only be used to override a misdetection or to manually
        configure the chassis type where automatic detection is not available.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>DEPLOYMENT=</varname></term>

        <listitem><para>Describes the system deployment environment.
        One of the following is suggested:
        <literal>development</literal>,
        <literal>integration</literal>,
        <literal>staging</literal>,
        <literal>production</literal>.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>LOCATION=</varname></term>

        <listitem><para>Describes the system location if applicable
        and known. Takes a human-friendly, free-form string. This may
        be as generic as <literal>Berlin, Germany</literal> or as
        specific as <literal>Left Rack, 2nd Shelf</literal>.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>HARDWARE_VENDOR=</varname></term>

        <listitem><para>Specifies the hardware vendor. If unspecified, the hardware vendor set in DMI or
        <citerefentry><refentrytitle>hwdb</refentrytitle><manvolnum>7</manvolnum></citerefentry> will be
        used.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>HARDWARE_MODEL=</varname></term>

        <listitem><para>Specifies the hardware model. If unspecified, the hardware model set in DMI or
        <citerefentry><refentrytitle>hwdb</refentrytitle><manvolnum>7</manvolnum></citerefentry> will be
        used.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Example</title>

    <programlisting>PRETTY_HOSTNAME="Lennart's Tablet"
ICON_NAME=computer-tablet
CHASSIS=tablet
DEPLOYMENT=production</programlisting>
  </refsect1>

  <refsect1>
      <title>See Also</title>
      <para>
        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>systemd-hostnamed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
      </para>
  </refsect1>

</refentry>
