aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2018-12-16 12:23:01 +0100
committerRobert Helgesson <robert@rycee.net>2018-12-22 23:57:00 +0100
commit218a8c4d9010538fc6b3d533b32142bb68f5e874 (patch)
tree86bdbbb30e8f15d18d689ab106dfa25f660b94fe
parente68d6e7924925b28ddd46bd7748be7aa3e5c57bd (diff)
modules: support conditional module inclusion
Also make use of this functionality for the `programs.chromium` module. See #501
-rw-r--r--modules/misc/news.nix4
-rw-r--r--modules/modules.nix209
2 files changed, 112 insertions, 101 deletions
diff --git a/modules/misc/news.nix b/modules/misc/news.nix
index e609cadb200..9594855134e 100644
--- a/modules/misc/news.nix
+++ b/modules/misc/news.nix
@@ -6,6 +6,8 @@ let
cfg = config.news;
+ hostPlatform = pkgs.stdenv.hostPlatform;
+
entryModule = types.submodule ({ config, ... }: {
options = {
id = mkOption {
@@ -734,7 +736,7 @@ in
{
time = "2018-08-19T20:46:09+00:00";
- condition = pkgs.stdenv.isLinux;
+ condition = hostPlatform.isLinux;
message = ''
A new modules is available: 'programs.chromium'.
'';
diff --git a/modules/modules.nix b/modules/modules.nix
index c3298d251ff..aa9c4583a10 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -12,106 +12,115 @@ with lib;
let
- modules = [
- ./accounts/email.nix
- ./files.nix
- ./home-environment.nix
- ./manual.nix
- ./misc/fontconfig.nix
- ./misc/gtk.nix
- ./misc/lib.nix
- ./misc/news.nix
- ./misc/nixpkgs.nix
- ./misc/pam.nix
- ./misc/qt.nix
- ./misc/version.nix
- ./misc/xdg.nix
- ./programs/afew.nix
- ./programs/alot.nix
- ./programs/astroid.nix
- ./programs/autorandr.nix
- ./programs/bash.nix
- ./programs/beets.nix
- ./programs/browserpass.nix
- ./programs/command-not-found/command-not-found.nix
- ./programs/direnv.nix
- ./programs/eclipse.nix
- ./programs/emacs.nix
- ./programs/feh.nix
- ./programs/firefox.nix
- ./programs/fish.nix
- ./programs/fzf.nix
- ./programs/git.nix
- ./programs/gnome-terminal.nix
- ./programs/go.nix
- ./programs/home-manager.nix
- ./programs/htop.nix
- ./programs/info.nix
- ./programs/jq.nix
- ./programs/lesspipe.nix
- ./programs/man.nix
- ./programs/mbsync.nix
- ./programs/mercurial.nix
- ./programs/msmtp.nix
- ./programs/neovim.nix
- ./programs/newsboat.nix
- ./programs/noti.nix
- ./programs/notmuch.nix
- ./programs/obs-studio.nix
- ./programs/offlineimap.nix
- ./programs/pidgin.nix
- ./programs/rofi.nix
- ./programs/ssh.nix
- ./programs/taskwarrior.nix
- ./programs/termite.nix
- ./programs/texlive.nix
- ./programs/tmux.nix
- ./programs/urxvt.nix
- ./programs/vim.nix
- ./programs/vscode.nix
- ./programs/zathura.nix
- ./programs/zsh.nix
- ./services/blueman-applet.nix
- ./services/compton.nix
- ./services/dunst.nix
- ./services/flameshot.nix
- ./services/gnome-keyring.nix
- ./services/gpg-agent.nix
- ./services/kbfs.nix
- ./services/kdeconnect.nix
- ./services/keepassx.nix
- ./services/keybase.nix
- ./services/mbsync.nix
- ./services/mpd.nix
- ./services/network-manager-applet.nix
- ./services/nextcloud-client.nix
- ./services/owncloud-client.nix
- ./services/parcellite.nix
- ./services/pasystray.nix
- ./services/polybar.nix
- ./services/random-background.nix
- ./services/redshift.nix
- ./services/screen-locker.nix
- ./services/stalonetray.nix
- ./services/status-notifier-watcher.nix
- ./services/syncthing.nix
- ./services/taffybar.nix
- ./services/tahoe-lafs.nix
- ./services/udiskie.nix
- ./services/unclutter.nix
- ./services/window-managers/awesome.nix
- ./services/window-managers/i3.nix
- ./services/window-managers/xmonad.nix
- ./services/xscreensaver.nix
- ./systemd.nix
- ./xcursor.nix
- ./xresources.nix
- ./xsession.nix
- <nixpkgs/nixos/modules/misc/assertions.nix>
- <nixpkgs/nixos/modules/misc/meta.nix>
- ]
- ++
- optional pkgs.stdenv.isLinux ./programs/chromium.nix;
+ hostPlatform = pkgs.stdenv.hostPlatform;
+
+ checkPlatform = any (meta.platformMatch pkgs.stdenv.hostPlatform);
+
+ loadModule = file: { condition ? true }: {
+ inherit file condition;
+ };
+
+ allModules = [
+ (loadModule ./accounts/email.nix { })
+ (loadModule ./files.nix { })
+ (loadModule ./home-environment.nix { })
+ (loadModule ./manual.nix { })
+ (loadModule ./misc/fontconfig.nix { })
+ (loadModule ./misc/gtk.nix { })
+ (loadModule ./misc/lib.nix { })
+ (loadModule ./misc/news.nix { })
+ (loadModule ./misc/nixpkgs.nix { })
+ (loadModule ./misc/pam.nix { })
+ (loadModule ./misc/qt.nix { })
+ (loadModule ./misc/version.nix { })
+ (loadModule ./misc/xdg.nix { })
+ (loadModule ./programs/afew.nix { })
+ (loadModule ./programs/alot.nix { })
+ (loadModule ./programs/astroid.nix { })
+ (loadModule ./programs/autorandr.nix { })
+ (loadModule ./programs/bash.nix { })
+ (loadModule ./programs/beets.nix { })
+ (loadModule ./programs/browserpass.nix { })
+ (loadModule ./programs/chromium.nix { condition = hostPlatform.isLinux; })
+ (loadModule ./programs/command-not-found/command-not-found.nix { })
+ (loadModule ./programs/direnv.nix { })
+ (loadModule ./programs/eclipse.nix { })
+ (loadModule ./programs/emacs.nix { })
+ (loadModule ./programs/feh.nix { })
+ (loadModule ./programs/firefox.nix { })
+ (loadModule ./programs/fish.nix { })
+ (loadModule ./programs/fzf.nix { })
+ (loadModule ./programs/git.nix { })
+ (loadModule ./programs/gnome-terminal.nix { })
+ (loadModule ./programs/go.nix { })
+ (loadModule ./programs/home-manager.nix { })
+ (loadModule ./programs/htop.nix { })
+ (loadModule ./programs/info.nix { })
+ (loadModule ./programs/jq.nix { })
+ (loadModule ./programs/lesspipe.nix { })
+ (loadModule ./programs/man.nix { })
+ (loadModule ./programs/mbsync.nix { })
+ (loadModule ./programs/mercurial.nix { })
+ (loadModule ./programs/msmtp.nix { })
+ (loadModule ./programs/neovim.nix { })
+ (loadModule ./programs/newsboat.nix { })
+ (loadModule ./programs/noti.nix { })
+ (loadModule ./programs/notmuch.nix { })
+ (loadModule ./programs/obs-studio.nix { })
+ (loadModule ./programs/offlineimap.nix { })
+ (loadModule ./programs/pidgin.nix { })
+ (loadModule ./programs/rofi.nix { })
+ (loadModule ./programs/ssh.nix { })
+ (loadModule ./programs/taskwarrior.nix { })
+ (loadModule ./programs/termite.nix { })
+ (loadModule ./programs/texlive.nix { })
+ (loadModule ./programs/tmux.nix { })
+ (loadModule ./programs/urxvt.nix { })
+ (loadModule ./programs/vim.nix { })
+ (loadModule ./programs/vscode.nix { })
+ (loadModule ./programs/zathura.nix { })
+ (loadModule ./programs/zsh.nix { })
+ (loadModule ./services/blueman-applet.nix { })
+ (loadModule ./services/compton.nix { })
+ (loadModule ./services/dunst.nix { })
+ (loadModule ./services/flameshot.nix { })
+ (loadModule ./services/gnome-keyring.nix { })
+ (loadModule ./services/gpg-agent.nix { })
+ (loadModule ./services/kbfs.nix { })
+ (loadModule ./services/kdeconnect.nix { })
+ (loadModule ./services/keepassx.nix { })
+ (loadModule ./services/keybase.nix { })
+ (loadModule ./services/mbsync.nix { })
+ (loadModule ./services/mpd.nix { })
+ (loadModule ./services/network-manager-applet.nix { })
+ (loadModule ./services/nextcloud-client.nix { })
+ (loadModule ./services/owncloud-client.nix { })
+ (loadModule ./services/parcellite.nix { })
+ (loadModule ./services/pasystray.nix { })
+ (loadModule ./services/polybar.nix { })
+ (loadModule ./services/random-background.nix { })
+ (loadModule ./services/redshift.nix { })
+ (loadModule ./services/screen-locker.nix { })
+ (loadModule ./services/stalonetray.nix { })
+ (loadModule ./services/status-notifier-watcher.nix { })
+ (loadModule ./services/syncthing.nix { })
+ (loadModule ./services/taffybar.nix { })
+ (loadModule ./services/tahoe-lafs.nix { })
+ (loadModule ./services/udiskie.nix { })
+ (loadModule ./services/unclutter.nix { })
+ (loadModule ./services/window-managers/awesome.nix { })
+ (loadModule ./services/window-managers/i3.nix { })
+ (loadModule ./services/window-managers/xmonad.nix { })
+ (loadModule ./services/xscreensaver.nix { })
+ (loadModule ./systemd.nix { })
+ (loadModule ./xcursor.nix { })
+ (loadModule ./xresources.nix { })
+ (loadModule ./xsession.nix { })
+ (loadModule <nixpkgs/nixos/modules/misc/assertions.nix> { })
+ (loadModule <nixpkgs/nixos/modules/misc/meta.nix> { })
+ ];
+
+ modules = map (getAttr "file") (filter (getAttr "condition") allModules);
pkgsModule = {
options.nixosSubmodule = mkOption {