Compare commits

...
Author SHA1 Message Date
home-manager-ci[bot] 39bd243133 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/bcd464ccd2a1a7cd09aa2f8d4ffba83b761b1d0e?narHash=sha256-d3Yx83vSrN%2B2z/loBh4mJpyRqr9aAJqlke4TkpFmRJA%3D' (2026-04-01)
  → 'github:NixOS/nixpkgs/54170c54449ea4d6725efd30d719c5e505f1c10e?narHash=sha256-t%2BHZK42pB6N%2Bi5RGbuy7Xluez/VvWbembBdvzsc23Ss%3D' (2026-04-10)
2026-04-12 05:47:30 +00:00
home-manager-ci[bot]andRobert Helgesson 0d02ec1d0a flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/107cba9eb4a8d8c9f8e9e61266d78d340867913a?narHash=sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw%3D' (2026-03-29)
  → 'github:NixOS/nixpkgs/bcd464ccd2a1a7cd09aa2f8d4ffba83b761b1d0e?narHash=sha256-d3Yx83vSrN%2B2z/loBh4mJpyRqr9aAJqlke4TkpFmRJA%3D' (2026-04-01)
2026-04-05 23:43:31 +02:00
home-manager-ci[bot]andAustin Horstman 49ca96b271 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/1073dad219cb244572b74da2b20c7fe39cb3fa9e?narHash=sha256-tFwzTI0DdDzovdE9%2BRas6CUss0yn8P9XV4Ja6RjA%2BnU%3D' (2026-03-24)
  → 'github:NixOS/nixpkgs/107cba9eb4a8d8c9f8e9e61266d78d340867913a?narHash=sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw%3D' (2026-03-29)
2026-04-01 16:02:13 -05:00
home-manager-ci[bot]andAustin Horstman 7afd8cebb9 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4590696c8693fea477850fe379a01544293ca4e2?narHash=sha256-4XfMXU0DjN83o6HWZoKG9PegCvKvIhNUnRUI19vzTcQ%3D' (2026-03-23)
  → 'github:NixOS/nixpkgs/1073dad219cb244572b74da2b20c7fe39cb3fa9e?narHash=sha256-tFwzTI0DdDzovdE9%2BRas6CUss0yn8P9XV4Ja6RjA%2BnU%3D' (2026-03-24)
2026-03-30 08:03:50 -05:00
home-manager-ci[bot]andAustin Horstman a0bb0d1151 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/812b3986fd1568f7a858f97fcf425ad996ba7d25?narHash=sha256-NV/J%2BtTER0P5iJhUDL/8HO5MDjDceLQPRUYgdmy5wXw%3D' (2026-03-20)
  → 'github:NixOS/nixpkgs/4590696c8693fea477850fe379a01544293ca4e2?narHash=sha256-4XfMXU0DjN83o6HWZoKG9PegCvKvIhNUnRUI19vzTcQ%3D' (2026-03-23)
2026-03-26 16:03:49 -05:00
home-manager-ci[bot]andAustin Horstman cf9686ba26 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/fea3b367d61c1a6592bc47c72f40a9f3e6a53e96?narHash=sha256-GNU%2BooRmrHLfjlMsKdn0prEKVa0faVanm0jrgu1J/gY%3D' (2026-03-18)
  → 'github:NixOS/nixpkgs/812b3986fd1568f7a858f97fcf425ad996ba7d25?narHash=sha256-NV/J%2BtTER0P5iJhUDL/8HO5MDjDceLQPRUYgdmy5wXw%3D' (2026-03-20)
2026-03-23 09:03:08 -05:00
dependabot[bot]andAustin Horstman aaecd47a49 ci: bump cachix/cachix-action from 16 to 17
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 16 to 17.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](https://github.com/cachix/cachix-action/compare/v16...v17)

---
updated-dependencies:
- dependency-name: cachix/cachix-action
  dependency-version: '17'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 09:02:41 -05:00
home-manager-ci[bot]andAustin Horstman a91b3ea73a flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3e20095fe3c6cbb1ddcef89b26969a69a1570776?narHash=sha256-SEzUWw2Rf5Ki3bcM26nSKgbeoqi2uYy8IHVBqOKjX3w%3D' (2026-03-13)
  → 'github:NixOS/nixpkgs/fea3b367d61c1a6592bc47c72f40a9f3e6a53e96?narHash=sha256-GNU%2BooRmrHLfjlMsKdn0prEKVa0faVanm0jrgu1J/gY%3D' (2026-03-18)

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-19 18:32:24 -05:00
Austin Horstman 0d8ecc86c5 lib: extend lib to include hm maintainers
Upstream change is validating all maintainers against lib.maintainers,
need to merge our maintainer list in to pass doc building.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
(cherry picked from commit c4ab19c919)
2026-03-19 18:28:19 -05:00
stuebinmandRobert Helgesson 084e7e6df9 treewide: remove unneeded string escapes
(this is to reduce warnings produced by Lix)
2026-03-19 21:54:07 +01:00
dependabot[bot]andMatthieu Coudron 0759e0e137 ci: bump dorny/paths-filter from 3 to 4
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 3 to 4.
- [Release notes](https://github.com/dorny/paths-filter/releases)
- [Changelog](https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dorny/paths-filter/compare/v3...v4)

---
updated-dependencies:
- dependency-name: dorny/paths-filter
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 18:24:05 +01:00
home-manager-ci[bot]andMatthieu Coudron 4326ce5373 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/44bae273f9f82d480273bab26f5c50de3724f52f?narHash=sha256-vMrm7Pk2hjBRPnCSjhq1pH0bg350Z%2BpXhqZ9ICiqqCs%3D' (2026-03-09)
  → 'github:NixOS/nixpkgs/3e20095fe3c6cbb1ddcef89b26969a69a1570776?narHash=sha256-SEzUWw2Rf5Ki3bcM26nSKgbeoqi2uYy8IHVBqOKjX3w%3D' (2026-03-13)
2026-03-16 14:13:28 +01:00
dependabot[bot]andMatthieu Coudron 5e8ae50c5c ci: bump actions/create-github-app-token from 2 to 3
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2 to 3.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Commits](https://github.com/actions/create-github-app-token/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 14:12:29 +01:00
Ondřej KvapilandAustin Horstman 1f8f9e0012 difftastic: allow repeating options
The type was overly restrictive, see
https://github.com/nix-community/home-manager/pull/7947/changes#r2858054388

(cherry picked from commit f3a30376bb)
2026-03-15 15:46:38 -05:00
home-manager-ci[bot]andAustin Horstman 5c0f63f8d5 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/71caefce12ba78d84fe618cf61644dce01cf3a96?narHash=sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw%3D' (2026-03-06)
  → 'github:NixOS/nixpkgs/44bae273f9f82d480273bab26f5c50de3724f52f?narHash=sha256-vMrm7Pk2hjBRPnCSjhq1pH0bg350Z%2BpXhqZ9ICiqqCs%3D' (2026-03-09)
2026-03-11 16:28:08 -05:00
home-manager-ci[bot]andAustin Horstman 8f736f0071 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c581273b8d5bdf1c6ce7e0a54da9841e6a763913?narHash=sha256-ywy9troNEfpgh0Ee%2BzaV1UTgU8kYBVKtvPSxh6clYGU%3D' (2026-03-02)
  → 'github:NixOS/nixpkgs/71caefce12ba78d84fe618cf61644dce01cf3a96?narHash=sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw%3D' (2026-03-06)
2026-03-08 10:54:40 -05:00
home-manager-ci[bot]andAustin Horstman 080657a041 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/1267bb4920d0fc06ea916734c11b0bf004bbe17e?narHash=sha256-7DaQVv4R97cii/Qdfy4tmDZMB2xxtyIvNGSwXBBhSmo%3D' (2026-02-25)
  → 'github:NixOS/nixpkgs/c581273b8d5bdf1c6ce7e0a54da9841e6a763913?narHash=sha256-ywy9troNEfpgh0Ee%2BzaV1UTgU8kYBVKtvPSxh6clYGU%3D' (2026-03-02)
2026-03-04 08:04:18 -06:00
home-manager-ci[bot]andAustin Horstman a07a44a839 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e764fc9a405871f1f6ca3d1394fb422e0a0c3951?narHash=sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk%3D' (2026-02-24)
  → 'github:NixOS/nixpkgs/1267bb4920d0fc06ea916734c11b0bf004bbe17e?narHash=sha256-7DaQVv4R97cii/Qdfy4tmDZMB2xxtyIvNGSwXBBhSmo%3D' (2026-02-25)
2026-03-01 09:48:45 -06:00
Nick DeGrootandAustin Horstman 9b9142b5fe chromium: fix null package
(cherry picked from commit 7b34e428f3)
2026-02-28 12:22:21 -06:00
home-manager-ci[bot]andRobert Helgesson 36e38ca0d9 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c217913993d6c6f6805c3b1a3bda5e639adfde6d?narHash=sha256-D1PA3xQv/s4W3lnR9yJFSld8UOLr0a/cBWMQMXS%2B1Qg%3D' (2026-02-20)
  → 'github:NixOS/nixpkgs/e764fc9a405871f1f6ca3d1394fb422e0a0c3951?narHash=sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk%3D' (2026-02-24)
2026-02-25 12:52:20 +01:00
home-manager-ci[bot]andRobert Helgesson cb6c151f5c flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e576e3c9cf9bad747afcddd9e34f51d18c855b4e?narHash=sha256-tlFqNG/uzz2%2B%2BaAmn4v8J0vAkV3z7XngeIIB3rM3650%3D' (2026-02-03)
  → 'github:NixOS/nixpkgs/c217913993d6c6f6805c3b1a3bda5e639adfde6d?narHash=sha256-D1PA3xQv/s4W3lnR9yJFSld8UOLr0a/cBWMQMXS%2B1Qg%3D' (2026-02-20)
2026-02-22 08:17:18 +01:00
Austin Horstman 0d782ee42c treewide: nix fmt
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-02-04 21:00:04 -06:00
Austin Horstman 451f6638e5 darwinScrublist: add jrnl
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-02-04 21:00:04 -06:00
home-manager-ci[bot]andAustin Horstman b85dfdd81c flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d351d0653aeb7877273920cd3e823994e7579b0b?narHash=sha256-r4GVX%2BFToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE%3D' (2026-01-07)
  → 'github:NixOS/nixpkgs/e576e3c9cf9bad747afcddd9e34f51d18c855b4e?narHash=sha256-tlFqNG/uzz2%2B%2BaAmn4v8J0vAkV3z7XngeIIB3rM3650%3D' (2026-02-03)
2026-02-04 21:00:04 -06:00
Wael NasreddineandGitHub 366d78c285 launchd: wait for /nix/store before starting agent (#8609) (#8661)
On Darwin, launchd may attempt to start agents before the Nix store is
mounted and available. This leads to failures when the agent's executable
or arguments reside in the Nix store.

This change wraps the agent's command in a shell script that uses
/bin/wait4path to ensure /nix/store is ready before executing the
original program. It also ensures that ProgramArguments are correctly
escaped and concatenated.

(cherry picked from commit eec72f1278)
2026-01-27 22:00:47 -08:00
Aguirre MatteoandAustin Horstman 75ed713570 rclone: change cache directory to $XDG_CACHE_HOME/rclone
(cherry picked from commit df7bac2b2b)
2026-01-20 16:47:15 -06:00
Jure VarlecandAustin Horstman 2a63d0e9d2 generic-linux-gpu: put systemd unit in lib/systemd
This is where unit files are expected to be, making GPU setup compatible
with things like selinux. Fixes #8438. The `resources/` directory was
kept because it is expected to be used in the future.

(cherry picked from commit a3ac4bb1f8)
2026-01-16 16:51:38 -06:00
Michael StrobelandAustin Horstman 82fb7dedaa sftpman: add missing options
- `authType` is missing the `authentication-agent` enum value
- `mountDestPath` is missing completely

(cherry picked from commit 3351348827)
2026-01-08 17:14:43 -05:00
home-manager-ci[bot]andAustin Horstman 8c8a16d413 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3c9db02515ef1d9b6b709fc60ba9a540957f661c?narHash=sha256-2GffSfQxe3sedHzK%2BsTKlYo/NTIAGzbFCIsNMUPAAnk%3D' (2026-01-05)
  → 'github:NixOS/nixpkgs/d351d0653aeb7877273920cd3e823994e7579b0b?narHash=sha256-r4GVX%2BFToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE%3D' (2026-01-07)
2026-01-08 00:37:08 -05:00
home-manager-ci[bot]andRobert Helgesson c08430923e flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/64049ca74d63e971b627b5f3178d95642e61cedd?narHash=sha256-yA/CuWyqm%2BAQo2ivGy6PlYrjZBQm7jfbe461%2B4HF2fo%3D' (2026-01-02)
  → 'github:NixOS/nixpkgs/3c9db02515ef1d9b6b709fc60ba9a540957f661c?narHash=sha256-2GffSfQxe3sedHzK%2BsTKlYo/NTIAGzbFCIsNMUPAAnk%3D' (2026-01-05)
2026-01-07 11:02:15 +01:00
Robert Helgesson 6bd04da47c gpg: update key hash in test
Fixes #8478

(cherry picked from commit a65c04965c)
2026-01-05 14:31:40 +01:00
home-manager-ci[bot]andRobert Helgesson 7a06e8a2f8 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/89dbf01df72eb5ebe3b24a86334b12c27d68016a?narHash=sha256-tzYsEzXEVa7op1LTnrLSiPGrcCY6948iD0EcNLWcmzo%3D' (2025-12-29)
  → 'github:NixOS/nixpkgs/64049ca74d63e971b627b5f3178d95642e61cedd?narHash=sha256-yA/CuWyqm%2BAQo2ivGy6PlYrjZBQm7jfbe461%2B4HF2fo%3D' (2026-01-02)
2026-01-04 09:21:38 +01:00
home-manager-ci[bot]andAustin Horstman d49d2543f0 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f560ccec6b1116b22e6ed15f4c510997d99d5852?narHash=sha256-BASnpCLodmgiVn0M1MU2Pqyoz0aHwar/0qLkp7CjvSQ%3D' (2025-12-26)
  → 'github:NixOS/nixpkgs/89dbf01df72eb5ebe3b24a86334b12c27d68016a?narHash=sha256-tzYsEzXEVa7op1LTnrLSiPGrcCY6948iD0EcNLWcmzo%3D' (2025-12-29)
2026-01-01 09:17:35 -06:00
Benedikt RipsandAustin Horstman 34578a2fdf ssh-agent: set $SSH_AUTH_SOCK in non-interactive shells
Since PR #8099, the module sets `$SSH_AUTH_SOCK` through shells' options
for interactive shell initialization instead of
`home.sessionVariablesExtra`. The replacement was not faithful, however,
since `home.sessionVariablesExtra` is sourced also in non-interactive
shells. With this commit, the shells' profile options (where
`home.sessionVariablesExtra` is sourced) are used to set
`$SSH_AUTH_SOCK`.

Fixes #8129.

(cherry picked from commit 89c9508bbe)
2025-12-29 10:00:57 -06:00
home-manager-ci[bot]andAustin Horstman e298a14801 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/76701a179d3a98b07653e2b0409847499b2a07d3?narHash=sha256-5G1NDO2PulBx1RoaA6U1YoUDX0qZslpPxv%2Bn5GX6Qto%3D' (2025-12-23)
  → 'github:NixOS/nixpkgs/f560ccec6b1116b22e6ed15f4c510997d99d5852?narHash=sha256-BASnpCLodmgiVn0M1MU2Pqyoz0aHwar/0qLkp7CjvSQ%3D' (2025-12-26)
2025-12-28 10:30:58 -06:00
home-manager-ci[bot]andAustin Horstman 0999ed8f96 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/b3aad468604d3e488d627c0b43984eb60e75e782?narHash=sha256-eplAP%2BrorKKd0gNjV3rA6%2B0WMzb1X1i16F5m5pASnjA%3D' (2025-12-20)
  → 'github:NixOS/nixpkgs/76701a179d3a98b07653e2b0409847499b2a07d3?narHash=sha256-5G1NDO2PulBx1RoaA6U1YoUDX0qZslpPxv%2Bn5GX6Qto%3D' (2025-12-23)
2025-12-23 23:24:21 -06:00
Austin Horstman aaf4650642 release/25.11: add darwin copy apps change
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
(cherry picked from commit 20728df08f)
2025-12-23 16:36:41 -06:00
Austin Horstman 6ef8697671 release/25.05: add git signing format change
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
(cherry picked from commit af3c24de76)
2025-12-23 16:36:41 -06:00
Austin Horstman 71c2a550e6 release/23.05: add swaylock stateVersion change
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
(cherry picked from commit 624c7e80fb)
2025-12-23 16:36:41 -06:00
home-manager-ci[bot]andAustin Horstman fdec8815a8 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c8cfcd6ccd422e41cc631a0b73ed4d5a925c393d?narHash=sha256-3iXM/zTqEskWtmZs3gqNiVtRTsEjYAedIaLL0mSBsrk%3D' (2025-12-15)
  → 'github:NixOS/nixpkgs/b3aad468604d3e488d627c0b43984eb60e75e782?narHash=sha256-eplAP%2BrorKKd0gNjV3rA6%2B0WMzb1X1i16F5m5pASnjA%3D' (2025-12-20)
2025-12-20 22:41:53 -06:00
home-manager-ci[bot]andAustin Horstman d3135ab747 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/09eb77e94fa25202af8f3e81ddc7353d9970ac1b?narHash=sha256-mSD5Ob7a%2BT2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo%3D' (2025-12-09)
  → 'github:NixOS/nixpkgs/c8cfcd6ccd422e41cc631a0b73ed4d5a925c393d?narHash=sha256-3iXM/zTqEskWtmZs3gqNiVtRTsEjYAedIaLL0mSBsrk%3D' (2025-12-15)
2025-12-17 07:57:42 -06:00
Viktor TitovandAustin Horstman 7df150f0d3 qt: added qt{5,6}ctSettings options (#8271)
Added qtctSettings option to qt module to make it possible to configure qt(5/6)ct declaratively.
2025-12-15 22:39:33 -06:00
dependabot[bot]andAustin Horstman af31796621 ci: bump korthout/backport-action from 3 to 4
Bumps [korthout/backport-action](https://github.com/korthout/backport-action) from 3 to 4.
- [Release notes](https://github.com/korthout/backport-action/releases)
- [Commits](https://github.com/korthout/backport-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: korthout/backport-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 22:38:43 -06:00
home-manager-ci[bot]andAustin Horstman 5960558067 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d9bc5c7dceb30d8d6fafa10aeb6aa8a48c218454?narHash=sha256-y7RPKl/jJ/KAP/VKLMghMgXTlvNIJMHKskl8/Uuar7o%3D' (2025-12-06)
  → 'github:NixOS/nixpkgs/09eb77e94fa25202af8f3e81ddc7353d9970ac1b?narHash=sha256-mSD5Ob7a%2BT2RNjvPvOA1dkJHGVrNVl8ZOrAwBjKBDQo%3D' (2025-12-09)
2025-12-15 22:13:55 -06:00
Victor EngmarkandAustin Horstman 90b62096f0 nixos: Don't "[a]ttempt to evaluate package pkgs.trash-cli"
Closes #8161.

(cherry picked from commit 784a83782c)
2025-12-12 23:52:24 -06:00
home-manager-ci[bot]andMatthieu Coudron 4477715265 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c97c47f2bac4fa59e2cbdeba289686ae615f8ed4?narHash=sha256-OtzF5wBvO0jgW1WW1rQU9cMGx7zuvkF7CAVJ1ypzkxA%3D' (2025-12-04)
  → 'github:NixOS/nixpkgs/d9bc5c7dceb30d8d6fafa10aeb6aa8a48c218454?narHash=sha256-y7RPKl/jJ/KAP/VKLMghMgXTlvNIJMHKskl8/Uuar7o%3D' (2025-12-06)
2025-12-10 17:29:31 +01:00
home-manager-ci[bot]andAustin Horstman 20561be440 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f?narHash=sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD%2B/cTUzzgVFoaHrkqY%3D' (2025-11-30)
  → 'github:NixOS/nixpkgs/c97c47f2bac4fa59e2cbdeba289686ae615f8ed4?narHash=sha256-OtzF5wBvO0jgW1WW1rQU9cMGx7zuvkF7CAVJ1ypzkxA%3D' (2025-12-04)
2025-12-07 23:15:03 -06:00
tsrk.andAustin Horstman f63d0fe9d8 thunderbird: fix aliases SMTP configuration not being listed as usable
Signed-off-by: tsrk. <tsrk@tsrk.me>
(cherry picked from commit d441981b20)
2025-12-04 10:34:05 -06:00
Andrew JefferyandMatthieu Coudron e1680d594a pimsync: Make storage names unique
This includes the calendar/contacts prefix in the storage name as well
as the pair name to ensure that if the same name is used for contacts
and calendar then it is correctly referenced.

(cherry picked from commit 43173abcb4)
2025-12-03 16:49:19 +01:00
home-manager-ci[bot]andAustin Horstman 3366918730 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9561691c9f450fad7c3526916e1c4f44be0d1192?narHash=sha256-CYbMp8hwuOf4umokSNp%2Bt1s4Hjd4vxXq4S5CD%2BxvgNs%3D' (2025-11-29)
  → 'github:NixOS/nixpkgs/8bb5646e0bed5dbd3ab08c7a7cc15b75ab4e1d0f?narHash=sha256-SqUuBFjhl/kpDiVaKLQBoD8TLD%2B/cTUzzgVFoaHrkqY%3D' (2025-11-30)
2025-12-02 22:41:12 -06:00
Anton MosichandAustin Horstman 7385f250cc pimsync: extend test to contacts
If I had added such a test right away, I would have encountered #8258
myself. I mistakenly believed the contact and calendar modules to be the
same.

(cherry picked from commit c3d1e5c65a)
2025-12-02 21:33:04 -06:00
Anton MosichandAustin Horstman 9ea0c94e00 accounts.contacts: fix eval error
You would encounter an eval error when a module (such as pimsync) would
try to access an attribute of `accounts.contacts.<name>.local`, since it
would default to `null`. The same problem was encountered in the
`accounts.calendar` module, and fixed in
2c157e22dc which has the same solution.

Closes #8258

Reported-by: redbeardymcgee
(cherry picked from commit bf003999ed)
2025-12-02 21:33:04 -06:00
dependabot[bot]andAustin Horstman f3902b5d87 ci: bump DeterminateSystems/update-flake-lock from 27 to 28
Bumps [DeterminateSystems/update-flake-lock](https://github.com/determinatesystems/update-flake-lock) from 27 to 28.
- [Release notes](https://github.com/determinatesystems/update-flake-lock/releases)
- [Commits](https://github.com/determinatesystems/update-flake-lock/compare/v27...v28)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-version: '28'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 12:22:16 -06:00
novenaryandAustin Horstman 44a3b79aad fish: ensure generated completions considered last
home-manager's generated completions shadow built-in completion scripts.
fish actually has logic to deal with this when the path ends with
/generated_completions, so let's take advantage of it.

Link: https://github.com/fish-shell/fish-shell/blob/47c773300a40adf66e59e83ca2492f87b7ccb57d/src/autoload.rs#L421-L424
(cherry picked from commit e4e25a8c31)
2025-12-01 12:21:54 -06:00
novenaryandAustin Horstman ffae9e1bca Revert "fish: avoid shadowing builtin completions"
This reverts commit 23f2ba7ae0.

(cherry picked from commit 13b089b586)
2025-12-01 12:21:54 -06:00
Jo²andAustin Horstman acd2931703 xsession: only require xdg autostart target if explicitely enabled (#8237)
This is a fix for PR #7108 that forcibly enables xdg-desktop-autostart
units, whether or not `config.xdg.autostart` is enabled.
Partially fixes #7708, there is still a risk for conflict if
`xdg.autostart` and `services.picom` are enabled.

(cherry picked from commit b1bb534c17)
2025-12-01 12:21:32 -06:00
Matt SturgeonandAustin Horstman 3fdd076e08 fish: avoid shadowing builtin completions
The fish shell comes with builtin completions. For example, git
completion supports context-aware completion of things like commit
hashes, branch names, sub-commands, etc.

Until fish 4.2, builtin completions were explicitly loaded from
`share/fish/completions`, however that is now deprecated and disabled.
In effect, this means generating manpage-based completion will shadow
and disable builtin completion.

Avoid that, by only generating completion when fish does not have
builtin support for the command.

(cherry picked from commit 23f2ba7ae0)
2025-11-30 15:00:51 -06:00
home-manager-ci[bot]andAustin Horstman ba2259d7d5 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2fecba9952096ba043c16b9ef40b92851ff3e5d9?narHash=sha256-JaNFPy3nywPNxSDpEgFFqvngQww5Igb6twG4NhMo8oc%3D' (2025-11-26)
  → 'github:NixOS/nixpkgs/9561691c9f450fad7c3526916e1c4f44be0d1192?narHash=sha256-CYbMp8hwuOf4umokSNp%2Bt1s4Hjd4vxXq4S5CD%2BxvgNs%3D' (2025-11-29)
2025-11-30 14:18:28 -06:00
Austin Horstman d0c5fdc48d tests/flake: lock to stable
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-11-29 00:48:34 -06:00
home-manager-ci[bot]andAustin Horstman 7f7e33a679 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a320ce8e6e2cc6b4397eef214d202a50a4583829?narHash=sha256-6zddwDs2n%2Bn01l%2B1TG6PlyokDdXzu/oBmEejcH5L5%2BA%3D' (2025-11-24)
  → 'github:NixOS/nixpkgs/2fecba9952096ba043c16b9ef40b92851ff3e5d9?narHash=sha256-JaNFPy3nywPNxSDpEgFFqvngQww5Igb6twG4NhMo8oc%3D' (2025-11-26)
2025-11-29 00:48:34 -06:00
Austin Horstman 2217780c39 flake.nix: lock to stable branch
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-11-26 11:18:11 -06:00
Austin Horstman cbe30a7689 release: mark as release branch
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-11-26 10:44:25 -06:00
97 changed files with 433 additions and 182 deletions
+2 -2
View File
@@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Create GitHub App token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
if: vars.CI_APP_ID
id: app-token
with:
@@ -37,7 +37,7 @@ jobs:
ref: ${{ github.event.pull_request.head.sha }}
- name: Create backport PRs
id: backport
uses: korthout/backport-action@v3
uses: korthout/backport-action@v4
with:
# See https://github.com/korthout/backport-action#inputs
github_token: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
- uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v16
- uses: cachix/cachix-action@v17
with:
name: nix-community
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
github.event.pull_request.state == 'open'
steps:
- name: Create GitHub App token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
if: vars.CI_APP_ID
id: app-token
with:
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
tests: ${{ steps.changes.outputs.tests }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v3
- uses: dorny/paths-filter@v4
id: changes
with:
filters: |
+2 -2
View File
@@ -13,7 +13,7 @@ jobs:
branch: [master, release-25.05]
steps:
- name: Create GitHub App token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
if: vars.CI_APP_ID
id: app-token
with:
@@ -41,7 +41,7 @@ jobs:
- name: Install Nix
uses: cachix/install-nix-action@v31
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@v27
uses: DeterminateSystems/update-flake-lock@v28
with:
token: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }}
git-committer-name: ${{ steps.user-info.outputs.name || 'github-actions[bot]' }}
+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
pr_branch: update/maintainers-${{ github.ref_name }}
steps:
- name: Create GitHub App token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
if: vars.CI_APP_ID
id: app-token
with:
+6
View File
@@ -57,3 +57,9 @@ changes are only active if the `home.stateVersion` option is set to
now default to `true` which is consistent with the default values
for those options used by `i3` and `sway`.
- The [](#opt-programs.swaylock.enable) option now defaults to `false`
and must be explicitly enabled. Previously, it would be implicitly
enabled when `programs.swaylock.settings` was non-empty. Users with
`home.stateVersion` set to earlier versions will continue to get the
old implicit behavior.
+5 -1
View File
@@ -27,4 +27,8 @@ The state version in this release includes the changes below. These
changes are only active if the `home.stateVersion` option is set to
\"25.05\" or later.
- No changes.
- The [](#opt-programs.git.signing.format) option no longer defaults to
`"openpgp"`. Users who use Git signing with GPG should explicitly set
this option to `"openpgp"` to maintain the previous behavior. Users
with `home.stateVersion` set to earlier versions will continue to get
the `"openpgp"` default for backwards compatibility.
+7
View File
@@ -80,3 +80,10 @@ changes are only active if the `home.stateVersion` option is set to
`{ PASSWORD_STORE_DIR = $XDG_DATA_HOME/password-store; }` anymore by its
default value. This will revert to the default behaviour of the program,
namely `$HOME/.password-store` to be used as the store path.
- On macOS, [](#opt-targets.darwin.copyApps.enable) is now enabled by
default instead of [](#opt-targets.darwin.linkApps.enable). This means
applications from `home.packages` will be copied to
`~/Applications/Home Manager Apps` rather than symlinked, making them
work properly with Spotlight. Users with `home.stateVersion` set to
earlier versions will continue to use `linkApps` by default.
Generated
+4 -4
View File
@@ -2,16 +2,16 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1763678758,
"narHash": "sha256-+hBiJ+kG5IoffUOdlANKFflTT5nO3FrrR2CA3178Y5s=",
"lastModified": 1775811116,
"narHash": "sha256-t+HZK42pB6N+i5RGbuy7Xluez/VvWbembBdvzsc23Ss=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "117cc7f94e8072499b0a7aa4c52084fa4e11cc9b",
"rev": "54170c54449ea4d6725efd30d719c5e505f1c10e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
description = "Home Manager for Nix";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
outputs =
{
+2 -2
View File
@@ -102,8 +102,8 @@ let
};
local = mkOption {
type = types.nullOr (localModule name);
default = null;
type = localModule name;
default = { };
description = ''
Local configuration for the contacts.
'';
+1 -1
View File
@@ -87,7 +87,7 @@ in
pathStr = toString path;
name = lib.hm.strings.storeFileName (baseNameOf pathStr);
in
pkgs.runCommandLocal name { } ''ln -s ${lib.escapeShellArg pathStr} $out'';
pkgs.runCommandLocal name { } "ln -s ${lib.escapeShellArg pathStr} $out";
# This verifies that the links we are about to create will not
# overwrite an existing file.
+25 -1
View File
@@ -43,7 +43,31 @@ let
};
};
toAgent = config: pkgs.writeText "${config.Label}.plist" (toPlist { escape = true; } config);
# mutateConfig calls /bin/sh with /bin/wait4path to wait for /nix/store before
# running the original Program and ProgramArguments. This is intentional to
# fix the issue where launchd starts the agent before /nix/store is ready
# (before the Nix store is mounted.)
mutateConfig =
cnf:
let
args =
lib.optional (cnf.Program != null) cnf.Program
++ lib.optionals (cnf.ProgramArguments != null) cnf.ProgramArguments;
in
(removeAttrs cnf [
"Program"
"ProgramArguments"
])
// {
ProgramArguments = [
"/bin/sh"
"-c"
"/bin/wait4path /nix/store && exec ${lib.escapeShellArgs args}"
];
};
toAgent =
config: pkgs.writeText "${config.Label}.plist" (toPlist { escape = true; } (mutateConfig config));
agentPlists = lib.mapAttrs' (n: v: lib.nameValuePair "${v.config.Label}.plist" (toAgent v.config)) (
lib.filterAttrs (n: v: v.enable) cfg.agents
+11 -2
View File
@@ -7,7 +7,16 @@ let
mkHmLib = import ./.;
in
nixpkgsLib.extend (
self: super: {
hm = mkHmLib { lib = self; };
self: super:
let
hmLib = mkHmLib { lib = self; };
in
{
hm = hmLib;
# Nixpkgs now validates meta.maintainers against lib.maintainers.
# Mirror Home Manager-only maintainers there so existing lib.hm.maintainers
# references continue to satisfy the upstream type check.
maintainers = super.maintainers // hmLib.maintainers;
}
)
@@ -0,0 +1,13 @@
{ config, pkgs, ... }:
{
time = "2026-01-27T21:41:51+00:00";
condition = pkgs.stdenv.hostPlatform.isDarwin && config.launchd.enable;
message = ''
The `launchd` module now ensures that the Nix store is mounted and
available before starting any agents. This improves reliability on macOS
where `launchd` might otherwise attempt to start agents before the Nix
store is ready.
'';
}
+45 -1
View File
@@ -8,6 +8,10 @@
let
cfg = config.qt;
qtctFormat = pkgs.formats.ini {
listToValue = values: lib.concatStringsSep ", " values;
};
# Map platform names to their packages.
platformPackages = with pkgs; {
gnome = [
@@ -286,7 +290,34 @@ in
'';
};
};
};
}
// (lib.genAttrs' [ "qt5ct" "qt6ct" ] (
name:
lib.nameValuePair "${name}Settings" (
lib.mkOption {
type = lib.types.nullOr qtctFormat.type;
default = null;
example = lib.literalExpression ''
{
Appearance = {
style = "kvantum";
icon_theme = "Papirus-Dark";
standar_dialogs = "xdgdesktopportal";
};
Fonts = {
fixed = "\"DejaVuSansM Nerd Font Mono,12\"";
general = "\"DejaVu Sans,12\"";
};
}
'';
description = ''
Qtct configuration. Writes settings to `${name}/${name}.conf`
file. Lists will be translated to comma-separated strings.
Fonts must be quoted (see example).
'';
}
)
));
};
config =
@@ -397,5 +428,18 @@ in
]
++ lib.optionals (platformTheme.name != null) [ "QT_QPA_PLATFORMTHEME" ]
++ lib.optionals (cfg.style.name != null) [ "QT_STYLE_OVERRIDE" ];
xdg.configFile =
lib.pipe
[ "qt5ct" "qt6ct" ]
[
(lib.filter (qtct: cfg."${qtct}Settings" != null))
(lib.flip lib.genAttrs' (
qtct:
lib.nameValuePair "${qtct}/${qtct}.conf" {
source = qtctFormat.generate "${qtct}-config" cfg."${qtct}Settings";
}
))
];
};
}
+11 -4
View File
@@ -40,7 +40,7 @@ let
finalPackage = mkOption {
inherit visible;
type = types.package;
type = types.nullOr types.package;
readOnly = true;
description = ''
Resulting customized ${name} package
@@ -220,15 +220,22 @@ let
};
in
lib.mkIf cfg.enable {
programs.${browser}.finalPackage = lib.mkIf (cfg.package != null) (
assertions = [
{
assertion = !(cfg.package == null && cfg.commandLineArgs != [ ]);
message = "Cannot set `commandLineArgs` when `package` is null for ${browser}.";
}
];
programs.${browser}.finalPackage =
if cfg.commandLineArgs != [ ] then
cfg.package.override {
commandLineArgs = lib.concatStringsSep " " cfg.commandLineArgs;
}
else
cfg.package
);
cfg.package;
home.packages = lib.mkIf (cfg.finalPackage != null) [
cfg.finalPackage
+1 -1
View File
@@ -22,7 +22,7 @@ in
options = {
picture = lib.mkOption {
type = with lib.types; nullOr (either path (strMatching "^http(s)?:\/\/.*$"));
type = with lib.types; nullOr (either path (strMatching "^http(s)?://.*$"));
default = null;
example = "/System/Library/Desktop Pictures/Solid Colors/Stone.png";
description = ''
+8 -5
View File
@@ -67,11 +67,14 @@ in
options = mkOption {
type =
with types;
attrsOf (oneOf [
str
int
bool
]);
let
atom = oneOf [
str
int
bool
];
in
attrsOf (either atom (listOf atom));
default = { };
example = {
color = "dark";
+1 -1
View File
@@ -278,7 +278,7 @@ in
type = types.nullOr types.str;
default = if platforms.darwin ? "defaultsId" then platforms.darwin.defaultsId else null;
example = if default != null then default else "com.developer.app";
description = ''The id for the darwin defaults in order to set policies'';
description = "The id for the darwin defaults in order to set policies";
};
darwinAppName = mkOption {
+2 -2
View File
@@ -645,7 +645,7 @@ in
# Support completion for `man` by building a cache for `apropos`.
programs.man.generateCaches = lib.mkDefault true;
xdg.dataFile."fish/home-manager_generated_completions".source =
xdg.dataFile."fish/home-manager/generated_completions".source =
let
# Paths later in the list will overwrite those already linked
destructiveSymlinkJoin =
@@ -696,7 +696,7 @@ in
set -l post_joined (string replace $prev_joined "" $joined)
set -l prev (string split " " (string trim $prev_joined))
set -l post (string split " " (string trim $post_joined))
set fish_complete_path $prev "${config.xdg.dataHome}/fish/home-manager_generated_completions" $post
set fish_complete_path $prev "${config.xdg.dataHome}/fish/home-manager/generated_completions" $post
end
'';
}
+2 -2
View File
@@ -108,11 +108,11 @@ in
if lib.versionAtLeast (lib.versions.major cfg.package.version) "26" then
"${lib.getExe cfg.package} init nu ${configArgument}"
else
''source ${
"source ${
pkgs.runCommand "oh-my-posh-nushell-config.nu" { } ''
${lib.getExe cfg.package} init nu ${configArgument} --print >> "$out"
''
}''
}"
}
'';
};
+4 -4
View File
@@ -51,7 +51,7 @@
localStorage = calendar: name: acc: {
name = "storage";
params = [ "${name}-local" ];
params = [ "${if calendar then "calendar" else "contacts"}-${name}-local" ];
children =
(attrsToDirectives {
inherit (acc.local) path;
@@ -63,7 +63,7 @@
remoteStorage = calendar: name: acc: {
name = "storage";
params = [ "${name}-remote" ];
params = [ "${if calendar then "calendar" else "contacts"}-${name}-remote" ];
children =
(attrsToDirectives {
inherit (acc.remote) url;
@@ -91,8 +91,8 @@
params = lib.singleton "${if calendar then "calendar" else "contacts"}-${name}";
children =
(attrsToDirectives {
storage_a = "${name}-local";
storage_b = "${name}-remote";
storage_a = "${if calendar then "calendar" else "contacts"}-${name}-local";
storage_b = "${if calendar then "calendar" else "contacts"}-${name}-remote";
})
++ acc.pimsync.extraPairDirectives;
};
+1 -1
View File
@@ -153,7 +153,7 @@ in
default = { };
apply = lib.mergeAttrs {
vfs-cache-mode = "full";
cache-dir = "%C";
cache-dir = "%C/rclone";
};
description = ''
An attribute set of option values passed to `rclone mount`. To set
+7
View File
@@ -40,6 +40,12 @@ let
description = "The remote path to mount.";
};
mountDestPath = mkOption {
type = types.nullOr types.str;
default = null;
description = "The path on the current machine where the remote path would be mounted.";
};
authType = mkOption {
type = types.enum [
"password"
@@ -47,6 +53,7 @@ let
"hostbased"
"keyboard-interactive"
"gssapi-with-mic"
"authentication-agent"
];
default = "publickey";
description = "The authentication method to use.";
+9 -1
View File
@@ -9,6 +9,7 @@ let
attrValues
concatStringsSep
filter
flatten
length
literalExpression
mapAttrsToList
@@ -918,7 +919,14 @@ in
calendarAccounts = getAccountsForProfile name enabledCalendarAccountsWithId;
contactAccounts = getAccountsForProfile name enabledContactAccountsWithId;
smtp = filter (a: a.smtp != null) emailAccounts;
accountsSmtp = filter (a: a.smtp != null) emailAccounts;
aliasesSmtp =
let
getAliasesWithSmtp = a: filter (al: builtins.isAttrs al && al.smtp != null) a.aliases;
getAliasesWithId = a: map (al: al // { id = getId a al; }) (getAliasesWithSmtp a);
in
flatten (map getAliasesWithId emailAccounts);
smtp = accountsSmtp ++ aliasesSmtp;
feedAccounts = addId (attrValues profile.feedAccounts);
+1 -1
View File
@@ -102,7 +102,7 @@ let
else if (n == "itemTypes") then
"item_types = ${listString (map wrap v)}"
else if (n == "useVcard4") then
''use_vcard_4 = ${v}''
"use_vcard_4 = ${v}"
else if (n == "userName") then
''username = "${v}"''
else if (n == "userNameCommand") then
+5 -7
View File
@@ -84,13 +84,11 @@ in
'';
in
{
bash.initExtra = lib.mkIf cfg.enableBashIntegration bashIntegration;
zsh.initContent = lib.mkIf cfg.enableZshIntegration bashIntegration;
fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration fishIntegration;
nushell.extraConfig = lib.mkIf cfg.enableNushellIntegration nushellIntegration;
# $SSH_AUTH_SOCK has to be set early since other tools rely on it
bash.profileExtra = lib.mkIf cfg.enableBashIntegration (lib.mkOrder 900 bashIntegration);
fish.shellInit = lib.mkIf cfg.enableFishIntegration (lib.mkOrder 900 fishIntegration);
nushell.extraConfig = lib.mkIf cfg.enableNushellIntegration (lib.mkOrder 900 nushellIntegration);
zsh.envExtra = lib.mkIf cfg.enableZshIntegration (lib.mkOrder 900 bashIntegration);
};
}
@@ -342,8 +342,7 @@ in
warning = "You have enabled hyprland.systemd.enable or listed plugins in hyprland.plugins but do not have any configuration in hyprland.settings or hyprland.extraConfig. This is almost certainly a mistake.";
filterNonBinds =
attrs:
builtins.filter (n: builtins.match ''bind[[:lower:]]*'' n == null) (builtins.attrNames attrs);
attrs: builtins.filter (n: builtins.match "bind[[:lower:]]*" n == null) (builtins.attrNames attrs);
# attrset of { <submap name> = <list of non bind* keys>; } for all submaps
submapWarningsAttrset = builtins.mapAttrs (
@@ -18,13 +18,14 @@ stdenv.mkDerivation {
src = ./.;
patchPhase = ''
substituteInPlace non-nixos-gpu* \
--replace '@@resources@@' "$out/resources" \
--replace '@@statedir@@' '${nixStateDirectory}' \
--replace '@@env@@' "${nonNixosGpuEnv}"
--replace-quiet '@@resources@@' "$out/resources" \
--replace-quiet '@@statedir@@' '${nixStateDirectory}' \
--replace-quiet '@@systemddir@@' "$out/lib/systemd/system" \
--replace-quiet '@@env@@' "${nonNixosGpuEnv}"
'';
installPhase = ''
mkdir -p $out/{bin,resources}
mkdir -p $out/{bin,resources,lib/systemd/system}
cp non-nixos-gpu-setup $out/bin
cp non-nixos-gpu.service $out/resources
cp non-nixos-gpu.service $out/lib/systemd/system
'';
}
@@ -5,7 +5,7 @@ set -e
# Install the systemd service file and ensure that the store path won't be
# garbage-collected as long as it's installed.
unit_path=/etc/systemd/system/non-nixos-gpu.service
ln -sf @@resources@@/non-nixos-gpu.service "$unit_path"
ln -sf @@systemddir@@/non-nixos-gpu.service "$unit_path"
ln -sf "$unit_path" "@@statedir@@"/gcroots/non-nixos-gpu.service
systemctl daemon-reload
+7 -4
View File
@@ -188,10 +188,13 @@ in
hm-graphical-session = {
Unit = {
Description = "Home Manager X session";
Requires = [
"graphical-session-pre.target"
"xdg-desktop-autostart.target"
];
Requires =
let
requires = lib.optional (config.xdg.autostart.enable) "xdg-desktop-autostart.target" ++ [
"graphical-session-pre.target"
];
in
requires;
BindsTo = [
"graphical-session.target"
"tray.target"
+1 -1
View File
@@ -85,7 +85,7 @@ in
backupCommand = mkOption {
type = types.nullOr (types.either types.str types.path);
default = null;
example = lib.literalExpression "''${pkgs.trash-cli}/bin/trash";
example = lib.literalExpression "\${pkgs.trash-cli}/bin/trash";
description = ''
On activation run this command on each existing file
rather than exiting with an error.
+1 -1
View File
@@ -1,4 +1,4 @@
{
"release": "25.11",
"isReleaseBranch": false
"isReleaseBranch": true
}
+1
View File
@@ -78,6 +78,7 @@ let
"jankyborders"
"joplin-desktop"
"jqp"
"jrnl"
"jujutsu"
"k9s"
"kakoune"
+1 -1
View File
@@ -15,7 +15,7 @@
{
description = "Tests of Home Manager for Nix";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
outputs =
{ nixpkgs, ... }:
+3 -3
View File
@@ -17,9 +17,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>/some/command</string>
<string>--with-arguments</string>
<string>foo</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec /some/command --with-arguments foo</string>
</array>
<key>UnrecognizedByHomeManager</key>
<string>should make it to the resulting plist</string>
+3
View File
@@ -4,4 +4,7 @@
qt-platform-theme-gtk3 = ./qt-platform-theme-gtk3.nix;
qt-platform-theme-gnome = ./qt-platform-theme-gnome.nix;
qt-platform-theme-kde6-migration = ./qt-platform-theme-kde6-migration.nix;
qt-qt5ct-settings = ./qt-qt5ct-settings.nix;
qt-qt6ct-settings = ./qt-qt6ct-settings.nix;
qt-qtct-settings = ./qt-qtct-settings.nix;
}
@@ -0,0 +1,13 @@
{
qt = {
enable = true;
qt5ctSettings = {
test_section.test_option = "test";
};
};
nmt.script = ''
assertFileExists "home-files/.config/qt5ct/qt5ct.conf"
assertPathNotExists "home-files/.config/qt6ct/qt6ct.conf"
'';
}
@@ -0,0 +1,13 @@
{
qt = {
enable = true;
qt6ctSettings = {
test_section.test_option = "test";
};
};
nmt.script = ''
assertFileExists "home-files/.config/qt6ct/qt6ct.conf"
assertPathNotExists "home-files/.config/qt5ct/qt5ct.conf"
'';
}
@@ -0,0 +1,16 @@
{
qt = {
enable = true;
qt5ctSettings = {
test_section.test_option = "test";
};
qt6ctSettings = {
test_section.test_option = "test";
};
};
nmt.script = ''
assertFileExists "home-files/.config/qt5ct/qt5ct.conf"
assertFileExists "home-files/.config/qt6ct/qt6ct.conf"
'';
}
@@ -6,8 +6,12 @@
<true/>
<key>Label</key>
<string>org.nix-community.home.aerospace</string>
<key>Program</key>
<string>/nix/store/00000000000000000000000000000000-aerospace/Applications/AeroSpace.app/Contents/MacOS/AeroSpace</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec /nix/store/00000000000000000000000000000000-aerospace/Applications/AeroSpace.app/Contents/MacOS/AeroSpace</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
+1 -1
View File
@@ -7,7 +7,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -14,7 +14,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -15,7 +15,7 @@
_module.args.pkgs = lib.mkForce realPkgs;
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -16,7 +16,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
@@ -8,6 +8,10 @@
options = {
color = "always";
display = "side-by-side";
override = [
"*.mill:Scala"
"*.yuck:Emacs Lisp"
];
};
};
@@ -17,7 +21,7 @@
assertFileExists home-files/.config/git/config
assertFileContains home-files/.config/git/config '[diff]'
# Should have diff.external set
assertFileRegex home-files/.config/git/config 'external = .*/difft.*--color.*--display'
assertFileRegex home-files/.config/git/config 'external = .*/difft.*--color.*--display.*--override.*mill:Scala.*--override.*yuck:Emacs Lisp.*'
# Should NOT have difftool config when diffToolMode is explicitly false
assertFileNotRegex home-files/.config/git/config 'tool = "difftastic"'
assertFileNotRegex home-files/.config/git/config '\[difftool "difftastic"\]'
+1 -1
View File
@@ -29,7 +29,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -25,7 +25,7 @@ in
};
};
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -29,7 +29,7 @@ in
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -8,7 +8,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -47,7 +47,7 @@ in
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
@@ -6,13 +6,9 @@
<string>org.nix-community.home.git-maintenance-daily</string>
<key>ProgramArguments</key>
<array>
<string>@git@/bin/git</string>
<string>for-each-repo</string>
<string>--keep-going</string>
<string>--config=maintenance.repo</string>
<string>maintenance</string>
<string>run</string>
<string>--schedule=daily</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @git@/bin/git for-each-repo --keep-going &apos;--config=maintenance.repo&apos; maintenance run &apos;--schedule=daily&apos;</string>
</array>
<key>StartCalendarInterval</key>
<array>
@@ -6,13 +6,9 @@
<string>org.nix-community.home.git-maintenance-hourly</string>
<key>ProgramArguments</key>
<array>
<string>@git@/bin/git</string>
<string>for-each-repo</string>
<string>--keep-going</string>
<string>--config=maintenance.repo</string>
<string>maintenance</string>
<string>run</string>
<string>--schedule=hourly</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @git@/bin/git for-each-repo --keep-going &apos;--config=maintenance.repo&apos; maintenance run &apos;--schedule=hourly&apos;</string>
</array>
<key>StartCalendarInterval</key>
<array>
@@ -6,13 +6,9 @@
<string>org.nix-community.home.git-maintenance-weekly</string>
<key>ProgramArguments</key>
<array>
<string>@git@/bin/git</string>
<string>for-each-repo</string>
<string>--keep-going</string>
<string>--config=maintenance.repo</string>
<string>maintenance</string>
<string>run</string>
<string>--schedule=weekly</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @git@/bin/git for-each-repo --keep-going &apos;--config=maintenance.repo&apos; maintenance run &apos;--schedule=weekly&apos;</string>
</array>
<key>StartCalendarInterval</key>
<array>
+1 -1
View File
@@ -30,7 +30,7 @@
nmt.script =
let
goCfgDir = if !pkgs.stdenv.isDarwin then ".config/go" else "Library/Application\ Support/go";
goCfgDir = if !pkgs.stdenv.isDarwin then ".config/go" else "Library/Application Support/go";
in
''
assertFileExists "home-files/${goCfgDir}/env"
@@ -14,7 +14,7 @@
nmt.script =
let
goCfgDir = if !pkgs.stdenv.isDarwin then ".config/go" else "Library/Application\ Support/go";
goCfgDir = if !pkgs.stdenv.isDarwin then ".config/go" else "Library/Application Support/go";
in
''
assertFileExists "home-files/${goCfgDir}/env"
@@ -12,7 +12,7 @@
{
source = realPkgs.fetchurl {
url = "https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x44CF42371ADF842E12F116EAA9D3F98FCCF5460B";
hash = "sha256-bSluCZh6ijwppigk8iF2BwWKZgq1WDbIjyYQRK772dM=";
hash = "sha256-csrFDI6QSPfNN+adOPEAupAtspYNBCybFZExvVS+vRY=";
};
trust = 1; # "unknown"
}
@@ -6,9 +6,9 @@
<string>org.nix-community.home.nh-clean</string>
<key>ProgramArguments</key>
<array>
<string>@nh@/bin/nh</string>
<string>clean</string>
<string>user</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @nh@/bin/nh clean user</string>
</array>
<key>StartCalendarInterval</key>
<array>
@@ -8,7 +8,7 @@
programs.command-not-found.enable = true;
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
@@ -14,7 +14,7 @@ in
programs.nushell.enable = true;
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -11,7 +11,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+17 -1
View File
@@ -1,6 +1,6 @@
{
accounts.calendar = {
accounts.caldav = {
accounts.mine = {
pimsync.enable = true;
remote = {
passwordCommand = [
@@ -22,6 +22,22 @@
basePath = ".local/state/calendar";
};
accounts.contact = {
accounts.mine = {
pimsync.enable = true;
remote = {
passwordCommand = [
"pass"
"carddav"
];
type = "carddav";
url = "https://carddav.example.com";
userName = "bob";
};
};
basePath = ".local/state/contact";
};
programs.pimsync = {
enable = true;
settings = [
+34 -17
View File
@@ -1,14 +1,18 @@
storage caldav-local {
fileext .ics
path /home/hm-user/.local/state/calendar/caldav
type vdir/icalendar
}
storage http-local {
storage calendar-http-local {
fileext .ics
path /home/hm-user/.local/state/calendar/http
type vdir/icalendar
}
storage caldav-remote {
storage calendar-mine-local {
fileext .ics
path /home/hm-user/.local/state/calendar/mine
type vdir/icalendar
}
storage calendar-http-remote {
type webcal
url https://example.com/calendar
}
storage calendar-mine-remote {
type caldav
url https://caldav.example.com
username alice
@@ -16,16 +20,29 @@ storage caldav-remote {
cmd pass caldav
}
}
storage http-remote {
type webcal
url https://example.com/calendar
}
pair calendar-caldav {
storage_a caldav-local
storage_b caldav-remote
}
pair calendar-http {
storage_a http-local
storage_b http-remote
storage_a calendar-http-local
storage_b calendar-http-remote
}
pair calendar-mine {
storage_a calendar-mine-local
storage_b calendar-mine-remote
}
storage contacts-mine-local {
fileext .vcf
path /home/hm-user/.local/state/contact/mine
type vdir/vcard
}
storage contacts-mine-remote {
type carddav
url https://carddav.example.com
username bob
password {
cmd pass carddav
}
}
pair contacts-mine {
storage_a contacts-mine-local
storage_b contacts-mine-remote
}
status_path /test/dir
+1 -1
View File
@@ -12,7 +12,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -21,7 +21,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -7,7 +7,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
@@ -10,7 +10,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
+1 -1
View File
@@ -10,7 +10,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
@@ -23,6 +23,13 @@
user = "user";
sshKey = "/home/user/.ssh/id_rsa";
};
mount4 = {
host = "host4.example.com";
mountPoint = "/another/path/somewhere/else";
user = "user";
authType = "authentication-agent";
mountDestPath = "/mnt/host4";
};
};
};
@@ -36,5 +43,8 @@
assertFileContent \
home-files/.config/sftpman/mounts/mount3.json \
${./expected-mount3.json}
assertFileContent \
home-files/.config/sftpman/mounts/mount4.json \
${./expected-mount4.json}
'';
}
@@ -3,6 +3,7 @@
"beforeMount": "true",
"host": "host1.example.com",
"id": "mount1",
"mountDestPath": null,
"mountOptions": [
"idmap=user"
],
@@ -3,6 +3,7 @@
"beforeMount": "true",
"host": "host2.example.com",
"id": "mount2",
"mountDestPath": null,
"mountOptions": [],
"mountPoint": "/another/path",
"port": 22,
@@ -3,6 +3,7 @@
"beforeMount": "true",
"host": "host3.example.com",
"id": "mount3",
"mountDestPath": null,
"mountOptions": [],
"mountPoint": "/yet/another/path",
"port": 22,
@@ -0,0 +1,12 @@
{
"authType": "authentication-agent",
"beforeMount": "true",
"host": "host4.example.com",
"id": "mount4",
"mountDestPath": "/mnt/host4",
"mountOptions": [],
"mountPoint": "/another/path/somewhere/else",
"port": 22,
"sshKey": "/home/user/.ssh/id_ed25519",
"user": "user"
}
@@ -8,8 +8,12 @@
<string>org.nix-community.home.sketchybar</string>
<key>ProcessType</key>
<string>Interactive</string>
<key>Program</key>
<string>/nix/store/00000000000000000000000000000000-sketchybar/bin/sketchybar</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec /nix/store/00000000000000000000000000000000-sketchybar/bin/sketchybar</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
@@ -120,7 +120,7 @@ user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfa
user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f.port", 456);
user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f.try_ssl", 3);
user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f.username", "home.manager");
user_pref("mail.smtpservers", "smtp_bcd3ace52bed41febb6cdc2fb1303aebaa573e0d993872da503950901bb6c6fc,smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f");
user_pref("mail.smtpservers", "smtp_bcd3ace52bed41febb6cdc2fb1303aebaa573e0d993872da503950901bb6c6fc,smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f,smtp_b24ca86ede61ed219e6c87cfec261aae2c72785f812489ea943d114d1f39f55b");
user_pref("privacy.donottrackheader.enabled", true);
user_pref("mail.html_compose", false);
@@ -120,7 +120,7 @@ user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfa
user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f.port", 456);
user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f.try_ssl", 3);
user_pref("mail.smtpserver.smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f.username", "home.manager");
user_pref("mail.smtpservers", "smtp_bcd3ace52bed41febb6cdc2fb1303aebaa573e0d993872da503950901bb6c6fc,smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f");
user_pref("mail.smtpservers", "smtp_bcd3ace52bed41febb6cdc2fb1303aebaa573e0d993872da503950901bb6c6fc,smtp_cda3f13b64c1db7d4b58ce07a31304a362d7dcaf14476bfabcca913ae41ada9f,smtp_b24ca86ede61ed219e6c87cfec261aae2c72785f812489ea943d114d1f39f55b");
user_pref("privacy.donottrackheader.enabled", true);
user_pref("mail.html_compose", false);
@@ -18,7 +18,7 @@
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source = lib.mkForce (
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
@@ -8,9 +8,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@borgmatic@/bin/borgmatic</string>
<string>--stats</string>
<string>--list</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @borgmatic@/bin/borgmatic --stats --list</string>
</array>
<key>StandardErrorPath</key>
<string>/home/hm-user/Library/Logs/borgmatic/launchd-stderr.log</string>
@@ -13,8 +13,9 @@
<string>org.nix-community.home.emacs</string>
<key>ProgramArguments</key>
<array>
<string>@emacs@/bin/emacs</string>
<string>--fg-daemon</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @emacs@/bin/emacs --fg-daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
@@ -18,8 +18,9 @@
<string>org.nix-community.home.espanso</string>
<key>ProgramArguments</key>
<array>
<string>@espanso@/Applications/Espanso.app/Contents/MacOS/espanso</string>
<string>launcher</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @espanso@/Applications/Espanso.app/Contents/MacOS/espanso launcher</string>
</array>
<key>RunAtLoad</key>
<true/>
@@ -8,7 +8,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@git-sync@/bin/git-sync</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @git-sync@/bin/git-sync</string>
</array>
<key>StartInterval</key>
<integer>500</integer>
@@ -20,8 +20,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@gpg@/bin/gpg-agent</string>
<string>--supervised</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @gpg@/bin/gpg-agent --supervised</string>
</array>
<key>RunAtLoad</key>
<false/>
@@ -8,7 +8,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>/nix/store/00000000000000000000000000000000-home-manager-auto-expire</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec /nix/store/00000000000000000000000000000000-home-manager-auto-expire</string>
</array>
<key>StandardErrorPath</key>
<string>/home/hm-user/Library/Logs/home-manager-auto-expire/launchd-stderr.log</string>
@@ -17,9 +17,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@goimapnotify@/bin/goimapnotify</string>
<string>-conf</string>
<string>/nix/store/00000000000000000000000000000000-imapnotify-hm-example.com-config.json</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @goimapnotify@/bin/goimapnotify -conf /nix/store/00000000000000000000000000000000-imapnotify-hm-example.com-config.json</string>
</array>
<key>RunAtLoad</key>
<true/>
@@ -11,10 +11,9 @@
<string>org.nix-community.home.remap-keys</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/hidutil</string>
<string>property</string>
<string>--set</string>
<string>{ &quot;UserKeyMapping&quot;: [ { &quot;HIDKeyboardModifierMappingSrc&quot;: 0x700000039, &quot;HIDKeyboardModifierMappingDst&quot;: 0x70000002A } ] }</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec /usr/bin/hidutil property --set &apos;{ &quot;UserKeyMapping&quot;: [ { &quot;HIDKeyboardModifierMappingSrc&quot;: 0x700000039, &quot;HIDKeyboardModifierMappingDst&quot;: 0x70000002A } ] }&apos;</string>
</array>
<key>RunAtLoad</key>
<true/>
@@ -64,9 +64,9 @@
in
map (
option:
''The option `services.mako.${option}' defined in ${
"The option `services.mako.${option}' defined in ${
lib.showFiles options.services.mako.${option}.files
} has been renamed to `services.mako.settings.${lib.hm.strings.toKebabCase option}'.''
} has been renamed to `services.mako.settings.${lib.hm.strings.toKebabCase option}'."
) renamedOptions;
nmt.script = ''
@@ -6,8 +6,9 @@
<string>org.nix-community.home.nix-gc</string>
<key>ProgramArguments</key>
<array>
<string>@nix@/bin/nix-collect-garbage</string>
<string>--delete-older-than 30d</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @nix@/bin/nix-collect-garbage &apos;--delete-older-than 30d&apos;</string>
</array>
<key>StartCalendarInterval</key>
<array>
@@ -24,8 +24,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@ollama@/bin/ollama</string>
<string>serve</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @ollama@/bin/ollama serve</string>
</array>
</dict>
</plist>
@@ -8,7 +8,7 @@
nmt.script = ''
assertFileContains \
home-files/.bashrc \
home-files/.profile \
'export SSH_AUTH_SOCK=$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent'
'';
}
@@ -15,9 +15,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@bash-interactive@/bin/bash</string>
<string>/bin/sh</string>
<string>-c</string>
<string>@openssh@/bin/ssh-agent -D -a &quot;$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent&quot;</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @bash-interactive@/bin/bash -c &apos;@openssh@/bin/ssh-agent -D -a &quot;$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent&quot;&apos;</string>
</array>
<key>RunAtLoad</key>
<true/>
@@ -15,9 +15,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@bash-interactive@/bin/bash</string>
<string>/bin/sh</string>
<string>-c</string>
<string>@openssh@/bin/ssh-agent -D -a &quot;$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent&quot; -t 1337</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @bash-interactive@/bin/bash -c &apos;@openssh@/bin/ssh-agent -D -a &quot;$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent&quot; -t 1337&apos;</string>
</array>
<key>RunAtLoad</key>
<true/>
@@ -15,7 +15,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@syncthing-wrapper@</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @syncthing-wrapper@</string>
</array>
</dict>
</plist>
@@ -27,9 +27,9 @@
<string>Background</string>
<key>ProgramArguments</key>
<array>
<string>@yubikey-agent@/bin/yubikey-agent</string>
<string>-l</string>
<string>/tmp/yubikey-agent.sock</string>
<string>/bin/sh</string>
<string>-c</string>
<string>/bin/wait4path /nix/store &amp;&amp; exec @yubikey-agent@/bin/yubikey-agent -l /tmp/yubikey-agent.sock</string>
</array>
<key>Sockets</key>
<dict>
@@ -39,11 +39,12 @@ in
setupScript="$TESTED/home-path/bin/non-nixos-gpu-setup"
assertFileExists "$setupScript"
# Find the resources directory
resourcesPath=$(grep -oP '/nix/store/[^/]+-non-nixos-gpu/resources' "$setupScript" | head -1)
# Find the service file
storePath="$(dirname "$(readlink "''${setupScript}")")"/../
servicePath="$storePath/lib/systemd/system/non-nixos-gpu.service"
# Extract the GPU environment path
envPath=$(grep -oP '/nix/store/[^/]+-non-nixos-gpu' "$resourcesPath/non-nixos-gpu.service" | head -1)
envPath=$(grep -oP '/nix/store/[^/]+-non-nixos-gpu' "$servicePath" | head -1)
if [[ -z "$envPath" ]]; then
fail "Could not find GPU environment path in service file"
@@ -11,19 +11,22 @@
assertFileExists "$setupScript"
assertFileIsExecutable "$setupScript"
# Find and check the resources directory
resourcesPath=$(grep -oP '/nix/store/[^/]+-non-nixos-gpu/resources' "$setupScript" | head -1)
assertDirectoryExists "$resourcesPath"
# Check that gcroots dir was set
cat "$setupScript"
assertFileRegex "$setupScript" ' "/custom/state/directory"/gcroots'
serviceFile="$resourcesPath/non-nixos-gpu.service"
assertFileExists "$serviceFile"
# Check that no placeholders remain
assertFileNotRegex "$serviceFile" '@@[^@]\+@@'
assertFileNotRegex "$setupScript" '@@[^@]\+@@'
# Check that expected files are present and free of placeholders
storePath="$(dirname "$(readlink "''${setupScript}")")"/../
expectedFiles=(
lib/systemd/system/non-nixos-gpu.service
)
for f in "''${expectedFiles[@]}"; do
assertFileExists "$storePath/$f"
assertFileNotRegex "$storePath/$f" '@@[^@]\+@@'
done
'';
}