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
|
# This module defines a NixOS installation CD that contains X11 and
|
||||||
# KDE 4.
|
# KDE 5.
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ ./installation-cd-base.nix ../../profiles/graphical.nix ];
|
imports = [ ./installation-cd-base.nix ];
|
||||||
|
|
||||||
# Provide wicd for easy wireless configuration.
|
services.xserver = {
|
||||||
#networking.wicd.enable = true;
|
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 =
|
environment.systemPackages =
|
||||||
[ # Include gparted for partitioning disks.
|
[ pkgs.glxinfo
|
||||||
|
|
||||||
|
# Include gparted for partitioning disks.
|
||||||
pkgs.gparted
|
pkgs.gparted
|
||||||
|
|
||||||
|
# Firefox for reading the manual.
|
||||||
|
pkgs.firefox
|
||||||
|
|
||||||
# Include some editors.
|
# Include some editors.
|
||||||
pkgs.vim
|
pkgs.vim
|
||||||
pkgs.bvi # binary editor
|
pkgs.bvi # binary editor
|
||||||
@ -32,80 +53,21 @@ with lib;
|
|||||||
# Don't start the X server by default.
|
# Don't start the X server by default.
|
||||||
services.xserver.autorun = mkForce false;
|
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
|
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" ''
|
desktopFile = pkgs.writeText "nixos-manual.desktop" ''
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=1.0
|
Version=1.0
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=NixOS Manual
|
Name=NixOS Manual
|
||||||
Exec=${openManual}
|
Exec=firefox ${config.system.build.manual.manual}/share/doc/nixos/index.html
|
||||||
Icon=konqueror
|
Icon=text-html
|
||||||
'';
|
'';
|
||||||
|
|
||||||
in ''
|
in ''
|
||||||
mkdir -p /root/Desktop
|
mkdir -p /root/Desktop
|
||||||
ln -sfT ${desktopFile} /root/Desktop/nixos-manual.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
|
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.";
|
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.sonnet
|
||||||
kde5.threadweaver
|
kde5.threadweaver
|
||||||
|
|
||||||
kde5.breeze
|
kde5.breeze-qt5
|
||||||
kde5.kactivitymanagerd
|
kde5.kactivitymanagerd
|
||||||
kde5.kde-cli-tools
|
kde5.kde-cli-tools
|
||||||
kde5.kdecoration
|
kde5.kdecoration
|
||||||
@ -141,13 +150,12 @@ in
|
|||||||
kde5.konsole
|
kde5.konsole
|
||||||
kde5.print-manager
|
kde5.print-manager
|
||||||
|
|
||||||
# Oxygen icons moved to KDE Frameworks 5.16 and later.
|
# Install Breeze icons if available
|
||||||
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
(kde5.breeze-icons or kde5.oxygen-icons5 or kde5.oxygen-icons)
|
||||||
pkgs.hicolor_icon_theme
|
pkgs.hicolor_icon_theme
|
||||||
|
|
||||||
kde5.kde-gtk-config
|
kde5.kde-gtk-config kde5.breeze-gtk
|
||||||
|
|
||||||
pkgs.phonon-backend-gstreamer
|
|
||||||
pkgs.qt5.phonon-backend-gstreamer
|
pkgs.qt5.phonon-backend-gstreamer
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -155,15 +163,14 @@ in
|
|||||||
# If it is not available, Orion is very similar to Breeze.
|
# If it is not available, Orion is very similar to Breeze.
|
||||||
++ lib.optional (!(lib.hasAttr "breeze-gtk" kde5)) pkgs.orion
|
++ 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
|
# Install activity manager if available
|
||||||
++ lib.optional (lib.hasAttr "kactivitymanagerd" kde5) kde5.kactivitymanagerd
|
++ lib.optional (lib.hasAttr "kactivitymanagerd" kde5) kde5.kactivitymanagerd
|
||||||
|
|
||||||
# frameworkintegration was split with plasma-integration in Plasma 5.6
|
# frameworkintegration was split with plasma-integration in Plasma 5.6
|
||||||
++ lib.optional (lib.hasAttr "plasma-integration" kde5) kde5.plasma-integration
|
++ 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
|
# Optional hardware support features
|
||||||
++ lib.optional config.hardware.bluetooth.enable kde5.bluedevil
|
++ lib.optional config.hardware.bluetooth.enable kde5.bluedevil
|
||||||
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
|
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
|
||||||
@ -217,7 +224,6 @@ in
|
|||||||
kde5.ecm # for the setup-hook
|
kde5.ecm # for the setup-hook
|
||||||
kde5.plasma-workspace
|
kde5.plasma-workspace
|
||||||
kde5.breeze-icons
|
kde5.breeze-icons
|
||||||
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -44,14 +44,6 @@ let
|
|||||||
inherit (srcs.breeze) src version;
|
inherit (srcs.breeze) src version;
|
||||||
};
|
};
|
||||||
breeze-qt5 = callPackage ./breeze-qt5.nix {};
|
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-grub = callPackage ./breeze-grub.nix {};
|
||||||
breeze-plymouth = callPackage ./breeze-plymouth {};
|
breeze-plymouth = callPackage ./breeze-plymouth {};
|
||||||
kactivitymanagerd = callPackage ./kactivitymanagerd.nix {};
|
kactivitymanagerd = callPackage ./kactivitymanagerd.nix {};
|
||||||
|
@ -1,19 +1,20 @@
|
|||||||
{
|
{
|
||||||
plasmaPackage,
|
plasmaPackage, kdeWrapper,
|
||||||
ecm, makeQtWrapper,
|
ecm,
|
||||||
frameworkintegration, kcmutils, kcompletion, kconfig, kdecoration, kguiaddons,
|
frameworkintegration, kcmutils, kcompletion, kconfig, kdecoration, kguiaddons,
|
||||||
ki18n, kwidgetsaddons, kservice, kwayland, kwindowsystem, qtx11extras
|
ki18n, kwidgetsaddons, kservice, kwayland, kwindowsystem, qtx11extras
|
||||||
}:
|
}:
|
||||||
|
|
||||||
plasmaPackage {
|
let
|
||||||
name = "oxygen";
|
unwrapped = plasmaPackage {
|
||||||
nativeBuildInputs = [ ecm makeQtWrapper ];
|
name = "oxygen";
|
||||||
propagatedBuildInputs = [
|
nativeBuildInputs = [ ecm ];
|
||||||
frameworkintegration kcmutils kcompletion kconfig kdecoration kguiaddons
|
propagatedBuildInputs = [
|
||||||
ki18n kservice kwayland kwidgetsaddons kwindowsystem qtx11extras
|
frameworkintegration kcmutils kcompletion kconfig kdecoration kguiaddons
|
||||||
];
|
ki18n kservice kwayland kwidgetsaddons kwindowsystem qtx11extras
|
||||||
postInstall = ''
|
];
|
||||||
wrapQtProgram "$out/bin/oxygen-demo5"
|
};
|
||||||
wrapQtProgram "$out/bin/oxygen-settings5"
|
in
|
||||||
'';
|
kdeWrapper unwrapped {
|
||||||
|
targets = [ "bin/oxygen-demo5" "bin/oxygen-settings5" ];
|
||||||
}
|
}
|
||||||
|
@ -38,4 +38,9 @@ plasmaPackage rec {
|
|||||||
"-DEvdev_INCLUDE_DIRS=${xf86inputevdev.dev}/include/xorg"
|
"-DEvdev_INCLUDE_DIRS=${xf86inputevdev.dev}/include/xorg"
|
||||||
"-DSynaptics_INCLUDE_DIRS=${xf86inputsynaptics.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 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@"
|
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
|
# The KDE icon cache is supposed to update itself
|
||||||
# automatically, but it uses the timestamp on the icon
|
# automatically, but it uses the timestamp on the icon
|
||||||
# theme directory as a trigger. Since in Nix the
|
# theme directory as a trigger. Since in Nix the
|
||||||
@ -71,6 +101,14 @@ fi
|
|||||||
configDir=$(qtpaths --writable-path GenericConfigLocation)
|
configDir=$(qtpaths --writable-path GenericConfigLocation)
|
||||||
mkdir -p "$configDir"
|
mkdir -p "$configDir"
|
||||||
|
|
||||||
|
if ! [ -e $configDir/kcminputrc ]; then
|
||||||
|
cat >$configDir/kcminputrc <<EOF
|
||||||
|
[Mouse]
|
||||||
|
cursorTheme=breeze_cursors
|
||||||
|
cursorSize=0
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
THEME=org.kde.breeze
|
THEME=org.kde.breeze
|
||||||
#This is basically setting defaults so we can use them with kstartupconfig5
|
#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
|
#We cannot set the equivilant of THEME here as it will generate an
|
||||||
|
Loading…
x
Reference in New Issue
Block a user