D.S.i.u.S.
Lt. Commander
- Registriert
- Feb. 2003
- Beiträge
- 1.045
Ich habe gestern(20.12.25) Hyprland durch Mango Wayland compositor unter NixOS ersetzt und möchte meine Erfahrungen nach und nach bis Polishing mit euch teilen.
Warum der Wechsel? Ich wollte etwas Neues und Schlankes ausprobieren. Mango hat viele Layouts und Tags neben Workspaces System. Ich werde auch versuchen, eine einfache Quickshell Leiste als Ersatz für Waybar zu basteln.
Checkliste, die ich bis Polishing abarbeiten muss
Vorbereitung:
Aliases für alle Shells in
1. Hyprland deaktivieren (oder auskommentieren)
In
Command in
in configuration.nix auskommentiert
2.
Ich habe etwas von Hyprland übernohmen und muss nicht komplett von null anfangen.
Man soll die Datei
Erstes Booten nach der Vorbereitung
Erstes Einloggen war nicht möglich. Ich musste zuerst zu tty wechseln, um in
Strg + Alt + F2 --> Username Passwort -->
Zweiter Versuch um auf Desktop zu kommen
Bin auf dem Desktop mit grauem Wallpaper und Mauscursor gelandet. Es gibt keine Tastenkürzel. SUPER + RETURN(kitty) und SUPER + D(fuzzel) funktionieren nicht.
PC mit Powertaste ausgemacht und dann eingeschaltet. Wieder zu tty gewechselt, um binds zu ändern
Dritter Versuch
Aller guten Dinge sind drei. Aufm Desktop sehe ich immer noch grauen Hintergrund und Mauszeiger, aber wenigstens kann ich jetzt kitty(Terminal) und fuzzel(App Launcher) öffnen.
Probleme, die ich als Erstes nach der Grundinstallation beheben soll:
Mango hat scroller layout von Anfang an (entweder anpassen oder ändern)
polkit funktioniert nicht (Speichern in codium ist nicht möglich) Lösung
Tastaturlayout ist auf englisch
Monitore sind gespiegelt
SUPER + Escape für wlogout funktioniert nicht Lösung
Animationen sind nicht deaktiviert
Clipboard(SUPER + V) funktioniert nicht
Screenshots erstellen funktioniert nicht
Aktive Fenster haben eine Umrandung in Orange
Youtube - Vollbild verlassen mit Klick unten rechts verschiebt Focus auf das Fenster rechts neben Browser, weil Mauszeiger in scroller layout nach dem Verlassen von Vollbild nicht mehr im Browserfenster ist, sondern im Fenster daneben. Vollbild verlassen mit Taste F funktioniert normal.
Was ich nach der Grundinstallation schon behoben habe:
Warum der Wechsel? Ich wollte etwas Neues und Schlankes ausprobieren. Mango hat viele Layouts und Tags neben Workspaces System. Ich werde auch versuchen, eine einfache Quickshell Leiste als Ersatz für Waybar zu basteln.
tile
scroller (PaperWM-like)
monocle (Fullscreen focused)
grid
deck
center_tile
vertical_tile
right_tile
vertical_scroller
vertical_grid
vertical_deck
tgmix (Tile grid mix)
scroller (PaperWM-like)
monocle (Fullscreen focused)
grid
deck
center_tile
vertical_tile
right_tile
vertical_scroller
vertical_grid
vertical_deck
tgmix (Tile grid mix)
Checkliste, die ich bis Polishing abarbeiten muss
[x] Grundinstallation (NixOS-Modul)
[x] App Launcher (fuzzel)
[ ] Monitor-Konfiguration
[ ] Tastenbelegungen (Keybindings)
[ ] Tastatur und Maus
[x] Tastaturlayout
[ ] XDG Desktop Portals
[x] Fonts
[x] Polkit-Integration
[ ] Environment Variables
[x] Wallpaper-Manager
[ ] Workspace oder Tag Rules
[x] Autostart
[ ] Idle-Management
[ ] Clipboard-Manager
[ ] Statusleiste
[x] Notification Daemon
[ ] Volume Control
[x] Animations
[x] Overview Settings
[x] App Launcher (fuzzel)
[ ] Monitor-Konfiguration
[ ] Tastenbelegungen (Keybindings)
[ ] Tastatur und Maus
[x] Tastaturlayout
[ ] XDG Desktop Portals
[x] Fonts
[x] Polkit-Integration
[ ] Environment Variables
[x] Wallpaper-Manager
[ ] Workspace oder Tag Rules
[x] Autostart
[ ] Idle-Management
[ ] Clipboard-Manager
[ ] Statusleiste
[x] Notification Daemon
[ ] Volume Control
[x] Animations
[x] Overview Settings
Vorbereitung:
Aliases für alle Shells in
configuration.nix. Aliases machen alles einfacher. Kann man auch in tty nutzen. Ein Beispiel: nrs ist kürzer als sudo nixos-rebuild switch --flake /etc/nixos#pc. Ich nutze ein mal in der Woche nfu && nrs && shutdown
Bash:
# Aliases für alle Shells
environment.shellAliases = {
nfu = "sudo sh -c 'cd /etc/nixos && nix flake update'";
nrs = "sudo nixos-rebuild switch --flake /etc/nixos#pc";
nco = "sudo nano /etc/nixos/configuration.nix";
};
In
configuration.nix programs.hyprland.enable = true; durch programs.mangowc.enable = true; ersetzen.Command in
services.greetd von hyprland auf mango ändern.
Bash:
services.greetd = {
enable = true;
settings = {
default_session = {
# command = "${pkgs.tuigreet}/bin/tuigreet --cmd ${pkgs.hyprland}/bin/Hyprland --remember";
command = "${pkgs.tuigreet}/bin/tuigreet --cmd mango --remember";
user = "greeter";
};
};
};
# security.pam.services.hyprland.enableGnomeKeyring = true;in configuration.nix auskommentiert
2.
mango.nix Home Manager Datei erstellen und flake anpassen:sudo nano /etc/nixos/mango.nixIch habe etwas von Hyprland übernohmen und muss nicht komplett von null anfangen.
Bash:
# /etc/nixos/flake.nix
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
mango = {
url = "github:DreamMaoMao/mango";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, chaotic, home-manager, mango, ... }: {
nixosConfigurations = {
pc = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
chaotic.nixosModules.default
mango.nixosModules.mango
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.rebellz = {
imports = [
./mango.nix
mango.hmModules.mango
];
};
}
];
};
};
};
}
Bash:
{ config, pkgs, lib, ... }:
{
home.stateVersion = "24.05";
# VSCodium - Save as root Erweiterung
programs.vscode.profiles.default.extensions = [
pkgs.vscode-extensions.yy0931.save-as-root-in-remote-ssh
];
# Fastfetch
programs.fastfetch = {
enable = true;
settings = {
modules = [
"title"
"separator"
"os"
"host"
"kernel"
"uptime"
"packages"
"shell"
"terminal"
"cpu"
"gpu"
"memory"
# "local_ip"
"disk"
"break"
"colors"
];
};
};
services.cliphist = {
enable = true;
};
# MPV media Player
programs.mpv = {
enable = true;
package = pkgs.mpv;
config = {
vo = "gpu";
hwdec = "auto";
loop-file = "inf"; # Loop für Videos
};
# MPV Scripts
scripts = [
pkgs.mpvScripts.thumbfast # High-performance on-the-fly thumbnailer for mpv
pkgs.mpvScripts.uosc
];
};
# GTK Cursors
home.pointerCursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 14;
};
# GTK Icons + Theme
gtk = {
enable = true;
theme = {
name = "Orchis-Light";
package = pkgs.orchis-theme;
};
iconTheme = {
name = "Tela";
package = pkgs.tela-icon-theme;
};
};
# Desktop Ordner in Home ausblenden
xdg.userDirs = {
enable = true;
createDirectories = false;
desktop = "$HOME";
};
# Micro - Terminal-based editor
programs.micro = {
enable = true;
};
# Terminal
programs.kitty = {
enable = true;
themeFile = "atelier-cave-dark";
settings = {
font_family = "Fira Code";
font_size = 12;
enable_audio_bell = false;
scrollback_lines = 10000;
confirm_os_window_close = 0;
};
};
# Wayland-Umgebungsvariablen
home.sessionVariables = {
# Session / Desktop Info
XDG_CURRENT_DESKTOP = "mango"; # Helps some apps recognize the DE
XDG_SESSION_DESKTOP = "mango"; # Indicates Wayland session
XDG_SESSION_TYPE = "wayland"; # Indicates Wayland session
# Wayland Fixes
QT_QPA_PLATFORM = "wayland"; # For Qt apps
MOZ_ENABLE_WAYLAND = "1";
NIXOS_OZONE_WL = "1"; # Electron (Discord, VSCode, Slack …)
GDK_BACKEND = "wayland"; # For GTK apps
# Nvidia spezifisch
WLR_NO_HARDWARE_CURSORS = "1";
LIBVA_DRIVER_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
WLR_RENDERER = "vulkan";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
__GL_VRR_ALLOWED = "1";
};
wayland.windowManager.mango = {
enable = true;
# MangoWC will die Config als Textblock ('' ... '')
settings = ''
# Monitore
output,DP-1,mode,1920x1080@144,pos,0,0
output,HDMI-A-1,mode,1920x1080@60,pos,0,-1080
# Tastatur & Maus
input,*,accel_profile,flat
input,*,pointer_speed,0.5
xkb_rules_layout=de,de
# Binds
bind=SUPER,Return,spawn,kitty
bind=SUPER,Q,killclient,
bind=SUPER,D,spawn,${pkgs.fuzzel}/bin/fuzzel
bind=SUPER,B,spawn,firefox
bind=SUPER,Escape,spawn,${pkgs.wleave}/bin/wleave
bind=SUPER,code:104,spawn,codium
animations=0
layer_animations=0
exec = ~/.config/mango/autostart.sh
# Clipboard (Fuzzel als Menü)
bind=SUPER,V,spawn,sh -c "${pkgs.cliphist}/bin/cliphist list | ${pkgs.fuzzel}/bin/fuzzel --dmenu | ${pkgs.cliphist}/bin/cliphist decode | ${pkgs.wl-clipboard}/bin/wl-copy"
'';
# Dinge, die beim Start geladen werden sollen
autostart_sh = ''
${pkgs.firefox}/bin/firefox &
# SwayNC (Benachrichtigungs-Zentrum)
${pkgs.swaynotificationcenter}/bin/swaync &
# wallpaper
${pkgs.swaybg}/bin/swaybg -i /home/rebellz/Bilder/Wallpaper/wallpaper.png &
# Polkit (Damit VSCodium speichern kann)
${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1 &
${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store &
'';
};
# Quickshell Aktivierung
programs.quickshell = {
enable = true;
systemd.enable = true;
};
# Quickshell Config
xdg.configFile."quickshell/shell.qml".text = ''
import QtQuick
import Quickshell
import Quickshell.Wayland
ShellRoot {
PanelWindow {
anchors {
bottom: true
left: true
right: true
}
height: 30
color: "#282C34
exclusionMode: ExclusionMode.Exclusive // Reserviert Platz für Fenster
Text {
anchors.centerIn: parent
text: "I use NixOS btw"
color: "#D2E3FD"
font.pixelSize: 14
}
}
}
'';
}
Bash:
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./syncthing.nix
# ./nvidia-open-latest.nix
./thelounge.nix
./nvidia-open-beta.nix
# ./nvidia-nvk.nix
];
# Kernel
boot.kernelPackages = pkgs.linuxPackages_cachyos-gcc;
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Begrenzung der Rollback-Einträge
boot.loader.systemd-boot.configurationLimit = 10;
networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Disable NetworkManager, use systemd-networkd + resolved
networking.networkmanager.enable = false;
networking.useDHCP = false;
systemd.network.enable = true;
services.resolved.enable = true;
systemd.network.networks."10-enp15s0" = {
matchConfig.Name = "enp15s0";
networkConfig = {
Address = "192.168.178.52/22"; # feste IPv4 mit Subnetz
Gateway = "192.168.178.1"; # FritzBox
DNS = [ "94.242.2.3" "2620:fe::fe" ]; # Bevorzugte DNS (v4 + v6)
};
};
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "de_DE.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# Enable OpenGL über NixOS-Option
hardware.graphics = {
enable = true;
enable32Bit = true;
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Plasma 6
# services.displayManager.sddm.enable = true;
# services.displayManager.sddm.wayland.enable = true;
# services.desktopManager.plasma6.enable = false;
services.greetd = {
enable = true;
settings = {
default_session = {
# command = "${pkgs.tuigreet}/bin/tuigreet --cmd ${pkgs.hyprland}/bin/Hyprland --remember";
command = "${pkgs.tuigreet}/bin/tuigreet --cmd mango --remember";
user = "greeter";
};
};
};
programs.mango.enable = true;
# Aktiviere Hyprland mit seiner eigenen XWayland-Option
# programs.hyprland = {
# enable = true;
# withUWSM = true;
# xwayland.enable = true; # für legacy X11 Apps wie Firefox, Thunderbird etc.
# };
# Configure keymap in X11
services.xserver.xkb.layout = "de";
services.xserver.xkb.variant = "";
# Configure console keymap
console.keyMap = "de";
# Enable CUPS to print documents & Brother Drucker Treiber
services.printing.enable = true;
services.printing.drivers = [
pkgs.brlaser
];
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.rebellz = {
isNormalUser = true;
description = "rebellz";
extraGroups = [ "wheel" ];
};
services.udisks2.enable = true;
# Steam
programs.steam.enable = true;
# Garbage Collection
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
nix.settings.auto-optimise-store = true;
# Firefox.
programs.firefox = {
enable = true;
languagePacks = [ "de" ];
nativeMessagingHosts.packages = [ pkgs.firefoxpwa ];
preferences = {
"intl.locale.requested" = "de";
"widget.use-xdg-desktop-portal.file-picker" = 1; # KDE file picker
"browser.tabs.loadBookmarksInTabs" = true; # Lesezeichen in neuem Tab öffnen
"full-screen-api.warning.delay" = -1; # Vollbildmodus Meldung deaktivieren Teil 1/2
"full-screen-api.warning.timeout" = 0; # Vollbildmodus Meldung deaktivieren Teil 2/2
"ui.tooltip.delay_ms" = 5000;
"dom.private-attribution.submission.enabled" = false; # "datenschutzfreundliche" Werbe-Messungen
"browser.cache.disk.enable" = false; # Cache abschalten
"extensions.pocket.enabled" = false; # Pocket deaktivieren
"dom.event.clipboardevents.enabled" = false; # Zwischenablage nicht überwachen
"privacy.donottrackheader.enabled" = true; # Do Not Track aktivieren
};
};
# Thunderbird
programs.thunderbird.enable = true;
# OBS-Studio
programs.obs-studio.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# The Nano editor is also installed by default.
brave
dconf
eog
ffmpeg-full
ffmpegthumbnailer
foot
fuzzel
gimp
git
grim
grimblast
gnome-calculator
hyprpicker
inkscape
joplin-desktop
keepassxc
kitty-themes
librecad
libreoffice-fresh
# lutris
mangohud
mission-center
nautilus
# onlyoffice-bin
# opensnitch-ui
pam_u2f
pavucontrol
polkit_gnome
screen
shotcut
slurp
swaybg # Wallpaper Setup
swaynotificationcenter # Notification Daemon
tuigreet
unzip
wl-clipboard
wleave
vivaldi
vlc
vscodium
yt-dlp_git
zim
];
fonts.packages = with pkgs; [
nerd-fonts.symbols-only
nerd-fonts.jetbrains-mono
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
fira-code
];
services.udev.packages = [ pkgs.yubikey-personalization ];
security.pam.services = {
sudo.u2fAuth = true;
};
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# OpenSnitch (Application Firewall; opensnitch-ui in environment.systemPackages)
# services.opensnitch.enable = true;
# services.passSecretService.enable = true;
# KDE Connect
programs.kdeconnect.enable = true;
# Aliases für alle Shells
environment.shellAliases = {
nfu = "sudo sh -c 'cd /etc/nixos && nix flake update'";
nrs = "sudo nixos-rebuild switch --flake /etc/nixos#pc";
nco = "sudo micro /etc/nixos/configuration.nix";
};
security.polkit.enable = true;
services.gnome.gnome-keyring.enable = true;
services.gvfs.enable = true;
# security.pam.services.hyprland.enableGnomeKeyring = true;
security.pam.services.login.enableGnomeKeyring = true;
services.dbus.enable = true;
programs.dconf.enable = true;
# Daemon for power management
# services.upower.enable = false;
system.stateVersion = "24.05"; # Don't change it bro
}
Man soll die Datei
mango.nix NICHT in configuration.nix unter imports einbinden!mango.nix ist eine Home Manager Datei und nicht Teil von configuration.nix, die ausgelagert wird(wie z.B. thelounge.nix oder nvidia-open-latest.nix)Erstes Booten nach der Vorbereitung
Erstes Einloggen war nicht möglich. Ich musste zuerst zu tty wechseln, um in
configuration.nix unter greetd die command Zeile von mangowc auf mango zu ändern.Strg + Alt + F2 --> Username Passwort -->
sudo nano /etc/nixos/configuration.nixZweiter Versuch um auf Desktop zu kommen
Bin auf dem Desktop mit grauem Wallpaper und Mauscursor gelandet. Es gibt keine Tastenkürzel. SUPER + RETURN(kitty) und SUPER + D(fuzzel) funktionieren nicht.
PC mit Powertaste ausgemacht und dann eingeschaltet. Wieder zu tty gewechselt, um binds zu ändern
Dritter Versuch
Aller guten Dinge sind drei. Aufm Desktop sehe ich immer noch grauen Hintergrund und Mauszeiger, aber wenigstens kann ich jetzt kitty(Terminal) und fuzzel(App Launcher) öffnen.
Probleme, die ich als Erstes nach der Grundinstallation beheben soll:
Mango hat scroller layout von Anfang an (entweder anpassen oder ändern)
polkit funktioniert nicht (Speichern in codium ist nicht möglich) Lösung
Tastaturlayout ist auf englisch
Monitore sind gespiegelt
SUPER + Escape für wlogout funktioniert nicht Lösung
Animationen sind nicht deaktiviert
Clipboard(SUPER + V) funktioniert nicht
Screenshots erstellen funktioniert nicht
Aktive Fenster haben eine Umrandung in Orange
Youtube - Vollbild verlassen mit Klick unten rechts verschiebt Focus auf das Fenster rechts neben Browser, weil Mauszeiger in scroller layout nach dem Verlassen von Vollbild nicht mehr im Browserfenster ist, sondern im Fenster daneben. Vollbild verlassen mit Taste F funktioniert normal.
Was ich nach der Grundinstallation schon behoben habe:
- Tastaturlayout auf DE umgestellt. Einfach unter
settingsinmango.nixdie Zeilexkb_rules_layout=de,dehinzufügen. - Animationen deaktiviert.
animations=0undlayer_animations=0
Zuletzt bearbeitet: