about summary refs log tree commit diff
path: root/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix')
-rw-r--r--nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix110
1 files changed, 110 insertions, 0 deletions
diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix
new file mode 100644
index 000000000000..d14768bc1079
--- /dev/null
+++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix
@@ -0,0 +1,110 @@
+# This module defines a NixOS installation CD that contains X11 and
+# KDE 4.
+
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+  imports = [ ./installation-cd-base.nix ../../profiles/graphical.nix ];
+
+  # Provide wicd for easy wireless configuration.
+  #networking.wicd.enable = true;
+
+  environment.systemPackages =
+    [ # Include gparted for partitioning disks.
+      pkgs.gparted
+
+      # Include some editors.
+      pkgs.vim
+      pkgs.bvi # binary editor
+      pkgs.joe
+    ];
+
+  # Provide networkmanager for easy wireless configuration.
+  networking.networkmanager.enable = true;
+  networking.wireless.enable = mkForce false;
+
+  # KDE complains if power management is disabled (to be precise, if
+  # there is no power management backend such as upower).
+  powerManagement.enable = true;
+
+  # 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
+    '';
+
+  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.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.stdenv.mkDerivation {
+      inherit (pkg) name meta;
+
+      buildCommand = ''
+        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
+      '';
+    };
+
+}