| config-n5.kdl | ||
| install-nn.sh | ||
| noctalia-custom.kdl | ||
| noctalia.kdl | ||
| README.md | ||
| RUNBOOK.md | ||
Overview
Niri and Noctalia Build Script Based on lazarh/niri-noctalia-debian-script Reviewed (beacause likely AI?) and made working with ARM64 by pfriedma
A corresponding manual runbook is avaliable at: RUNBOOK.md
Notes
NOTICE: This script installs rust by using the curl https://sh.rustup.rs and pipe it to sh method.
If this bothers you, please execute the INSTALL_DEPS actions manually
You'll need to install the corresponding apt packages, get the libdisplay-info3 packages and install the rust toolchain.
Take a look at the script under the INSTALL_DEPS portion.
If you already have a working debian environment that you're happy with, you may want to consider reading the script and performing the steps manually. Check out RUNBOOK.md for step-by step instructions if you're concerned about what the script might do.
This script was tested on a fresh install of Debian Trixie 13.5 for arm64 running on qemu/x86.
It takes about 3 hours to build this way.
On native hardware, it should be significantly faster.
On a minimal install (no graphical environment) it will install about 4.5GB of dependencies including, for example, python, ruby (for gvim), lots of dev libraries, build-essential, clang, g++, rust, etc, etc, etc.
This script should also work on amd64 and other architectures for which the packages and rust chain are avaliable, as it uses dpkg --print-architecture
Noctalia 5 and Greeter
Noctalia v5 is significantly smaller and easier to build than v4. v4 needs the whole qt6 dev-chain. This script uses v5 only, as that's the version that will be maintained by the developers moving forward.
The script has an option (--install-greetd) which will install the greetd greeter and also the noctalia-greeter plugin.
This is somewhat experimental and only works on Debain testing or unstalbe due to dependencies. To use this you'll need to edit the script to set INSTALL_GREETD_NOCTALIA=true in the case statement and in INSTALL_ALL section.
You can also use GDM3 if you'd prefer by doing a sudo apt install gdm3 && systemctl enable gdm3 after the script is finished - the script installes a desktop entry for niri which gdm3 will recognise.
Prerequisites
Tempfs
In order to build successfully, you'll need at least 4GB of space in /tmp. In Debian 13, tempfs is, by default RAM-backed filesystem that's 50% of avaliable RAM. Building Niri takes about 4GB so unless you have at least 8GB of RAM the build will fail.
You can switch /tmp back to the disk by doing
sudo systemctl mask tmp.mount and rebooting
You can also edit the params of the tempfs with sudo systemctl edit tmp.mount - see debian docs for more info.
Sudo
A minimal install of debian doesn't have sudo. You'll want to (as root):
apt install sudo
/sbin/usermod -aG sudo [your username]
Then, you can logout and log back in as your user and run the script. The script does not check that it's running as root (TODO). It's really designed for a fresh install.
Using
Do everything
./install-nn.sh --install-all
This is equivalent to --install-core --install-greetd --install-opts --apply-fixes
Install Niri, Noctalia and various dependncies
./install-nn.sh --install-core
This command is equivalent to ./install-nn.sh --install-deps --install-niri --install-noctalia5
Installing dependencies for building
./install-nn.sh --install-deps
This will run apt update and instlal a bunch of dependency packages.
Installing just Niri
./install-nn.sh --install-niri
This will download niri, and build it. You need to have the dependencies pre-installed.
Installing just Noctalia 5
./install-nn.sh --install-noctalia5
Installing various fixes and tweaks and optional quality of life packages
./install-nn.sh --install-opts --apply-fixes see --help for more info.
This will install things like NetworkManager, Bluez, and Pipewire compatiability layers as well as ldconfig pipewire-jack to use the right libraries.
Failure recovery
By default the script creates a temp working directory and if the script is run again, this will get re-created. This could mean several hours of time lost depending on the system. If a particular step fails, you may want to find the appropriate directory in /tmp (it will be a large one - for niri it's 2GB) and run the build steps manually after fixing any issues. You can then use the individual parts (e.g --install-noctalia5 ) aftter, or switch over to the runbook.
If you want to manually run each part, the recommended order is:
--install-deps--install-opts(optional)--install-niri--install-noctalia5--install-greetd--apply-fixes
IF the --install-niri step fails:
- fix missing dependencies or config issues
- cd to the directory in /tmp that has the
nirisubfolder. It will be something liketmp.6gw02jdskaland be large in size. - run
cargo build --release - Install files:
sudo install -Dm755 target/release/niri /usr/local/bin/niri
sudo install -Dm755 resources/niri-session /usr/local/bin/niri-session
sudo install -Dm644 resources/niri.service /etc/systemd/user
sudo install -Dm644 resources/niri-shutdown.target /etc/systemd/user
sudo install -Dm644 resources/niri-portals.conf /usr/share/xdg-desktop-portal/portals/niri-portals.conf
sudo mkdir -p /usr/local/share/wayland-sessoins/
sudo install -Dm644 resources/niri-desktop /usr/local/share/wayland-sessions/
Follow similar steps if the other steps fail. See the RUNBOOK.md for step-by-step instructions for each component.