fix: resolve VM startup failures, broken Hyprland functionality, and theme integration

- Fix QEMU syntax and root filesystem conflicts in vm-guest.nix.
- Repair numerous broken relative paths and imports across the codebase.
- Set 'summer-night' as the default distro theme with full branding integration.
- Implement declarative system-wide font installation including the 'nomarchy' font.
- Fix Waybar startup by dynamically generating theme-aware CSS.
- Restore Hyprland keybindings (Super+Return, Super+Space) and wallpaper loading.
- Add missing scripts: nomarchy-launch-walker, nomarchy-toggle-waybar, nomarchy-refresh-config.
- Enable UWSM and correctly disable conflicting Hyprland systemd services.
This commit is contained in:
Bernardo Magri
2026-04-12 20:54:03 +01:00
parent bbdf34ced8
commit a7dbca80a6
32 changed files with 253 additions and 115 deletions

View File

@@ -5,6 +5,8 @@
./system/options.nix
./system/state.nix
./system/systemd.nix
./system/virtualization.nix
./system/fonts.nix
../themes/engine/plymouth.nix
../themes/engine/sddm.nix
./system/hardware.nix

View File

@@ -15,7 +15,7 @@
# - Environment variables
let
configDir = ../../config;
configDir = ./config;
overridesDir = "${config.home.homeDirectory}/.config/nomarchy/overrides";
# Check if user has an override for a specific config

View File

@@ -4,7 +4,7 @@ exec-once = uwsm-app -- mako
exec-once = uwsm-app -- fcitx5 --disable notificationitem
exec-once = uwsm-app -- swaybg -i ~/.config/nomarchy/current/background -m fill
exec-once = uwsm-app -- swayosd-server
exec-once = nomarchy-cmd-first-run
exec-once = nomarchy-on-boot
# Slow app launch fix -- set systemd vars
exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)

View File

@@ -1,6 +1,6 @@
# Menus
bindd = SUPER, SPACE, Launch apps, exec, nomarchy-launch-walker
bindd = SUPER CTRL, E, Emoji picker, exec, nomarchy-launch-walker -m symbols
bindd = SUPER, SPACE, Launch apps, exec, nomarchy-menu
bindd = SUPER CTRL, E, Emoji picker, exec, nomarchy-menu symbols
bindd = SUPER CTRL, C, Capture menu, exec, nomarchy-menu capture
bindd = SUPER CTRL, O, Toggle menu, exec, nomarchy-menu toggle
bindd = SUPER ALT, SPACE, Nomarchy menu, exec, nomarchy-menu

View File

@@ -79,7 +79,7 @@ group {
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes, please :)
enabled = yes
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

View File

@@ -1,30 +1,21 @@
{ config, pkgs, lib, ... }:
let
configDir = ../../config;
configDir = ./config;
# Explicit list of config items to manage
# This replaces dynamic builtins.readDir for clarity and faster evaluation
configItems = {
# Directories
btop = "directory";
chromium = "directory";
elephant = "directory";
"environment.d" = "directory";
fastfetch = "directory";
fcitx5 = "directory";
fontconfig = "directory";
ghostty = "directory";
git = "directory";
hypr = "directory";
"hyprland-preview-share-picker" = "directory";
imv = "directory";
kitty = "directory";
lazygit = "directory";
"nautilus-python" = "directory";
nomarchy = "directory";
opencode = "directory";
systemd = "directory";
tmux = "directory";
"nomarchy-skill" = "directory";
Typora = "directory";
uwsm = "directory";
wiremix = "directory";

View File

@@ -3,6 +3,5 @@
{
config = {
fonts.fontconfig.enable = lib.mkDefault true;
xdg.dataFile."fonts/nomarchy.ttf".source = lib.mkDefault ../../config/nomarchy.ttf;
};
}

View File

@@ -41,7 +41,7 @@
};
theme = lib.mkOption {
type = lib.types.str;
default = "nord";
default = "summer-night";
description = "System theme name.";
};
wallpaper = lib.mkOption {

View File

@@ -1,8 +1,8 @@
{ config, lib, ... }:
let
nomarchyLib = import ../lib { inherit lib; };
assetsPath = ../../assets/themes;
nomarchyLib = import ../../lib { inherit lib; };
assetsPath = ../../themes/palettes;
# Read unified state from ~/.config/nomarchy/state.json
togglesState = nomarchyLib.readHomeState config.home.homeDirectory;
@@ -19,7 +19,7 @@ in
skipVsCodeTheme = togglesState.skipVsCodeTheme or false;
};
nightlightTemperature = togglesState.nightlightTemperature or 4000;
theme = togglesState.theme or "nord";
theme = togglesState.theme or "summer-night";
wallpaper = togglesState.wallpaper or "";
hyprland = {
gaps_in = togglesState.hyprland.gaps_in or 5;
@@ -30,11 +30,11 @@ in
# Derived properties from the theme directory
isLightMode = nomarchyLib.isThemeLightMode {
themeName = togglesState.theme or "nord";
themeName = togglesState.theme or "summer-night";
inherit assetsPath;
};
iconsTheme = nomarchyLib.getIconsTheme {
themeName = togglesState.theme or "nord";
themeName = togglesState.theme or "summer-night";
inherit assetsPath;
};
};

23
core/system/fonts.nix Normal file
View File

@@ -0,0 +1,23 @@
{ pkgs, ... }:
let
nomarchy-font = pkgs.stdenv.mkDerivation {
pname = "nomarchy-font";
version = "1.0";
# Pull from core/home/config where the ttf is located
src = ./../home/config;
installPhase = ''
mkdir -p $out/share/fonts/truetype
cp nomarchy.ttf $out/share/fonts/truetype/
'';
};
in
{
fonts.packages = [
nomarchy-font
pkgs.nerd-fonts.jetbrains-mono
pkgs.nerd-fonts.roboto-mono
pkgs.nerd-fonts.fira-code
pkgs.nerd-fonts.ubuntu-mono
];
}

View File

@@ -48,7 +48,7 @@
};
theme = lib.mkOption {
type = lib.types.str;
default = "nord";
default = "summer-night";
description = "Selected system theme.";
};
};

View File

@@ -1,7 +1,7 @@
{ lib, ... }:
let
nomarchyLib = import ../lib { inherit lib; };
nomarchyLib = import ../../lib { inherit lib; };
systemState = nomarchyLib.readSystemState;
in
{

View File

@@ -0,0 +1,11 @@
{ lib, ... }:
{
programs.uwsm = {
enable = lib.mkDefault true;
waylandCompositors.hyprland = {
binPath = "/run/current-system/sw/bin/Hyprland";
prettyName = "Hyprland";
};
};
}

View File

@@ -4,12 +4,12 @@
# Shared VM configuration
virtualisation.vmVariant = {
virtualisation.graphics = true;
virtualisation.qemu.options = [ "-device virtio-vga" ];
virtualisation.qemu.options = [ "-device" "virtio-vga" ];
};
# Dummy hardware config for VM
fileSystems."/" = { device = "/dev/disk/by-label/nixos"; };
boot.loader.grub.device = "/dev/vda";
fileSystems."/" = lib.mkDefault { device = "/dev/disk/by-label/nixos"; };
boot.loader.grub.device = lib.mkDefault "/dev/vda";
boot.initrd.availableKernelModules = [ "virtio_pci" "virtio_blk" "virtio_gpu" "virtio_net" "virtio_mmio" ];
# Force early KMS for Plymouth