installer: add graphical GNOME iso
This commit is contained in:
parent
40c586b7ce
commit
aa9576bceb
@ -0,0 +1,78 @@
|
|||||||
|
# This module defines a NixOS installation CD that contains X11 and
|
||||||
|
# GNOME 3.
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ ./installation-cd-base.nix ];
|
||||||
|
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
# GDM doesn't start in virtual machines with ISO
|
||||||
|
displayManager.slim = {
|
||||||
|
enable = true;
|
||||||
|
defaultUser = "root";
|
||||||
|
autoLogin = true;
|
||||||
|
};
|
||||||
|
desktopManager.gnome3 = {
|
||||||
|
enable = true;
|
||||||
|
extraGSettingsOverrides = ''
|
||||||
|
[org.gnome.desktop.background]
|
||||||
|
show-desktop-icons=true
|
||||||
|
|
||||||
|
[org.gnome.nautilus.desktop]
|
||||||
|
trash-icon-visible=false
|
||||||
|
volumes-visible=false
|
||||||
|
home-icon-visible=false
|
||||||
|
network-icon-visible=false
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraGSettingsOverridePackages = [ pkgs.gnome3.nautilus ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages =
|
||||||
|
[ # Include gparted for partitioning disks.
|
||||||
|
pkgs.gparted
|
||||||
|
|
||||||
|
# Include some editors.
|
||||||
|
pkgs.vim
|
||||||
|
pkgs.bvi # binary editor
|
||||||
|
pkgs.joe
|
||||||
|
|
||||||
|
pkgs.glxinfo
|
||||||
|
];
|
||||||
|
|
||||||
|
# Don't start the X server by default.
|
||||||
|
services.xserver.autorun = mkForce false;
|
||||||
|
|
||||||
|
# Auto-login as root.
|
||||||
|
services.xserver.displayManager.gdm.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "root";
|
||||||
|
};
|
||||||
|
|
||||||
|
system.activationScripts.installerDesktop = let
|
||||||
|
# Must be executable
|
||||||
|
desktopFile = pkgs.writeScript "nixos-manual.desktop" ''
|
||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Type=Link
|
||||||
|
Name=NixOS Manual
|
||||||
|
URL=${config.system.build.manual.manual}/share/doc/nixos/index.html
|
||||||
|
Icon=system-help
|
||||||
|
'';
|
||||||
|
|
||||||
|
# use cp and chmod +x, we must be sure the apps are in the nix store though
|
||||||
|
in ''
|
||||||
|
mkdir -p /root/Desktop
|
||||||
|
ln -sfT ${desktopFile} /root/Desktop/nixos-manual.desktop
|
||||||
|
cp ${pkgs.gnome3.gnome_terminal}/share/applications/gnome-terminal.desktop /root/Desktop/gnome-terminal.desktop
|
||||||
|
chmod a+rx /root/Desktop/gnome-terminal.desktop
|
||||||
|
cp ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop
|
||||||
|
chmod a+rx /root/Desktop/gparted.desktop
|
||||||
|
'';
|
||||||
|
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ ./installation-cd-graphical.nix ];
|
imports = [ ./installation-cd-graphical-kde.nix ];
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
}
|
}
|
@ -27,19 +27,24 @@ let
|
|||||||
|
|
||||||
nixos-gsettings-desktop-schemas = pkgs.stdenv.mkDerivation {
|
nixos-gsettings-desktop-schemas = pkgs.stdenv.mkDerivation {
|
||||||
name = "nixos-gsettings-desktop-schemas";
|
name = "nixos-gsettings-desktop-schemas";
|
||||||
buildInputs = [ pkgs.nixos-artwork ];
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
mkdir -p $out/share/nixos-gsettings-schemas/nixos-gsettings-desktop-schemas
|
mkdir -p $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
||||||
cp -rf ${gnome3.gsettings_desktop_schemas}/share/gsettings-schemas/gsettings-desktop-schemas*/glib-2.0 $out/share/nixos-gsettings-schemas/nixos-gsettings-desktop-schemas/
|
cp -rf ${gnome3.gsettings_desktop_schemas}/share/gsettings-schemas/gsettings-desktop-schemas*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
||||||
chmod -R a+w $out/share/nixos-gsettings-schemas/nixos-gsettings-desktop-schemas
|
|
||||||
cat - > $out/share/nixos-gsettings-schemas/nixos-gsettings-desktop-schemas/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
|
${concatMapStrings (pkg: "cp -rf ${pkg}/share/gsettings-schemas/*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas\n") cfg.extraGSettingsOverridePackages}
|
||||||
|
|
||||||
|
chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
|
||||||
|
cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
|
||||||
[org.gnome.desktop.background]
|
[org.gnome.desktop.background]
|
||||||
picture-uri='${pkgs.nixos-artwork}/share/artwork/gnome/Gnome_Dark.png'
|
picture-uri='${pkgs.nixos-artwork}/share/artwork/gnome/Gnome_Dark.png'
|
||||||
|
|
||||||
[org.gnome.desktop.screensaver]
|
[org.gnome.desktop.screensaver]
|
||||||
picture-uri='${pkgs.nixos-artwork}/share/artwork/gnome/Gnome_Dark.png'
|
picture-uri='${pkgs.nixos-artwork}/share/artwork/gnome/Gnome_Dark.png'
|
||||||
|
|
||||||
|
${cfg.extraGSettingsOverrides}
|
||||||
EOF
|
EOF
|
||||||
${pkgs.glib}/bin/glib-compile-schemas $out/share/nixos-gsettings-schemas/nixos-gsettings-desktop-schemas/glib-2.0/schemas/
|
|
||||||
|
${pkgs.glib}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -47,13 +52,14 @@ in {
|
|||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
services.xserver.desktopManager.gnome3.enable = mkOption {
|
services.xserver.desktopManager.gnome3 = {
|
||||||
|
enable = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
example = true;
|
example = true;
|
||||||
description = "Enable Gnome 3 desktop manager.";
|
description = "Enable Gnome 3 desktop manager.";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.xserver.desktopManager.gnome3.sessionPath = mkOption {
|
sessionPath = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
example = literalExample "[ pkgs.gnome3.gpaste ]";
|
example = literalExample "[ pkgs.gnome3.gpaste ]";
|
||||||
description = "Additional list of packages to be added to the session search path.
|
description = "Additional list of packages to be added to the session search path.
|
||||||
@ -61,6 +67,19 @@ in {
|
|||||||
apply = list: list ++ [ gnome3.gnome_shell gnome3.gnome-shell-extensions ];
|
apply = list: list ++ [ gnome3.gnome_shell gnome3.gnome-shell-extensions ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraGSettingsOverrides = mkOption {
|
||||||
|
default = "";
|
||||||
|
type = types.lines;
|
||||||
|
description = "Additional gsettings overrides.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraGSettingsOverridePackages = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf types.path;
|
||||||
|
description = "List of packages for which gsettings are overridden.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
environment.gnome3.packageSet = mkOption {
|
environment.gnome3.packageSet = mkOption {
|
||||||
type = types.nullOr types.package;
|
type = types.nullOr types.package;
|
||||||
default = null;
|
default = null;
|
||||||
@ -130,7 +149,7 @@ in {
|
|||||||
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${mimeAppsList}/share
|
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${mimeAppsList}/share
|
||||||
|
|
||||||
# Override gsettings-desktop-schema
|
# Override gsettings-desktop-schema
|
||||||
export XDG_DATA_DIRS=${nixos-gsettings-desktop-schemas}/share/nixos-gsettings-schemas/nixos-gsettings-desktop-schemas''${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS
|
export XDG_DATA_DIRS=${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides''${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS
|
||||||
|
|
||||||
# Let nautilus find extensions
|
# Let nautilus find extensions
|
||||||
export NAUTILUS_EXTENSION_DIR=${config.system.path}/lib/nautilus/extensions-3.0/
|
export NAUTILUS_EXTENSION_DIR=${config.system.path}/lib/nautilus/extensions-3.0/
|
||||||
|
@ -113,7 +113,7 @@ in rec {
|
|||||||
});
|
});
|
||||||
|
|
||||||
iso_graphical = forAllSystems (system: makeIso {
|
iso_graphical = forAllSystems (system: makeIso {
|
||||||
module = ./modules/installer/cd-dvd/installation-cd-graphical.nix;
|
module = ./modules/installer/cd-dvd/installation-cd-graphical-kde.nix;
|
||||||
type = "graphical";
|
type = "graphical";
|
||||||
inherit system;
|
inherit system;
|
||||||
});
|
});
|
||||||
|
@ -37,7 +37,8 @@ stdenv.mkDerivation rec {
|
|||||||
--prefix PATH : "${unzip}/bin" \
|
--prefix PATH : "${unzip}/bin" \
|
||||||
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
||||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||||
--suffix XDG_DATA_DIRS : "${gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
--prefix XDG_DATA_DIRS : "${gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS" \
|
||||||
|
--suffix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
|
||||||
|
|
||||||
wrapProgram "$out/libexec/gnome-shell-calendar-server" \
|
wrapProgram "$out/libexec/gnome-shell-calendar-server" \
|
||||||
--prefix XDG_DATA_DIRS : "${evolution_data_server}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
--prefix XDG_DATA_DIRS : "${evolution_data_server}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
||||||
|
@ -13,7 +13,8 @@ stdenv.mkDerivation rec {
|
|||||||
wrapProgram "$out/bin/nautilus" \
|
wrapProgram "$out/bin/nautilus" \
|
||||||
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
||||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||||
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$out/share:$GSETTINGS_SCHEMAS_PATH"
|
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$out/share" \
|
||||||
|
--suffix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
patches = [ ./extension_dir.patch ];
|
patches = [ ./extension_dir.patch ];
|
||||||
|
@ -65,6 +65,9 @@ let
|
|||||||
# Simplify the nixos module and gnome packages
|
# Simplify the nixos module and gnome packages
|
||||||
defaultIconTheme = adwaita-icon-theme;
|
defaultIconTheme = adwaita-icon-theme;
|
||||||
|
|
||||||
|
# ISO installer
|
||||||
|
installerIso = callPackage ./installer.nix {};
|
||||||
|
|
||||||
#### Core (http://ftp.acc.umu.se/pub/GNOME/core/)
|
#### Core (http://ftp.acc.umu.se/pub/GNOME/core/)
|
||||||
|
|
||||||
adwaita-icon-theme = callPackage ./core/adwaita-icon-theme { };
|
adwaita-icon-theme = callPackage ./core/adwaita-icon-theme { };
|
||||||
|
15
pkgs/desktops/gnome-3/3.18/installer.nix
Normal file
15
pkgs/desktops/gnome-3/3.18/installer.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ isoBaseName ? "nixos-graphical-gnome", system ? builtins.currentSystem
|
||||||
|
, extraModules ? [] }:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
module = ../../../../nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix;
|
||||||
|
|
||||||
|
config = (import ../../../../nixos/lib/eval-config.nix {
|
||||||
|
inherit system;
|
||||||
|
modules = [ module { isoImage.isoBaseName = isoBaseName; } ] ++ extraModules;
|
||||||
|
}).config;
|
||||||
|
|
||||||
|
in
|
||||||
|
config.system.build.isoImage
|
||||||
|
|
Loading…
Reference in New Issue
Block a user