Merge pull request #20433 from ttuegel/install-cd-kde-5
Use KDE 5 for the graphical installation DVD
This commit is contained in:
commit
6cd867dd4c
@ -1,20 +1,41 @@
|
||||
# This module defines a NixOS installation CD that contains X11 and
|
||||
# KDE 4.
|
||||
# KDE 5.
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
imports = [ ./installation-cd-base.nix ../../profiles/graphical.nix ];
|
||||
imports = [ ./installation-cd-base.nix ];
|
||||
|
||||
# Provide wicd for easy wireless configuration.
|
||||
#networking.wicd.enable = true;
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
|
||||
# Automatically login as root.
|
||||
displayManager.slim = {
|
||||
enable = true;
|
||||
defaultUser = "root";
|
||||
autoLogin = true;
|
||||
};
|
||||
|
||||
desktopManager.kde5 = {
|
||||
enable = true;
|
||||
enableQt4Support = false;
|
||||
};
|
||||
|
||||
# Enable touchpad support for many laptops.
|
||||
synaptics.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages =
|
||||
[ # Include gparted for partitioning disks.
|
||||
[ pkgs.glxinfo
|
||||
|
||||
# Include gparted for partitioning disks.
|
||||
pkgs.gparted
|
||||
|
||||
# Firefox for reading the manual.
|
||||
pkgs.firefox
|
||||
|
||||
# Include some editors.
|
||||
pkgs.vim
|
||||
pkgs.bvi # binary editor
|
||||
@ -32,80 +53,21 @@ with lib;
|
||||
# Don't start the X server by default.
|
||||
services.xserver.autorun = mkForce false;
|
||||
|
||||
# Auto-login as root.
|
||||
services.xserver.displayManager.kdm.extraConfig =
|
||||
''
|
||||
[X-*-Core]
|
||||
AllowRootLogin=true
|
||||
AutoLoginEnable=true
|
||||
AutoLoginUser=root
|
||||
AutoLoginPass=""
|
||||
'';
|
||||
|
||||
# Custom kde-workspace adding some icons on the desktop
|
||||
|
||||
system.activationScripts.installerDesktop = let
|
||||
openManual = pkgs.writeScript "nixos-manual.sh" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
cd ${config.system.build.manual.manual}/share/doc/nixos/
|
||||
konqueror ./index.html
|
||||
'';
|
||||
|
||||
desktopFile = pkgs.writeText "nixos-manual.desktop" ''
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=NixOS Manual
|
||||
Exec=${openManual}
|
||||
Icon=konqueror
|
||||
Exec=firefox ${config.system.build.manual.manual}/share/doc/nixos/index.html
|
||||
Icon=text-html
|
||||
'';
|
||||
|
||||
in ''
|
||||
mkdir -p /root/Desktop
|
||||
ln -sfT ${desktopFile} /root/Desktop/nixos-manual.desktop
|
||||
ln -sfT ${pkgs.kde4.konsole}/share/applications/kde4/konsole.desktop /root/Desktop/konsole.desktop
|
||||
ln -sfT ${pkgs.kde5.konsole}/share/applications/org.kde.konsole.desktop /root/Desktop/org.kde.konsole.desktop
|
||||
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop
|
||||
'';
|
||||
|
||||
services.xserver.desktopManager.kde4.kdeWorkspacePackage = let
|
||||
pkg = pkgs.kde4.kde_workspace;
|
||||
|
||||
plasmaInit = pkgs.writeText "00-defaultLayout.js" ''
|
||||
loadTemplate("org.kde.plasma-desktop.defaultPanel")
|
||||
|
||||
for (var i = 0; i < screenCount; ++i) {
|
||||
var desktop = new Activity
|
||||
desktop.name = i18n("Desktop")
|
||||
desktop.screen = i
|
||||
desktop.wallpaperPlugin = 'image'
|
||||
desktop.wallpaperMode = 'SingleImage'
|
||||
|
||||
var folderview = desktop.addWidget("folderview");
|
||||
folderview.writeConfig("url", "desktop:/");
|
||||
|
||||
//Create more panels for other screens
|
||||
if (i > 0){
|
||||
var panel = new Panel
|
||||
panel.screen = i
|
||||
panel.location = 'bottom'
|
||||
panel.height = screenGeometry(i).height > 1024 ? 35 : 27
|
||||
var tasks = panel.addWidget("tasks")
|
||||
tasks.writeConfig("showOnlyCurrentScreen", true);
|
||||
}
|
||||
}
|
||||
'';
|
||||
|
||||
in
|
||||
pkgs.runCommand pkg.name
|
||||
{ inherit (pkg) meta; }
|
||||
''
|
||||
mkdir -p $out
|
||||
cp -prf ${pkg}/* $out/
|
||||
chmod a+w $out/share/apps/plasma-desktop/init
|
||||
cp -f ${plasmaInit} $out/share/apps/plasma-desktop/init/00-defaultLayout.js
|
||||
'';
|
||||
|
||||
# Disable large stuff that's not very useful on the installation CD.
|
||||
services.xserver.desktopManager.kde4.enablePIM = false;
|
||||
|
||||
}
|
||||
|
@ -22,6 +22,15 @@ in
|
||||
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
|
||||
};
|
||||
|
||||
enableQt4Support = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Enable support for Qt 4-based applications. Particularly, install the
|
||||
Qt 4 version of the Breeze theme and a default backend for Phonon.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
@ -105,7 +114,7 @@ in
|
||||
kde5.sonnet
|
||||
kde5.threadweaver
|
||||
|
||||
kde5.breeze
|
||||
kde5.breeze-qt5
|
||||
kde5.kactivitymanagerd
|
||||
kde5.kde-cli-tools
|
||||
kde5.kdecoration
|
||||
@ -141,13 +150,12 @@ in
|
||||
kde5.konsole
|
||||
kde5.print-manager
|
||||
|
||||
# Oxygen icons moved to KDE Frameworks 5.16 and later.
|
||||
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
||||
# Install Breeze icons if available
|
||||
(kde5.breeze-icons or kde5.oxygen-icons5 or kde5.oxygen-icons)
|
||||
pkgs.hicolor_icon_theme
|
||||
|
||||
kde5.kde-gtk-config
|
||||
kde5.kde-gtk-config kde5.breeze-gtk
|
||||
|
||||
pkgs.phonon-backend-gstreamer
|
||||
pkgs.qt5.phonon-backend-gstreamer
|
||||
]
|
||||
|
||||
@ -155,15 +163,14 @@ in
|
||||
# If it is not available, Orion is very similar to Breeze.
|
||||
++ lib.optional (!(lib.hasAttr "breeze-gtk" kde5)) pkgs.orion
|
||||
|
||||
# Install Breeze icons if available
|
||||
++ lib.optional (lib.hasAttr "breeze-icons" kde5) kde5.breeze-icons
|
||||
|
||||
# Install activity manager if available
|
||||
++ lib.optional (lib.hasAttr "kactivitymanagerd" kde5) kde5.kactivitymanagerd
|
||||
|
||||
# frameworkintegration was split with plasma-integration in Plasma 5.6
|
||||
++ lib.optional (lib.hasAttr "plasma-integration" kde5) kde5.plasma-integration
|
||||
|
||||
++ lib.optionals cfg.enableQt4Support [ kde5.breeze-qt4 pkgs.phonon-backend-gstreamer ]
|
||||
|
||||
# Optional hardware support features
|
||||
++ lib.optional config.hardware.bluetooth.enable kde5.bluedevil
|
||||
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
|
||||
@ -217,7 +224,6 @@ in
|
||||
kde5.ecm # for the setup-hook
|
||||
kde5.plasma-workspace
|
||||
kde5.breeze-icons
|
||||
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -44,14 +44,6 @@ let
|
||||
inherit (srcs.breeze) src version;
|
||||
};
|
||||
breeze-qt5 = callPackage ./breeze-qt5.nix {};
|
||||
breeze =
|
||||
let
|
||||
version = (builtins.parseDrvName breeze-qt5.name).version;
|
||||
in
|
||||
symlinkJoin {
|
||||
name = "breeze-${version}";
|
||||
paths = map (pkg: pkg.out or pkg) [ breeze-gtk breeze-qt4 breeze-qt5 ];
|
||||
};
|
||||
breeze-grub = callPackage ./breeze-grub.nix {};
|
||||
breeze-plymouth = callPackage ./breeze-plymouth {};
|
||||
kactivitymanagerd = callPackage ./kactivitymanagerd.nix {};
|
||||
|
@ -1,19 +1,20 @@
|
||||
{
|
||||
plasmaPackage,
|
||||
ecm, makeQtWrapper,
|
||||
plasmaPackage, kdeWrapper,
|
||||
ecm,
|
||||
frameworkintegration, kcmutils, kcompletion, kconfig, kdecoration, kguiaddons,
|
||||
ki18n, kwidgetsaddons, kservice, kwayland, kwindowsystem, qtx11extras
|
||||
}:
|
||||
|
||||
plasmaPackage {
|
||||
name = "oxygen";
|
||||
nativeBuildInputs = [ ecm makeQtWrapper ];
|
||||
propagatedBuildInputs = [
|
||||
frameworkintegration kcmutils kcompletion kconfig kdecoration kguiaddons
|
||||
ki18n kservice kwayland kwidgetsaddons kwindowsystem qtx11extras
|
||||
];
|
||||
postInstall = ''
|
||||
wrapQtProgram "$out/bin/oxygen-demo5"
|
||||
wrapQtProgram "$out/bin/oxygen-settings5"
|
||||
'';
|
||||
let
|
||||
unwrapped = plasmaPackage {
|
||||
name = "oxygen";
|
||||
nativeBuildInputs = [ ecm ];
|
||||
propagatedBuildInputs = [
|
||||
frameworkintegration kcmutils kcompletion kconfig kdecoration kguiaddons
|
||||
ki18n kservice kwayland kwidgetsaddons kwindowsystem qtx11extras
|
||||
];
|
||||
};
|
||||
in
|
||||
kdeWrapper unwrapped {
|
||||
targets = [ "bin/oxygen-demo5" "bin/oxygen-settings5" ];
|
||||
}
|
||||
|
@ -38,4 +38,9 @@ plasmaPackage rec {
|
||||
"-DEvdev_INCLUDE_DIRS=${xf86inputevdev.dev}/include/xorg"
|
||||
"-DSynaptics_INCLUDE_DIRS=${xf86inputsynaptics.dev}/include/xorg"
|
||||
];
|
||||
postInstall = ''
|
||||
# Display ~/Desktop contents on the desktop by default.
|
||||
sed -i "$out/share/plasma/shells/org.kde.plasma.desktop/contents/defaults" \
|
||||
-e 's/Containment=org.kde.desktopcontainment/Containment=org.kde.plasma.folder/'
|
||||
'';
|
||||
}
|
||||
|
@ -6,6 +6,36 @@ export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}@QT_PLUGIN_PATH@"
|
||||
export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}@QML_IMPORT_PATH@"
|
||||
export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}@QML2_IMPORT_PATH@"
|
||||
|
||||
# Set the default GTK 2 theme
|
||||
if ! [ -e $HOME/.gtkrc-2.0 ] \
|
||||
&& [ -e /run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc ]; then
|
||||
cat >$HOME/.gtkrc-2.0 <<EOF
|
||||
# Default GTK+ 2 config for NixOS KDE 5
|
||||
include "/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc"
|
||||
gtk-theme-name="Breeze"
|
||||
gtk-icon-theme-name="breeze"
|
||||
gtk-fallback-icon-theme="hicolor"
|
||||
gtk-cursor-theme-name="breeze_cursors"
|
||||
gtk-toolbar-style=GTK_TOOLBAR_ICONS
|
||||
gtk-menu-images=1
|
||||
gtk-button-images=1
|
||||
EOF
|
||||
fi
|
||||
|
||||
if ! [ -e $HOME/.config/gtk-3.0/settings.ini ] \
|
||||
&& [ -e /run/current-system/sw/share/themes/Breeze/gtk-3.0 ]; then
|
||||
cat >$HOME/.config/gtk-3.0/settings.ini <<EOF
|
||||
[Settings]
|
||||
gtk-theme-name=Breeze
|
||||
gtk-icon-theme-name=breeze
|
||||
gtk-fallback-icon-theme=hicolor
|
||||
gtk-cursor-theme-name=breeze_cursors
|
||||
gtk-toolbar-style=GTK_TOOLBAR_ICONS
|
||||
gtk-menu-images=1
|
||||
gtk-button-images=1
|
||||
EOF
|
||||
fi
|
||||
|
||||
# The KDE icon cache is supposed to update itself
|
||||
# automatically, but it uses the timestamp on the icon
|
||||
# theme directory as a trigger. Since in Nix the
|
||||
@ -71,6 +101,14 @@ fi
|
||||
configDir=$(qtpaths --writable-path GenericConfigLocation)
|
||||
mkdir -p "$configDir"
|
||||
|
||||
if ! [ -e $configDir/kcminputrc ]; then
|
||||
cat >$configDir/kcminputrc <<EOF
|
||||
[Mouse]
|
||||
cursorTheme=breeze_cursors
|
||||
cursorSize=0
|
||||
EOF
|
||||
fi
|
||||
|
||||
THEME=org.kde.breeze
|
||||
#This is basically setting defaults so we can use them with kstartupconfig5
|
||||
#We cannot set the equivilant of THEME here as it will generate an
|
||||
|
Loading…
Reference in New Issue
Block a user