502 Commits

Author SHA1 Message Date
cinereal
fb6a0c6d39 modules: add modular services support
Adds `home.services`, an attribute set of nixpkgs
[modular services](https://nixos.org/manual/nixos/unstable/#modular-services)
sourced from `<nixpkgs/lib/services/lib.nix>`. Each service exposes
`process.argv` and the upstream NixOS-style systemd schema
(`systemd.lib`, `systemd.mainExecStart`, `systemd.service`,
`systemd.services`, `systemd.sockets`) by re-exporting
`nixos/modules/system/service/systemd/service.nix`. Service modules
shipped with `_class = "service"` (e.g.
`pkgs.<name>.passthru.services.default`) drop in unchanged --
service portability across module systems is the point of modular
services.

Lifted units are evaluated and translated from NixOS-style attrs
(`wantedBy`, `serviceConfig`, `unitConfig`, `environment`, ...) into
the section-based INI shape (`{ Unit; Service; Install; }`) that
home-manager's `systemd.user.{services,sockets}` consumes; only the
common keys are mapped, uncommon options remain reachable via
`unitConfig` / `serviceConfig` / `socketConfig`. Sub-services and
their units are dashed under the parent service name;
`process.argv` becomes the default `ExecStart` for the service's
primary unit, which defaults to `WantedBy=default.target`.

Mirrors the surface of nixpkgs' portable systemd module (services +
sockets only); other unit kinds home-manager supports natively
(timers etc.) are intentionally not modeled until upstream grows
them.

Each service's `configData.<name>` entries are materialized at
`$XDG_CONFIG_HOME/system-services/<service-prefix>/<name>` (mirroring
how `nixos/modules/system/service/systemd/{config-data-path,system}.nix`
lifts `configData` to `environment.etc`), with the absolute path
injected back into `configData.<name>.path` so the service can refer
to its files at a stable location.

Includes nmt tests covering: a basic `process.argv`-only service, a
service with a `configData` entry, and importing
`pkgs.ghostunnel.passthru.services.default` to assert the lifted user
unit contains the expected ExecStart flags and `LoadCredential`
entries.
2026-05-04 17:22:16 +02:00
Benedikt Rips
8ec54491cd sshAuthSock: fix naming scheme 2026-04-04 22:28:41 -05:00
Benedikt Rips
a61b22e323 ssh_auth_sock: init module
`$SSH_AUTH_SOCK` must not be set unconditionally through
'home.sessionVariables' since its value needs to be preserved if it
stems from a forwarded SSH agent. Hence, this commit establishes a
centralized, internal 'ssh_auth_sock.initialization' option for setting
`$SSH_AUTH_SOCK`. It checks whether its value has to be preserved and
injects the initialization code into the proper
'programs.(bash|fish|nushell|zsh).*' options.
2026-04-03 21:15:34 -05:00
mikaeladev
61463d50fc qt: add kvantum options 2026-03-24 08:04:04 -05:00
Eman Resu
44931fdc5d modules: add minimal entrypoint to only enable core modules 2025-11-22 21:50:04 -06:00
Jure Varlec
066874efb5 nixgl: move under targets.genericLinux 2025-11-09 09:02:58 -06:00
Austin Horstman
3f07ce05c3 deprecations: add deprecations/removal module
Add a module for consolidating the module level deprecations in an
easier to spot location.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-10-05 19:36:44 -05:00
Austin Horstman
06e268d66b services/barrier: drop module
Upstream package removed and unmaintained project. Recommended to
replace with maintained alternatives such as `deskflow` and `input-leap`

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-10-05 14:19:07 -05:00
Austin Horstman
9b6e609a6e octant: remove module
Package removed from nixpkgs, project repository was archived two years
ago and no longer maintained.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-09-22 13:37:04 +02:00
Gaetan Lepage
e81d71d53a nix-remote-build: add module 2025-09-19 08:33:40 -05:00
Austin Horstman
9eab59f3e7 thefuck: remove module
Program removed upstream, let module stay around for a bit in case it came back.
We can re-introduce if the situation changes, but we have an alternative.
2025-09-11 23:09:47 -05:00
Robert Helgesson
ed1eeeeee6 xdg-terminal-exec: make sure the module is imported 2025-07-27 07:02:11 +02:00
Austin Horstman
b4752b0eda treewide: format with latest stable formatter
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-07-23 10:27:52 -05:00
Austin Horstman
bda9deb791 modules: allow root level nix files
More flexibility in allowing root level files to import, for those that
don't need nesting.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-06-23 16:20:26 -05:00
Austin Horstman
4fca600cb1 treewide: implement auto importing for modules
Reduce maintenance burden and increase efficiency by automatically
importing modules following a specific convention.

Co-authored-by: awwpotato <awwpotato@voidq.com>
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-06-22 23:58:37 -05:00
Devin Droddy
0215073a70 ashell: add module 2025-06-12 20:49:28 -05:00
Thierry Delafontaine
427c96044f codex: init 2025-06-09 22:33:16 -05:00
Rishi Vora
e9763eb195 niriswitcher: add module (#7246) 2025-06-09 22:30:27 -05:00
Egor Konovalov
35e1f5a7c2 mc: add midnight commander module (#7225) 2025-06-09 09:25:11 -05:00
Aguirre Matteo
2835e8ba0a nyxt: add module (#7232) 2025-06-08 11:27:00 -05:00
Aguirre Matteo
bd8946c773 lazysql: add module (#7231) 2025-06-07 23:51:28 -05:00
Keenan Weaver
bbb31d8352 ludusavi: fix import (#7205) 2025-06-05 21:45:14 -05:00
jaredmontoya
86b95fc1ed aichat: init (#7207)
aichat is an all in one CLI tool for AI interactions.
On first run it prompts you to create a config so I made a home manager module to do this declaratively.
2025-06-04 13:35:39 -05:00
Alex Hamilton
d36ac1f0db hwatch: add module (#7158) 2025-05-30 10:16:26 -05:00
MunsMan
13ed57aaa6 meli: adding the meli email client (#7111)
Meli email client integrated into the accounts.email.accouts settings.
2025-05-28 22:30:10 -05:00
repparw
ad22169efa jellyfin-mpv-shim: add module (#7129)
Init of service jellyfin-mpv-shim, emulating plex-mpv-shim already provided.
2025-05-27 19:10:18 -05:00
Austin Horstman
5dc3bc3368 sketchybar: add module
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-05-24 19:54:43 -05:00
Nikolaos Karaolidis
c3d48a17aa obsidian: add module (#6487)
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-05-24 18:55:23 -05:00
Sefa Eyeoglu
cf9ff6d993 wayvnc: init (#7123)
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2025-05-24 18:38:54 -05:00
awwpotato
3f591550a9 formatter: remove script, add treefmt.toml + keep-sorted (#7056)
currently ./format does a bunch of stuff with git that was only necessary for nixfmt but not nixfmt-tree, so I deleted it (just use treefmt command directly instead). I also added keep sorted to keep the really long module lists sorted (already used in nixpkgs).
2025-05-20 12:42:51 -05:00
awwpotato
74d31e1165 ptyxis: init module (#7075) 2025-05-16 15:29:26 -05:00
Nick DeGroot
a1a72d18ee pgcli: init (#7072) 2025-05-15 22:50:09 -05:00
Rosario Pulella
ad1e8bb782 dbus: Create with pacakges options (#7064)
This adds a module for dbus with only one option, `packages`.
The `dbus.packages` options allows users to specify packages to have
their dbus service files (from `/share/dbus-1/services`) linked to the
users dbus services directory (`$XDG_DATA_HOME/dbus-1/services/`),
effectively enabling the services.
2025-05-15 12:59:12 -05:00
awwpotato
8d832ddfda foliate: init (#7049) 2025-05-13 12:05:32 -05:00
Aguirre Matteo
910292fe34 halloy: add module (#7034) 2025-05-11 18:52:09 -05:00
Alex Hamilton
ecb2162422 numbat: add module
Numbat is a scientific calculator with full support for physical units.
2025-05-11 18:51:14 -05:00
Aguirre Matteo
8d2ee39915 waveterm: add module (#7004) 2025-05-09 08:17:40 -05:00
B1kku
a51598236f lutris: add module (#6964)
Add any number of wine packages
    Add any number of proton packages
    Link runners directly from nix instead of using lutris.
    Specify the steam package lutris should use.
    Extra packages passed to lutris (mainly since it's often missing essential things, such as umu-launcher)
2025-05-08 13:01:35 -05:00
pancho horrillo
3c59c5132b wayprompt: init module (#7002)
A module for configuring Wayprompt¹, a password-prompter for
Wayland, that can be used as a pinentry program for GnuPG (and more).

Provides a 'programs.wayprompt.settings', following RFC 42².

¹: https://git.sr.ht/~leon_plickat/wayprompt
²: https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md
2025-05-08 10:45:24 -05:00
pancho horrillo
50894120e8 modules/modules.nix: drop duplicate entry (#7000)
This partially reverts a0461b67ff,
where a duplicate entry for `./programs/vim.nix` was erroneously added.
2025-05-08 06:23:20 -05:00
Aguirre Matteo
8a318641ac sway-easyfocus: add module (#6976) 2025-05-04 21:46:28 -05:00
Aguirre Matteo
621986fed3 i3bar-river: add module (#6967) 2025-05-03 19:12:02 -05:00
Aguirre Matteo
123297c57e onagre: add module (#6958) 2025-05-02 22:09:45 -05:00
Aguirre Matteo
d6b0c05457 visidata: add module (#6956) 2025-05-02 11:14:19 -05:00
Aguirre Matteo
f15be4feb6 clipcat: add module (#6946) 2025-05-02 08:22:35 -05:00
Aguirre Matteo
669e813c75 element-desktop: add module (#6935) 2025-05-02 08:17:24 -05:00
Aguirre Matteo
d0d9d0a145 mpvpaper: add module (#6926)
Provides a module for configuring mpvpaper a video wallpaper program for wlroots based wayland compositors. It provides options for setting the 'pauselist' and 'stoplist'.
2025-04-28 11:49:19 -05:00
Aguirre Matteo
69c60b035e kickoff: add module (#6918) 2025-04-28 09:47:38 -05:00
Aguirre Matteo
50bb714a82 rmpc: add module (#6910) 2025-04-27 09:32:40 -05:00
Aguirre Matteo
2f5819a962 onedrive: add module (#6907) 2025-04-26 16:40:10 -05:00