From a25e6bc8dbeac64de77b81c46d9116989b2b483c Mon Sep 17 00:00:00 2001 From: romildo Date: Tue, 1 Nov 2016 17:06:39 -0200 Subject: [PATCH] lumina: init at 1.1.0-p1 --- .../services/x11/desktop-managers/default.nix | 3 +- .../services/x11/desktop-managers/lumina.nix | 52 ++++++++++++++ pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch | 26 +++++++ .../avoid-absolute-path-on-sessdir.patch | 11 +++ pkgs/desktops/lumina/default.nix | 69 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 6 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 nixos/modules/services/x11/desktop-managers/lumina.nix create mode 100644 pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch create mode 100644 pkgs/desktops/lumina/avoid-absolute-path-on-sessdir.patch create mode 100644 pkgs/desktops/lumina/default.nix diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix index 31412ae70142..144e4aada277 100644 --- a/nixos/modules/services/x11/desktop-managers/default.nix +++ b/nixos/modules/services/x11/desktop-managers/default.nix @@ -19,7 +19,8 @@ in # E.g., if KDE is enabled, it supersedes xterm. imports = [ ./none.nix ./xterm.nix ./xfce.nix ./kde4.nix ./kde5.nix - ./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix + ./lumina.nix ./lxqt.nix ./enlightenment.nix ./gnome3.nix + ./kodi.nix ]; options = { diff --git a/nixos/modules/services/x11/desktop-managers/lumina.nix b/nixos/modules/services/x11/desktop-managers/lumina.nix new file mode 100644 index 000000000000..f0b31a2acb01 --- /dev/null +++ b/nixos/modules/services/x11/desktop-managers/lumina.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + xcfg = config.services.xserver; + cfg = xcfg.desktopManager.lumina; + +in + +{ + options = { + + services.xserver.desktopManager.lumina.enable = mkOption { + type = types.bool; + default = false; + description = "Enable the Lumina desktop manager"; + }; + + }; + + + config = mkIf (xcfg.enable && cfg.enable) { + + services.xserver.desktopManager.session = singleton { + name = "lumina"; + start = '' + exec ${pkgs.lumina}/bin/start-lumina-desktop + ''; + }; + + environment.systemPackages = [ + pkgs.fluxbox + pkgs.kde5.kwindowsystem + pkgs.kde5.oxygen-icons5 + pkgs.lumina + pkgs.numlockx + pkgs.qt5.qtsvg + pkgs.xscreensaver + ]; + + # Link some extra directories in /run/current-system/software/share + environment.pathsToLink = [ + "/share/desktop-directories" + "/share/icons" + "/share/lumina" + "/share" + ]; + + }; +} diff --git a/pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch b/pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch new file mode 100644 index 000000000000..6ddd9c76591b --- /dev/null +++ b/pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch @@ -0,0 +1,26 @@ +diff --git a/src-qt5/core/libLumina/LuminaOS-NixOS.cpp b/src-qt5/core/libLumina/LuminaOS-NixOS.cpp +index b92d1b0..441b1bf 100644 +--- a/src-qt5/core/libLumina/LuminaOS-NixOS.cpp ++++ b/src-qt5/core/libLumina/LuminaOS-NixOS.cpp +@@ -13,17 +13,17 @@ + //can't read xbrightness settings - assume invalid until set + static int screenbrightness = -1; + +-QString LOS::OSName(){ return "Gentoo Linux"; } ++QString LOS::OSName(){ return "NixOS"; } + + //OS-specific prefix(s) + // NOTE: PREFIX, L_ETCDIR, L_SHAREDIR are defined in the OS-detect.pri project file and passed in + QString LOS::LuminaShare(){ return (L_SHAREDIR+"/lumina-desktop/"); } //Install dir for Lumina share files +-QString LOS::AppPrefix(){ return "/usr/"; } //Prefix for applications +-QString LOS::SysPrefix(){ return "/"; } //Prefix for system ++QString LOS::AppPrefix(){ return PREFIX+"/usr"; } //Prefix for applications ++QString LOS::SysPrefix(){ return PREFIX; } //Prefix for system + + //OS-specific application shortcuts (*.desktop files) + QString LOS::ControlPanelShortcut(){ return ""; } //system control panel +-QString LOS::AppStoreShortcut(){ return LOS::AppPrefix() + "/share/applications/porthole.desktop"; } //graphical app/pkg manager ++QString LOS::AppStoreShortcut(){ return ""; } //graphical app/pkg manager + //OS-specific RSS feeds (Format: QStringList[ :::: ]; ) + QStringList LOS::RSSFeeds(){ return QStringList(); } + diff --git a/pkgs/desktops/lumina/avoid-absolute-path-on-sessdir.patch b/pkgs/desktops/lumina/avoid-absolute-path-on-sessdir.patch new file mode 100644 index 000000000000..f5ef6cba41f6 --- /dev/null +++ b/pkgs/desktops/lumina/avoid-absolute-path-on-sessdir.patch @@ -0,0 +1,11 @@ +diff -Naur lumina-1.0.0-Release-p1-OLD/src-qt5/OS-detect.pri lumina-1.0.0-Release-p1-PATCH/src-qt5/OS-detect.pri +--- lumina-1.0.0-Release-p1-OLD/src-qt5/OS-detect.pri 2016-08-09 12:04:30.000000000 -0300 ++++ lumina-1.0.0-Release-p1-PATCH/src-qt5/OS-detect.pri 2016-08-13 17:32:18.272137900 -0300 +@@ -55,7 +55,6 @@ + #Use the defaults for everything else + + }else : linux-*{ +- L_SESSDIR=/usr/share/xsessions + OS=Linux + LIBS += -L/usr/local/lib -L/usr/lib -L/lib + diff --git a/pkgs/desktops/lumina/default.nix b/pkgs/desktops/lumina/default.nix new file mode 100644 index 000000000000..66229420cf62 --- /dev/null +++ b/pkgs/desktops/lumina/default.nix @@ -0,0 +1,69 @@ +{ stdenv, fetchFromGitHub, fluxbox, xscreensaver, desktop_file_utils, + numlockx, xorg, qt5, kde5 +}: + +stdenv.mkDerivation rec { + name = "lumina-${version}"; + version = "1.1.0-p1"; + + src = fetchFromGitHub { + owner = "trueos"; + repo = "lumina"; + rev = "v${version}"; + sha256 = "1kkb6v6p6w5mx1qdmcrq3r674k9ahpc6wlsb9pi2lq8qk9yaid0m"; + }; + + nativeBuildInputs = [ + qt5.qmakeHook + qt5.qttools + ]; + + buildInputs = [ + xorg.libxcb + xorg.xcbutilwm + xorg.xcbutilimage + qt5.qtbase + qt5.qtsvg + qt5.qtmultimedia + qt5.qtx11extras + kde5.oxygen-icons5 + fluxbox + xscreensaver + desktop_file_utils + numlockx + ]; + + patches = [ + ./avoid-absolute-path-on-sessdir.patch + ./LuminaOS-NixOS.cpp.patch + ]; + + prePatch = '' + # Copy Gentoo setup as NixOS setup and then patch it + # TODO: write a complete NixOS setup? + cp -a src-qt5/core/libLumina/LuminaOS-Gentoo.cpp src-qt5/core/libLumina/LuminaOS-NixOS.cpp + ''; + + postPatch = '' + # Fix location of fluxbox styles + substituteInPlace src-qt5/core-utils/lumina-config/pages/page_fluxbox_settings.cpp \ + --replace 'LOS::AppPrefix()+"share/fluxbox' "\"${fluxbox}/share/fluxbox" + ''; + + qmakeFlags = [ "LINUX_DISTRO=NixOS" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A lightweight, portable desktop environment"; + longDescription = '' + The Lumina Desktop Environment is a lightweight system interface + that is designed for use on any Unix-like operating system. It + is based on QT5. + ''; + homepage = https://lumina-desktop.org; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index abd483d47773..616ca20fe77f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16206,6 +16206,8 @@ in in makeOverridable makePackages extra; + lumina = callPackage ../desktops/lumina { }; + lxqt = recurseIntoAttrs (callPackage ../desktops/lxqt { }); mate = recurseIntoAttrs (callPackage ../desktops/mate {