1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2024-12-14 11:57:55 +00:00

Merge branch 'nix-community:master' into joplin-desktop

This commit is contained in:
zorrobert 2024-12-06 18:50:31 +01:00 committed by GitHub
commit d3e830ae29
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
76 changed files with 882 additions and 354 deletions

View file

@ -28,7 +28,7 @@ Releases
Home Manager is developed against `nixpkgs-unstable` branch, which often causes
it to contain tweaks for changes/packages not yet released in stable [NixOS][].
To avoid breaking users' configurations, Home Manager is released in branches
corresponding to NixOS releases (e.g. `release-24.05`). These branches get
corresponding to NixOS releases (e.g. `release-24.11`). These branches get
fixes, but usually not new modules. If you need a module to be backported, then
feel free to open an issue.
@ -49,7 +49,7 @@ dconf store and cannot tell whether a configuration that it is about to be
overwritten was from a previous Home Manager generation or from manual
configuration.
Home Manager targets [NixOS][] unstable and NixOS version 24.05 (the current
Home Manager targets [NixOS][] unstable and NixOS version 24.11 (the current
stable version), it may or may not work on other Linux distributions and NixOS
versions.

View file

@ -15,10 +15,10 @@ $ nix-channel --add https://github.com/nix-community/home-manager/archive/master
$ nix-channel --update
```
and if you follow a Nixpkgs version 24.05 channel, you can run
and if you follow a Nixpkgs version 24.11 channel, you can run
``` shell
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-manager
$ nix-channel --update
```
@ -45,7 +45,7 @@ home-manager.users.eve = { pkgs, ... }: {
# The state version is required and should stay at the version you
# originally installed.
home.stateVersion = "24.05";
home.stateVersion = "24.11";
};
```

View file

@ -17,10 +17,10 @@ $ sudo nix-channel --add https://github.com/nix-community/home-manager/archive/m
$ sudo nix-channel --update
```
and if you follow a Nixpkgs version 24.05 channel, you can run
and if you follow a Nixpkgs version 24.11 channel, you can run
``` shell
$ sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager
$ sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-manager
$ sudo nix-channel --update
```
@ -44,7 +44,7 @@ home-manager.users.eve = { pkgs, ... }: {
# The state version is required and should stay at the version you
# originally installed.
home.stateVersion = "24.05";
home.stateVersion = "24.11";
};
```

View file

@ -19,10 +19,10 @@
$ nix-channel --update
```
and if you follow a Nixpkgs version 24.05 channel you can run
and if you follow a Nixpkgs version 24.11 channel you can run
``` shell
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-manager
$ nix-channel --update
```

View file

@ -11,10 +11,10 @@ then to generate and activate a basic configuration run the command
$ nix run home-manager/master -- init --switch
```
For Nixpkgs or NixOS version 24.05 run
For Nixpkgs or NixOS version 24.11 run
``` shell
$ nix run home-manager/release-24.05 -- init --switch
$ nix run home-manager/release-24.11 -- init --switch
```
This will generate a `flake.nix` and a `home.nix` file in
@ -30,7 +30,7 @@ $ # Edit files in ~/.config/home-manager
$ nix run home-manager/$branch -- init --switch
```
Where `$branch` is one of `master` or `release-24.05`.
Where `$branch` is one of `master` or `release-24.11`.
After the initial activation has completed successfully then building
and activating your flake-based configuration is as simple as

View file

@ -20,7 +20,7 @@ A fresh install of Home Manager will generate a minimal
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "24.05";
home.stateVersion = "24.11";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
@ -65,7 +65,7 @@ follows:
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "24.05";
home.stateVersion = "24.11";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;

View file

@ -1,7 +1,6 @@
# Release 24.11 {#sec-release-24.11}
This is the current unstable branch and the information in this section
is therefore not final.
The 24.05 release branch became stable in November, 2024.
## Highlights {#sec-release-24.11-highlights}
@ -29,4 +28,4 @@ The state version in this release includes the changes below. These
changes are only active if the `home.stateVersion` option is set to
\"24.11\" or later.
- No changes.
- There was no state version change in this release.

View file

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1732014248,
"narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=",
"lastModified": 1733212471,
"narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "23e89b7da85c3640bbc2173fe04f4bd114342367",
"rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
"type": "github"
},
"original": {

View file

@ -359,7 +359,7 @@ $xdgVars
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "24.05"; # Please read the comment before changing.
home.stateVersion = "24.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
@ -857,7 +857,7 @@ function doUninstall() {
uninstall = true;
home.username = "$USER";
home.homeDirectory = "$HOME";
home.stateVersion = "24.05";
home.stateVersion = "24.11";
}
EOF
# shellcheck disable=2064

View file

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-05-31 17:09+0000\n"
"Last-Translator: jarre johansson <jarre@johansson.today>\n"
"PO-Revision-Date: 2024-12-03 13:00+0000\n"
"Last-Translator: Ricky Tigg <ricky.tigg@gmail.com>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/home-manager/cli/"
"fi/>\n"
"Language: fi\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6-dev\n"
"X-Generator: Weblate 5.9-dev\n"
#. translators: For example: "home-manager: missing argument for --cores"
#: home-manager/home-manager:16
@ -26,7 +26,7 @@ msgstr "%s: puuttuva argumentti kohteelle %s"
#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Konfiguraatiotiedostoa ei löytynyt sijainnista %s"
msgstr "Kokoonpanotiedostoa ei löydy %s:sta"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
@ -36,10 +36,12 @@ msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Home Managerin %s pitäminen %s:ssa on vanhentunut.\n"
"ole hyvä ja siirrä se %s:een"
#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Konfiguraatiotiedostoa ei löytynyt. Luo sellainen sijaintiin %s"
msgstr "Kokoonpanotiedostoa ei löytynyt. Luo sellainen %s:lla"
#: home-manager/home-manager:107
msgid "Home Manager not found at %s."

View file

@ -174,7 +174,7 @@ in {
}
(mkIf cfg.x11.enable {
xsession.initExtra = ''
xsession.profileExtra = ''
${pkgs.xorg.xsetroot}/bin/xsetroot -xcf ${cursorPath} ${
toString cfg.size
}

View file

@ -1827,6 +1827,40 @@ in {
as systemd services.
'';
}
{
time = "2024-12-01T19:17:40+00:00";
message = ''
A new module is available: 'programs.nix-your-shell'.
nix-your-shell is a wrapper for `nix develop` or `nix-shell` to retain
the same shell inside the new environment.
'';
}
{
time = "2024-12-01T19:34:04+00:00";
message = ''
A new module is available: 'programs.kubecolor'.
Kubecolor is a kubectl wrapper used to add colors to your kubectl
output.
'';
}
{
time = "2024-12-04T20:00:00+00:00";
condition = let
sCfg = config.programs.starship;
fCfg = config.programs.fish;
in sCfg.enable && sCfg.enableFishIntegration && fCfg.enable;
message = ''
A new option 'programs.starship.enableInteractive' is available for
the Fish shell that only enables starship if the shell is interactive.
Some plugins require this to be set to 'false' to function correctly.
'';
}
];
};
}

View file

@ -17,13 +17,13 @@ in {
powermanagementprofilesrc.AC.HandleButtonEvents.lidAction = 32;
};
description = ''
A set of values to be modified by {command}`kwriteconfig5`.
A set of values to be modified by {command}`kwriteconfig6`.
The example value would cause the following command to run in the
activation script:
``` shell
kwriteconfig5 --file $XDG_CONFIG_HOME/powermanagementprofilesrc \
kwriteconfig6 --file $XDG_CONFIG_HOME/powermanagementprofilesrc \
--group AC \
--group HandleButtonEvents \
--group lidAction \
@ -53,7 +53,7 @@ in {
lib.mapAttrsToList
(group: value: toLine file (path ++ [ group ]) value) value
else
"run test -f '${configHome}/${file}' && run ${pkgs.libsForQt5.kconfig}/bin/kwriteconfig5 --file '${configHome}/${file}' ${
"run ${pkgs.kdePackages.kconfig}/bin/kwriteconfig6 --file '${configHome}/${file}' ${
lib.concatMapStringsSep " " (x: "--group ${x}")
(lib.lists.init path)
} --key '${lib.lists.last path}' ${toValue value}";
@ -62,7 +62,7 @@ in {
in builtins.concatStringsSep "\n" lines}
# TODO: some way to only call the dbus calls needed
run ${pkgs.libsForQt5.qttools.bin}/bin/qdbus org.kde.KWin /KWin reconfigure || echo "KWin reconfigure failed"
run ${pkgs.kdePackages.qttools}/bin/qdbus org.kde.KWin /KWin reconfigure || echo "KWin reconfigure failed"
# the actual values are https://github.com/KDE/plasma-workspace/blob/c97dddf20df5702eb429b37a8c10b2c2d8199d4e/kcms/kcms-common_p.h#L13
for changeType in {0..10}; do
# even if one of those calls fails the others keep running

View file

@ -21,7 +21,7 @@ in {
config = mkIf config.uninstall {
home.packages = lib.mkForce [ ];
home.file = lib.mkForce { };
home.stateVersion = lib.mkForce "24.05";
home.stateVersion = lib.mkForce "24.11";
home.enableNixpkgsReleaseCheck = lib.mkForce false;
manual.manpages.enable = lib.mkForce false;
news.display = lib.mkForce "silent";

View file

@ -143,6 +143,7 @@ let
./programs/khard.nix
./programs/kitty.nix
./programs/kodi.nix
./programs/kubecolor.nix
./programs/lazygit.nix
./programs/ledger.nix
./programs/less.nix
@ -176,6 +177,7 @@ let
./programs/nh.nix
./programs/nheko.nix
./programs/nix-index.nix
./programs/nix-your-shell.nix
./programs/nnn.nix
./programs/noti.nix
./programs/notmuch.nix

View file

@ -132,6 +132,8 @@ in {
'';
};
package = mkPackageOption pkgs "alot" { };
hooks = mkOption {
type = types.lines;
default = "";
@ -229,7 +231,7 @@ in {
};
config = mkIf cfg.enable {
home.packages = [ pkgs.alot ];
home.packages = [ cfg.package ];
xdg.configFile."alot/config".text = configFile;

View file

@ -5,11 +5,13 @@ with lib;
let
cfg = config.programs.atuin;
daemonCfg = cfg.daemon;
tomlFormat = pkgs.formats.toml { };
inherit (pkgs.stdenv) isLinux isDarwin;
in {
meta.maintainers = [ maintainers.hawkw ];
meta.maintainers = [ maintainers.hawkw maintainers.water-sucks ];
options.programs.atuin = {
enable = mkEnableOption "atuin";
@ -94,49 +96,132 @@ in {
Whether to enable Nushell integration.
'';
};
daemon = {
enable = mkEnableOption "Atuin daemon";
logLevel = mkOption {
default = null;
type =
types.nullOr (types.enum [ "trace" "debug" "info" "warn" "error" ]);
description = ''
Verbosity of Atuin daemon logging.
'';
};
};
};
config = let flagsStr = escapeShellArgs cfg.flags;
in mkIf cfg.enable {
in mkIf cfg.enable (mkMerge [
{
# Always add the configured `atuin` package.
home.packages = [ cfg.package ];
# Always add the configured `atuin` package.
home.packages = [ cfg.package ];
# If there are user-provided settings, generate the config file.
xdg.configFile."atuin/config.toml" = mkIf (cfg.settings != { }) {
source = tomlFormat.generate "atuin-config" cfg.settings;
};
# If there are user-provided settings, generate the config file.
xdg.configFile."atuin/config.toml" = mkIf (cfg.settings != { }) {
source = tomlFormat.generate "atuin-config" cfg.settings;
};
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then
source "${pkgs.bash-preexec}/share/bash/bash-preexec.sh"
eval "$(${lib.getExe cfg.package} init bash ${flagsStr})"
fi
'';
programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
if [[ $options[zle] = on ]]; then
eval "$(${lib.getExe cfg.package} init zsh ${flagsStr})"
fi
'';
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
${lib.getExe cfg.package} init fish ${flagsStr} | source
'';
programs.nushell = mkIf cfg.enableNushellIntegration {
extraEnv = ''
let atuin_cache = "${config.xdg.cacheHome}/atuin"
if not ($atuin_cache | path exists) {
mkdir $atuin_cache
}
${
lib.getExe cfg.package
} init nu ${flagsStr} | save --force ${config.xdg.cacheHome}/atuin/init.nu
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then
source "${pkgs.bash-preexec}/share/bash/bash-preexec.sh"
eval "$(${lib.getExe cfg.package} init bash ${flagsStr})"
fi
'';
extraConfig = ''
source ${config.xdg.cacheHome}/atuin/init.nu
programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
if [[ $options[zle] = on ]]; then
eval "$(${lib.getExe cfg.package} init zsh ${flagsStr})"
fi
'';
};
};
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
${lib.getExe cfg.package} init fish ${flagsStr} | source
'';
programs.nushell = mkIf cfg.enableNushellIntegration {
extraEnv = ''
let atuin_cache = "${config.xdg.cacheHome}/atuin"
if not ($atuin_cache | path exists) {
mkdir $atuin_cache
}
${
lib.getExe cfg.package
} init nu ${flagsStr} | save --force ${config.xdg.cacheHome}/atuin/init.nu
'';
extraConfig = ''
source ${config.xdg.cacheHome}/atuin/init.nu
'';
};
}
(mkIf daemonCfg.enable (mkMerge [
{
assertions = [
{
assertion = versionAtLeast cfg.package.version "18.2.0";
message = ''
The Atuin daemon requires at least version 18.2.0 or later.
'';
}
{
assertion = isLinux || isDarwin;
message =
"The Atuin daemon can only be configured on either Linux or macOS.";
}
];
programs.atuin.settings = { daemon = { enabled = true; }; };
}
(mkIf isLinux {
programs.atuin.settings = { daemon = { systemd_socket = true; }; };
systemd.user.services.atuin-daemon = {
Unit = {
Description = "Atuin daemon";
Requires = [ "atuin-daemon.socket" ];
};
Install = {
Also = [ "atuin-daemon.socket" ];
WantedBy = [ "default.target" ];
};
Service = {
ExecStart = "${lib.getExe cfg.package} daemon";
Environment = lib.optionals (daemonCfg.logLevel != null)
[ "ATUIN_LOG=${daemonCfg.logLevel}" ];
Restart = "on-failure";
RestartSteps = 3;
RestartMaxDelaySec = 6;
};
};
systemd.user.sockets.atuin-daemon = {
Unit = { Description = "Atuin daemon socket"; };
Install = { WantedBy = [ "sockets.target" ]; };
Socket = {
ListenStream = "%h/.local/share/atuin/atuin.sock";
SocketMode = "0600";
RemoveOnStop = true;
};
};
})
(mkIf isDarwin {
launchd.agents.atuin-daemon = {
enable = true;
config = {
ProgramArguments = [ "${lib.getExe cfg.package}" "daemon" ];
EnvironmentVariables =
lib.optionalAttrs (daemonCfg.logLevel != null) {
ATUIN_LOG = daemonCfg.logLevel;
};
KeepAlive = {
Crashed = true;
SuccessfulExit = false;
};
ProcessType = "Background";
};
};
})
]))
]);
}

View file

@ -658,12 +658,30 @@ in {
{command}`nix-env -f '<nixpkgs>' -qaP -A kakounePlugins`.
'';
};
colorSchemePackage = mkOption {
type = with types; nullOr package;
default = null;
example = literalExpression "pkgs.kakounePlugins.kakoune-catppuccin";
description = ''
A kakoune color schemes to add to your colors folder. This works
because kakoune recursively checks
{file}`$XDG_CONFIG_HOME/kak/colors/`. To apply the color scheme use
`programs.kakoune.config.colorScheme = "theme"`.
'';
};
};
};
config = mkIf cfg.enable {
home.packages = [ kakouneWithPlugins ];
home.sessionVariables = mkIf cfg.defaultEditor { EDITOR = "kak"; };
xdg.configFile."kak/kakrc".source = configFile;
xdg.configFile = mkMerge [
{ "kak/kakrc".source = configFile; }
(mkIf (cfg.colorSchemePackage != null) {
"kak/colors/${cfg.colorSchemePackage.name}".source =
cfg.colorSchemePackage;
})
];
};
}

View file

@ -0,0 +1,87 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.kubecolor;
yamlFormat = pkgs.formats.yaml { };
inherit (pkgs.stdenv.hostPlatform) isDarwin;
in {
meta.maintainers = with maintainers; [ ajgon ];
options.programs.kubecolor = {
enable = mkEnableOption "kubecolor - Colorize your kubectl output";
package = mkPackageOption pkgs "kubecolor" { };
enableAlias = mkOption {
type = types.bool;
default = false;
description = ''
When set to true, it will create an alias for kubectl pointing to
kubecolor, thus making kubecolor the default kubectl client.
'';
};
settings = mkOption {
type = yamlFormat.type;
default = { };
example = literalExpression ''
kubectl = lib.getExe pkgs.kubectl
preset = "dark";
paging = "auto";
'';
description = ''
Configuration written to {file}`~/.kube/color.yaml` (Linux)
or {file}`Library/Application Support/kube/color.yaml` (Darwin).
See <https://kubecolor.github.io/reference/config/> for supported
values.
'';
};
};
config = let
preferXdgDirectories = config.home.preferXdgDirectories
&& (!isDarwin || config.xdg.enable);
# https://github.com/kubecolor/kubecolor/pull/145
configPathSuffix = if cfg.package.pname == "kubecolor"
&& lib.strings.toInt (lib.versions.major cfg.package.version) == 0
&& lib.strings.toInt (lib.versions.minor cfg.package.version) < 4 then
"kube/"
else
"kube/color.yaml";
in mkIf cfg.enable {
home.packages = [ cfg.package ];
home.sessionVariables = if preferXdgDirectories then {
KUBECOLOR_CONFIG = "${config.xdg.configHome}/${configPathSuffix}";
} else if isDarwin then {
KUBECOLOR_CONFIG =
"${config.home.homeDirectory}/Library/Application Support/${configPathSuffix}";
} else
{ };
xdg.configFile = mkIf preferXdgDirectories {
"kube/color.yaml" = mkIf (cfg.settings != { }) {
source = yamlFormat.generate "kubecolor-settings" cfg.settings;
};
};
home.file = mkIf (!preferXdgDirectories) {
"Library/Application Support/kube/color.yaml" =
mkIf (isDarwin && cfg.settings != { }) {
source = yamlFormat.generate "kubecolor-settings" cfg.settings;
};
".kube/color.yaml" = mkIf (!isDarwin && cfg.settings != { }) {
source = yamlFormat.generate "kubecolor-settings" cfg.settings;
};
};
home.shellAliases =
lib.mkIf cfg.enableAlias { kubectl = lib.getExe cfg.package; };
};
}

View file

@ -68,7 +68,7 @@ in {
{
mpv = {
no_display = true;
}
};
}
'';
description = ''

View file

@ -0,0 +1,56 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.nix-your-shell;
in {
meta.maintainers = [ maintainers.terlar ];
options.programs.nix-your-shell = {
enable = mkEnableOption ''
{command}`nix-your-shell`, a wrapper for `nix develop` or `nix-shell`
to retain the same shell inside the new environment'';
package = mkPackageOption pkgs "nix-your-shell" { };
enableFishIntegration = mkEnableOption "Fish integration" // {
default = true;
};
enableNushellIntegration = mkEnableOption "Nushell integration" // {
default = true;
};
enableZshIntegration = mkEnableOption "Zsh integration" // {
default = true;
};
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
programs = {
fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
${cfg.package}/bin/nix-your-shell fish | source
'';
nushell = mkIf cfg.enableNushellIntegration {
extraEnv = ''
mkdir ${config.xdg.cacheHome}/nix-your-shell
${cfg.package}/bin/nix-your-shell nu | save --force ${config.xdg.cacheHome}/nix-your-shell/init.nu
'';
extraConfig = ''
source ${config.xdg.cacheHome}/nix-your-shell/init.nu
'';
};
zsh.initExtra = mkIf cfg.enableZshIntegration ''
${cfg.package}/bin/nix-your-shell zsh | source /dev/stdin
'';
};
};
}

View file

@ -10,6 +10,8 @@ let
starshipCmd = "${config.home.profileDirectory}/bin/starship";
initFish =
if cfg.enableInteractive then "interactiveShellInit" else "shellInitLast";
in {
meta.maintainers = [ ];
@ -71,6 +73,17 @@ in {
default = true;
};
enableInteractive = mkOption {
type = types.bool;
default = true;
description = ''
Only enable starship when the shell is interactive. This option is only
valid for the Fish shell.
Some plugins require this to be set to `false` to function correctly.
'';
};
enableTransience = mkOption {
type = types.bool;
default = false;
@ -104,9 +117,9 @@ in {
fi
'';
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
programs.fish.${initFish} = mkIf cfg.enableFishIntegration ''
if test "$TERM" != "dumb"
eval (${starshipCmd} init fish)
${starshipCmd} init fish | source
${lib.optionalString cfg.enableTransience "enable_transience"}
end
'';

View file

@ -95,6 +95,7 @@ let
''}
set -g mouse ${boolToStr cfg.mouse}
set -g focus-events ${boolToStr cfg.focusEvents}
setw -g aggressive-resize ${boolToStr cfg.aggressiveResize}
setw -g clock-mode-style ${if cfg.clock24 then "24" else "12"}
set -s escape-time ${toString cfg.escapeTime}
@ -191,6 +192,15 @@ in {
'';
};
focusEvents = mkOption {
default = false;
type = types.bool;
description = ''
On supported terminals, request focus events and pass them through to
applications running in tmux.
'';
};
historyLimit = mkOption {
default = 2000;
example = 5000;
@ -239,7 +249,7 @@ in {
sensibleOnTop = mkOption {
type = types.bool;
default = true;
default = false;
description = ''
Run the sensible plugin at the top of the configuration. It
is possible to override the sensible settings using the

View file

@ -77,16 +77,16 @@ in {
default = { };
example = literalExpression ''
{
input.keymap = [
{ exec = "close"; on = [ "<C-q>" ]; }
{ exec = "close --submit"; on = [ "<Enter>" ]; }
{ exec = "escape"; on = [ "<Esc>" ]; }
{ exec = "backspace"; on = [ "<Backspace>" ]; }
input.prepend_keymap = [
{ run = "close"; on = [ "<C-q>" ]; }
{ run = "close --submit"; on = [ "<Enter>" ]; }
{ run = "escape"; on = [ "<Esc>" ]; }
{ run = "backspace"; on = [ "<Backspace>" ]; }
];
manager.keymap = [
{ exec = "escape"; on = [ "<Esc>" ]; }
{ exec = "quit"; on = [ "q" ]; }
{ exec = "close"; on = [ "<C-q>" ]; }
manager.prepend_keymap = [
{ run = "escape"; on = [ "<Esc>" ]; }
{ run = "quit"; on = [ "q" ]; }
{ run = "close"; on = [ "<C-q>" ]; }
];
}
'';

View file

@ -427,6 +427,9 @@ in
- `match_prev_cmd`: Like `history`, but chooses the most recent match whose preceding history item matches
the most recently executed command. Note that this strategy won't work as expected with ZSH options that
don't preserve the history order such as `HIST_IGNORE_ALL_DUPS` or `HIST_EXPIRE_DUPS_FIRST`.
Setting the option to an empty list `[]` will make ZSH_AUTOSUGGESTION_STRATEGY not be set automatically,
allowing the variable to be declared in {option}`programs.zsh.localVariables` or {option}`programs.zsh.sessionVariables`
'';
};
};
@ -641,7 +644,10 @@ in
(optionalString cfg.autosuggestion.enable ''
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
ZSH_AUTOSUGGEST_STRATEGY=(${concatStringsSep " " cfg.autosuggestion.strategy})
${optionalString (cfg.autosuggestion.strategy != []) ''
ZSH_AUTOSUGGEST_STRATEGY=(${concatStringsSep " " cfg.autosuggestion.strategy})
''
}
'')
(optionalString (cfg.autosuggestion.enable && cfg.autosuggestion.highlight != null) ''
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.autosuggestion.highlight}"

View file

@ -9,6 +9,8 @@ in {
enable =
mkEnableOption "zsh-abbr - zsh manager for auto-expanding abbreviations";
package = mkPackageOption pkgs "zsh-abbr" { };
abbreviations = mkOption {
type = types.attrsOf types.str;
default = { };
@ -27,7 +29,7 @@ in {
config = mkIf cfg.enable {
programs.zsh.plugins = [{
name = "zsh-abbr";
src = pkgs.zsh-abbr;
src = cfg.package;
file = "share/zsh/zsh-abbr/zsh-abbr.plugin.zsh";
}];

View file

@ -25,7 +25,7 @@ in {
serverUrl = mkOption {
type = types.str;
default = "https://api.etesync.com/";
default = "https://api.etebase.com/partner/etesync/";
description = "The URL to the etesync server.";
};

View file

@ -27,8 +27,8 @@ let
Restart = "always";
RestartSec = 30;
Type = "simple";
} // optionalAttrs account.notmuch.enable {
Environment =
Environment = [ "PATH=${cfg.path}" ]
++ optional account.notmuch.enable
"NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/default/config";
};
@ -97,6 +97,17 @@ in {
example = literalExpression "pkgs.imapnotify";
description = "The imapnotify package to use";
};
path = mkOption {
type = types.listOf types.package;
apply = lib.makeBinPath;
default = [ ];
description = ''
List of packages to provide in PATH for the imapnotify service.
Note, this does not apply to the Darwin launchd service.
'';
};
};
accounts.email.accounts = mkOption {
@ -122,6 +133,12 @@ in {
(checkAccounts (a: a.userName == null) "username")
];
services.imapnotify.path = lib.mkMerge [
(lib.mkIf config.programs.notmuch.enable [ pkgs.notmuch ])
(lib.mkIf config.programs.mbsync.enable
[ config.programs.mbsync.package ])
];
systemd.user.services = listToAttrs (map genAccountUnit imapnotifyAccounts);
launchd.agents = listToAttrs (map genAccountAgent imapnotifyAccounts);

View file

@ -14,8 +14,8 @@ in {
enable = mkEnableOption "KDE connect";
package = mkOption {
type = types.package;
default = pkgs.plasma5Packages.kdeconnect-kde;
example = literalExpression "pkgs.kdePackages.kdeconnect-kde";
default = pkgs.kdePackages.kdeconnect-kde;
example = literalExpression "pkgs.plasma5Packages.kdeconnect-kde";
description = "The KDE connect package to use";
};

View file

@ -59,7 +59,6 @@ in {
"%C/lorri"
# Needs %C/nix/fetcher-cache-v1.sqlite
"%C/nix"
"/nix/var/nix/gcroots/per-user/%u"
];
CacheDirectory = [ "lorri" ];
Restart = "on-failure";

View file

@ -23,7 +23,8 @@ let
name = "mopidy-with-extensions-${pkgs.mopidy.version}";
paths = closePropagation cfg.extensionPackages;
pathsToLink = [ "/${pkgs.mopidyPackages.python.sitePackages}" ];
buildInputs = [ pkgs.makeWrapper ];
nativeBuildInputs = [ pkgs.makeWrapper ];
ignoreCollisions = true;
postBuild = ''
makeWrapper ${pkgs.mopidy}/bin/mopidy $out/bin/mopidy \
--prefix PYTHONPATH : $out/${pkgs.mopidyPackages.python.sitePackages}

View file

@ -61,5 +61,12 @@ in {
Install = { WantedBy = [ "timers.target" ]; };
};
})
({
xdg.configFile."systemd/user/podman-user-wait-network-online.service.d/50-exec-search-path.conf".text =
''
[Service]
ExecSearchPath=${pkgs.bashInteractive}/bin:${pkgs.systemd}/bin:/bin
'';
})
]);
}

View file

@ -99,6 +99,6 @@ in {
'';
};
xsession.initExtra = xrdbMerge;
xsession.profileExtra = xrdbMerge;
};
}

View file

@ -98,6 +98,7 @@ in import nmtSrc {
./modules/programs/khal
./modules/programs/khard
./modules/programs/kitty
./modules/programs/kubecolor
./modules/programs/ledger
./modules/programs/less
./modules/programs/lf
@ -118,6 +119,7 @@ in import nmtSrc {
./modules/programs/newsboat
./modules/programs/nheko
./modules/programs/nix-index
./modules/programs/nix-your-shell
./modules/programs/nnn
./modules/programs/nushell
./modules/programs/oh-my-posh

View file

@ -17,7 +17,7 @@
};
home-manager.users.alice = { ... }: {
home.stateVersion = "24.05";
home.stateVersion = "24.11";
home.file.test.text = "testfile";
# Enable a light-weight systemd service.
services.pueue.enable = true;

View file

@ -13,7 +13,7 @@
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "24.05"; # Please read the comment before changing.
home.stateVersion = "24.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.

View file

@ -3,7 +3,7 @@
{
home.username = "alice";
home.homeDirectory = "/home/alice";
home.stateVersion = "24.05";
home.stateVersion = "24.11";
home.packages = [ pkgs.hello ];
home.file.test.text = "test";
home.sessionVariables.EDITOR = "emacs";

View file

@ -1,7 +1,7 @@
{ ... }: {
home.username = "alice";
home.homeDirectory = "/home/alice";
home.stateVersion = "24.05";
home.stateVersion = "24.11";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;

View file

@ -2,7 +2,7 @@
home.username = "alice";
home.homeDirectory = "/home/alice";
home.stateVersion = "24.05"; # Please read the comment before changing.
home.stateVersion = "24.11"; # Please read the comment before changing.
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;

View file

@ -5,7 +5,7 @@
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [ fcitx5-chinese-addons ];
fcitx5.addons = [ pkgs.libsForQt5.fcitx5-chinese-addons ];
};
nmt.script = ''

View file

@ -1,14 +1,10 @@
{ config, lib, pkgs, ... }:
with lib;
{ config, ... }:
{
config = {
nix = { package = config.lib.test.mkStubPackage { }; };
nix = { package = config.lib.test.mkStubPackage { }; };
nmt.script = ''
assertPathNotExists home-files/.config/nix
assertPathNotExists home-files/.nix-defexpr/50-home-manager
'';
};
nmt.script = ''
assertPathNotExists home-files/.config/nix
assertPathNotExists home-files/.nix-defexpr/50-home-manager
'';
}

View file

@ -9,21 +9,19 @@ let
}
'';
in {
config = {
nix = {
package = config.lib.test.mkStubPackage {
version = lib.getVersion pkgs.nixVersions.stable;
};
channels.example = exampleChannel;
settings.use-xdg-base-directories = true;
nix = {
package = config.lib.test.mkStubPackage {
version = lib.getVersion pkgs.nixVersions.stable;
};
nmt.script = ''
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/home/hm-user/.local/state/nix/defexpr/50-home-manager''${NIX_PATH:+:$NIX_PATH}"'
assertFileContent \
home-files/.local/state/nix/defexpr/50-home-manager/example/default.nix \
${exampleChannel}/default.nix
'';
channels.example = exampleChannel;
settings.use-xdg-base-directories = true;
};
nmt.script = ''
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/home/hm-user/.local/state/nix/defexpr/50-home-manager''${NIX_PATH:+:$NIX_PATH}"'
assertFileContent \
home-files/.local/state/nix/defexpr/50-home-manager/example/default.nix \
${exampleChannel}/default.nix
'';
}

View file

@ -9,18 +9,16 @@ let
}
'';
in {
config = {
nix = {
package = config.lib.test.mkStubPackage { };
channels.example = exampleChannel;
};
nmt.script = ''
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/home/hm-user/.nix-defexpr/50-home-manager''${NIX_PATH:+:$NIX_PATH}"'
assertFileContent \
home-files/.nix-defexpr/50-home-manager/example/default.nix \
${exampleChannel}/default.nix
'';
nix = {
package = config.lib.test.mkStubPackage { };
channels.example = exampleChannel;
};
nmt.script = ''
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/home/hm-user/.nix-defexpr/50-home-manager''${NIX_PATH:+:$NIX_PATH}"'
assertFileContent \
home-files/.nix-defexpr/50-home-manager/example/default.nix \
${exampleChannel}/default.nix
'';
}

View file

@ -1,25 +1,21 @@
{ config, lib, pkgs, ... }:
with lib;
{ ... }:
{
config = {
nix = {
registry = {
nixpkgs = {
to = {
type = "github";
owner = "my-org";
repo = "my-nixpkgs";
};
nix = {
registry = {
nixpkgs = {
to = {
type = "github";
owner = "my-org";
repo = "my-nixpkgs";
};
};
};
nmt.script = ''
assertFileContent \
home-files/.config/nix/registry.json \
${./example-registry-expected.json}
'';
};
nmt.script = ''
assertFileContent \
home-files/.config/nix/registry.json \
${./example-registry-expected.json}
'';
}

View file

@ -1,38 +1,34 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
nix = {
package = config.lib.test.mkStubPackage {
version = lib.getVersion pkgs.nixVersions.stable;
buildScript = ''
target=$out/bin/nix
mkdir -p "$(dirname "$target")"
nix = {
package = config.lib.test.mkStubPackage {
version = lib.getVersion pkgs.nixVersions.stable;
buildScript = ''
target=$out/bin/nix
mkdir -p "$(dirname "$target")"
echo -n "true" > "$target"
echo -n "true" > "$target"
chmod +x "$target"
'';
};
nixPath = [ "/a" "/b/c" ];
settings = {
use-sandbox = true;
show-trace = true;
system-features = [ "big-parallel" "kvm" "recursive-nix" ];
};
chmod +x "$target"
'';
};
nmt.script = ''
assertFileContent \
home-files/.config/nix/nix.conf \
${./example-settings-expected.conf}
nixPath = [ "/a" "/b/c" ];
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/a:/b/c''${NIX_PATH:+:$NIX_PATH}"'
'';
settings = {
use-sandbox = true;
show-trace = true;
system-features = [ "big-parallel" "kvm" "recursive-nix" ];
};
};
nmt.script = ''
assertFileContent \
home-files/.config/nix/nix.conf \
${./example-settings-expected.conf}
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/a:/b/c''${NIX_PATH:+:$NIX_PATH}"'
'';
}

View file

@ -1,16 +1,14 @@
{ config, ... }:
{
config = {
nix = {
package = config.lib.test.mkStubPackage { };
nixPath = [ "/a" "/b/c" ];
keepOldNixPath = false;
};
nmt.script = ''
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/a:/b/c"'
'';
nix = {
package = config.lib.test.mkStubPackage { };
nixPath = [ "/a" "/b/c" ];
keepOldNixPath = false;
};
nmt.script = ''
assertFileContains home-path/etc/profile.d/hm-session-vars.sh \
'export NIX_PATH="/a:/b/c"'
'';
}

View file

@ -1,12 +1,10 @@
{
config = {
qt.enable = true;
qt.enable = true;
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
};
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
}

View file

@ -1,27 +1,30 @@
{
config = {
qt = {
enable = true;
# Check if still backwards compatible
platformTheme = "gnome";
style.name = "adwaita";
};
test.stubs.qgnomeplatform = { };
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_QPA_PLATFORMTHEME="gnome"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_STYLE_OVERRIDE="adwaita"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
test.asserts.warnings.expected = [
"The option `qt.platformTheme` has been renamed to `qt.platformTheme.name`."
"The value `gnome` for option `qt.platformTheme` is deprecated. Use `adwaita` instead."
];
qt = {
enable = true;
# Check if still backwards compatible
platformTheme = "gnome";
style.name = "adwaita";
};
test.stubs = {
qgnomeplatform = { };
qgnomeplatform-qt6 = { };
adwaita-qt = { };
adwaita-qt6 = { };
};
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_QPA_PLATFORMTHEME="gnome"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_STYLE_OVERRIDE="adwaita"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
test.asserts.warnings.expected = [
"The option `qt.platformTheme` has been renamed to `qt.platformTheme.name`."
"The value `gnome` for option `qt.platformTheme` is deprecated. Use `adwaita` instead."
];
}

View file

@ -1,18 +1,31 @@
{
config = {
qt = {
enable = true;
platformTheme.name = "gtk";
};
i18n.inputMethod.enabled = "fcitx5";
imports = [ ../../i18n/input-method/fcitx5-stubs.nix ];
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_QPA_PLATFORMTHEME="gtk2"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
qt = {
enable = true;
platformTheme.name = "gtk";
};
i18n.inputMethod.enabled = "fcitx5";
nixpkgs.overlays = [
(final: prev: {
libsForQt5 = prev.libsForQt5.overrideScope (qt5final: qt5prev: {
qtstyleplugins = prev.mkStubPackage { outPath = null; };
});
qt6Packages = prev.qt6Packages.overrideScope (qt6final: qt6prev: {
qt6gtk2 = prev.mkStubPackage { outPath = null; };
});
})
];
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_QPA_PLATFORMTHEME="gtk2"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
}

View file

@ -1,17 +1,15 @@
{
config = {
qt = {
enable = true;
platformTheme.name = "gtk3";
};
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_QPA_PLATFORMTHEME="gtk3"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
qt = {
enable = true;
platformTheme.name = "gtk3";
};
nmt.script = ''
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_QPA_PLATFORMTHEME="gtk3"'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QT_PLUGIN_PATH'
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
}

View file

@ -7,6 +7,8 @@
extraConfig = "test";
};
test.stubs.cmus = { };
nmt.script = ''
assertFileContent \
home-files/.config/cmus/rc \

View file

@ -0,0 +1,5 @@
{
kubecolor-empty-config = ./empty-config.nix;
kubecolor-example-config-default-paths = ./example-config-default-paths.nix;
kubecolor-example-config-xdg-paths = ./example-config-xdg-paths.nix;
}

View file

@ -0,0 +1,20 @@
{ pkgs, config, ... }:
let
configDir =
if pkgs.stdenv.isDarwin then "Library/Application Support" else ".config";
in {
programs.kubecolor = {
enable = true;
package = config.lib.test.mkStubPackage {
name = "kubecolor";
version = "0.4.0";
};
};
test.stubs.kubecolor = { };
nmt.script = ''
assertPathNotExists 'home-files/${configDir}/kube/color.yaml'
'';
}

View file

@ -0,0 +1,37 @@
{ pkgs, config, ... }:
let
configDir = if pkgs.stdenv.isDarwin then
"Library/Application Support/kube"
else
".kube";
in {
programs.kubecolor = {
enable = true;
package = config.lib.test.mkStubPackage {
name = "kubecolor";
version = "0.4.0";
};
settings = {
kubectl = "kubectl";
preset = "dark";
objFreshThreshold = 0;
paging = "auto";
pager = "less";
};
};
nmt.script = ''
assertFileExists 'home-files/${configDir}/color.yaml'
assertFileContent 'home-files/${configDir}/color.yaml' \
${
builtins.toFile "expected.yaml" ''
kubectl: kubectl
objFreshThreshold: 0
pager: less
paging: auto
preset: dark
''
}
'';
}

View file

@ -0,0 +1,36 @@
{ config, ... }:
{
xdg.enable = true;
home.preferXdgDirectories = true;
programs.kubecolor = {
enable = true;
package = config.lib.test.mkStubPackage {
name = "kubecolor";
version = "0.4.0";
};
settings = {
kubectl = "kubectl";
preset = "dark";
objFreshThreshold = 0;
paging = "auto";
pager = "less";
};
};
nmt.script = ''
assertFileExists 'home-files/.config/kube/color.yaml'
assertFileContent 'home-files/.config/kube/color.yaml' \
${
builtins.toFile "expected.yaml" ''
kubectl: kubectl
objFreshThreshold: 0
pager: less
paging: auto
preset: dark
''
}
'';
}

View file

@ -0,0 +1 @@
{ nix-your-shell-enable-shells = ./enable-shells.nix; }

View file

@ -0,0 +1,48 @@
{ pkgs, config, ... }:
{
programs = {
nix-your-shell = {
enable = true;
enableFishIntegration = true;
enableNushellIntegration = true;
enableZshIntegration = true;
};
fish.enable = true;
nushell.enable = true;
zsh.enable = true;
};
test.stubs = {
nix-your-shell = { };
nushell = { };
zsh = { };
};
nmt.script = let
nushellConfigDir = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell"
else
"home-files/.config/nushell";
in ''
assertFileExists home-files/.config/fish/config.fish
assertFileContains \
home-files/.config/fish/config.fish \
'@nix-your-shell@/bin/nix-your-shell fish | source'
assertFileExists ${nushellConfigDir}/config.nu
assertFileContains \
${nushellConfigDir}/config.nu \
'source ${config.xdg.cacheHome}/nix-your-shell/init.nu'
assertFileExists ${nushellConfigDir}/env.nu
assertFileContains \
${nushellConfigDir}/env.nu \
'@nix-your-shell@/bin/nix-your-shell nu | save --force ${config.xdg.cacheHome}/nix-your-shell/init.nu'
assertFileExists home-files/.zshrc
assertFileContains \
home-files/.zshrc \
'@nix-your-shell@/bin/nix-your-shell zsh | source /dev/stdin'
'';
}

View file

@ -2,4 +2,6 @@
starship-settings = ./settings.nix;
starship-fish-with-transience = ./fish_with_transience.nix;
starship-fish-without-transience = ./fish_without_transience.nix;
starship-fish-with-interactive = ./fish_with_interactive.nix;
starship-fish-without-interactive = ./fish_without_interactive.nix;
}

View file

@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
programs = {
fish.enable = true;
starship.enable = true;
};
nmt.script = ''
assertFileExists home-files/.config/fish/config.fish
export GOT="$(tail -n 5 `_abs home-files/.config/fish/config.fish`)"
export NOT_EXPECTED="
if test \"\$TERM\" != dumb
/home/hm-user/.nix-profile/bin/starship init fish | source
end"
if [[ "$GOT" == "$NOT_EXPECTED" ]]; then
fail "Expected starship init to be inside the 'is-interactive' block but it wasn't."
fi
'';
};
}

View file

@ -0,0 +1,43 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
programs = {
fish.enable = true;
starship = {
enable = true;
enableInteractive = false;
};
};
nmt.script = ''
assertFileExists home-files/.config/fish/config.fish
export GOT="$(tail -n 5 `_abs home-files/.config/fish/config.fish`)"
export EXPECTED="
if test \"\$TERM\" != dumb
/home/hm-user/.nix-profile/bin/starship init fish | source
end"
export MESSAGE="
==========
Expected
==========
$EXPECTED
==========
Got
==========
$GOT
==========
"
if [[ "$GOT" != "$EXPECTED" ]]; then
fail "$MESSAGE"
fi
'';
};
}

View file

@ -1,8 +1,3 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
@ -24,6 +19,7 @@ set -g mode-keys emacs
set -g mouse off
set -g focus-events off
setw -g aggressive-resize off
setw -g clock-mode-style 12
set -s escape-time 500

View file

@ -1,8 +1,3 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
@ -24,6 +19,7 @@ bind-key -N "Kill the current pane" x kill-pane
set -g mouse off
set -g focus-events off
setw -g aggressive-resize off
setw -g clock-mode-style 12
set -s escape-time 500

View file

@ -1,8 +1,3 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @tmuxplugin_sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
@ -24,6 +19,7 @@ set -g mode-keys emacs
set -g mouse off
set -g focus-events off
setw -g aggressive-resize on
setw -g clock-mode-style 24
set -s escape-time 500

View file

@ -1,8 +1,3 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
@ -22,6 +17,7 @@ set -g mode-keys emacs
set -g mouse on
set -g focus-events off
setw -g aggressive-resize off
setw -g clock-mode-style 12
set -s escape-time 500

View file

@ -1,8 +1,3 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
@ -27,6 +22,7 @@ bind -N "Send the prefix key through to the application" \
set -g mouse off
set -g focus-events off
setw -g aggressive-resize off
setw -g clock-mode-style 12
set -s escape-time 500

View file

@ -1,8 +1,3 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
@ -28,6 +23,7 @@ bind C-a last-window
set -g mouse off
set -g focus-events off
setw -g aggressive-resize off
setw -g clock-mode-style 12
set -s escape-time 500

View file

@ -1,8 +1,3 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
@ -24,6 +19,7 @@ set -g mode-keys vi
set -g mouse off
set -g focus-events off
setw -g aggressive-resize on
setw -g clock-mode-style 24
set -s escape-time 500

View file

@ -1,27 +1,27 @@
[[input.keymap]]
exec = "close"
[[input.prepend_keymap]]
on = ["<C-q>"]
run = "close"
[[input.keymap]]
exec = "close --submit"
[[input.prepend_keymap]]
on = ["<Enter>"]
run = "close --submit"
[[input.keymap]]
exec = "escape"
[[input.prepend_keymap]]
on = ["<Esc>"]
run = "escape"
[[input.keymap]]
exec = "backspace"
[[input.prepend_keymap]]
on = ["<Backspace>"]
run = "backspace"
[[manager.keymap]]
exec = "escape"
[[manager.prepend_keymap]]
on = ["<Esc>"]
run = "escape"
[[manager.keymap]]
exec = "quit"
[[manager.prepend_keymap]]
on = ["q"]
run = "quit"
[[manager.keymap]]
exec = "close"
[[manager.prepend_keymap]]
on = ["<C-q>"]
run = "close"

View file

@ -5,35 +5,35 @@
enable = true;
keymap = {
input.keymap = [
input.prepend_keymap = [
{
exec = "close";
run = "close";
on = [ "<C-q>" ];
}
{
exec = "close --submit";
run = "close --submit";
on = [ "<Enter>" ];
}
{
exec = "escape";
run = "escape";
on = [ "<Esc>" ];
}
{
exec = "backspace";
run = "backspace";
on = [ "<Backspace>" ];
}
];
manager.keymap = [
manager.prepend_keymap = [
{
exec = "escape";
run = "escape";
on = [ "<Esc>" ];
}
{
exec = "quit";
run = "quit";
on = [ "q" ];
}
{
exec = "close";
run = "close";
on = [ "<C-q>" ];
}
];

View file

@ -2,6 +2,7 @@
WantedBy=default.target
[Service]
Environment=PATH=
Environment=NOTMUCH_CONFIG=/home/hm-user/.config/notmuch/default/config
ExecStart=@goimapnotify@/bin/goimapnotify -conf '/nix/store/00000000000000000000000000000000-imapnotify-hm-example.com-config.json'
Restart=always

View file

@ -38,11 +38,11 @@ Delegate=yes
Type=notify
NotifyAccess=all
SyslogIdentifier=%N
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman run --name=my-container --cidfile=%t/%N.cid --replace --rm --cgroups=split --network=mynet --network-alias test-alias-1 --network-alias test-alias-2 --sdnotify=conmon -d --device=/dev/null:/dev/null --entrypoint=/sleep.sh --read-only-tmpfs -v /tmp:/tmp --label io.containers.autoupdate=registry --publish 8080:80 --env VAL_A=A --env VAL_B=2 --env VAL_C=false --label nix.home-manager.managed=true --security-opt=no-new-privileges docker.io/alpine:latest
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman run --name my-container --cidfile=%t/%N.cid --replace --rm --cgroups=split --entrypoint /sleep.sh --network-alias test-alias-1 --network-alias test-alias-2 --read-only-tmpfs --network mynet --sdnotify=conmon -d --device /dev/null:/dev/null -v /tmp:/tmp --label io.containers.autoupdate=registry --publish 8080:80 --env VAL_A=A --env VAL_B=2 --env VAL_C=false --label nix.home-manager.managed=true --security-opt=no-new-privileges docker.io/alpine:latest
[Unit]
Wants=network-online.target
After=network-online.target
Wants=podman-user-wait-network-online.service
After=podman-user-wait-network-online.service
After=network.target
Before=fake.target
Description=home-manager test

View file

@ -28,11 +28,11 @@ Delegate=yes
Type=notify
NotifyAccess=all
SyslogIdentifier=%N
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman run --name=my-container --cidfile=%t/%N.cid --replace --rm --cgroups=split --network=my-net --network=externalnet --sdnotify=conmon -d --label nix.home-manager.managed=true docker.io/alpine:latest
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman run --name my-container --cidfile=%t/%N.cid --replace --rm --cgroups=split --network my-net --network externalnet --sdnotify=conmon -d --label nix.home-manager.managed=true docker.io/alpine:latest
[Unit]
Wants=network-online.target
After=network-online.target
Wants=podman-user-wait-network-online.service
After=podman-user-wait-network-online.service
After=network.target
After=podman-my-net-network.service
Description=Service for container my-container

View file

@ -19,11 +19,14 @@ Environment=PATH=/run/wrappers/bin:/usr/bin:/bin:/usr/sbin:/sbin:/nix/store/0000
ExecStartPre=/nix/store/00000000000000000000000000000000-await-podman-unshare
RemainAfterExit=yes
TimeoutStartSec=15
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman network create --ignore --subnet=192.168.123.0/24 --gateway=192.168.123.1 --label nix.home-manager.managed=true my-net
Type=oneshot
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman network create --ignore --subnet 192.168.123.0/24 --gateway 192.168.123.1 --label nix.home-manager.managed=true my-net
SyslogIdentifier=%N
Type=oneshot
[Unit]
Wants=podman-user-wait-network-online.service
After=podman-user-wait-network-online.service
After=network.target
Description=Service for network my-net
SourcePath=/nix/store/00000000000000000000000000000000-home-network-podman-my-net/quadlets/podman-my-net.network
RequiresMountsFor=%t/containers

View file

@ -23,11 +23,14 @@ Environment=PATH=/run/wrappers/bin:/usr/bin:/bin:/usr/sbin:/sbin:/nix/store/0000
ExecStartPre=/nix/store/00000000000000000000000000000000-await-podman-unshare
RemainAfterExit=yes
TimeoutStartSec=15
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman network create --ignore --subnet=192.168.1.0/24 --gateway=192.168.1.1 --opt isolate=true --label nix.home-manager.managed=true --ipam-driver dhcp --dns=192.168.55.1 --log-level=debug my-net
Type=oneshot
ExecStart=/nix/store/00000000000000000000000000000000-podman/bin/podman network create --ignore --subnet 192.168.1.0/24 --gateway 192.168.1.1 --opt isolate=true --label nix.home-manager.managed=true --ipam-driver dhcp --dns=192.168.55.1 --log-level=debug my-net
SyslogIdentifier=%N
Type=oneshot
[Unit]
Wants=podman-user-wait-network-online.service
After=podman-user-wait-network-online.service
After=network.target
Description=Service for network my-net
SourcePath=/nix/store/00000000000000000000000000000000-home-network-podman-my-net/quadlets/podman-my-net.network
RequiresMountsFor=%t/containers

View file

@ -1,13 +1,9 @@
{ config, lib, ... }:
with lib;
{ ... }:
{
config = {
xresources.properties = { };
xresources.properties = { };
nmt.script = ''
assertPathNotExists home-files/.Xresources
'';
};
nmt.script = ''
assertPathNotExists home-files/.Xresources
'';
}

View file

@ -1,22 +1,18 @@
{ config, lib, ... }:
with lib;
{ ... }:
{
config = {
xresources = {
properties = {
"Test*string" = "test-string";
"Test*boolean1" = true;
"Test*boolean2" = false;
"Test*int" = 10;
"Test*list" = [ "list-str" true false 10 ];
};
xresources = {
properties = {
"Test*string" = "test-string";
"Test*boolean1" = true;
"Test*boolean2" = false;
"Test*int" = 10;
"Test*list" = [ "list-str" true false 10 ];
};
nmt.script = ''
assertFileExists home-files/.Xresources
assertFileContent home-files/.Xresources ${./xresources-expected.conf}
'';
};
nmt.script = ''
assertFileExists home-files/.Xresources
assertFileContent home-files/.Xresources ${./xresources-expected.conf}
'';
}