update: small wiki fixes and minor tweaks

This commit is contained in:
ngn 2024-08-21 03:53:10 +03:00
parent 0ff4366363
commit 2269f448ed
34 changed files with 168 additions and 103 deletions

View File

@ -14,7 +14,7 @@ body:
id: extra
attributes:
label: Extra
description: Any extra thing you want to say
description: Anything you want to add
validations:
required: false
- type: checkboxes

View File

@ -21,7 +21,7 @@ body:
id: extra
attributes:
label: Extra
description: Any extra thing you want to say
description: Anything you want to add
validations:
required: false
- type: checkboxes

View File

@ -1,3 +1,3 @@
List of configuration packages (dotfiles) for MatterLinux. These simple configurations allow you to easily set up
your desktop and they create a baseline for all of your own configurations. You can install these configurations
using the `mc` tool. [Learn more](/wiki/mc).
using the `confer` tool. [Learn more](/wiki/confer).

View File

@ -1,7 +1,7 @@
## Details
MatterLinux is a tiny, independent, [free/libre](https://www.gnu.org/philosophy/free-sw.html) and
[open source](https://opensource.com/resources/what-open-source) GNU/Linux distribution
for `x86_64` (or `amd64`) systems. It has its own package management system and its own package repos.
for `x86_64` (or `amd64`) systems. It has its own package management system and its own package pools.
All source code for MatterLinux is licensed under GPLv3 and available on the
[MatterLinux Gitea](https://git.matterlinux.xyz/Matter).
@ -14,15 +14,16 @@ contributors. If you are interested you can follow the development of the projec
here is a rough roadmap:
<ul>
<li><k class="blue">>>></k> Package system</li>
<li><k class="green">>>></k> Package system</li>
<li><k class="green">>>></k> Website</li>
<li><k class="blue">>>></k> Official repos (<code>base</code> and <code>desktop</code>)</li>
<li><k class="blue">>>></k> Official pools (<code>base</code> and <code>desktop</code>)</li>
<li><k class="green">>>></k> Wiki/documentation</li>
<li><k class="green">>>></k> First release</li>
<li><k class="green">>>></k> Expanding <code>desktop</code> repo (100 packages)</li>
<li><k class="green">>>></k> Expanding <code>desktop</code> repo (300 packages)</li>
<li><k class="blue">>>></k> Server pool</li>
<li><k class="green">>>></k> Expanding <code>desktop</code> pool (100 packages)</li>
<li><k class="green">>>></k> Expanding <code>desktop</code> pool (300 packages)</li>
<li><k class="blue">>>></k> Expanding the wiki</li>
<li><k class="blue">>>></k> Expanding <code>desktop</code> repo (500 packages)</li>
<li><k class="blue">>>></k> Expanding <code>desktop</code> pool (500 packages)</li>
<li><k class="red">>>></k> TUI/GUI installer</li>
</ul>

View File

@ -6,7 +6,6 @@ edit a page or create a new page, make a [pull request](/wiki/contribute) to [co
> Due to ongoing package system rework, the `Packaging` section is currently in a messy state
> and may contain misinformation or missing links, [please see this post](/news/important_update).
## Installation
| Name | Description |
| --------------------------------------- | ----------------------------------------------- |
@ -14,24 +13,33 @@ edit a page or create a new page, make a [pull request](/wiki/contribute) to [co
| [Installation](/wiki/install) | Learn how to install a base MatterLinux system |
| [Post-installation](/wiki/post_install) | Make your system (somewhat) usable |
## Tools/libraries
| Name | Description |
| --------------------------------------------- | ------------------------------------------------------------------------------ |
| [Working with matt](/wiki/matt) | Learn how to manage packages with MatterLinux package manager (`matt`) |
| [Working with libmp](/wiki/libmp) | Learn how to use the MatterLinux package library (`libmp`) |
| [Working with confer](/wiki/confer) | Learn how to manage your configs MatterLinux configuration manager (`confer`) |
## Packaging
| Name | Description |
| --------------------------------------------- | ------------------------------------------------------------------------------ |
| [Releases](/wiki/releases) | Learn about MatterLinux release cycle |
| [Packages](/wiki/packages) | Learn about MatterLinux packages |
| [Creating packages](/wiki/create) | Learn how you can create and add a package to the official pools |
## Pools
| Name | Description |
| --------------------------------------------- | ------------------------------------------------------------------------------ |
| [Pools](/wiki/pools) | Learn about MatterLinux package pools |
| [Mirrors](/wiki/mirrors) | Discover pool mirros and learn how you can setup your own |
| [Pool guidelines](/wiki/pool_guides) | Package guidelines for the official pools |
| [Creating packages](/wiki/create) | Learn how you can create and add a package to the official pools |
| [Working with matt](/wiki/matt) | Learn how to manage packages with MatterLinux package manager (`matt`) |
| [Working with libmp](/wiki/libmp) | Learn how to use the MatterLinux package library (`libmp`) |
| [Understanding MPTP](/wiki/mptp) | Learn about MatterLinux package transfer protocol (MPTP) |
| [Working with confer](/wiki/confer) | Learn how to manage your configs MatterLinux configuration manager (`confer`) |
## Contribute
| [Chat](/wiki/chat) | Learn how you can contact developers and contributers |
| [Contributing](/wiki/contribute) | Learn how you can contribute to MatterLinux |
| [Bugs](/wiki/bugs) | Learn how you can report bugs/issues |
## Other
| Name | Description |
| -------------------------------- | ------------------------------------------------------- |
| [Chat](/wiki/chat) | Learn how you can contact developers and contributers |
| [Contributing](/wiki/contribute) | Learn how you can contribute to MatterLinux |
| [Bugs](/wiki/bugs) | Learn how you can report bugs/issues |
| [Releases](/wiki/releases) | Learn about MatterLinux release cycle |
| [Licensing](/wiki/licensing) | Licensing for the MatterLinux repositories and software |

View File

@ -2,10 +2,10 @@
All of the MatterLinux software and the tools are available on
[MatterLinux Git Server](https://git.matterlinux.xyz) and they are licensed under
[GNU General Public License Version 3](https://www.gnu.org/licenses/gpl-3.0.en.html).
A copy of this license can be found in every repository, in the `LICENSE.txt` file.
A copy of this license can be found in every git repository, in the `LICENSE.txt` file.
MatterLinux software and the tools are distributed as [free/libre](https://www.gnu.org/philosophy/free-sw.en.html) and
[open source](https://opensource.com/resources/what-open-source) software. This means anybody can:
[open source](https://opensource.com/resources/what-open-source) software. This means anybody can freely:
- Use MatterLinux software and tools
- Distribute copies of MatterLinux software and tools

View File

@ -7,13 +7,15 @@ then you get a new release. So its expected to have a release or once a month.
### Package updates
MatterLinux follows a slow rolling release cycle for all the packages. Packages update every
once in a while, generally to fix security issues. Packages get tested on a development repo,
[next.matterlinux.xyz](https://next.matterlinux.xyz) before they get pushed into the main repos.
once in a while, generally to fix security issues. Packages get tested on a development pool,
[next.matterlinux.xyz](https://next.matterlinux.xyz) before they get pushed into the main pools.
This way we can maintain a stable experience.
### ISOs and release archives
- ISO: A bootable disk image
- Release Archive: An archive used during the installation of a release
With each release, project releases two new files, an **ISO** and a **Release Archive**:
- **ISO**: A bootable disk image
- **Release Archive**: An archive used during the installation of a release
With new release, a new ISO and a release archive will be published. This way
the packages in these ISO and archive files will always be up-to-date.
@ -27,17 +29,18 @@ out the `/etc/os-release` file:
## Version numbering
MatterLinux and all it's projects are version numbered after the year.
For example MatterLinux release for the year 2024 is versioned "MatterLinux 24".
For example MatterLinux release for the year 2024 is versioned "*MatterLinux 24*".
Minor numbers may be added for other releases. For example the 2nd release of the
MatterLinux 24 ISO would be named "MatterLinux 24.01".
MatterLinux 24 ISO would be named "*MatterLinux 24.01*".
Similarly 15th release of the MatterLinux package manager for the year 2024
is versioned "24.14".
is versioned "*24.14*".
## Building releases
You can build an up-to-date ISO and a release archives using [MatterLinux tools](https://git.matterlinux.xyz/matter/tools).
These tools also can be installed with the `tools` package.
You can build an up-to-date ISO and a release archives using [`mtsc`](https://git.matterlinux.xyz/matter/mtsc).
`mtsc` can be found the in the [`base` pool](/wiki/pools), and can be installed using
the [package manager](/wiki/matt).
> **Important**
>
@ -63,8 +66,8 @@ directory to this tool, you can create an ISO image.
As the configuration directory, you can clone the [official ISO configuration](https://git.matterlinux.xyz/Matter/iso).
Or you can use your own custom configuration.
To build the ISO with the release archive that we created on the previous example, using the configuration directory
located at `./iso`:
To build the ISO with the release archive that we created on the previous example, using the configuration
directory located at `./iso`:
```
# matter-iso matterlinux_example-build.tar.gz iso
```

View File

@ -14,31 +14,39 @@ check the [official pool guidelines](/wiki/pool_guides). Make sure
that your package follows the guidelines or your pull request may be
rejected.
Also create an account on Gitea server and configure your editor
Also, create an account on Gitea server and configure your editor
as specified in the [contribution guide](/wiki/contribute).
## Install requirements
To follow this tutorial you will need a working MatterLinux installation
(minimum version 24.05). You also need to install the following packages
from the [`base` pool](/wiki/pools):
- an editor (`vim` and `nano` is avaliable on the `base` pool)
- build-essential
- [mtsc](https://git.matterlinux.xyz/matter/mtsc)
- git
## Selecting a pool
If you want to add a new package to the official pools, you should
first choose the pool you want to add the package to. If you are
packaging a software that is fundamental to the OS, such as a kernel,
or a C library, you should add your package to the `base` pool.
If the software is mainly targeted for server use, you should add the package
to the `server` pool.
If none of these is the case then you should add the package to the `desktop`
pool.
first choose the pool you want to add the package to. You should check
the [list of official pools](/wiki/pools), and figure out which pool
your package belongs to.
## Fork the pool
After selecting the pool, fork it on Gitea and clone it to MatterLinux
system:
```
$ git clone <git repo url>
$ git clone <git repository url>
```
Create a new branch for your package:
```
$ git branch -m new-package
```
## Install requirements
To build and create packages, you should install the `build-essential` package from the
`base` pool. This package will provide you with all the scripts and the tools required.
[`base` pool](/wiki/pools). This package will provide you with all the base tools
required, such as the GNU C compiler. You will also need
## Create the package template
Change directory into the `src` folder of the pool you cloned, and use the `mp-new`
@ -65,7 +73,7 @@ $ mp-new lxterminal_0.4.0
```
## Modify the package script
`mp-temp` will create a directory for the new package, which will contain a `pkg.sh` script.
`mp-new` will create a directory for the new package, named after the package, which will contain a `pkg.sh` script.
This script is called the **package script**. Open this script with the configured editor:
```
# general info
@ -191,7 +199,7 @@ HASHES=("7938dbd50e3826c11f4735a742b278d3")
# install and build depends
DEPENDS=("vte")
BUILD=()
BUILD=("intltool")
PACKAGE() {
tar xf "${NAME}-${VERSION}.tar.xz"
@ -213,33 +221,54 @@ When you are done, format the package script following these rules:
- Prevent using `&&` unless it's absolutely necessary, it usually ends up messing the error checking
- Split unrelated instructions with a newline
You can use the `mp-check` script to automatically check for some of these issues:
```
$ mp-check lxterminal
```
## Building the package
To build the newly created package, run the following in the `src` directory:
```
$ mp-build --no-sign <package name>
$ mp-build --no-sign lxterminal
```
This will install all the required dependencies, and only build the specified package.
## Testing the package
When the package is built, check out the newly created root directory inside the package directory
to make sure that everything is placed where it should be:
When build is completed, you will have a new `.mpf` package archive in the `dist` directory
of the package directory. You can check this archive for any potential issues using `mp-check`
again:
```
$ tree <pacakge_name>/root
$ mp-check lxterminal/dist/lxterminal_0.4.0.mpf
```
After fixing any potential issues and warnings, you can install your newly created package using
the [package manager](/wiki/matt) and test it out:
```
# matt install --yes lxterminal/dist/lxterminal_0.4.0.mpf
$ lxterminal
```
## Staging and commit your changes
## Stage and commit your changes
After making sure that the package is working as intended, go back to the root of the pool source directory,
and use `git add .` to stage all the changes. Then use `git commit -m <message>` to commit them. For the
and use `git add .` to stage all the changes. Then use `git commit -m <message>` command to commit them. For the
commit message, follow the guidelines on the [contribution page](/wiki/contribute). For our example, the following
message should be fine:
```
$ git commit -m "new: add lxterminal package"
$ git commit -m "new: lxterminal package"
```
Then push your changes:
Then push your branch to the remote:
```
$ git push -u origin main
$ git push -u origin new-package
```
## Creating a pull request
Back on the Gitea, create a pull request to the official repository. Provide information about
the package you added, and explain why you think its important to include this package.
Please patiently wait for a response from the maintainer(s) after creating your pull request,
if find out any problems with your package after creating the pull request, fix them and make more commits
to your new branch, they should automatically be added to the pull request.
## You are done!
If you follow every step correctly your pull request will be merged. After the merge, your package will
be added to the [development (next) pools](/wiki/pools) and after some testing it will make it's way to
the stable pools.

View File

@ -1,6 +0,0 @@
{
"id": "mptp",
"title": "Working with mptp",
"author": "ngn",
"date": "14/08/24"
}

View File

@ -1 +0,0 @@
This page is currently under development.

View File

@ -6,14 +6,14 @@ configuration file (`/etc/matt/config.ini`).
### Creating a mirror
To create a mirror you can use the [`mirp` tool](https://git.matterlinux.xyz/matter/mirp).
This package can be installed from the `server` pool.
This package can be installed from the [`server` pool](/wiki/pools).
After installing `mirp`, specify an URL and an output directory (files will be downloaded
into the output directory). For example to mirror the `base` pool from `https://pkgs.matterlinux.xyz/base`
into the output directory). For example to mirror the `base` pool from `https://stable.matterlinux.xyz/base`
to `base_mirror` directory:
```
$ mkdir base_mirror
$ mirp mptp://pkgs.matterlinux.xyz/base base_mirror
$ mirp mptp://stable.matterlinux.xyz/base base_mirror
```
To serve the mirror, you can setup [`pooler`](https://git.matterlinux.xyz/matter/pooler).
@ -39,10 +39,10 @@ that you can use. To add your mirror to this list get in contact with the mainta
### Official pools
| Pool | MPTP | HTTP(S) | Location |
| -------------- | ---------------------------------------- | ----------------------------------------- | ----------- |
| base | `mptp://stable.matterlinux.xyz/base` | `https://stable.matterlinux.xyz/base` | 🇹🇷 Turkey |
| desktop | `mptp://stable.matterlinux.xyz/desktop` | `https://stable.matterlinux.xyz/desktop` | 🇹🇷 Turkey |
| server | `mptp://stable.matterlinux.xyz/server` | `https://stable.matterlinux.xyz/server` | 🇹🇷 Turkey |
| ---------------- | ---------------------------------------- | ----------------------------------------- | ----------- |
| base (stable) | `mptp://stable.matterlinux.xyz/base` | `https://stable.matterlinux.xyz/base` | 🇹🇷 Turkey |
| desktop (stable) | `mptp://stable.matterlinux.xyz/desktop` | `https://stable.matterlinux.xyz/desktop` | 🇹🇷 Turkey |
| server (stable) | `mptp://stable.matterlinux.xyz/server` | `https://stable.matterlinux.xyz/server` | 🇹🇷 Turkey |
| base (next) | `mptp://next.matterlinux.xyz/base` | `https://next.matterlinux.xyz/base` | 🇹🇷 Turkey |
| desktop (next) | `mptp://next.matterlinux.xyz/desktop` | `https://next.matterlinux.xyz/desktop` | 🇹🇷 Turkey |
| server (next) | `mptp://next.matterlinux.xyz/server` | `https://next.matterlinux.xyz/server` | 🇹🇷 Turkey |

View File

@ -3,18 +3,22 @@ Packages in the official MatterLinux pools (should) follow these guidelines:
- **Packaged software should be free or/and open source**: Proprietary software won't be included
to the pools. No exceptions. If you find a proprietary software package in the official pools,
please create an issue or a pull request on the related Git repository to remove the package.
We also prioritize free/libre software over open source software.
- **Packaged software should be stable**: Software known to be unstable will not packaged,
if the stability is related to the version of the software, we may package a different/patched
version of the software.
- **Packaged software should be secure**: Outdated software that has critical vulnerabilities
will not be packaged.
- **Packaged software should be (somewhat) popular**: No, we are not gonna package some random window
manager that only has 3 users and was last updated in 1993.
The following software packages will **NOT** be added, so do not waste your time with PRs or issues:
The following software packages will **NOT** be added, so do not waste your time with pull requests or issues:
- DWM or other Suckless tools that are configured using header files
- Any Wayland only window managers ("compositors"), status bars, terminals etc. We only have Weston which used for testing the Wayland environment
- Any Wayland only window managers ("compositors"), status bars, terminals etc. We only have weston which used for testing the Wayland environment
- Other init systems (`dinit`, `runit` etc.)
- Non-libre kernel
- Non-libre Linux kernel
- Other third-party package managers (apt, dnf, pacman etc.), however containerized package managers can
be packaged (except for snap, f*%#! snap)
be packaged, except for snap (I don't like snap)

View File

@ -1,5 +1,34 @@
On this page, you will find information about MatterLinux package pools.
# List
Here is a list of all the official MatterLinux software package pools, you can
find URL(s) for these pools in the [mirrors page](/wiki/mirrors).
# Base
- **Name**: base
- **Signed with**: `F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D`
- **Maintainer**: ngn | [Email](mailto:ngn@ngn.tf) [PGP](https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0xF9E70878C2FB389AEC2BA34CA3654DF5AD9F641D)
Contains software packages for the core system (for example `glibc`, `grub`),
so you need these packages in order to have a bootable system, however the base
pool alone won't get you further from a simple installation.
# Desktop
- **Name**: desktop
- **Signed with**: `F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D`
- **Maintainer**: ngn | [Email](mailto:ngn@ngn.tf) [PGP](https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0xF9E70878C2FB389AEC2BA34CA3654DF5AD9F641D)
Contains software packages for your desktop needs (for example `xorg`, `xfce4`),
however they are not necessarily needed for a simple installation.
# Server
- **Name**: desktop
- **Signed with**: `F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D`
- **Maintainer**: ngn | [Email](mailto:ngn@ngn.tf) [PGP](https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0xF9E70878C2FB389AEC2BA34CA3654DF5AD9F641D)
Contains software packages for your server needs (for example `apache`, `nginx`),
similar to the `desktop` pool, you do not necessarily need these for a simple installation.
# Structure
A pool contains:
@ -97,39 +126,38 @@ These pools can provide packages for users, these packages can be managed using
### Building an already existing pool
To build an already existing pool, such as the `base` or the `desktop` pool, first you will need to
download the pool's source. Source for the `base` and the `desktop` pool can be found on [MatterLinux Git Server](https://git.matterlinux.xyz/matter).
download the pool's source. Source for the `base`, `desktop` and `server` pool can be found on [MatterLinux Git Server](https://git.matterlinux.xyz/matter).
After downloading the pool source, you will need to install the `mp-pool` tool, which is the tool
used for building MatterLinux pools. To do so please follow the steps [here](https://git.matterlinux.xyz/Matter/mp-pool#installation).
used for building MatterLinux pools. To do so please you can simply install the [`mtsc`](https://git.matterlinux.xyz/matter/mtsc)
package from the `base` pool.
Finally to build the pool:
```
$ mp-pool <pool dir>
```
You will mostly likely want to disable package signing though, as you are probably not the
owner of the pool:
You will mostly likely want to disable package signing though, as you are probably don't have the
PGP keys for the official pools:
```
$ mp-pool --no-sign <pool dir>
```
### Hosting pools
Unlike most of the package managers, `mp` does not use HTTP, FTP or RSYNC to communicate with the pools. It has it's own
custom protocol named [MPTP](/wiki/mptp). Pools are hosted over this protocol using [pooler](https://git.matterlinux.xyz/matter/pooler).
Unlike most of the package managers, `matt` does not use HTTP, FTP or RSYNC to communicate with the pools. It has it's own
custom protocol named [MPTP](/wiki/libmp). Pools are hosted over this protocol using [pooler](https://git.matterlinux.xyz/matter/pooler).
To get host a pool using `pooler`, download and install the `pooler` by following the instructions on the [README](https://git.matterlinux.xyz/matter/pooler). It's also in the official pools so you can install it with `matt` as well.
To host a pool using `pooler`, download and install the `pooler` by following the instructions on the [README](https://git.matterlinux.xyz/matter/pooler). It's also in the `server` pool so you can install it with `matt` as well.
After installing it, you'll need to create/edit the configuration file (`/etc/pooler/config.ini`).
Here is an example configuration file:
```
# location for the pooler log file
log = /var/log/pooler.log
# address to host the MPTP server on
addr = 0.0.0.0:5858
# pool name
[my-pool]
# pool directory
dir = /srv/my-pool
@ -141,7 +169,7 @@ After editing this configuration for your needs, you can run pooler with the con
$ pooler /etc/pooler/config.ini
```
After running this command, pooler should start hosting your pool over MPTP on port 5858. If you experience
any issues, you should check the log file for any errors.
any issues, you should check the error logs.
### Creating a new pool
If you want to create an unofficial pool, setup the directory structure for the source pool as

View File

@ -5,10 +5,10 @@ On this page you will learn how you can use MatterLinux configuration manager.
known as "dotfiles".
### Installation
`confer` can be installed with `matt` (MatterLinux package manager), it's located in the desktop
pool:
`confer` can be installed with the [package manager](/wiki/matt), it's located in the [`desktop
pool](/wiki/pools):
```
# matt install --yes mc
# matt install --yes confer
```
In order to run `confer` as a non-root user, you will need to [install and configure `doas` or `sudo`](/wiki/post_install).
@ -54,7 +54,7 @@ the repository's path
After adding all the targets, run the `gen` command, specifying the local path to the git repository
that contain the `confer.ini` file:
```
$ confer gen /path/to/your/repo
$ confer gen /path/to/your/repository
```
`confer` will copy all the target files/directories from the `dst` to the
`src`. When you are done, feel free to publish the git repository and share it.
@ -79,4 +79,5 @@ After the installation `confer` will install all the requirements using `matt`,
### Config Hub
MatterLinux offers a simple [configuration hub](/hub), that you can use to find official configuration packages.
You can also add your own configuration to the config hub, just create a issue or a pull request in the [website content repository](https://git.matterlinux.xyz/Matter/content/issues).
You can also add your own configuration to the config hub, just create a issue or a pull request in the
[website content git repository](https://git.matterlinux.xyz/Matter/content/issues).

View File

@ -3,7 +3,7 @@ On GNU/Linux systems, package management is usually done with a package manager.
# MatterLinux Package Manager
In a Matter system, package management is generally done with the MatterLinux Package Manager (`matt`).
`matt` lets you install, remove, update and search different MatterLinux packages across different pools.
`matt` lets you install, remove, update and search different MatterLinux packages across different [pools](/wiki/pools).
### Installation
`matt` should be already installed on a MatterLinux system. However if you want to install `matt` from
@ -137,9 +137,7 @@ You can list all the installed packages with the `list` command:
# Other package managers
It's a really bad idea to use multiple package managers as they may conflict and may result in an
unstable system. However package managers such as flatpak and snap offer containerized packages,
making them possible to use with other package managers.
- Flatpak will be added to `desktop` pool in the future. Currently the only way to use flatpak is to
install it from the source.
- Snap will never be added to any official pool, so only way to use it is to install it from the source.
unstable system. However package managers such as `flatpak` and `snap` offer containerized packages,
making them possible to use with other package managers. However currently none of these package
managers are available in the official pools. If you want to use them, you will need to install them
from the source.