added all niri files
This commit is contained in:
parent
6631ee233b
commit
41bfe78ad6
1 changed files with 70 additions and 4 deletions
|
@ -53,26 +53,92 @@ rustPlatform.buildRustPackage {
|
||||||
"-lEGL"
|
"-lEGL"
|
||||||
"-lwayland-client"
|
"-lwayland-client"
|
||||||
"-Wl,--pop-state"
|
"-Wl,--pop-state"
|
||||||
|
"--release"
|
||||||
];
|
];
|
||||||
|
|
||||||
postInstall =
|
postInstall =
|
||||||
let
|
let
|
||||||
niriSession = ''
|
niriSession = ''
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -n "$SHELL" ] &&
|
||||||
|
grep -q "$SHELL" /etc/shells &&
|
||||||
|
! (echo "$SHELL" | grep -q "false") &&
|
||||||
|
! (echo "$SHELL" | grep -q "nologin"); then
|
||||||
|
if [ "$1" != '-l' ]; then
|
||||||
|
exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure there's no already running session.
|
||||||
|
if systemctl --user -q is-active niri.service; then
|
||||||
|
echo 'A niri session is already running.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Reset failed state of all user units.
|
||||||
|
systemctl --user reset-failed
|
||||||
|
|
||||||
|
# Set the current desktop for xdg-desktop-portal.
|
||||||
|
export XDG_CURRENT_DESKTOP=niri
|
||||||
|
|
||||||
|
# Ensure the session type is set to Wayland for xdg-autostart apps.
|
||||||
|
export XDG_SESSION_TYPE=wayland
|
||||||
|
|
||||||
|
# Import the login manager environment.
|
||||||
|
systemctl --user import-environment
|
||||||
|
|
||||||
|
# DBus activation environment is independent from systemd. While most of
|
||||||
|
# dbus-activated services are already using `SystemdService` directive, some
|
||||||
|
# still don't and thus we should set the dbus environment with a separate
|
||||||
|
# command.
|
||||||
|
if hash dbus-update-activation-environment 2>/dev/null; then
|
||||||
|
dbus-update-activation-environment --all
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start niri and wait for it to terminate.
|
||||||
|
systemctl --user --wait start niri.service
|
||||||
|
|
||||||
|
# Unset environment that we've set.
|
||||||
|
systemctl --user unset-environment WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP
|
||||||
|
'';
|
||||||
|
niriDesktop = ''
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=niri
|
Name=Niri
|
||||||
Comment=Scrolling wayland compositor
|
Comment=A scrollable-tiling Wayland compositor
|
||||||
Exec=niri
|
Exec=niri-session
|
||||||
Type=Application
|
Type=Application
|
||||||
|
DesktopNames=niri
|
||||||
'';
|
'';
|
||||||
niriPortals = ''
|
niriPortals = ''
|
||||||
[preferred]
|
[preferred]
|
||||||
default=gnome;gtk;
|
default=gnome;gtk;
|
||||||
'';
|
'';
|
||||||
|
niriService = ''
|
||||||
|
[Unit]
|
||||||
|
Description=A scrollable-tiling Wayland compositor
|
||||||
|
BindsTo=graphical-session.target
|
||||||
|
Before=graphical-session.target
|
||||||
|
Wants=graphical-session-pre.target
|
||||||
|
After=graphical-session-pre.target
|
||||||
|
|
||||||
|
Wants=xdg-desktop-autostart.target
|
||||||
|
Before=xdg-desktop-autostart.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
ExecStart=/usr/bin/niri
|
||||||
|
'';
|
||||||
in ''
|
in ''
|
||||||
|
echo "${niriSession}" > $out/bin/niri-session
|
||||||
mkdir -p $out/share/wayland-sessions
|
mkdir -p $out/share/wayland-sessions
|
||||||
echo "${niriSession}" > $out/share/wayland-sessions/niri.desktop
|
echo "${niriDesktop}" > $out/share/wayland-sessions/niri.desktop
|
||||||
mkdir -p $out/share/xdg-desktop-portal
|
mkdir -p $out/share/xdg-desktop-portal
|
||||||
echo "${niriPortals}" > $out/share/wayland-sessions/niri-portals.conf
|
echo "${niriPortals}" > $out/share/wayland-sessions/niri-portals.conf
|
||||||
|
mkdir -p $out/lib/systemd/user
|
||||||
|
echo "${niriService}" > $out/lib/systemd/user/niri.service
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.providedSessions = [ "niri" ];
|
passthru.providedSessions = [ "niri" ];
|
||||||
|
|
Loading…
Add table
Reference in a new issue