diff options
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/lib/test-driver/Machine.pm | 5 | ||||
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/networking/dnsmasq.nix | 16 | ||||
-rw-r--r-- | nixos/modules/services/x11/window-managers/windowlab.nix | 22 | ||||
-rw-r--r-- | nixos/modules/system/boot/loader/grub/install-grub.pl | 4 | ||||
-rw-r--r-- | nixos/modules/system/etc/etc.nix | 5 |
6 files changed, 45 insertions, 8 deletions
diff --git a/nixos/lib/test-driver/Machine.pm b/nixos/lib/test-driver/Machine.pm index 41088ed75f7..8ac0a31f287 100644 --- a/nixos/lib/test-driver/Machine.pm +++ b/nixos/lib/test-driver/Machine.pm @@ -381,6 +381,11 @@ sub waitForUnit { my $info = $self->getUnitInfo($unit); my $state = $info->{ActiveState}; die "unit ‘$unit’ reached state ‘$state’\n" if $state eq "failed"; + if ($state eq "inactive") { + my ($status, $jobs) = $self->execute("systemctl list-jobs --full 2>&1"); + die "unit ‘$unit’ is inactive and there are no pending jobs\n" + if $jobs =~ /No jobs/; # FIXME: fragile + } return 1 if $state eq "active"; }; }); diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 5c1cde98d3d..7fc41b0e9ca 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -441,6 +441,7 @@ ./services/x11/window-managers/metacity.nix ./services/x11/window-managers/none.nix ./services/x11/window-managers/twm.nix + ./services/x11/window-managers/windowlab.nix ./services/x11/window-managers/wmii.nix ./services/x11/window-managers/xmonad.nix ./services/x11/xfs.nix diff --git a/nixos/modules/services/networking/dnsmasq.nix b/nixos/modules/services/networking/dnsmasq.nix index 6907d63d761..fcf5aa5f175 100644 --- a/nixos/modules/services/networking/dnsmasq.nix +++ b/nixos/modules/services/networking/dnsmasq.nix @@ -5,8 +5,10 @@ with lib; let cfg = config.services.dnsmasq; dnsmasq = pkgs.dnsmasq; + stateDir = "/var/lib/dnsmasq"; dnsmasqConf = pkgs.writeText "dnsmasq.conf" '' + dhcp-leasefile=${stateDir}/dnsmasq.leases ${optionalString cfg.resolveLocalQueries '' conf-file=/etc/dnsmasq-conf.conf resolv-file=/etc/dnsmasq-resolv.conf @@ -76,12 +78,11 @@ in services.dbus.packages = [ dnsmasq ]; - users.extraUsers = singleton - { name = "dnsmasq"; - uid = config.ids.uids.dnsmasq; - description = "Dnsmasq daemon user"; - home = "/var/empty"; - }; + users.extraUsers = singleton { + name = "dnsmasq"; + uid = config.ids.uids.dnsmasq; + description = "Dnsmasq daemon user"; + }; systemd.services.dnsmasq = { description = "Dnsmasq Daemon"; @@ -89,6 +90,9 @@ in wantedBy = [ "multi-user.target" ]; path = [ dnsmasq ]; preStart = '' + mkdir -m 755 -p ${stateDir} + touch ${stateDir}/dnsmasq.leases + chown -R dnsmasq ${stateDir} touch /etc/dnsmasq-{conf,resolv}.conf dnsmasq --test ''; diff --git a/nixos/modules/services/x11/window-managers/windowlab.nix b/nixos/modules/services/x11/window-managers/windowlab.nix new file mode 100644 index 00000000000..fb891a39fa4 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/windowlab.nix @@ -0,0 +1,22 @@ +{lib, pkgs, config, ...}: + +let + cfg = config.services.xserver.windowManager.windowlab; +in + +{ + options = { + services.xserver.windowManager.windowlab.enable = + lib.mkEnableOption "windowlab"; + }; + + config = lib.mkIf cfg.enable { + services.xserver.windowManager = { + session = + [{ name = "windowlab"; + start = "${pkgs.windowlab}/bin/windowlab"; + }]; + }; + environment.systemPackages = [ pkgs.windowlab ]; + }; +} diff --git a/nixos/modules/system/boot/loader/grub/install-grub.pl b/nixos/modules/system/boot/loader/grub/install-grub.pl index af39e50ff72..b8ef02da4bc 100644 --- a/nixos/modules/system/boot/loader/grub/install-grub.pl +++ b/nixos/modules/system/boot/loader/grub/install-grub.pl @@ -387,6 +387,10 @@ sub addProfile { my $curEntry = 0; foreach my $link (@links) { last if $curEntry++ >= $configurationLimit; + if (! -e "$link/nixos-version") { + warn "skipping corrupt system profile entry ‘$link’\n"; + next; + } my $date = strftime("%F", localtime(lstat($link)->mtime)); my $version = -e "$link/nixos-version" diff --git a/nixos/modules/system/etc/etc.nix b/nixos/modules/system/etc/etc.nix index 300ae0acda5..9d5b3db472c 100644 --- a/nixos/modules/system/etc/etc.nix +++ b/nixos/modules/system/etc/etc.nix @@ -112,8 +112,9 @@ in config = { target = mkDefault name; - source = mkIf (config.text != null) - (mkDefault (pkgs.writeText "etc-file" config.text)); + source = mkIf (config.text != null) ( + let name' = "etc-" + baseNameOf name; + in mkDefault (pkgs.writeText name' config.text)); }; }); |