summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorWORLDofPEACE <worldofpeace@protonmail.ch>2020-10-24 11:35:33 -0400
committerGitHub <noreply@github.com>2020-10-24 11:35:33 -0400
commitef803ab1bba31f16183b756c206916f85b1a4a34 (patch)
treeea9c78da2ef1d2c2d3ac465ce4c421bbee62e4fd /nixos
parent7ecdf141d2cac7ead207c0d0a65613a4dc8463d8 (diff)
parent99d511124620cad08e1bac2c0ca29ea3222d7f5d (diff)
Merge pull request #100199 from worldofpeace/seeded-config
nixos/tools: add desktopConfiguration option (to seed configuration into configuration.nix)
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/installer/tools/nixos-generate-config.pl4
-rw-r--r--nixos/modules/installer/tools/tools.nix100
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix8
-rw-r--r--nixos/modules/services/x11/desktop-managers/plasma5.nix8
-rw-r--r--nixos/tests/nixos-generate-config.nix16
5 files changed, 93 insertions, 43 deletions
diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl
index 54b84521bdff..44f4c44a56c2 100644
--- a/nixos/modules/installer/tools/nixos-generate-config.pl
+++ b/nixos/modules/installer/tools/nixos-generate-config.pl
@@ -625,6 +625,10 @@ EOF
my $networkingDhcpConfig = generateNetworkingDhcpConfig();
+ (my $desktopConfiguration = <<EOF)=~s/^/ /gm;
+@desktopConfiguration@
+EOF
+
write_file($fn, <<EOF);
@configuration@
EOF
diff --git a/nixos/modules/installer/tools/tools.nix b/nixos/modules/installer/tools/tools.nix
index 666a1eff0e62..0582812f92d2 100644
--- a/nixos/modules/installer/tools/tools.nix
+++ b/nixos/modules/installer/tools/tools.nix
@@ -45,7 +45,7 @@ let
src = ./nixos-generate-config.pl;
path = lib.optionals (lib.elem "btrfs" config.boot.supportedFilesystems) [ pkgs.btrfs-progs ];
perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/${pkgs.perl.libPrefix}";
- inherit (config.system.nixos-generate-config) configuration;
+ inherit (config.system.nixos-generate-config) configuration desktopConfiguration;
};
nixos-option =
@@ -78,24 +78,42 @@ in
{
- options.system.nixos-generate-config.configuration = mkOption {
- internal = true;
- type = types.str;
- description = ''
- The NixOS module that <literal>nixos-generate-config</literal>
- saves to <literal>/etc/nixos/configuration.nix</literal>.
-
- This is an internal option. No backward compatibility is guaranteed.
- Use at your own risk!
+ options.system.nixos-generate-config = {
+ configuration = mkOption {
+ internal = true;
+ type = types.str;
+ description = ''
+ The NixOS module that <literal>nixos-generate-config</literal>
+ saves to <literal>/etc/nixos/configuration.nix</literal>.
+
+ This is an internal option. No backward compatibility is guaranteed.
+ Use at your own risk!
+
+ Note that this string gets spliced into a Perl script. The perl
+ variable <literal>$bootLoaderConfig</literal> can be used to
+ splice in the boot loader configuration.
+ '';
+ };
- Note that this string gets spliced into a Perl script. The perl
- variable <literal>$bootLoaderConfig</literal> can be used to
- splice in the boot loader configuration.
- '';
+ desktopConfiguration = mkOption {
+ internal = true;
+ type = types.str;
+ default = "";
+ description = ''
+ Text to preseed the desktop configuration that <literal>nixos-generate-config</literal>
+ saves to <literal>/etc/nixos/configuration.nix</literal>.
+
+ This is an internal option. No backward compatibility is guaranteed.
+ Use at your own risk!
+
+ Note that this string gets spliced into a Perl script. The perl
+ variable <literal>$bootLoaderConfig</literal> can be used to
+ splice in the boot loader configuration.
+ '';
+ };
};
config = {
-
system.nixos-generate-config.configuration = mkDefault ''
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
@@ -113,6 +131,9 @@ in
# networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
+ # Set your time zone.
+ # time.timeZone = "Europe/Amsterdam";
+
$networkingDhcpConfig
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password\@proxy:port/";
@@ -125,13 +146,32 @@ in
# keyMap = "us";
# };
- # Set your time zone.
- # time.timeZone = "Europe/Amsterdam";
+ $desktopConfiguration
+ # Configure keymap in X11
+ # services.xserver.layout = "us";
+ # services.xserver.xkbOptions = "eurosign:e";
+
+ # Enable CUPS to print documents.
+ # services.printing.enable = true;
+
+ # Enable sound.
+ # sound.enable = true;
+ # hardware.pulseaudio.enable = true;
+
+ # Enable touchpad support (enabled default in most desktopManager).
+ # services.xserver.libinput.enable = true;
+
+ # Define a user account. Don't forget to set a password with ‘passwd’.
+ # users.users.jane = {
+ # isNormalUser = true;
+ # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
+ # };
# List packages installed in system profile. To search, run:
# \$ nix search wget
# environment.systemPackages = with pkgs; [
# wget vim
+ # firefox
# ];
# Some programs need SUID wrappers, can be configured further or are
@@ -140,7 +180,6 @@ in
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
- # pinentryFlavor = "gnome3";
# };
# List services that you want to enable:
@@ -154,31 +193,6 @@ in
# Or disable the firewall altogether.
# networking.firewall.enable = false;
- # Enable CUPS to print documents.
- # services.printing.enable = true;
-
- # Enable sound.
- # sound.enable = true;
- # hardware.pulseaudio.enable = true;
-
- # Enable the X11 windowing system.
- # services.xserver.enable = true;
- # services.xserver.layout = "us";
- # services.xserver.xkbOptions = "eurosign:e";
-
- # Enable touchpad support.
- # services.xserver.libinput.enable = true;
-
- # Enable the KDE Desktop Environment.
- # services.xserver.displayManager.sddm.enable = true;
- # services.xserver.desktopManager.plasma5.enable = true;
-
- # Define a user account. Don't forget to set a password with ‘passwd’.
- # users.users.jane = {
- # isNormalUser = true;
- # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
- # };
-
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index acccbdb9950a..97eb74991abf 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -179,6 +179,14 @@ in
config = mkMerge [
(mkIf (cfg.enable || flashbackEnabled) {
+ # Seed our configuration into nixos-generate-config
+ system.nixos-generate-config.desktopConfiguration = ''
+ # Enable the GNOME 3 Desktop Environment.
+ services.xserver.enable = true;
+ services.xserver.displayManager.gdm.enable = true;
+ services.xserver.desktopManager.gnome3.enable = true;
+ '';
+
services.gnome3.core-os-services.enable = true;
services.gnome3.core-shell.enable = true;
services.gnome3.core-utilities.enable = mkDefault true;
diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix
index e48b5f23b58f..ad0385ddeed2 100644
--- a/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix
@@ -184,6 +184,14 @@ in
config = mkMerge [
(mkIf cfg.enable {
+ # Seed our configuration into nixos-generate-config
+ system.nixos-generate-config.desktopConfiguration = ''
+ # Enable the Plasma 5 Desktop Environment.
+ services.xserver.enable = true;
+ services.xserver.displayManager.sddm.enable = true;
+ services.xserver.desktopManager.plasma5.enable = true;
+ '';
+
services.xserver.desktopManager.session = singleton {
name = "plasma5";
bgSupport = true;
diff --git a/nixos/tests/nixos-generate-config.nix b/nixos/tests/nixos-generate-config.nix
index 6c83ccecc70a..5daa55a8abbe 100644
--- a/nixos/tests/nixos-generate-config.nix
+++ b/nixos/tests/nixos-generate-config.nix
@@ -7,8 +7,16 @@ import ./make-test-python.nix ({ lib, ... } : {
{ config, pkgs, ... }: {
imports = [ ./hardware-configuration.nix ];
$bootLoaderConfig
+ $desktopConfiguration
}
'';
+
+ system.nixos-generate-config.desktopConfiguration = ''
+ # DESKTOP
+ # services.xserver.enable = true;
+ # services.xserver.displayManager.gdm.enable = true;
+ # services.xserver.desktopManager.gnome3.enable = true;
+ '';
};
testScript = ''
start_all()
@@ -18,9 +26,17 @@ import ./make-test-python.nix ({ lib, ... } : {
# Test if the configuration really is overridden
machine.succeed("grep 'OVERRIDDEN' /etc/nixos/configuration.nix")
+ # Test if desktop configuration really is overridden
+ machine.succeed("grep 'DESKTOP' /etc/nixos/configuration.nix")
+
# Test of if the Perl variable $bootLoaderConfig is spliced correctly:
machine.succeed(
"grep 'boot\\.loader\\.grub\\.enable = true;' /etc/nixos/configuration.nix"
)
+
+ # Test if the Perl variable $desktopConfiguration is spliced correctly
+ machine.succeed(
+ "grep 'services\\.xserver\\.desktopManager\\.gnome3\\.enable = true;' /etc/nixos/configuration.nix"
+ )
'';
})