mirror of
https://github.com/nix-community/home-manager
synced 2024-08-23 04:26:30 +02:00
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
55 lines
1.7 KiB
Nix
55 lines
1.7 KiB
Nix
{ config, lib, pkgs, ... }:
|
||
|
||
with lib;
|
||
|
||
let
|
||
|
||
cfg = config.systemd.user.tmpfiles;
|
||
|
||
in {
|
||
meta.maintainers = [ maintainers.dawidsowa ];
|
||
|
||
options.systemd.user.tmpfiles.rules = mkOption {
|
||
type = types.listOf types.str;
|
||
default = [ ];
|
||
example = [ "L /home/user/Documents - - - - /mnt/data/Documents" ];
|
||
description = ''
|
||
Rules for creating and cleaning up temporary files
|
||
automatically. See
|
||
<citerefentry>
|
||
<refentrytitle>tmpfiles.d</refentrytitle>
|
||
<manvolnum>5</manvolnum>
|
||
</citerefentry>
|
||
for the exact format.
|
||
'';
|
||
};
|
||
|
||
config = mkIf (cfg.rules != [ ]) {
|
||
assertions = [
|
||
(hm.assertions.assertPlatform "systemd.user.tmpfiles" pkgs
|
||
platforms.linux)
|
||
];
|
||
|
||
xdg = {
|
||
dataFile."user-tmpfiles.d/home-manager.conf" = {
|
||
text = ''
|
||
# This file is created automatically and should not be modified.
|
||
# Please change the option ‘systemd.user.tmpfiles.rules’ instead.
|
||
${concatStringsSep "\n" cfg.rules}
|
||
'';
|
||
onChange = "${pkgs.systemd}/bin/systemd-tmpfiles --user --create";
|
||
};
|
||
configFile = {
|
||
"systemd/user/basic.target.wants/systemd-tmpfiles-setup.service".source =
|
||
"${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-setup.service";
|
||
"systemd/user/systemd-tmpfiles-setup.service".source =
|
||
"${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-setup.service";
|
||
"systemd/user/timers.target.wants/systemd-tmpfiles-clean.timer".source =
|
||
"${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-clean.timer";
|
||
"systemd/user/systemd-tmpfiles-clean.service".source =
|
||
"${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-clean.service";
|
||
};
|
||
};
|
||
};
|
||
}
|