mirror of
https://github.com/nix-community/home-manager
synced 2024-11-26 22:50:39 +00:00
Move platform check into modules
Before, loading a module would be guarded by an optional platform condition. This made it possible to avoid loading and evaluating a module if it did not support the host platform. Unfortunately, this made it impossible to share a single configuration between GNU/Linux and Darwin hosts, which some wish to do. This removes the conditional load and instead inserts host platform assertions in the modules that are platform specific. Fixes #1906
This commit is contained in:
parent
1617e56c2f
commit
5f433eb164
90 changed files with 743 additions and 307 deletions
|
@ -9,7 +9,29 @@ section is therefore not final.
|
||||||
|
|
||||||
This release has the following notable changes:
|
This release has the following notable changes:
|
||||||
|
|
||||||
* Nothing has happened.
|
* All Home Manager modules are now loaded on all platforms. With this
|
||||||
|
change you will get a more descriptive error message if you attempt to
|
||||||
|
enable a module that is incompatible with the host platform.
|
||||||
|
+
|
||||||
|
Previously, modules that were platform specific would only be loaded
|
||||||
|
on that particular platform. For example, a module defining a
|
||||||
|
https://systemd.io/[systemd] service would only be loaded when the
|
||||||
|
host platform was Linux. This reduced evaluation times, simplified the
|
||||||
|
generated documentation, and made it impossible to accidentally use
|
||||||
|
modules that do not support the host platform.
|
||||||
|
+
|
||||||
|
While the above benefits are quite nice, avoiding module loads also
|
||||||
|
brings a few problems. For example, the
|
||||||
|
https://nix-community.github.io/home-manager/[public documentation]
|
||||||
|
will only show the options available for Linux hosts and the
|
||||||
|
documentation cannot make references to options within modules that
|
||||||
|
are unavailable on some hosts. Finally, users who wish to use the same
|
||||||
|
configuration file for different platforms cannot do so, even if the
|
||||||
|
platform incompatible options are unused.
|
||||||
|
+
|
||||||
|
Ultimately, the benefits of loading all modules won and the behavior
|
||||||
|
has now changed. For associated discussion see
|
||||||
|
https://github.com/nix-community/home-manager/issues/1906[issue #1906].
|
||||||
|
|
||||||
[[sec-release-21.11-state-version-changes]]
|
[[sec-release-21.11-state-version-changes]]
|
||||||
=== State Version Changes
|
=== State Version Changes
|
||||||
|
|
|
@ -36,7 +36,7 @@ let
|
||||||
in {
|
in {
|
||||||
meta.maintainers = with maintainers; [ midchildan ];
|
meta.maintainers = with maintainers; [ midchildan ];
|
||||||
|
|
||||||
config = {
|
config = mkIf pkgs.hostPlatform.isLinux {
|
||||||
# For shell sessions.
|
# For shell sessions.
|
||||||
home.sessionVariables = localeVars;
|
home.sessionVariables = localeVars;
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,10 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.enabled != null) {
|
config = mkIf (cfg.enabled != null) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "i18n.inputMethod" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package gtk2Cache gtk3Cache ];
|
home.packages = [ cfg.package gtk2Cache gtk3Cache ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
14
modules/lib/assertions.nix
Normal file
14
modules/lib/assertions.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ lib }:
|
||||||
|
|
||||||
|
{
|
||||||
|
assertPlatform = module: pkgs: platforms: {
|
||||||
|
assertion = lib.elem pkgs.stdenv.hostPlatform.system platforms;
|
||||||
|
message = let
|
||||||
|
platformsStr = lib.concatStringsSep "\n"
|
||||||
|
(map (p: " - ${p}") (lib.sort (a: b: a < b) platforms));
|
||||||
|
in ''
|
||||||
|
The module ${module} does not support your platform. It only supports
|
||||||
|
|
||||||
|
${platformsStr}'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -16,6 +16,8 @@ rec {
|
||||||
entryBefore = d.dagEntryBefore;
|
entryBefore = d.dagEntryBefore;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
assertions = import ./assertions.nix { inherit lib; };
|
||||||
|
|
||||||
gvariant = import ./gvariant.nix { inherit lib; };
|
gvariant = import ./gvariant.nix { inherit lib; };
|
||||||
maintainers = import ./maintainers.nix;
|
maintainers = import ./maintainers.nix;
|
||||||
strings = import ./strings.nix { inherit lib; };
|
strings = import ./strings.nix { inherit lib; };
|
||||||
|
|
|
@ -12,6 +12,10 @@ in {
|
||||||
options = { xsession.numlock.enable = mkEnableOption "Num Lock"; };
|
options = { xsession.numlock.enable = mkEnableOption "Num Lock"; };
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xsession.numlock" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.numlockx = {
|
systemd.user.services.numlockx = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "NumLockX";
|
Description = "NumLockX";
|
||||||
|
|
|
@ -25,6 +25,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.rules != [ ]) {
|
config = mkIf (cfg.rules != [ ]) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "systemd.user.tmpfiles" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
xdg = {
|
xdg = {
|
||||||
dataFile."user-tmpfiles.d/home-manager.conf" = {
|
dataFile."user-tmpfiles.d/home-manager.conf" = {
|
||||||
text = ''
|
text = ''
|
||||||
|
|
|
@ -171,8 +171,13 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
config.home.packages = mkIf (config.xdg.desktopEntries != { })
|
config = mkIf (config.xdg.desktopEntries != { }) {
|
||||||
(map hiPrio # we need hiPrio to override existing entries
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xdg.desktopEntries" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = (map hiPrio # we need hiPrio to override existing entries
|
||||||
(attrsets.mapAttrsToList makeFile config.xdg.desktopEntries));
|
(attrsets.mapAttrsToList makeFile config.xdg.desktopEntries));
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,9 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "xdg.mimeApps" pkgs platforms.linux) ];
|
||||||
|
|
||||||
# Deprecated but still used by some applications.
|
# Deprecated but still used by some applications.
|
||||||
xdg.dataFile."applications/mimeapps.list".source =
|
xdg.dataFile."applications/mimeapps.list".source =
|
||||||
config.xdg.configFile."mimeapps.list".source;
|
config.xdg.configFile."mimeapps.list".source;
|
||||||
|
|
|
@ -10,7 +10,9 @@ in {
|
||||||
options = {
|
options = {
|
||||||
xdg.mime.enable = mkOption {
|
xdg.mime.enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = pkgs.hostPlatform.isLinux;
|
||||||
|
defaultText =
|
||||||
|
literalExample "true if host platform is Linux, false otherwise";
|
||||||
description = ''
|
description = ''
|
||||||
Whether to install programs and files to support the
|
Whether to install programs and files to support the
|
||||||
XDG Shared MIME-info specification and XDG MIME Applications
|
XDG Shared MIME-info specification and XDG MIME Applications
|
||||||
|
@ -24,6 +26,9 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.xdg.mime.enable {
|
config = mkIf config.xdg.mime.enable {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "xdg.mime" pkgs platforms.linux) ];
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
# Explicitly install package to provide basic mime types.
|
# Explicitly install package to provide basic mime types.
|
||||||
pkgs.shared-mime-info
|
pkgs.shared-mime-info
|
||||||
|
|
|
@ -36,6 +36,12 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
|
(mkIf (cfg.config != [ ] || cfg.data != [ ]) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xdg.systemDirs" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
||||||
(mkIf (cfg.config != [ ]) {
|
(mkIf (cfg.config != [ ]) {
|
||||||
home.sessionVariables.XDG_CONFIG_DIRS =
|
home.sessionVariables.XDG_CONFIG_DIRS =
|
||||||
"${configDirs}\${XDG_CONFIG_DIRS:+:$XDG_CONFIG_DIRS}";
|
"${configDirs}\${XDG_CONFIG_DIRS:+:$XDG_CONFIG_DIRS}";
|
||||||
|
|
|
@ -103,6 +103,9 @@ in {
|
||||||
XDG_VIDEOS_DIR = cfg.videos;
|
XDG_VIDEOS_DIR = cfg.videos;
|
||||||
} // cfg.extraConfig;
|
} // cfg.extraConfig;
|
||||||
in mkIf cfg.enable {
|
in mkIf cfg.enable {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "xdg.userDirs" pkgs platforms.linux) ];
|
||||||
|
|
||||||
xdg.configFile."user-dirs.dirs".text = let
|
xdg.configFile."user-dirs.dirs".text = let
|
||||||
# For some reason, these need to be wrapped with quotes to be valid.
|
# For some reason, these need to be wrapped with quotes to be valid.
|
||||||
wrapped = mapAttrs (_: value: ''"${value}"'') directories;
|
wrapped = mapAttrs (_: value: ''"${value}"'') directories;
|
||||||
|
|
|
@ -14,234 +14,225 @@ with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
hostPlatform = pkgs.stdenv.hostPlatform;
|
modules = [
|
||||||
|
./accounts/email.nix
|
||||||
loadModule = file: { condition ? true }: {
|
./config/i18n.nix
|
||||||
inherit file condition;
|
./files.nix
|
||||||
};
|
./home-environment.nix
|
||||||
|
./i18n/input-method/default.nix
|
||||||
allModules = [
|
./manual.nix
|
||||||
(loadModule ./accounts/email.nix { })
|
./misc/dconf.nix
|
||||||
(loadModule ./config/i18n.nix { condition = hostPlatform.isLinux; })
|
./misc/debug.nix
|
||||||
(loadModule ./files.nix { })
|
./misc/fontconfig.nix
|
||||||
(loadModule ./home-environment.nix { })
|
./misc/gtk.nix
|
||||||
(loadModule ./i18n/input-method/default.nix { condition = hostPlatform.isLinux; })
|
./misc/lib.nix
|
||||||
(loadModule ./manual.nix { })
|
./misc/news.nix
|
||||||
(loadModule ./misc/dconf.nix { })
|
./misc/numlock.nix
|
||||||
(loadModule ./misc/debug.nix { })
|
./misc/pam.nix
|
||||||
(loadModule ./misc/fontconfig.nix { })
|
./misc/qt.nix
|
||||||
(loadModule ./misc/gtk.nix { })
|
./misc/submodule-support.nix
|
||||||
(loadModule ./misc/lib.nix { })
|
./misc/tmpfiles.nix
|
||||||
(loadModule ./misc/news.nix { })
|
./misc/version.nix
|
||||||
(loadModule ./misc/nixpkgs.nix { condition = useNixpkgsModule; })
|
./misc/vte.nix
|
||||||
(loadModule ./misc/numlock.nix { condition = hostPlatform.isLinux; })
|
./misc/xdg-desktop-entries.nix
|
||||||
(loadModule ./misc/pam.nix { })
|
./misc/xdg-mime-apps.nix
|
||||||
(loadModule ./misc/qt.nix { })
|
./misc/xdg-mime.nix
|
||||||
(loadModule ./misc/submodule-support.nix { })
|
./misc/xdg-system-dirs.nix
|
||||||
(loadModule ./misc/tmpfiles.nix { condition = hostPlatform.isLinux; })
|
./misc/xdg-user-dirs.nix
|
||||||
(loadModule ./misc/version.nix { })
|
./misc/xdg.nix
|
||||||
(loadModule ./misc/vte.nix { })
|
./programs/abook.nix
|
||||||
(loadModule ./misc/xdg-system-dirs.nix { condition = hostPlatform.isLinux; })
|
./programs/afew.nix
|
||||||
(loadModule ./misc/xdg-desktop-entries.nix { condition = hostPlatform.isLinux; })
|
./programs/alacritty.nix
|
||||||
(loadModule ./misc/xdg-mime.nix { condition = hostPlatform.isLinux; })
|
./programs/alot.nix
|
||||||
(loadModule ./misc/xdg-mime-apps.nix { condition = hostPlatform.isLinux; })
|
./programs/aria2.nix
|
||||||
(loadModule ./misc/xdg-user-dirs.nix { condition = hostPlatform.isLinux; })
|
./programs/astroid.nix
|
||||||
(loadModule ./misc/xdg.nix { })
|
./programs/autojump.nix
|
||||||
(loadModule ./programs/abook.nix { condition = hostPlatform.isLinux; })
|
./programs/autorandr.nix
|
||||||
(loadModule ./programs/afew.nix { })
|
./programs/bash.nix
|
||||||
(loadModule ./programs/alacritty.nix { })
|
./programs/bat.nix
|
||||||
(loadModule ./programs/alot.nix { })
|
./programs/beets.nix
|
||||||
(loadModule ./programs/aria2.nix { })
|
./programs/broot.nix
|
||||||
(loadModule ./programs/astroid.nix { })
|
./programs/browserpass.nix
|
||||||
(loadModule ./programs/autojump.nix { })
|
./programs/chromium.nix
|
||||||
(loadModule ./programs/autorandr.nix { })
|
./programs/command-not-found/command-not-found.nix
|
||||||
(loadModule ./programs/bash.nix { })
|
./programs/dircolors.nix
|
||||||
(loadModule ./programs/bat.nix { })
|
./programs/direnv.nix
|
||||||
(loadModule ./programs/beets.nix { })
|
./programs/eclipse.nix
|
||||||
(loadModule ./programs/broot.nix { })
|
./programs/emacs.nix
|
||||||
(loadModule ./programs/browserpass.nix { })
|
./programs/exa.nix
|
||||||
(loadModule ./programs/chromium.nix { })
|
./programs/feh.nix
|
||||||
(loadModule ./programs/command-not-found/command-not-found.nix { })
|
./programs/firefox.nix
|
||||||
(loadModule ./programs/dircolors.nix { })
|
./programs/fish.nix
|
||||||
(loadModule ./programs/direnv.nix { })
|
./programs/foot.nix
|
||||||
(loadModule ./programs/eclipse.nix { })
|
./programs/fzf.nix
|
||||||
(loadModule ./programs/emacs.nix { })
|
./programs/getmail.nix
|
||||||
(loadModule ./programs/exa.nix { })
|
./programs/gh.nix
|
||||||
(loadModule ./programs/feh.nix { })
|
./programs/git.nix
|
||||||
(loadModule ./programs/firefox.nix { })
|
./programs/gnome-terminal.nix
|
||||||
(loadModule ./programs/fish.nix { })
|
./programs/go.nix
|
||||||
(loadModule ./programs/foot.nix { condition = hostPlatform.isLinux; })
|
./programs/gpg.nix
|
||||||
(loadModule ./programs/fzf.nix { })
|
./programs/himalaya.nix
|
||||||
(loadModule ./programs/getmail.nix { condition = hostPlatform.isLinux; })
|
./programs/home-manager.nix
|
||||||
(loadModule ./programs/gh.nix { })
|
./programs/htop.nix
|
||||||
(loadModule ./programs/git.nix { })
|
./programs/i3status-rust.nix
|
||||||
(loadModule ./programs/gnome-terminal.nix { })
|
./programs/i3status.nix
|
||||||
(loadModule ./programs/go.nix { })
|
./programs/info.nix
|
||||||
(loadModule ./programs/gpg.nix { })
|
./programs/irssi.nix
|
||||||
(loadModule ./programs/himalaya.nix { })
|
./programs/jq.nix
|
||||||
(loadModule ./programs/home-manager.nix { })
|
./programs/kakoune.nix
|
||||||
(loadModule ./programs/htop.nix { })
|
./programs/keychain.nix
|
||||||
(loadModule ./programs/i3status.nix { })
|
./programs/kitty.nix
|
||||||
(loadModule ./programs/i3status-rust.nix { condition = hostPlatform.isLinux; })
|
./programs/lazygit.nix
|
||||||
(loadModule ./programs/info.nix { })
|
./programs/lesspipe.nix
|
||||||
(loadModule ./programs/irssi.nix { })
|
./programs/lf.nix
|
||||||
(loadModule ./programs/lieer.nix { })
|
./programs/lieer.nix
|
||||||
(loadModule ./programs/jq.nix { })
|
./programs/lsd.nix
|
||||||
(loadModule ./programs/kakoune.nix { })
|
./programs/man.nix
|
||||||
(loadModule ./programs/keychain.nix { })
|
./programs/mangohud.nix
|
||||||
(loadModule ./programs/kitty.nix { })
|
./programs/matplotlib.nix
|
||||||
(loadModule ./programs/lazygit.nix { })
|
./programs/mbsync.nix
|
||||||
(loadModule ./programs/lesspipe.nix { })
|
./programs/mcfly.nix
|
||||||
(loadModule ./programs/lf.nix { })
|
./programs/mercurial.nix
|
||||||
(loadModule ./programs/lsd.nix { })
|
./programs/mpv.nix
|
||||||
(loadModule ./programs/man.nix { })
|
./programs/msmtp.nix
|
||||||
(loadModule ./programs/mangohud.nix { condition = hostPlatform.isLinux; })
|
./programs/mu.nix
|
||||||
(loadModule ./programs/matplotlib.nix { })
|
./programs/ncmpcpp.nix
|
||||||
(loadModule ./programs/mbsync.nix { })
|
./programs/ncspot.nix
|
||||||
(loadModule ./programs/mcfly.nix { })
|
./programs/ne.nix
|
||||||
(loadModule ./programs/mercurial.nix { })
|
./programs/neomutt.nix
|
||||||
(loadModule ./programs/mpv.nix { })
|
./programs/neovim.nix
|
||||||
(loadModule ./programs/msmtp.nix { })
|
./programs/newsboat.nix
|
||||||
(loadModule ./programs/mu.nix { })
|
./programs/nix-index.nix
|
||||||
(loadModule ./programs/ncmpcpp.nix { })
|
./programs/noti.nix
|
||||||
(loadModule ./programs/ncspot.nix { })
|
./programs/notmuch.nix
|
||||||
(loadModule ./programs/ne.nix { })
|
./programs/nushell.nix
|
||||||
(loadModule ./programs/neomutt.nix { })
|
./programs/obs-studio.nix
|
||||||
(loadModule ./programs/neovim.nix { })
|
./programs/octant.nix
|
||||||
(loadModule ./programs/newsboat.nix { })
|
./programs/offlineimap.nix
|
||||||
(loadModule ./programs/nix-index.nix { })
|
./programs/opam.nix
|
||||||
(loadModule ./programs/noti.nix { })
|
./programs/password-store.nix
|
||||||
(loadModule ./programs/notmuch.nix { })
|
./programs/pazi.nix
|
||||||
(loadModule ./programs/nushell.nix { })
|
./programs/pet.nix
|
||||||
(loadModule ./programs/obs-studio.nix { })
|
./programs/pidgin.nix
|
||||||
(loadModule ./programs/octant.nix { })
|
./programs/piston-cli.nix
|
||||||
(loadModule ./programs/offlineimap.nix { })
|
./programs/powerline-go.nix
|
||||||
(loadModule ./programs/opam.nix { })
|
./programs/qutebrowser.nix
|
||||||
(loadModule ./programs/password-store.nix { })
|
./programs/rbw.nix
|
||||||
(loadModule ./programs/pazi.nix { })
|
./programs/readline.nix
|
||||||
(loadModule ./programs/pet.nix { })
|
./programs/rofi-pass.nix
|
||||||
(loadModule ./programs/pidgin.nix { })
|
./programs/rofi.nix
|
||||||
(loadModule ./programs/piston-cli.nix { })
|
./programs/rtorrent.nix
|
||||||
(loadModule ./programs/powerline-go.nix { })
|
./programs/sbt.nix
|
||||||
(loadModule ./programs/qutebrowser.nix { })
|
./programs/scmpuff.nix
|
||||||
(loadModule ./programs/rbw.nix { })
|
./programs/senpai.nix
|
||||||
(loadModule ./programs/readline.nix { })
|
./programs/skim.nix
|
||||||
(loadModule ./programs/rofi.nix { })
|
./programs/sm64ex.nix
|
||||||
(loadModule ./programs/rofi-pass.nix { })
|
./programs/ssh.nix
|
||||||
(loadModule ./programs/rtorrent.nix { })
|
./programs/starship.nix
|
||||||
(loadModule ./programs/scmpuff.nix { })
|
./programs/taskwarrior.nix
|
||||||
(loadModule ./programs/senpai.nix { })
|
./programs/terminator.nix
|
||||||
(loadModule ./programs/skim.nix { })
|
./programs/termite.nix
|
||||||
(loadModule ./programs/sm64ex.nix { })
|
./programs/texlive.nix
|
||||||
(loadModule ./programs/starship.nix { })
|
./programs/tmux.nix
|
||||||
(loadModule ./programs/sbt.nix { })
|
./programs/topgrade.nix
|
||||||
(loadModule ./programs/ssh.nix { })
|
./programs/urxvt.nix
|
||||||
(loadModule ./programs/taskwarrior.nix { })
|
./programs/vim.nix
|
||||||
(loadModule ./programs/termite.nix { })
|
./programs/vscode.nix
|
||||||
(loadModule ./programs/texlive.nix { })
|
./programs/vscode/haskell.nix
|
||||||
(loadModule ./programs/tmux.nix { })
|
./programs/waybar.nix
|
||||||
(loadModule ./programs/terminator.nix { condition = hostPlatform.isLinux; })
|
./programs/xmobar.nix
|
||||||
(loadModule ./programs/topgrade.nix { })
|
./programs/z-lua.nix
|
||||||
(loadModule ./programs/urxvt.nix { })
|
./programs/zathura.nix
|
||||||
(loadModule ./programs/vim.nix { })
|
./programs/zoxide.nix
|
||||||
(loadModule ./programs/vscode.nix { })
|
./programs/zplug.nix
|
||||||
(loadModule ./programs/vscode/haskell.nix { })
|
./programs/zsh.nix
|
||||||
(loadModule ./programs/waybar.nix { condition = hostPlatform.isLinux; })
|
./programs/zsh/prezto.nix
|
||||||
(loadModule ./programs/xmobar.nix { })
|
./services/barrier.nix
|
||||||
(loadModule ./programs/z-lua.nix { })
|
./services/blueman-applet.nix
|
||||||
(loadModule ./programs/zathura.nix { })
|
./services/caffeine.nix
|
||||||
(loadModule ./programs/zoxide.nix { })
|
./services/cbatticon.nix
|
||||||
(loadModule ./programs/zplug.nix { })
|
./services/clipmenu.nix
|
||||||
(loadModule ./programs/zsh.nix { })
|
./services/compton.nix
|
||||||
(loadModule ./programs/zsh/prezto.nix { })
|
./services/devilspie2.nix
|
||||||
(loadModule ./services/barrier.nix { condition = hostPlatform.isLinux; })
|
./services/dropbox.nix
|
||||||
(loadModule ./services/blueman-applet.nix { })
|
./services/dunst.nix
|
||||||
(loadModule ./services/caffeine.nix { condition = hostPlatform.isLinux; })
|
./services/dwm-status.nix
|
||||||
(loadModule ./services/cbatticon.nix { condition = hostPlatform.isLinux; })
|
./services/emacs.nix
|
||||||
(loadModule ./services/clipmenu.nix { condition = hostPlatform.isLinux; })
|
./services/etesync-dav.nix
|
||||||
(loadModule ./services/compton.nix { })
|
./services/flameshot.nix
|
||||||
(loadModule ./services/devilspie2.nix { condition = hostPlatform.isLinux; })
|
./services/fluidsynth.nix
|
||||||
(loadModule ./services/dropbox.nix { condition = hostPlatform.isLinux; })
|
./services/getmail.nix
|
||||||
(loadModule ./services/dunst.nix { })
|
./services/gnome-keyring.nix
|
||||||
(loadModule ./services/dwm-status.nix { condition = hostPlatform.isLinux; })
|
./services/gpg-agent.nix
|
||||||
(loadModule ./services/emacs.nix { condition = hostPlatform.isLinux; })
|
./services/grobi.nix
|
||||||
(loadModule ./services/etesync-dav.nix { condition = hostPlatform.isLinux; })
|
./services/hound.nix
|
||||||
(loadModule ./services/flameshot.nix { })
|
./services/imapnotify.nix
|
||||||
(loadModule ./services/fluidsynth.nix { condition = hostPlatform.isLinux; })
|
./services/kanshi.nix
|
||||||
(loadModule ./services/redshift-gammastep/gammastep.nix { condition = hostPlatform.isLinux; })
|
./services/kbfs.nix
|
||||||
(loadModule ./services/getmail.nix { condition = hostPlatform.isLinux; })
|
./services/kdeconnect.nix
|
||||||
(loadModule ./services/gnome-keyring.nix { })
|
./services/keepassx.nix
|
||||||
(loadModule ./services/gpg-agent.nix { })
|
./services/keybase.nix
|
||||||
(loadModule ./services/grobi.nix { condition = hostPlatform.isLinux; })
|
./services/keynav.nix
|
||||||
(loadModule ./services/hound.nix { condition = hostPlatform.isLinux; })
|
./services/lieer.nix
|
||||||
(loadModule ./services/imapnotify.nix { condition = hostPlatform.isLinux; })
|
./services/lorri.nix
|
||||||
(loadModule ./services/kanshi.nix { condition = hostPlatform.isLinux; })
|
./services/mako.nix
|
||||||
(loadModule ./services/kbfs.nix { })
|
./services/mbsync.nix
|
||||||
(loadModule ./services/kdeconnect.nix { })
|
./services/mpd.nix
|
||||||
(loadModule ./services/keepassx.nix { })
|
./services/mpdris2.nix
|
||||||
(loadModule ./services/keybase.nix { })
|
./services/mpris-proxy.nix
|
||||||
(loadModule ./services/keynav.nix { condition = hostPlatform.isLinux; })
|
./services/muchsync.nix
|
||||||
(loadModule ./services/lieer.nix { condition = hostPlatform.isLinux; })
|
./services/network-manager-applet.nix
|
||||||
(loadModule ./services/lorri.nix { condition = hostPlatform.isLinux; })
|
./services/nextcloud-client.nix
|
||||||
(loadModule ./services/mako.nix { condition = hostPlatform.isLinux; })
|
./services/owncloud-client.nix
|
||||||
(loadModule ./services/mbsync.nix { })
|
./services/pantalaimon.nix
|
||||||
(loadModule ./services/mpd.nix { })
|
./services/parcellite.nix
|
||||||
(loadModule ./services/mpdris2.nix { condition = hostPlatform.isLinux; })
|
./services/pass-secret-service.nix
|
||||||
(loadModule ./services/mpris-proxy.nix { condition = hostPlatform.isLinux; })
|
./services/password-store-sync.nix
|
||||||
(loadModule ./services/muchsync.nix { condition = hostPlatform.isLinux; })
|
./services/pasystray.nix
|
||||||
(loadModule ./services/network-manager-applet.nix { })
|
./services/pbgopy.nix
|
||||||
(loadModule ./services/nextcloud-client.nix { })
|
./services/picom.nix
|
||||||
(loadModule ./services/owncloud-client.nix { })
|
./services/plan9port.nix
|
||||||
(loadModule ./services/pantalaimon.nix { condition = hostPlatform.isLinux; })
|
./services/playerctld.nix
|
||||||
(loadModule ./services/parcellite.nix { })
|
./services/polybar.nix
|
||||||
(loadModule ./services/pass-secret-service.nix { condition = hostPlatform.isLinux; })
|
./services/poweralertd.nix
|
||||||
(loadModule ./services/password-store-sync.nix { condition = hostPlatform.isLinux; })
|
./services/pulseeffects.nix
|
||||||
(loadModule ./services/pasystray.nix { })
|
./services/random-background.nix
|
||||||
(loadModule ./services/pbgopy.nix { condition = hostPlatform.isLinux; })
|
./services/redshift-gammastep/gammastep.nix
|
||||||
(loadModule ./services/picom.nix { })
|
./services/redshift-gammastep/redshift.nix
|
||||||
(loadModule ./services/plan9port.nix { condition = hostPlatform.isLinux; })
|
./services/rsibreak.nix
|
||||||
(loadModule ./services/playerctld.nix { condition = hostPlatform.isLinux; })
|
./services/screen-locker.nix
|
||||||
(loadModule ./services/polybar.nix { })
|
./services/spotifyd.nix
|
||||||
(loadModule ./services/poweralertd.nix { condition = hostPlatform.isLinux; })
|
./services/stalonetray.nix
|
||||||
(loadModule ./services/pulseeffects.nix { condition = hostPlatform.isLinux; })
|
./services/status-notifier-watcher.nix
|
||||||
(loadModule ./services/random-background.nix { })
|
./services/sxhkd.nix
|
||||||
(loadModule ./services/redshift-gammastep/redshift.nix { })
|
./services/syncthing.nix
|
||||||
(loadModule ./services/rsibreak.nix { condition = hostPlatform.isLinux; })
|
./services/taffybar.nix
|
||||||
(loadModule ./services/screen-locker.nix { })
|
./services/tahoe-lafs.nix
|
||||||
(loadModule ./services/stalonetray.nix { })
|
./services/taskwarrior-sync.nix
|
||||||
(loadModule ./services/status-notifier-watcher.nix { })
|
./services/udiskie.nix
|
||||||
(loadModule ./services/spotifyd.nix { condition = hostPlatform.isLinux; })
|
./services/unclutter.nix
|
||||||
(loadModule ./services/sxhkd.nix { condition = hostPlatform.isLinux; })
|
./services/unison.nix
|
||||||
(loadModule ./services/syncthing.nix { })
|
./services/window-managers/awesome.nix
|
||||||
(loadModule ./services/taffybar.nix { })
|
./services/window-managers/bspwm/default.nix
|
||||||
(loadModule ./services/tahoe-lafs.nix { })
|
./services/window-managers/i3-sway/i3.nix
|
||||||
(loadModule ./services/taskwarrior-sync.nix { condition = hostPlatform.isLinux; })
|
./services/window-managers/i3-sway/sway.nix
|
||||||
(loadModule ./services/udiskie.nix { })
|
./services/window-managers/xmonad.nix
|
||||||
(loadModule ./services/unclutter.nix { })
|
./services/wlsunset.nix
|
||||||
(loadModule ./services/unison.nix { condition = hostPlatform.isLinux; })
|
./services/xcape.nix
|
||||||
(loadModule ./services/window-managers/awesome.nix { })
|
./services/xembed-sni-proxy.nix
|
||||||
(loadModule ./services/window-managers/bspwm/default.nix { condition = hostPlatform.isLinux; })
|
./services/xidlehook.nix
|
||||||
(loadModule ./services/window-managers/i3-sway/i3.nix { })
|
./services/xscreensaver.nix
|
||||||
(loadModule ./services/window-managers/i3-sway/sway.nix { condition = hostPlatform.isLinux; })
|
./services/xsettingsd.nix
|
||||||
(loadModule ./services/window-managers/xmonad.nix { })
|
./services/xsuspender.nix
|
||||||
(loadModule ./services/wlsunset.nix { condition = hostPlatform.isLinux; })
|
./systemd.nix
|
||||||
(loadModule ./services/xcape.nix { condition = hostPlatform.isLinux; })
|
./targets/darwin
|
||||||
(loadModule ./services/xembed-sni-proxy.nix { condition = hostPlatform.isLinux; })
|
./targets/generic-linux.nix
|
||||||
(loadModule ./services/xidlehook.nix { condition = hostPlatform.isLinux; })
|
./xcursor.nix
|
||||||
(loadModule ./services/xscreensaver.nix { })
|
./xresources.nix
|
||||||
(loadModule ./services/xsettingsd.nix { condition = hostPlatform.isLinux; })
|
./xsession.nix
|
||||||
(loadModule ./services/xsuspender.nix { condition = hostPlatform.isLinux; })
|
(pkgs.path + "/nixos/modules/misc/assertions.nix")
|
||||||
(loadModule ./systemd.nix { })
|
(pkgs.path + "/nixos/modules/misc/meta.nix")
|
||||||
(loadModule ./targets/darwin { condition = hostPlatform.isDarwin; })
|
] ++ optional useNixpkgsModule ./misc/nixpkgs.nix;
|
||||||
(loadModule ./targets/generic-linux.nix { condition = hostPlatform.isLinux; })
|
|
||||||
(loadModule ./xcursor.nix { })
|
|
||||||
(loadModule ./xresources.nix { })
|
|
||||||
(loadModule ./xsession.nix { })
|
|
||||||
(loadModule (pkgs.path + "/nixos/modules/misc/assertions.nix") { })
|
|
||||||
(loadModule (pkgs.path + "/nixos/modules/misc/meta.nix") { })
|
|
||||||
];
|
|
||||||
|
|
||||||
modules = map (getAttr "file") (filter (getAttr "condition") allModules);
|
|
||||||
|
|
||||||
pkgsModule = { config, ... }: {
|
pkgsModule = { config, ... }: {
|
||||||
config = {
|
config = {
|
||||||
|
|
|
@ -27,7 +27,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "programs.abook" pkgs platforms.linux) ];
|
||||||
|
|
||||||
home.packages = [ pkgs.abook ];
|
home.packages = [ pkgs.abook ];
|
||||||
|
|
||||||
xdg.configFile."abook/abookrc" = mkIf (cfg.extraConfig != "") {
|
xdg.configFile."abook/abookrc" = mkIf (cfg.extraConfig != "") {
|
||||||
text = ''
|
text = ''
|
||||||
# Generated by Home Manager.
|
# Generated by Home Manager.
|
||||||
|
|
|
@ -49,6 +49,9 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "programs.foot" pkgs platforms.linux) ];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
xdg.configFile."foot/foot.ini" = mkIf (cfg.settings != { }) {
|
xdg.configFile."foot/foot.ini" = mkIf (cfg.settings != { }) {
|
||||||
|
|
|
@ -55,6 +55,10 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf getmailEnabled {
|
config = mkIf getmailEnabled {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "programs.getmail" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.file = foldl' (a: b: a // b) { }
|
home.file = foldl' (a: b: a // b) { }
|
||||||
(map (a: { "${renderConfigFilepath a}".text = renderAccountConfig a; })
|
(map (a: { "${renderConfigFilepath a}".text = renderAccountConfig a; })
|
||||||
accounts);
|
accounts);
|
||||||
|
|
|
@ -249,6 +249,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "programs.i3status-rust" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
xdg.configFile = mapAttrs' (cfgFileSuffix: cfg:
|
xdg.configFile = mapAttrs' (cfgFileSuffix: cfg:
|
||||||
|
|
|
@ -82,24 +82,25 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable {
|
||||||
{
|
assertions = [
|
||||||
home.packages = [ cfg.package ];
|
(hm.assertions.assertPlatform "programs.mangohud" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.sessionVariables = mkIf cfg.enableSessionWide {
|
home.packages = [ cfg.package ];
|
||||||
MANGOHUD = 1;
|
|
||||||
MANGOHUD_DLSYM = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."MangoHud/MangoHud.conf" =
|
home.sessionVariables = mkIf cfg.enableSessionWide {
|
||||||
|
MANGOHUD = 1;
|
||||||
|
MANGOHUD_DLSYM = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
"MangoHud/MangoHud.conf" =
|
||||||
mkIf (cfg.settings != { }) { text = renderSettings cfg.settings; };
|
mkIf (cfg.settings != { }) { text = renderSettings cfg.settings; };
|
||||||
}
|
} // mapAttrs'
|
||||||
{
|
(n: v: nameValuePair "MangoHud/${n}.conf" { text = renderSettings v; })
|
||||||
xdg.configFile = mapAttrs'
|
cfg.settingsPerApplication;
|
||||||
(n: v: nameValuePair "MangoHud/${n}.conf" { text = renderSettings v; })
|
};
|
||||||
cfg.settingsPerApplication;
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ zeratax ];
|
meta.maintainers = with maintainers; [ zeratax ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -402,12 +402,15 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
assertions = [{
|
assertions = [
|
||||||
assertion = cfg.theme == null || cfg.colors == null;
|
(hm.assertions.assertPlatform "programs.rofi" pkgs platforms.linux)
|
||||||
message = ''
|
{
|
||||||
Cannot use the rofi options 'theme' and 'colors' simultaneously.
|
assertion = cfg.theme == null || cfg.colors == null;
|
||||||
'';
|
message = ''
|
||||||
}];
|
Cannot use the rofi options 'theme' and 'colors' simultaneously.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
lib.formats.rasi.mkLiteral = value: {
|
lib.formats.rasi.mkLiteral = value: {
|
||||||
_type = "literal";
|
_type = "literal";
|
||||||
|
|
|
@ -63,7 +63,12 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "programs.terminator" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
xdg.configFile."terminator/config" =
|
xdg.configFile."terminator/config" =
|
||||||
mkIf (cfg.config != { }) { text = toConfigObject cfg.config; };
|
mkIf (cfg.config != { }) { text = toConfigObject cfg.config; };
|
||||||
};
|
};
|
||||||
|
|
|
@ -353,16 +353,26 @@ in {
|
||||||
in allWarnings;
|
in allWarnings;
|
||||||
|
|
||||||
in mkIf cfg.enable (mkMerge [
|
in mkIf cfg.enable (mkMerge [
|
||||||
{ home.packages = [ cfg.package ]; }
|
{
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "programs.waybar" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
}
|
||||||
|
|
||||||
(mkIf (cfg.settings != [ ]) {
|
(mkIf (cfg.settings != [ ]) {
|
||||||
# Generate warnings about defined but unreferenced modules
|
# Generate warnings about defined but unreferenced modules
|
||||||
inherit warnings;
|
inherit warnings;
|
||||||
|
|
||||||
xdg.configFile."waybar/config".source = configSource;
|
xdg.configFile."waybar/config".source = configSource;
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf (cfg.style != null) {
|
(mkIf (cfg.style != null) {
|
||||||
xdg.configFile."waybar/style.css".text = cfg.style;
|
xdg.configFile."waybar/style.css".text = cfg.style;
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.systemd.enable {
|
(mkIf cfg.systemd.enable {
|
||||||
systemd.user.services.waybar = {
|
systemd.user.services.waybar = {
|
||||||
Unit = {
|
Unit = {
|
||||||
|
|
|
@ -51,6 +51,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.client.enable {
|
config = mkIf cfg.client.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.barrier" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.barrierc = {
|
systemd.user.services.barrierc = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Barrier Client daemon";
|
Description = "Barrier Client daemon";
|
||||||
|
|
|
@ -14,6 +14,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.caffeine" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.caffeine = {
|
systemd.user.services.caffeine = {
|
||||||
Unit = { Description = "caffeine"; };
|
Unit = { Description = "caffeine"; };
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.cbatticon" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ package ];
|
home.packages = [ package ];
|
||||||
|
|
||||||
systemd.user.services.cbatticon = {
|
systemd.user.services.cbatticon = {
|
||||||
|
|
|
@ -21,6 +21,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.clipmenu" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.user.services.clipmenu = {
|
systemd.user.services.clipmenu = {
|
||||||
|
|
|
@ -27,6 +27,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.devilspie2" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.devilspie2 = {
|
systemd.user.services.devilspie2 = {
|
||||||
Service.ExecStart = "${pkgs.devilspie2}/bin/devilspie2";
|
Service.ExecStart = "${pkgs.devilspie2}/bin/devilspie2";
|
||||||
Unit = {
|
Unit = {
|
||||||
|
|
|
@ -28,6 +28,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.dropbox" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ pkgs.dropbox-cli ];
|
home.packages = [ pkgs.dropbox-cli ];
|
||||||
|
|
||||||
systemd.user.services.dropbox = {
|
systemd.user.services.dropbox = {
|
||||||
|
|
|
@ -53,6 +53,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.dwm-status" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.dwm-status = {
|
systemd.user.services.dwm-status = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "DWM status service";
|
Description = "DWM status service";
|
||||||
|
|
|
@ -75,6 +75,11 @@ in {
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
{
|
{
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.emacs" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.emacs = {
|
systemd.user.services.emacs = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Emacs text editor";
|
Description = "Emacs text editor";
|
||||||
|
|
|
@ -45,6 +45,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.etesync-dav" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.user.services.etesync-dav = {
|
systemd.user.services.etesync-dav = {
|
||||||
|
|
|
@ -13,6 +13,11 @@ in {
|
||||||
options = { services.flameshot = { enable = mkEnableOption "Flameshot"; }; };
|
options = { services.flameshot = { enable = mkEnableOption "Flameshot"; }; };
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.flameshot" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ package ];
|
home.packages = [ package ];
|
||||||
|
|
||||||
systemd.user.services.flameshot = {
|
systemd.user.services.flameshot = {
|
||||||
|
|
|
@ -37,6 +37,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.fluidsynth" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.fluidsynth = {
|
systemd.user.services.fluidsynth = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "FluidSynth Daemon";
|
Description = "FluidSynth Daemon";
|
||||||
|
|
|
@ -37,6 +37,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.getmail" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.getmail = {
|
systemd.user.services.getmail = {
|
||||||
Unit = { Description = "getmail email fetcher"; };
|
Unit = { Description = "getmail email fetcher"; };
|
||||||
Service = { ExecStart = "${pkgs.getmail}/bin/getmail ${configFiles}"; };
|
Service = { ExecStart = "${pkgs.getmail}/bin/getmail ${configFiles}"; };
|
||||||
|
|
|
@ -25,6 +25,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.gnome-keyring" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.gnome-keyring = {
|
systemd.user.services.gnome-keyring = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "GNOME Keyring";
|
Description = "GNOME Keyring";
|
||||||
|
|
|
@ -71,6 +71,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.grobi" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.grobi = {
|
systemd.user.services.grobi = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "grobi display auto config daemon";
|
Description = "grobi display auto config daemon";
|
||||||
|
|
|
@ -59,6 +59,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.hound" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ pkgs.hound ];
|
home.packages = [ pkgs.hound ];
|
||||||
|
|
||||||
systemd.user.services.hound = {
|
systemd.user.services.hound = {
|
||||||
|
|
|
@ -77,6 +77,8 @@ in {
|
||||||
+ concatMapStringsSep ", " (a: a.name) badAccounts;
|
+ concatMapStringsSep ", " (a: a.name) badAccounts;
|
||||||
};
|
};
|
||||||
in [
|
in [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.imapnotify" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
(checkAccounts (a: a.maildir == null) "maildir configuration")
|
(checkAccounts (a: a.maildir == null) "maildir configuration")
|
||||||
(checkAccounts (a: a.imap == null) "IMAP configuration")
|
(checkAccounts (a: a.imap == null) "IMAP configuration")
|
||||||
(checkAccounts (a: a.passwordCommand == null) "password command")
|
(checkAccounts (a: a.passwordCommand == null) "password command")
|
||||||
|
|
|
@ -187,6 +187,10 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.kanshi" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
xdg.configFile."kanshi/config".text = ''
|
xdg.configFile."kanshi/config".text = ''
|
||||||
${concatStringsSep "\n" (mapAttrsToList profileStr cfg.profiles)}
|
${concatStringsSep "\n" (mapAttrsToList profileStr cfg.profiles)}
|
||||||
|
|
|
@ -32,6 +32,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.kbfs" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.kbfs = {
|
systemd.user.services.kbfs = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Keybase File System";
|
Description = "Keybase File System";
|
||||||
|
|
|
@ -10,6 +10,11 @@ in {
|
||||||
options.services.keybase.enable = mkEnableOption "Keybase";
|
options.services.keybase.enable = mkEnableOption "Keybase";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.keybase" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ pkgs.keybase ];
|
home.packages = [ pkgs.keybase ];
|
||||||
|
|
||||||
systemd.user.services.keybase = {
|
systemd.user.services.keybase = {
|
||||||
|
|
|
@ -10,6 +10,11 @@ in {
|
||||||
options.services.keynav = { enable = mkEnableOption "keynav"; };
|
options.services.keynav = { enable = mkEnableOption "keynav"; };
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.keynav" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.keynav = {
|
systemd.user.services.keynav = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "keynav";
|
Description = "keynav";
|
||||||
|
|
|
@ -61,6 +61,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.lieer" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
programs.lieer.enable = true;
|
programs.lieer.enable = true;
|
||||||
systemd.user.services = listToAttrs (map serviceUnit syncAccounts);
|
systemd.user.services = listToAttrs (map serviceUnit syncAccounts);
|
||||||
systemd.user.timers = listToAttrs (map timerUnit syncAccounts);
|
systemd.user.timers = listToAttrs (map timerUnit syncAccounts);
|
||||||
|
|
|
@ -21,6 +21,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.lorri" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.user = {
|
systemd.user = {
|
||||||
|
|
|
@ -292,7 +292,11 @@ in {
|
||||||
optionalString = name: val:
|
optionalString = name: val:
|
||||||
lib.optionalString (val != null) "${name}=${val}";
|
lib.optionalString (val != null) "${name}=${val}";
|
||||||
in mkIf cfg.enable {
|
in mkIf cfg.enable {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "services.mako" pkgs platforms.linux) ];
|
||||||
|
|
||||||
home.packages = [ pkgs.mako ];
|
home.packages = [ pkgs.mako ];
|
||||||
|
|
||||||
xdg.configFile."mako/config".text = ''
|
xdg.configFile."mako/config".text = ''
|
||||||
${optionalInteger "max-visible" cfg.maxVisible}
|
${optionalInteger "max-visible" cfg.maxVisible}
|
||||||
${optionalString "sort" cfg.sort}
|
${optionalString "sort" cfg.sort}
|
||||||
|
|
|
@ -76,6 +76,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.mbsync" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.mbsync = {
|
systemd.user.services.mbsync = {
|
||||||
Unit = { Description = "mbsync mailbox synchronization"; };
|
Unit = { Description = "mbsync mailbox synchronization"; };
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,10 @@ in {
|
||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.mpd" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.mpd = {
|
systemd.user.services.mpd = {
|
||||||
Unit = {
|
Unit = {
|
||||||
|
|
|
@ -74,10 +74,15 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
assertions = [{
|
assertions = [
|
||||||
assertion = config.services.mpd.enable;
|
(lib.hm.assertions.assertPlatform "services.mpdris2" pkgs
|
||||||
message = "The mpdris2 module requires 'services.mpd.enable = true'.";
|
lib.platforms.linux)
|
||||||
}];
|
|
||||||
|
{
|
||||||
|
assertion = config.services.mpd.enable;
|
||||||
|
message = "The mpdris2 module requires 'services.mpd.enable = true'.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
xdg.configFile."mpDris2/mpDris2.conf".text = toIni mpdris2Conf;
|
xdg.configFile."mpDris2/mpDris2.conf".text = toIni mpdris2Conf;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,11 @@ in {
|
||||||
"a proxy forwarding Bluetooth MIDI controls via MPRIS2 to control media players";
|
"a proxy forwarding Bluetooth MIDI controls via MPRIS2 to control media players";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.mpris-proxy" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.mpris-proxy = {
|
systemd.user.services.mpris-proxy = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description =
|
Description =
|
||||||
|
|
|
@ -156,12 +156,16 @@ in {
|
||||||
(name: remoteCfg: nameValuePair "muchsync-${name}" (gen name remoteCfg))
|
(name: remoteCfg: nameValuePair "muchsync-${name}" (gen name remoteCfg))
|
||||||
cfg.remotes;
|
cfg.remotes;
|
||||||
in mkIf (cfg.remotes != { }) {
|
in mkIf (cfg.remotes != { }) {
|
||||||
assertions = [{
|
assertions = [
|
||||||
assertion = config.programs.notmuch.enable;
|
(hm.assertions.assertPlatform "services.muchsync" pkgs platforms.linux)
|
||||||
message = ''
|
|
||||||
The muchsync module requires 'programs.notmuch.enable = true'.
|
{
|
||||||
'';
|
assertion = config.programs.notmuch.enable;
|
||||||
}];
|
message = ''
|
||||||
|
The muchsync module requires 'programs.notmuch.enable = true'.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services = mapRemotes (name: remoteCfg: {
|
systemd.user.services = mapRemotes (name: remoteCfg: {
|
||||||
Unit = { Description = "muchsync sync service (${name})"; };
|
Unit = { Description = "muchsync sync service (${name})"; };
|
||||||
|
|
|
@ -16,6 +16,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.network-manager-applet" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.network-manager-applet = {
|
systemd.user.services.network-manager-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Network Manager applet";
|
Description = "Network Manager applet";
|
||||||
|
|
|
@ -28,6 +28,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.nextcloud-client" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.nextcloud-client = {
|
systemd.user.services.nextcloud-client = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Nextcloud Client";
|
Description = "Nextcloud Client";
|
||||||
|
|
|
@ -55,6 +55,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.pantalaimon" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.user.services = {
|
systemd.user.services = {
|
||||||
|
|
|
@ -22,6 +22,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.parcellite" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.user.services.parcellite = {
|
systemd.user.services.parcellite = {
|
||||||
|
|
|
@ -9,11 +9,16 @@ in {
|
||||||
enable = mkEnableOption "Pass libsecret service";
|
enable = mkEnableOption "Pass libsecret service";
|
||||||
};
|
};
|
||||||
config = mkIf serviceCfg.enable {
|
config = mkIf serviceCfg.enable {
|
||||||
assertions = [{
|
assertions = [
|
||||||
assertion = config.programs.password-store.enable;
|
(hm.assertions.assertPlatform "services.pass-secret-service" pkgs
|
||||||
message = "The 'services.pass-secret-service' module requires"
|
platforms.linux)
|
||||||
+ " 'programs.password-store.enable = true'.";
|
|
||||||
}];
|
{
|
||||||
|
assertion = config.programs.password-store.enable;
|
||||||
|
message = "The 'services.pass-secret-service' module requires"
|
||||||
|
+ " 'programs.password-store.enable = true'.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.pass-secret-service = {
|
systemd.user.services.pass-secret-service = {
|
||||||
Unit = { Description = "Pass libsecret service"; };
|
Unit = { Description = "Pass libsecret service"; };
|
||||||
|
|
|
@ -33,11 +33,16 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf serviceCfg.enable {
|
config = mkIf serviceCfg.enable {
|
||||||
assertions = [{
|
assertions = [
|
||||||
assertion = programCfg.enable;
|
(hm.assertions.assertPlatform "services.password-store-sync" pkgs
|
||||||
message = "The 'services.password-store-sync' module requires"
|
platforms.linux)
|
||||||
+ " 'programs.password-store.enable = true'.";
|
|
||||||
}];
|
{
|
||||||
|
assertion = programCfg.enable;
|
||||||
|
message = "The 'services.password-store-sync' module requires"
|
||||||
|
+ " 'programs.password-store.enable = true'.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.password-store-sync = {
|
systemd.user.services.password-store-sync = {
|
||||||
Unit = { Description = "Password store sync"; };
|
Unit = { Description = "Password store sync"; };
|
||||||
|
|
|
@ -50,6 +50,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.pbgopy" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ package ];
|
home.packages = [ package ];
|
||||||
|
|
||||||
systemd.user.services.pbgopy = {
|
systemd.user.services.pbgopy = {
|
||||||
|
|
|
@ -283,6 +283,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.picom" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.user.services.picom = {
|
systemd.user.services.picom = {
|
||||||
|
|
|
@ -16,7 +16,10 @@ in {
|
||||||
mkEnableOption "the Plan 9 file system for interprocess messaging";
|
mkEnableOption "the Plan 9 file system for interprocess messaging";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = mkIf (cfg.fontsrv.enable || cfg.plumber.enable) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "services.plan9port" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.fontsrv = mkIf cfg.fontsrv.enable {
|
systemd.user.services.fontsrv = mkIf cfg.fontsrv.enable {
|
||||||
Unit.Description = "the Plan 9 file system access to host fonts";
|
Unit.Description = "the Plan 9 file system access to host fonts";
|
||||||
|
|
|
@ -21,6 +21,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.playerctld" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.playerctld = {
|
systemd.user.services.playerctld = {
|
||||||
Unit.Description = "MPRIS media player daemon";
|
Unit.Description = "MPRIS media player daemon";
|
||||||
|
|
||||||
|
|
|
@ -191,6 +191,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.polybar" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
xdg.configFile."polybar/config".source = configFile;
|
xdg.configFile."polybar/config".source = configFile;
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@ in {
|
||||||
mkEnableOption "the Upower-powered power alerterd";
|
mkEnableOption "the Upower-powered power alerterd";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.poweralertd" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.poweralertd = {
|
systemd.user.services.poweralertd = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "UPower-powered power alerter";
|
Description = "UPower-powered power alerter";
|
||||||
|
|
|
@ -33,6 +33,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.pulseeffects" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
# running pulseeffects will just attach itself to gapplication service
|
# running pulseeffects will just attach itself to gapplication service
|
||||||
# at-spi2-core is to minimize journalctl noise of:
|
# at-spi2-core is to minimize journalctl noise of:
|
||||||
# "AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files"
|
# "AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files"
|
||||||
|
|
|
@ -146,20 +146,25 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
assertions = [{
|
assertions = [
|
||||||
assertion = (cfg.settings ? ${mainSection}.dawn-time || cfg.settings
|
(hm.assertions.assertPlatform "services.${moduleName}" pkgs
|
||||||
? ${mainSection}.dusk-time)
|
platforms.linux)
|
||||||
|| (cfg.settings.${mainSection}.location-provider) == "geoclue2"
|
|
||||||
|| ((cfg.settings.${mainSection}.location-provider) == "manual"
|
{
|
||||||
&& (cfg.settings ? manual.lat || cfg.settings ? manual.lon));
|
assertion = (cfg.settings ? ${mainSection}.dawn-time || cfg.settings
|
||||||
message = ''
|
? ${mainSection}.dusk-time)
|
||||||
In order for ${programName} to know the time of action, you need to set one of
|
|| (cfg.settings.${mainSection}.location-provider) == "geoclue2"
|
||||||
- services.${moduleName}.provider = "geoclue2" for automatically inferring your location
|
|| ((cfg.settings.${mainSection}.location-provider) == "manual"
|
||||||
(you also need to enable Geoclue2 service separately)
|
&& (cfg.settings ? manual.lat || cfg.settings ? manual.lon));
|
||||||
- services.${moduleName}.longitude and .latitude for specifying your location manually
|
message = ''
|
||||||
- services.${moduleName}.dawnTime and .duskTime for specifying the times manually
|
In order for ${programName} to know the time of action, you need to set one of
|
||||||
'';
|
- services.${moduleName}.provider = "geoclue2" for automatically inferring your location
|
||||||
}];
|
(you also need to enable Geoclue2 service separately)
|
||||||
|
- services.${moduleName}.longitude and .latitude for specifying your location manually
|
||||||
|
- services.${moduleName}.dawnTime and .duskTime for specifying the times manually
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
services.${moduleName}.settings = {
|
services.${moduleName}.settings = {
|
||||||
${mainSection} = {
|
${mainSection} = {
|
||||||
|
|
|
@ -14,6 +14,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.rsibreak" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ pkgs.rsibreak ];
|
home.packages = [ pkgs.rsibreak ];
|
||||||
systemd.user.services.rsibreak = {
|
systemd.user.services.rsibreak = {
|
||||||
Unit = {
|
Unit = {
|
||||||
|
|
|
@ -53,6 +53,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.screen-locker" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.xautolock-session = {
|
systemd.user.services.xautolock-session = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "xautolock, session locker service";
|
Description = "xautolock, session locker service";
|
||||||
|
|
|
@ -43,6 +43,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.spotifyd" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.user.services.spotifyd = {
|
systemd.user.services.spotifyd = {
|
||||||
|
|
|
@ -26,6 +26,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.status-notifier-watcher" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.status-notifier-watcher = {
|
systemd.user.services.status-notifier-watcher = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "SNI watcher";
|
Description = "SNI watcher";
|
||||||
|
|
|
@ -65,6 +65,11 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.sxhkd" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
xdg.configFile."sxhkd/sxhkdrc".text = concatStringsSep "\n" [
|
xdg.configFile."sxhkd/sxhkdrc".text = concatStringsSep "\n" [
|
||||||
|
|
|
@ -29,6 +29,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.taskwarrior-sync" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.taskwarrior-sync = {
|
systemd.user.services.taskwarrior-sync = {
|
||||||
Unit = { Description = "Taskwarrior sync"; };
|
Unit = { Description = "Taskwarrior sync"; };
|
||||||
Service = {
|
Service = {
|
||||||
|
|
|
@ -37,6 +37,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.unclutter" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.unclutter = {
|
systemd.user.services.unclutter = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "unclutter";
|
Description = "unclutter";
|
||||||
|
|
|
@ -93,6 +93,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.unison" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services = makeDefs (name: pairCfg: {
|
systemd.user.services = makeDefs (name: pairCfg: {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Unison pair sync (${name})";
|
Description = "Unison pair sync (${name})";
|
||||||
|
|
|
@ -45,7 +45,13 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xsession.windowManager.awesome" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ awesome ];
|
home.packages = [ awesome ];
|
||||||
|
|
||||||
xsession.windowManager.command = "${awesome}/bin/awesome "
|
xsession.windowManager.command = "${awesome}/bin/awesome "
|
||||||
+ optionalString cfg.noArgb "--no-argb " + makeSearchPath cfg.luaModules;
|
+ optionalString cfg.noArgb "--no-argb " + makeSearchPath cfg.luaModules;
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,6 +42,11 @@ in {
|
||||||
options = import ./options.nix { inherit pkgs lib; };
|
options = import ./options.nix { inherit pkgs lib; };
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xsession.windowManager.bspwm" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
xdg.configFile."bspwm/bspwmrc".source = pkgs.writeShellScript "bspwmrc" ''
|
xdg.configFile."bspwm/bspwmrc".source = pkgs.writeShellScript "bspwmrc" ''
|
||||||
|
|
|
@ -241,8 +241,15 @@ in {
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
{
|
{
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xsession.windowManager.i3" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
xsession.windowManager.command = "${cfg.package}/bin/i3";
|
xsession.windowManager.command = "${cfg.package}/bin/i3";
|
||||||
|
|
||||||
xdg.configFile."i3/config" = {
|
xdg.configFile."i3/config" = {
|
||||||
source = checkI3Config;
|
source = checkI3Config;
|
||||||
onChange = ''
|
onChange = ''
|
||||||
|
|
|
@ -427,8 +427,14 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
{
|
{
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "wayland.windowManager.sway" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = optional (cfg.package != null) cfg.package
|
home.packages = optional (cfg.package != null) cfg.package
|
||||||
++ optional cfg.xwayland pkgs.xwayland;
|
++ optional cfg.xwayland pkgs.xwayland;
|
||||||
|
|
||||||
xdg.configFile."sway/config" = {
|
xdg.configFile."sway/config" = {
|
||||||
source = configFile;
|
source = configFile;
|
||||||
onChange = ''
|
onChange = ''
|
||||||
|
@ -439,6 +445,7 @@ in {
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.targets.sway-session = mkIf cfg.systemdIntegration {
|
systemd.user.targets.sway-session = mkIf cfg.systemdIntegration {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "sway compositor session";
|
Description = "sway compositor session";
|
||||||
|
|
|
@ -137,10 +137,23 @@ in {
|
||||||
}/bin/xmonad-${pkgs.hostPlatform.system}";
|
}/bin/xmonad-${pkgs.hostPlatform.system}";
|
||||||
|
|
||||||
in mkIf cfg.enable (mkMerge [
|
in mkIf cfg.enable (mkMerge [
|
||||||
{ home.packages = [ (lowPrio xmonad) ]; }
|
{
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xsession.windowManager.xmonad" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = [ (lowPrio xmonad) ];
|
||||||
|
|
||||||
|
home.file = mapAttrs' (name: value:
|
||||||
|
attrsets.nameValuePair (".xmonad/lib/" + name) { source = value; })
|
||||||
|
cfg.libFiles;
|
||||||
|
}
|
||||||
|
|
||||||
(mkIf (cfg.config == null) {
|
(mkIf (cfg.config == null) {
|
||||||
xsession.windowManager.command = "${xmonad}/bin/xmonad";
|
xsession.windowManager.command = "${xmonad}/bin/xmonad";
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf (cfg.config != null) {
|
(mkIf (cfg.config != null) {
|
||||||
xsession.windowManager.command = xmonadBin;
|
xsession.windowManager.command = xmonadBin;
|
||||||
home.file.".xmonad/xmonad.hs".source = cfg.config;
|
home.file.".xmonad/xmonad.hs".source = cfg.config;
|
||||||
|
@ -156,10 +169,5 @@ in {
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
{
|
|
||||||
home.file = mapAttrs' (name: value:
|
|
||||||
attrsets.nameValuePair (".xmonad/lib/" + name) { source = value; })
|
|
||||||
cfg.libFiles;
|
|
||||||
}
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.wlsunset" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.wlsunset = {
|
systemd.user.services.wlsunset = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Day/night gamma adjustments for Wayland compositors.";
|
Description = "Day/night gamma adjustments for Wayland compositors.";
|
||||||
|
|
|
@ -53,6 +53,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.xcape" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.xcape = {
|
systemd.user.services.xcape = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "xcape";
|
Description = "xcape";
|
||||||
|
|
|
@ -26,6 +26,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.xembed-sni-proxy" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.xembed-sni-proxy = {
|
systemd.user.services.xembed-sni-proxy = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "XEmbed SNI Proxy";
|
Description = "XEmbed SNI Proxy";
|
||||||
|
|
|
@ -132,6 +132,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.xidlehook" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.xidlehook = {
|
systemd.user.services.xidlehook = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "xidlehook service";
|
Description = "xidlehook service";
|
||||||
|
|
|
@ -29,6 +29,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.xscreensaver" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
# To make the xscreensaver-command tool available.
|
# To make the xscreensaver-command tool available.
|
||||||
home.packages = [ pkgs.xscreensaver ];
|
home.packages = [ pkgs.xscreensaver ];
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.xsettingsd" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
systemd.user.services.xsettingsd = {
|
systemd.user.services.xsettingsd = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "xsettingsd";
|
Description = "xsettingsd";
|
||||||
|
|
|
@ -148,6 +148,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(lib.hm.assertions.assertPlatform "services.xsuspender" pkgs
|
||||||
|
lib.platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
services.xsuspender.iniContent = let
|
services.xsuspender.iniContent = let
|
||||||
mkSection = values:
|
mkSection = values:
|
||||||
filterAttrs (_: v: v != null) {
|
filterAttrs (_: v: v != null) {
|
||||||
|
|
|
@ -43,6 +43,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (activationCmds != [ ]) {
|
config = mkIf (activationCmds != [ ]) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "targets.darwin.defaults" pkgs
|
||||||
|
platforms.darwin)
|
||||||
|
];
|
||||||
|
|
||||||
home.activation.setDarwinDefaults = hm.dag.entryAfter [ "writeBoundary" ] ''
|
home.activation.setDarwinDefaults = hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
$VERBOSE_ECHO "Configuring macOS user defaults"
|
$VERBOSE_ECHO "Configuring macOS user defaults"
|
||||||
${concatStringsSep "\n" activationCmds}
|
${concatStringsSep "\n" activationCmds}
|
||||||
|
|
|
@ -12,16 +12,18 @@ let
|
||||||
fonts = "${fontsEnv}/share/fonts";
|
fonts = "${fontsEnv}/share/fonts";
|
||||||
in {
|
in {
|
||||||
# macOS won't recognize symlinked fonts
|
# macOS won't recognize symlinked fonts
|
||||||
config.home.activation.copyFonts = hm.dag.entryAfter [ "writeBoundary" ] ''
|
config = mkIf pkgs.hostPlatform.isDarwin {
|
||||||
copyFonts() {
|
home.activation.copyFonts = hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
rm -rf ${homeDir}/Library/Fonts/HomeManager || :
|
copyFonts() {
|
||||||
|
rm -rf ${homeDir}/Library/Fonts/HomeManager || :
|
||||||
|
|
||||||
local f
|
local f
|
||||||
find -L "${fonts}" -type f -printf '%P\0' | while IFS= read -rd "" f; do
|
find -L "${fonts}" -type f -printf '%P\0' | while IFS= read -rd "" f; do
|
||||||
$DRY_RUN_CMD install $VERBOSE_ARG -Dm644 -T \
|
$DRY_RUN_CMD install $VERBOSE_ARG -Dm644 -T \
|
||||||
"${fonts}/$f" "${homeDir}/Library/Fonts/HomeManager/$f"
|
"${fonts}/$f" "${homeDir}/Library/Fonts/HomeManager/$f"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
copyFonts
|
copyFonts
|
||||||
'';
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.keybindings != { }) {
|
config = mkIf (cfg.keybindings != { }) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "targets.darwin.keybindings" pkgs
|
||||||
|
platforms.darwin)
|
||||||
|
];
|
||||||
|
|
||||||
# NOTE: just copy the files because symlinks won't be recognized by macOS
|
# NOTE: just copy the files because symlinks won't be recognized by macOS
|
||||||
home.activation.setCocoaKeybindings =
|
home.activation.setCocoaKeybindings =
|
||||||
hm.dag.entryAfter [ "writeBoundary" ] ''
|
hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
|
|
|
@ -20,6 +20,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.search != null) {
|
config = mkIf (cfg.search != null) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "targets.darwin.search" pkgs
|
||||||
|
platforms.darwin)
|
||||||
|
];
|
||||||
|
|
||||||
targets.darwin.defaults = {
|
targets.darwin.defaults = {
|
||||||
NSGlobalDomain.NSPreferredWebServices = {
|
NSGlobalDomain.NSPreferredWebServices = {
|
||||||
NSWebServicesProviderWebSearch = {
|
NSWebServicesProviderWebSearch = {
|
||||||
|
|
|
@ -27,6 +27,10 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "targets.genericLinux" pkgs platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
xdg.systemDirs.data = [
|
xdg.systemDirs.data = [
|
||||||
# Nix profiles
|
# Nix profiles
|
||||||
"\${NIX_STATE_DIR:-/nix/var/nix}/profiles/default/share"
|
"\${NIX_STATE_DIR:-/nix/var/nix}/profiles/default/share"
|
||||||
|
|
|
@ -55,6 +55,10 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg != null) {
|
config = mkIf (cfg != null) {
|
||||||
|
assertions = [
|
||||||
|
(hm.assertions.assertPlatform "xsession.pointerCursor" pkgs
|
||||||
|
platforms.linux)
|
||||||
|
];
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,9 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions =
|
||||||
|
[ (hm.assertions.assertPlatform "xsession" pkgs platforms.linux) ];
|
||||||
|
|
||||||
xsession.importedVariables = [
|
xsession.importedVariables = [
|
||||||
"DBUS_SESSION_BUS_ADDRESS"
|
"DBUS_SESSION_BUS_ADDRESS"
|
||||||
"DISPLAY"
|
"DISPLAY"
|
||||||
|
|
Loading…
Reference in a new issue