Compare commits
44
Commits
@@ -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 }}
|
||||
|
||||
@@ -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]' }}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -2,16 +2,16 @@
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1763678758,
|
||||
"narHash": "sha256-+hBiJ+kG5IoffUOdlANKFflTT5nO3FrrR2CA3178Y5s=",
|
||||
"lastModified": 1771903837,
|
||||
"narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "117cc7f94e8072499b0a7aa4c52084fa4e11cc9b",
|
||||
"rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"ref": "nixos-25.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
||||
@@ -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 =
|
||||
{
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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";
|
||||
}
|
||||
))
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
''
|
||||
}''
|
||||
}"
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"release": "25.11",
|
||||
"isReleaseBranch": false
|
||||
"isReleaseBranch": true
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ let
|
||||
"jankyborders"
|
||||
"joplin-desktop"
|
||||
"jqp"
|
||||
"jrnl"
|
||||
"jujutsu"
|
||||
"k9s"
|
||||
"kakoune"
|
||||
|
||||
+1
-1
@@ -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, ... }:
|
||||
|
||||
@@ -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 && exec /some/command --with-arguments foo</string>
|
||||
</array>
|
||||
<key>UnrecognizedByHomeManager</key>
|
||||
<string>should make it to the resulting plist</string>
|
||||
|
||||
@@ -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 && exec /nix/store/00000000000000000000000000000000-aerospace/Applications/AeroSpace.app/Contents/MacOS/AeroSpace</string>
|
||||
</array>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>StandardErrorPath</key>
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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 && exec @git@/bin/git for-each-repo --keep-going '--config=maintenance.repo' maintenance run '--schedule=daily'</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 && exec @git@/bin/git for-each-repo --keep-going '--config=maintenance.repo' maintenance run '--schedule=hourly'</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 && exec @git@/bin/git for-each-repo --keep-going '--config=maintenance.repo' maintenance run '--schedule=weekly'</string>
|
||||
</array>
|
||||
<key>StartCalendarInterval</key>
|
||||
<array>
|
||||
|
||||
@@ -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 && 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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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" ""
|
||||
);
|
||||
|
||||
|
||||
@@ -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 && 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 && 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 && 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 && 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 && 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 && 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 && 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 && 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>{ "UserKeyMapping": [ { "HIDKeyboardModifierMappingSrc": 0x700000039, "HIDKeyboardModifierMappingDst": 0x70000002A } ] }</string>
|
||||
<string>/bin/sh</string>
|
||||
<string>-c</string>
|
||||
<string>/bin/wait4path /nix/store && exec /usr/bin/hidutil property --set '{ "UserKeyMapping": [ { "HIDKeyboardModifierMappingSrc": 0x700000039, "HIDKeyboardModifierMappingDst": 0x70000002A } ] }'</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 && exec @nix@/bin/nix-collect-garbage '--delete-older-than 30d'</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 && 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 "$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent"</string>
|
||||
<string>/bin/wait4path /nix/store && exec @bash-interactive@/bin/bash -c '@openssh@/bin/ssh-agent -D -a "$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent"'</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 "$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent" -t 1337</string>
|
||||
<string>/bin/wait4path /nix/store && exec @bash-interactive@/bin/bash -c '@openssh@/bin/ssh-agent -D -a "$(@getconf-system_cmds@/bin/getconf DARWIN_USER_TEMP_DIR)/ssh-agent" -t 1337'</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 && 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 && 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
|
||||
'';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user