xdg-autostart: add module

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
Sefa Eyeoglu 2024-04-10 21:05:34 +02:00
parent 90ae324e2c
commit fbb428117f
No known key found for this signature in database
GPG key ID: E13DFD4B47127951
4 changed files with 62 additions and 0 deletions

View file

@ -0,0 +1,40 @@
{ config, lib, ... }:
let
inherit (builtins) baseNameOf listToAttrs map unsafeDiscardStringContext;
inherit (lib) literalExpression mkEnableOption mkIf mkOption types;
cfg = config.xdg.autostart;
/* "/nix/store/x-foo/application.desktop" -> {
name = "autostart/application.desktop";
value = { source = "/nix/store/x-foo/application.desktop"; };
}
*/
mapDesktopEntry = entry: {
name = "autostart/${unsafeDiscardStringContext (baseNameOf entry)}";
value.source = entry;
};
in {
meta.maintainers = with lib.maintainers; [ Scrumplex ];
options.xdg.autostart = {
enable = mkEnableOption "creation of XDG autostart entries";
entries = mkOption {
type = with types; listOf path;
description = ''
Paths to desktop files that should be linked to `XDG_CONFIG_HOME/autostart`
'';
default = [ ];
example = literalExpression ''
[
"''${pkgs.evolution}/share/applications/org.gnome.Evolution.desktop"
]
'';
};
};
config = mkIf (cfg.enable && cfg.entries != [ ]) {
xdg.configFile = listToAttrs (map mapDesktopEntry cfg.entries);
};
}

View file

@ -41,6 +41,7 @@ let
./misc/uninstall.nix
./misc/version.nix
./misc/vte.nix
./misc/xdg-autostart.nix
./misc/xdg-desktop-entries.nix
./misc/xdg-mime-apps.nix
./misc/xdg-mime.nix

View file

@ -0,0 +1,20 @@
{ pkgs, ... }: {
config = {
xdg.autostart = {
enable = true;
entries = [
"${pkgs.evolution}/share/applications/org.gnome.Evolution.desktop"
"${pkgs.tdesktop}/share/applications/org.telegram.desktop.desktop"
];
};
nmt.script = ''
assertFileExists home-files/.config/autostart/org.gnome.Evolution.desktop
assertFileContent home-files/.config/autostart/org.gnome.Evolution.desktop \
${pkgs.evolution}/share/applications/org.gnome.Evolution.desktop
assertFileExists home-files/.config/autostart/org.telegram.desktop.desktop
assertFileContent home-files/.config/autostart/org.telegram.desktop.desktop \
${pkgs.tdesktop}/share/applications/org.telegram.desktop.desktop
'';
};
}

View file

@ -6,4 +6,5 @@
xdg-default-locations = ./default-locations.nix;
xdg-user-dirs-null = ./user-dirs-null.nix;
xdg-portal = ./portal.nix;
xdg-autostart = ./autostart.nix;
}