From 40ab43ae98cb3e6f07eaeaa3f3ed56d589da21b0 Mon Sep 17 00:00:00 2001 From: Bryn Edwards Date: Sat, 13 Apr 2024 07:27:43 +0100 Subject: [PATCH 001/102] foot: set PATH in server's systemd unit file If not set, foot's terminal spawning shortcut will not work as the `footclient` binary is not on the server's PATH. --- modules/programs/foot.nix | 1 + .../modules/programs/foot/systemd-user-service-expected.service | 1 + 2 files changed, 2 insertions(+) diff --git a/modules/programs/foot.nix b/modules/programs/foot.nix index 79832dce..52bab938 100644 --- a/modules/programs/foot.nix +++ b/modules/programs/foot.nix @@ -68,6 +68,7 @@ in { }; Service = { + Environment = "PATH=${makeBinPath [ cfg.package ]}"; ExecStart = "${cfg.package}/bin/foot --server"; Restart = "on-failure"; OOMPolicy = "continue"; diff --git a/tests/modules/programs/foot/systemd-user-service-expected.service b/tests/modules/programs/foot/systemd-user-service-expected.service index 517344e5..0c452b9d 100644 --- a/tests/modules/programs/foot/systemd-user-service-expected.service +++ b/tests/modules/programs/foot/systemd-user-service-expected.service @@ -2,6 +2,7 @@ WantedBy=graphical-session.target [Service] +Environment=PATH=@foot@/bin ExecStart=@foot@/bin/foot --server OOMPolicy=continue Restart=on-failure From 8fdf329526f06886b53b94ddf433848a0d142984 Mon Sep 17 00:00:00 2001 From: MiSumiSumi Date: Sat, 13 Apr 2024 23:50:15 +0900 Subject: [PATCH 002/102] neovim: enable use of external package manager (#5225) * neovim: add extraWrapperArgs option pass external arguments to neovim-unwrapper this gives users more flexibility in managing neovim configuration * neovim: add test for `extraWrapperArgs` --- modules/programs/neovim.nix | 25 ++++++++++++++++++++++- tests/modules/programs/neovim/runtime.nix | 14 +++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix index a3b87ea2..fad05c1c 100644 --- a/modules/programs/neovim.nix +++ b/modules/programs/neovim.nix @@ -198,6 +198,28 @@ in { ''; }; + extraWrapperArgs = mkOption { + type = with types; listOf str; + default = [ ]; + example = literalExpression '' + [ + "--suffix" + "LIBRARY_PATH" + ":" + "''${lib.makeLibraryPath [ pkgs.stdenv.cc.cc pkgs.zlib ]}" + "--suffix" + "PKG_CONFIG_PATH" + ":" + "''${lib.makeSearchPathOutput "dev" "lib/pkgconfig" [ pkgs.stdenv.cc.cc pkgs.zlib ]}" + ] + ''; + description = '' + Extra arguments to be passed to the neovim wrapper. + This option sets environment variables required for building and running binaries + with external package managers like mason.nvim. + ''; + }; + generatedConfigViml = mkOption { type = types.lines; visible = true; @@ -415,7 +437,8 @@ in { programs.neovim.finalPackage = pkgs.wrapNeovimUnstable cfg.package (neovimConfig // { - wrapperArgs = (lib.escapeShellArgs neovimConfig.wrapperArgs) + " " + wrapperArgs = (lib.escapeShellArgs + (neovimConfig.wrapperArgs ++ cfg.extraWrapperArgs)) + " " + extraMakeWrapperArgs + " " + extraMakeWrapperLuaCArgs + " " + extraMakeWrapperLuaArgs; wrapRc = false; diff --git a/tests/modules/programs/neovim/runtime.nix b/tests/modules/programs/neovim/runtime.nix index b9d9638a..7f39c846 100644 --- a/tests/modules/programs/neovim/runtime.nix +++ b/tests/modules/programs/neovim/runtime.nix @@ -20,6 +20,17 @@ with lib; }; } ]; + extraWrapperArgs = let buildDeps = with pkgs; [ stdenv.cc.cc zlib ]; + in [ + "--suffix" + "LIBRARY_PATH" + ":" + "${lib.makeLibraryPath buildDeps}" + "--suffix" + "PKG_CONFIG_PATH" + ":" + "${lib.makeSearchPathOutput "dev" "lib/pkgconfig" buildDeps}" + ]; } { extraPython3Packages = ps: with ps; [ jedi pynvim ]; @@ -33,7 +44,10 @@ with lib; nmt.script = '' ftplugin="home-files/.config/nvim/after/ftplugin/c.vim" + nvimbin="home-path/bin/nvim" assertFileExists "$ftplugin" + assertFileRegex "$nvimbin" 'LIBRARY_PATH' + assertFileRegex "$nvimbin" 'PKG_CONFIG_PATH' ''; }; } From f33d5086d3f9128aba126135ea2a901c121ebf06 Mon Sep 17 00:00:00 2001 From: Mitchell Skaggs Date: Sat, 13 Apr 2024 12:59:33 -0500 Subject: [PATCH 003/102] rio: remove redundant `lib.mdDoc` call This is an error as of https://github.com/NixOS/nixpkgs/pull/303841 It seems to have been missed in https://github.com/nix-community/home-manager/pull/4215 --- modules/programs/rio.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/rio.nix b/modules/programs/rio.nix index 58c4720d..5a5ce6fa 100644 --- a/modules/programs/rio.nix +++ b/modules/programs/rio.nix @@ -6,7 +6,7 @@ let in { options.programs.rio = { enable = lib.mkEnableOption null // { - description = lib.mdDoc '' + description = '' Enable Rio, a terminal built to run everywhere, as a native desktop applications by Rust/WebGPU or even in the browsers powered by WebAssembly/WebGPU. ''; From 4cc3c91601b6083c3715516d5d891fa46c679e59 Mon Sep 17 00:00:00 2001 From: home-manager-bot <106474382+home-manager-bot@users.noreply.github.com> Date: Sun, 14 Apr 2024 08:56:05 +0200 Subject: [PATCH 004/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/fd281bd6b7d3e32ddfa399853946f782553163b5' (2024-04-03) → 'github:NixOS/nixpkgs/1042fd8b148a9105f3c0aca3a6177fd1d9360ba5' (2024-04-10) Co-authored-by: github-actions[bot] --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 5dd1e12d..62940731 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1712163089, - "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", + "lastModified": 1712791164, + "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", + "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", "type": "github" }, "original": { From 630a0992b3627c64e34f179fab68e3d48c6991c0 Mon Sep 17 00:00:00 2001 From: Philipp Mildenberger Date: Sun, 14 Apr 2024 08:58:16 +0200 Subject: [PATCH 005/102] nushell: fix nushell config path on darwin --- modules/programs/nushell.nix | 2 +- tests/modules/programs/carapace/nushell.nix | 4 ++-- tests/modules/programs/direnv/nushell.nix | 4 ++-- tests/modules/programs/nushell/example-settings.nix | 4 ++-- tests/modules/programs/oh-my-posh/nushell.nix | 6 +++--- tests/modules/programs/yazi/nushell-integration-enabled.nix | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/programs/nushell.nix b/modules/programs/nushell.nix index 51419971..2ebd9554 100644 --- a/modules/programs/nushell.nix +++ b/modules/programs/nushell.nix @@ -6,7 +6,7 @@ let cfg = config.programs.nushell; - configDir = if pkgs.stdenv.isDarwin then + configDir = if pkgs.stdenv.isDarwin && !config.xdg.enable then "Library/Application Support/nushell" else "${config.xdg.configHome}/nushell"; diff --git a/tests/modules/programs/carapace/nushell.nix b/tests/modules/programs/carapace/nushell.nix index a025da18..d97fa898 100644 --- a/tests/modules/programs/carapace/nushell.nix +++ b/tests/modules/programs/carapace/nushell.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { programs = { @@ -7,7 +7,7 @@ }; nmt.script = let - configDir = if pkgs.stdenv.isDarwin then + configDir = if pkgs.stdenv.isDarwin && !config.xdg.enable then "home-files/Library/Application Support/nushell" else "home-files/.config/nushell"; diff --git a/tests/modules/programs/direnv/nushell.nix b/tests/modules/programs/direnv/nushell.nix index 46f34ebd..6655f01a 100644 --- a/tests/modules/programs/direnv/nushell.nix +++ b/tests/modules/programs/direnv/nushell.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { programs.nushell.enable = true; @@ -7,7 +7,7 @@ test.stubs.nushell = { }; nmt.script = let - configFile = if pkgs.stdenv.isDarwin then + configFile = if pkgs.stdenv.isDarwin && !config.xdg.enable then "home-files/Library/Application Support/nushell/config.nu" else "home-files/.config/nushell/config.nu"; diff --git a/tests/modules/programs/nushell/example-settings.nix b/tests/modules/programs/nushell/example-settings.nix index 73038584..d870eb9d 100644 --- a/tests/modules/programs/nushell/example-settings.nix +++ b/tests/modules/programs/nushell/example-settings.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { programs.nushell = { @@ -34,7 +34,7 @@ test.stubs.nushell = { }; nmt.script = let - configDir = if pkgs.stdenv.isDarwin then + configDir = if pkgs.stdenv.isDarwin && !config.xdg.enable then "home-files/Library/Application Support/nushell" else "home-files/.config/nushell"; diff --git a/tests/modules/programs/oh-my-posh/nushell.nix b/tests/modules/programs/oh-my-posh/nushell.nix index ad77f821..da4ffafd 100644 --- a/tests/modules/programs/oh-my-posh/nushell.nix +++ b/tests/modules/programs/oh-my-posh/nushell.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { programs = { @@ -16,12 +16,12 @@ }; nmt.script = let - configFile = if pkgs.stdenv.isDarwin then + configFile = if pkgs.stdenv.isDarwin && !config.xdg.enable then "home-files/Library/Application Support/nushell/config.nu" else "home-files/.config/nushell/config.nu"; - envFile = if pkgs.stdenv.isDarwin then + envFile = if pkgs.stdenv.isDarwin && !config.xdg.enable then "home-files/Library/Application Support/nushell/env.nu" else "home-files/.config/nushell/env.nu"; diff --git a/tests/modules/programs/yazi/nushell-integration-enabled.nix b/tests/modules/programs/yazi/nushell-integration-enabled.nix index ddd041dc..9adbaa98 100644 --- a/tests/modules/programs/yazi/nushell-integration-enabled.nix +++ b/tests/modules/programs/yazi/nushell-integration-enabled.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: let shellIntegration = '' @@ -23,7 +23,7 @@ in { test.stubs.yazi = { }; nmt.script = let - configPath = if pkgs.stdenv.isDarwin then + configPath = if pkgs.stdenv.isDarwin && !config.xdg.enable then "home-files/Library/Application Support/nushell/config.nu" else "home-files/.config/nushell/config.nu"; From 76a1650c45df8ed130e66eeeb8275a149562c4c5 Mon Sep 17 00:00:00 2001 From: Jose Plana Date: Wed, 10 Apr 2024 10:24:46 +0200 Subject: [PATCH 006/102] k9s: fix typos in configuration file names --- modules/programs/k9s.nix | 8 ++++---- tests/modules/programs/k9s/example-settings.nix | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/programs/k9s.nix b/modules/programs/k9s.nix index 900e129e..a9e3fe55 100644 --- a/modules/programs/k9s.nix +++ b/modules/programs/k9s.nix @@ -80,7 +80,7 @@ in { type = yamlFormat.type; default = { }; description = '' - Hotkeys written to {file}`$XDG_CONFIG_HOME/k9s/hotkey.yaml`. See + Hotkeys written to {file}`$XDG_CONFIG_HOME/k9s/hotkeys.yaml`. See for supported values. ''; example = literalExpression '' @@ -101,7 +101,7 @@ in { type = yamlFormat.type; default = { }; description = '' - Plugins written to {file}`$XDG_CONFIG_HOME/k9s/plugin.yaml`. See + Plugins written to {file}`$XDG_CONFIG_HOME/k9s/plugins.yaml`. See for supported values. ''; example = literalExpression '' @@ -178,11 +178,11 @@ in { source = yamlFormat.generate "k9s-aliases" cfg.aliases; }; - "k9s/hotkey.yaml" = mkIf (cfg.hotkey != { }) { + "k9s/hotkeys.yaml" = mkIf (cfg.hotkey != { }) { source = yamlFormat.generate "k9s-hotkey" cfg.hotkey; }; - "k9s/plugin.yaml" = mkIf (cfg.plugin != { }) { + "k9s/plugins.yaml" = mkIf (cfg.plugin != { }) { source = yamlFormat.generate "k9s-plugin" cfg.plugin; }; diff --git a/tests/modules/programs/k9s/example-settings.nix b/tests/modules/programs/k9s/example-settings.nix index 7816a050..f37f192c 100644 --- a/tests/modules/programs/k9s/example-settings.nix +++ b/tests/modules/programs/k9s/example-settings.nix @@ -89,17 +89,17 @@ assertFileContent \ home-files/.config/k9s/skins/alt-skin.yaml \ ${./example-skin-expected-alt.yaml} - assertFileExists home-files/.config/k9s/hotkey.yaml + assertFileExists home-files/.config/k9s/hotkeys.yaml assertFileContent \ - home-files/.config/k9s/hotkey.yaml \ + home-files/.config/k9s/hotkeys.yaml \ ${./example-hotkey-expected.yaml} assertFileExists home-files/.config/k9s/aliases.yaml assertFileContent \ home-files/.config/k9s/aliases.yaml \ ${./example-aliases-expected.yaml} - assertFileExists home-files/.config/k9s/plugin.yaml + assertFileExists home-files/.config/k9s/plugins.yaml assertFileContent \ - home-files/.config/k9s/plugin.yaml \ + home-files/.config/k9s/plugins.yaml \ ${./example-plugin-expected.yaml} assertFileExists home-files/.config/k9s/views.yaml assertFileContent \ From 9f32c66a51d05e6d4ec0dea555bbff9135749ec7 Mon Sep 17 00:00:00 2001 From: Jose Plana Date: Wed, 10 Apr 2024 13:34:46 +0200 Subject: [PATCH 007/102] k9s: configuration files in Darwin without XDG Support alternate configuration files for k9s in darwin where XDG is not mandated and k9s expects configuration files in `~/Library/Application Support/k9s/`. --- modules/programs/k9s.nix | 63 +++++++++++++++---- tests/modules/programs/k9s/empty-settings.nix | 14 +++-- .../modules/programs/k9s/example-settings.nix | 39 +++++++----- 3 files changed, 85 insertions(+), 31 deletions(-) diff --git a/modules/programs/k9s.nix b/modules/programs/k9s.nix index a9e3fe55..6ef53291 100644 --- a/modules/programs/k9s.nix +++ b/modules/programs/k9s.nix @@ -6,6 +6,7 @@ let cfg = config.programs.k9s; yamlFormat = pkgs.formats.yaml { }; + inherit (pkgs.stdenv.hostPlatform) isDarwin; in { meta.maintainers = with maintainers; [ @@ -33,7 +34,8 @@ in { type = yamlFormat.type; default = { }; description = '' - Configuration written to {file}`$XDG_CONFIG_HOME/k9s/config.yaml`. See + Configuration written to {file}`$XDG_CONFIG_HOME/k9s/config.yaml` (linux) + or {file}`Library/Application Support/k9s/config.yaml` (darwin), See for supported values. ''; example = literalExpression '' @@ -47,7 +49,8 @@ in { type = types.attrsOf yamlFormat.type; default = { }; description = '' - Skin files written to {file}`$XDG_CONFIG_HOME/k9s/skins/`. See + Skin files written to {file}`$XDG_CONFIG_HOME/k9s/skins/` (linux) + or {file}`Library/Application Support/k9s/skins/` (darwin). See for supported values. ''; example = literalExpression '' @@ -65,7 +68,8 @@ in { type = yamlFormat.type; default = { }; description = '' - Aliases written to {file}`$XDG_CONFIG_HOME/k9s/aliases.yaml`. See + Aliases written to {file}`$XDG_CONFIG_HOME/k9s/aliases.yaml` (linux) + or {file}`Library/Application Support/k9s/aliases.yaml` (darwin). See for supported values. ''; example = literalExpression '' @@ -80,7 +84,8 @@ in { type = yamlFormat.type; default = { }; description = '' - Hotkeys written to {file}`$XDG_CONFIG_HOME/k9s/hotkeys.yaml`. See + Hotkeys written to {file}`$XDG_CONFIG_HOME/k9s/hotkeys.yaml` (linux) + or {file}`Library/Application Support/k9s/hotkeys.yaml` (darwin). See for supported values. ''; example = literalExpression '' @@ -101,7 +106,8 @@ in { type = yamlFormat.type; default = { }; description = '' - Plugins written to {file}`$XDG_CONFIG_HOME/k9s/plugins.yaml`. See + Plugins written to {file}`$XDG_CONFIG_HOME/k9s/plugins.yaml (linux)` + or {file}`Library/Application Support/k9s/plugins.yaml` (darwin). See for supported values. ''; example = literalExpression '' @@ -132,7 +138,9 @@ in { type = yamlFormat.type; default = { }; description = '' - Resource column views written to {file}`$XDG_CONFIG_HOME/k9s/views.yaml`. + Resource column views written to + {file}`$XDG_CONFIG_HOME/k9s/views.yaml (linux)` + or {file}`Library/Application Support/k9s/views.yaml` (darwin). See for supported values. ''; example = literalExpression '' @@ -162,13 +170,19 @@ in { { }; skinFiles = mapAttrs' (name: value: - nameValuePair "k9s/skins/${name}.yaml" { - source = yamlFormat.generate "k9s-skin-${name}.yaml" value; - }) cfg.skins; + nameValuePair (if !(isDarwin && !config.xdg.enable) then + "k9s/skins/${name}.yaml" + else + "Library/Application Support/k9s/skins/${name}.yaml") { + source = yamlFormat.generate "k9s-skin-${name}.yaml" value; + }) cfg.skins; + + enableXdgConfig = !isDarwin || config.xdg.enable; + in mkIf cfg.enable { home.packages = [ cfg.package ]; - xdg.configFile = { + xdg.configFile = mkIf enableXdgConfig ({ "k9s/config.yaml" = mkIf (cfg.settings != { }) { source = yamlFormat.generate "k9s-config" (lib.recursiveUpdate skinSetting cfg.settings); @@ -189,6 +203,33 @@ in { "k9s/views.yaml" = mkIf (cfg.views != { }) { source = yamlFormat.generate "k9s-views" cfg.views; }; - } // skinFiles; + } // skinFiles); + + home.file = mkIf (!enableXdgConfig) ({ + "Library/Application Support/k9s/config.yaml" = + mkIf (cfg.settings != { }) { + source = yamlFormat.generate "k9s-config" + (lib.recursiveUpdate skinSetting cfg.settings); + }; + + "Library/Application Support/k9s/aliases.yaml" = + mkIf (cfg.aliases != { }) { + source = yamlFormat.generate "k9s-aliases" cfg.aliases; + }; + + "Library/Application Support/k9s/hotkeys.yaml" = + mkIf (cfg.hotkey != { }) { + source = yamlFormat.generate "k9s-hotkey" cfg.hotkey; + }; + + "Library/Application Support/k9s/plugins.yaml" = + mkIf (cfg.plugin != { }) { + source = yamlFormat.generate "k9s-plugin" cfg.plugin; + }; + + "Library/Application Support/k9s/views.yaml" = mkIf (cfg.views != { }) { + source = yamlFormat.generate "k9s-views" cfg.views; + }; + } // skinFiles); }; } diff --git a/tests/modules/programs/k9s/empty-settings.nix b/tests/modules/programs/k9s/empty-settings.nix index 5084be4f..35534005 100644 --- a/tests/modules/programs/k9s/empty-settings.nix +++ b/tests/modules/programs/k9s/empty-settings.nix @@ -1,11 +1,17 @@ -{ ... }: +{ pkgs, lib, ... }: { -{ programs.k9s.enable = true; + xdg.enable = lib.mkIf pkgs.stdenv.isDarwin (lib.mkForce false); + test.stubs.k9s = { }; - nmt.script = '' - assertPathNotExists home-files/.config/k9s + nmt.script = let + configDir = if !pkgs.stdenv.isDarwin then + ".config/k9s" + else + "Library/Application Support/k9s"; + in '' + assertPathNotExists home-files/${configDir} ''; } diff --git a/tests/modules/programs/k9s/example-settings.nix b/tests/modules/programs/k9s/example-settings.nix index f37f192c..23a42120 100644 --- a/tests/modules/programs/k9s/example-settings.nix +++ b/tests/modules/programs/k9s/example-settings.nix @@ -1,6 +1,8 @@ -{ config, ... }: +{ config, pkgs, lib, ... }: { + xdg.enable = lib.mkIf pkgs.stdenv.isDarwin (lib.mkForce false); + programs.k9s = { enable = true; package = config.lib.test.mkStubPackage { }; @@ -76,34 +78,39 @@ }; }; - nmt.script = '' - assertFileExists home-files/.config/k9s/config.yaml + nmt.script = let + configDir = if !pkgs.stdenv.isDarwin then + ".config/k9s" + else + "Library/Application Support/k9s"; + in '' + assertFileExists "home-files/${configDir}/config.yaml" assertFileContent \ - home-files/.config/k9s/config.yaml \ + "home-files/${configDir}/config.yaml" \ ${./example-config-expected.yaml} - assertFileExists home-files/.config/k9s/skins/default.yaml + assertFileExists "home-files/${configDir}/skins/default.yaml" assertFileContent \ - home-files/.config/k9s/skins/default.yaml \ + "home-files/${configDir}/skins/default.yaml" \ ${./example-skin-expected.yaml} - assertFileExists home-files/.config/k9s/skins/alt-skin.yaml + assertFileExists "home-files/${configDir}/skins/alt-skin.yaml" assertFileContent \ - home-files/.config/k9s/skins/alt-skin.yaml \ + "home-files/${configDir}/skins/alt-skin.yaml" \ ${./example-skin-expected-alt.yaml} - assertFileExists home-files/.config/k9s/hotkeys.yaml + assertFileExists "home-files/${configDir}/hotkeys.yaml" assertFileContent \ - home-files/.config/k9s/hotkeys.yaml \ + "home-files/${configDir}/hotkeys.yaml" \ ${./example-hotkey-expected.yaml} - assertFileExists home-files/.config/k9s/aliases.yaml + assertFileExists "home-files/${configDir}/aliases.yaml" assertFileContent \ - home-files/.config/k9s/aliases.yaml \ + "home-files/${configDir}/aliases.yaml" \ ${./example-aliases-expected.yaml} - assertFileExists home-files/.config/k9s/plugins.yaml + assertFileExists "home-files/${configDir}/plugins.yaml" assertFileContent \ - home-files/.config/k9s/plugins.yaml \ + "home-files/${configDir}/plugins.yaml" \ ${./example-plugin-expected.yaml} - assertFileExists home-files/.config/k9s/views.yaml + assertFileExists "home-files/${configDir}/views.yaml" assertFileContent \ - home-files/.config/k9s/views.yaml \ + "home-files/${configDir}/views.yaml" \ ${./example-views-expected.yaml} ''; } From 59d50bc582bdf439df096a9ae1781e6c9c8a7523 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Mon, 15 Apr 2024 01:40:27 -0600 Subject: [PATCH 008/102] espanso: enable module on darwin --- modules/services/espanso.nix | 34 ++++++++---- tests/default.nix | 1 + .../espanso-darwin/basic-configuration.nix | 55 +++++++++++++++++++ .../services/espanso-darwin/default.nix | 1 + .../services/espanso-darwin/launchd.plist | 29 ++++++++++ 5 files changed, 108 insertions(+), 12 deletions(-) create mode 100644 tests/modules/services/espanso-darwin/basic-configuration.nix create mode 100644 tests/modules/services/espanso-darwin/default.nix create mode 100644 tests/modules/services/espanso-darwin/launchd.plist diff --git a/modules/services/espanso.nix b/modules/services/espanso.nix index 404dfecd..a466b6f7 100644 --- a/modules/services/espanso.nix +++ b/modules/services/espanso.nix @@ -1,11 +1,9 @@ { pkgs, config, lib, ... }: let inherit (lib) - mkOption mkEnableOption mkIf maintainers literalExpression types platforms + mkOption mkEnableOption mkIf maintainers literalExpression types mkRemovedOptionModule versionAtLeast; - inherit (lib.hm.assertions) assertPlatform; - cfg = config.services.espanso; espansoVersion = cfg.package.version; @@ -99,15 +97,12 @@ in { }; config = mkIf cfg.enable { - assertions = [ - (assertPlatform "services.espanso" pkgs platforms.linux) - { - assertion = versionAtLeast espansoVersion "2"; - message = '' - The services.espanso module only supports Espanso version 2 or later. - ''; - } - ]; + assertions = [{ + assertion = versionAtLeast espansoVersion "2"; + message = '' + The services.espanso module only supports Espanso version 2 or later. + ''; + }]; home.packages = [ cfg.package ]; @@ -131,5 +126,20 @@ in { }; Install = { WantedBy = [ "default.target" ]; }; }; + + launchd.agents.espanso = { + enable = true; + config = { + ProgramArguments = [ "${cfg.package}/bin/espanso" "launcher" ]; + EnvironmentVariables.PATH = + "${cfg.package}/bin:/usr/bin:/bin:/usr/sbin:/sbin"; + KeepAlive = { + Crashed = true; + SuccessfulExit = false; + }; + ProcessType = "Background"; + RunAtLoad = true; + }; + }; }; } diff --git a/tests/default.nix b/tests/default.nix index 567b75d5..62538966 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -163,6 +163,7 @@ in import nmtSrc { ./modules/xresources ] ++ lib.optionals isDarwin [ ./modules/launchd + ./modules/services/espanso-darwin ./modules/services/git-sync-darwin ./modules/services/imapnotify-darwin ./modules/services/nix-gc-darwin diff --git a/tests/modules/services/espanso-darwin/basic-configuration.nix b/tests/modules/services/espanso-darwin/basic-configuration.nix new file mode 100644 index 00000000..4a2f2ee7 --- /dev/null +++ b/tests/modules/services/espanso-darwin/basic-configuration.nix @@ -0,0 +1,55 @@ +{ ... }: { + services.espanso = { + enable = true; + configs = { default = { show_notifications = false; }; }; + matches = { + base = { + matches = [ + { + trigger = ":now"; + replace = "It's {{currentdate}} {{currenttime}}"; + } + { + trigger = ":hello"; + replace = '' + line1 + line2''; + } + { + regex = ":hi(?P.*)\\."; + replace = "Hi {{person}}!"; + } + ]; + global_vars = [ + { + name = "currentdate"; + type = "date"; + params = { format = "%d/%m/%Y"; }; + } + { + name = "currenttime"; + type = "date"; + params = { format = "%R"; }; + } + ]; + }; + }; + }; + + test.stubs.espanso = { }; + + nmt.script = '' + serviceFile="LaunchAgents/org.nix-community.home.espanso.plist" + serviceFileNormalized="$(normalizeStorePaths "$serviceFile")" + assertFileExists $serviceFile + assertFileContent $serviceFileNormalized ${./launchd.plist} + + configFile=home-files/.config/espanso/config/default.yml + assertFileExists "$configFile" + assertFileContent "$configFile" ${../espanso/basic-configuration.yaml} + + matchFile=home-files/.config/espanso/match/base.yml + assertFileExists "$matchFile" + assertFileContent "$matchFile" ${../espanso/basic-matches.yaml} + ''; +} diff --git a/tests/modules/services/espanso-darwin/default.nix b/tests/modules/services/espanso-darwin/default.nix new file mode 100644 index 00000000..6acb2f8d --- /dev/null +++ b/tests/modules/services/espanso-darwin/default.nix @@ -0,0 +1 @@ +{ espanso-darwin-basic-configuration = ./basic-configuration.nix; } diff --git a/tests/modules/services/espanso-darwin/launchd.plist b/tests/modules/services/espanso-darwin/launchd.plist new file mode 100644 index 00000000..8cbc4af0 --- /dev/null +++ b/tests/modules/services/espanso-darwin/launchd.plist @@ -0,0 +1,29 @@ + + + + + EnvironmentVariables + + PATH + @espanso@/bin:/usr/bin:/bin:/usr/sbin:/sbin + + KeepAlive + + Crashed + + SuccessfulExit + + + Label + org.nix-community.home.espanso + ProcessType + Background + ProgramArguments + + @espanso@/bin/espanso + launcher + + RunAtLoad + + + \ No newline at end of file From 1c43dcfac48a2d622797f7ab741670fdbcf8f609 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 09:42:51 +0200 Subject: [PATCH 009/102] ci: bump peaceiris/actions-gh-pages from 3 to 4 Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4. - [Release notes](https://github.com/peaceiris/actions-gh-pages/releases) - [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md) - [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4) --- updated-dependencies: - dependency-name: peaceiris/actions-gh-pages dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/github_pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github_pages.yml b/.github/workflows/github_pages.yml index 238cb843..32e670e8 100644 --- a/.github/workflows/github_pages.yml +++ b/.github/workflows/github_pages.yml @@ -22,7 +22,7 @@ jobs: nix-build -A docs.html cp -r result/share/doc/home-manager public - name: Deploy - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./public From fa8c16e2452bf092ac76f09ee1fb1e9f7d0796e7 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Mon, 15 Apr 2024 19:57:48 +0200 Subject: [PATCH 010/102] systemd: add `enable` option --- modules/systemd.nix | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/systemd.nix b/modules/systemd.nix index 041b9dfa..f209f65d 100644 --- a/modules/systemd.nix +++ b/modules/systemd.nix @@ -5,8 +5,8 @@ let cfg = config.systemd.user; inherit (lib) - any attrValues getAttr hm isBool literalExpression mkIf mkMerge mkOption - types; + any attrValues getAttr hm isBool literalExpression mkIf mkMerge + mkEnableOption mkOption types; settingsFormat = pkgs.formats.ini { listsAsDuplicateKeys = true; }; @@ -105,6 +105,11 @@ in { options = { systemd.user = { + enable = mkEnableOption "the user systemd service manager" // { + default = pkgs.stdenv.isLinux; + defaultText = literalExpression "pkgs.stdenv.isLinux"; + }; + systemctlPath = mkOption { default = "${pkgs.systemd}/bin/systemctl"; defaultText = literalExpression ''"''${pkgs.systemd}/bin/systemctl"''; @@ -286,7 +291,12 @@ in { # If we run under a Linux system we assume that systemd is # available, in particular we assume that systemctl is in PATH. # Do not install any user services if username is root. - config = mkIf (pkgs.stdenv.isLinux && config.home.username != "root") { + config = mkIf (cfg.enable && config.home.username != "root") { + assertions = [{ + assertion = pkgs.stdenv.isLinux; + message = "This module is only available on Linux."; + }]; + xdg.configFile = mkMerge [ (lib.listToAttrs ((buildServices "service" cfg.services) ++ (buildServices "slice" cfg.slices) From 93b917d49f0b2ab75ff91e17573e112b95fdd95c Mon Sep 17 00:00:00 2001 From: home-manager-bot <106474382+home-manager-bot@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:56:40 +0200 Subject: [PATCH 011/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/1042fd8b148a9105f3c0aca3a6177fd1d9360ba5' (2024-04-10) → 'github:NixOS/nixpkgs/5672bc9dbf9d88246ddab5ac454e82318d094bb8' (2024-04-16) Co-authored-by: github-actions[bot] --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 62940731..aeb90586 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1712791164, - "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", + "lastModified": 1713248628, + "narHash": "sha256-NLznXB5AOnniUtZsyy/aPWOk8ussTuePp2acb9U+ISA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", + "rev": "5672bc9dbf9d88246ddab5ac454e82318d094bb8", "type": "github" }, "original": { From f46814ec7cbef9c2aef18ca1cbe89f2bb1e8c394 Mon Sep 17 00:00:00 2001 From: a-kenji Date: Wed, 17 Apr 2024 23:58:16 +0200 Subject: [PATCH 012/102] treewide: prefer the official wiki --- README.md | 2 +- docs/manual/installation.md | 2 +- docs/manual/nix-flakes.md | 2 +- docs/manual/nix-flakes/standalone.md | 2 +- modules/programs/firefox.nix | 6 +++--- modules/programs/qutebrowser.nix | 2 +- .../firefox/profile-settings-expected-bookmarks.html | 6 +++--- .../firefox/profile-settings-expected-search.json | 6 +++--- tests/modules/programs/firefox/profile-settings.nix | 11 ++++++----- 9 files changed, 20 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 486194aa..4444fbbd 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ License This project is licensed under the terms of the [MIT license](LICENSE). [#home-manager]: https://webchat.oftc.net/?channels=home-manager -[Nix Flakes]: https://nixos.wiki/wiki/Flakes +[Nix Flakes]: https://wiki.nixos.org/wiki/Flakes [NixOS]: https://nixos.org/ [Nix]: https://nixos.org/explore.html [Nixpkgs]: https://github.com/NixOS/nixpkgs diff --git a/docs/manual/installation.md b/docs/manual/installation.md index b663b688..07b1392d 100644 --- a/docs/manual/installation.md +++ b/docs/manual/installation.md @@ -24,7 +24,7 @@ Home Manager can be used in three primary ways: :::{.note} In this chapter we describe how to install Home Manager in the standard way using channels. If you prefer to use [Nix -Flakes](https://nixos.wiki/wiki/Flakes) then please see the instructions +Flakes](https://wiki.nixos.org/wiki/Flakes) then please see the instructions in [nix flakes](#ch-nix-flakes). ::: diff --git a/docs/manual/nix-flakes.md b/docs/manual/nix-flakes.md index 9ac5c0cf..93f71feb 100644 --- a/docs/manual/nix-flakes.md +++ b/docs/manual/nix-flakes.md @@ -1,7 +1,7 @@ # Nix Flakes {#ch-nix-flakes} Home Manager is compatible with [Nix -Flakes](https://nixos.wiki/wiki/Flakes). But please be aware that this +Flakes](https://wiki.nixos.org/wiki/Flakes). But please be aware that this support is still experimental and may change in backwards incompatible ways. diff --git a/docs/manual/nix-flakes/standalone.md b/docs/manual/nix-flakes/standalone.md index 428f29bc..4ee8278a 100644 --- a/docs/manual/nix-flakes/standalone.md +++ b/docs/manual/nix-flakes/standalone.md @@ -58,5 +58,5 @@ If you only want to update a single flake input, then the command You can also pass flake-related options such as `--recreate-lock-file` or `--update-input ` to `home-manager` when building or switching, and these options will be forwarded to `nix build`. See the -[NixOS Wiki page](https://nixos.wiki/wiki/Flakes) for details. +[NixOS Wiki page](https://wiki.nixos.org/wiki/Flakes) for details. ::: diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix index cbf78fb0..cf62f82c 100644 --- a/modules/programs/firefox.nix +++ b/modules/programs/firefox.nix @@ -459,7 +459,7 @@ in { { name = "wiki"; tags = [ "wiki" "nix" ]; - url = "https://nixos.wiki/"; + url = "https://wiki.nixos.org/"; } ]; } @@ -545,8 +545,8 @@ in { }; "NixOS Wiki" = { - urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }]; - iconUpdateURL = "https://nixos.wiki/favicon.png"; + urls = [{ template = "https://wiki.nixos.org/index.php?search={searchTerms}"; }]; + iconUpdateURL = "https://wiki.nixos.org/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; # every day definedAliases = [ "@nw" ]; }; diff --git a/modules/programs/qutebrowser.nix b/modules/programs/qutebrowser.nix index 9c3ad6a8..04e5423d 100644 --- a/modules/programs/qutebrowser.nix +++ b/modules/programs/qutebrowser.nix @@ -84,7 +84,7 @@ in { { w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1"; aw = "https://wiki.archlinux.org/?search={}"; - nw = "https://nixos.wiki/index.php?search={}"; + nw = "https://wiki.nixos.org/index.php?search={}"; g = "https://www.google.com/search?hl=en&q={}"; } ''; diff --git a/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html b/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html index d19eab61..93bc195f 100644 --- a/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html +++ b/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html @@ -8,18 +8,18 @@

Bookmarks Toolbar

-

Home Manager +
Home Manager

wikipedia
kernel.org

Nix sites

homepage -
wiki +
wiki

Nix sites

homepage -
wiki +
wiki

diff --git a/tests/modules/programs/firefox/profile-settings-expected-search.json b/tests/modules/programs/firefox/profile-settings-expected-search.json index f17a0b91..832b6c09 100644 --- a/tests/modules/programs/firefox/profile-settings-expected-search.json +++ b/tests/modules/programs/firefox/profile-settings-expected-search.json @@ -31,8 +31,8 @@ "_definedAliases": [ "@nw" ], - "_iconURL": "https://nixos.wiki/favicon.png", - "_iconUpdateURL": "https://nixos.wiki/favicon.png", + "_iconURL": "https://wiki.nixos.org/favicon.png", + "_iconUpdateURL": "https://wiki.nixos.org/favicon.png", "_isAppProvided": false, "_loadPath": "[home-manager]/programs.firefox.profiles.search.search.engines.\"NixOS Wiki\"", "_metaData": { @@ -42,7 +42,7 @@ "_updateInterval": 86400000, "_urls": [ { - "template": "https://nixos.wiki/index.php?search={searchTerms}" + "template": "https://wiki.nixos.org/index.php?search={searchTerms}" } ] }, diff --git a/tests/modules/programs/firefox/profile-settings.nix b/tests/modules/programs/firefox/profile-settings.nix index 94fa9436..8b781552 100644 --- a/tests/modules/programs/firefox/profile-settings.nix +++ b/tests/modules/programs/firefox/profile-settings.nix @@ -27,7 +27,7 @@ toolbar = true; bookmarks = [{ name = "Home Manager"; - url = "https://nixos.wiki/wiki/Home_Manager"; + url = "https://wiki.nixos.org/wiki/Home_Manager"; }]; } { @@ -51,7 +51,7 @@ { name = "wiki"; tags = [ "wiki" "nix" ]; - url = "https://nixos.wiki/"; + url = "https://wiki.nixos.org/"; } { name = "Nix sites"; @@ -62,7 +62,7 @@ } { name = "wiki"; - url = "https://nixos.wiki/"; + url = "https://wiki.nixos.org/"; } ]; } @@ -102,9 +102,10 @@ "NixOS Wiki" = { urls = [{ - template = "https://nixos.wiki/index.php?search={searchTerms}"; + template = + "https://wiki.nixos.org/index.php?search={searchTerms}"; }]; - iconUpdateURL = "https://nixos.wiki/favicon.png"; + iconUpdateURL = "https://wiki.nixos.org/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; definedAliases = [ "@nw" ]; }; From 178e26895b3aef028a00a32fb7e7ed0fc660645c Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Thu, 18 Apr 2024 17:25:13 +0200 Subject: [PATCH 013/102] home-manager: error out on missing option argument Instead of an error line 958: $1: unbound variable we now emit an error such as missing argument for --cores Note, this is not perfect. In many cases you still get sub-optimal error messages. --- home-manager/home-manager | 21 +++++++++ home-manager/po/home-manager.pot | 81 +++++++++++++++++--------------- modules/po/hm-modules.pot | 14 +++--- 3 files changed, 71 insertions(+), 45 deletions(-) diff --git a/home-manager/home-manager b/home-manager/home-manager index 1fa7af0e..8e5fb4c5 100644 --- a/home-manager/home-manager +++ b/home-manager/home-manager @@ -11,6 +11,12 @@ export TEXTDOMAINDIR=@OUT@/share/locale # shellcheck disable=1091 source @HOME_MANAGER_LIB@ +function errMissingOptArg() { + # translators: For example: "home-manager: missing argument for --cores" + _iError "%s: missing argument for %s" "$0" "$1" >&2 + exit 1 +} + function setNixProfileCommands() { if [[ -e $HOME/.nix-profile/manifest.json \ || -e ${XDG_STATE_HOME:-$HOME/.local/state}/nix/profile/manifest.json ]] ; then @@ -277,10 +283,12 @@ function doInit() { switch=1 ;; --home-manager-url) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" homeManagerUrl="$1" shift ;; --nixpkgs-url) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" nixpkgsUrl="$1" shift ;; @@ -951,22 +959,27 @@ while [[ $# -gt 0 ]]; do COMMAND="$opt" ;; -A) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" HOME_MANAGER_CONFIG_ATTRIBUTE="$1" shift ;; -I) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" EXTRA_NIX_PATH+=("$1") shift ;; -b) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" export HOME_MANAGER_BACKUP_EXT="$1" shift ;; -f|--file) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" HOME_MANAGER_CONFIG="$1" shift ;; --flake) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" FLAKE_ARG="$1" shift ;; @@ -974,18 +987,23 @@ while [[ $# -gt 0 ]]; do PASSTHROUGH_OPTS+=("$opt") ;; --update-input) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" PASSTHROUGH_OPTS+=("$opt" "$1") shift ;; --override-input) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" + [[ -v 2 && $2 != -* ]] || errMissingOptArg "$opt $1" PASSTHROUGH_OPTS+=("$opt" "$1" "$2") shift 2 ;; --experimental-features) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" PASSTHROUGH_OPTS+=("$opt" "$1") shift ;; --extra-experimental-features) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" PASSTHROUGH_OPTS+=("$opt" "$1") shift ;; @@ -1003,10 +1021,13 @@ while [[ $# -gt 0 ]]; do export DRY_RUN=1 ;; --option|--arg|--argstr) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" + [[ -v 2 ]] || errMissingOptArg "$opt $1" PASSTHROUGH_OPTS+=("$opt" "$1" "$2") shift 2 ;; -j|--max-jobs|--cores|--builders) + [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt" PASSTHROUGH_OPTS+=("$opt" "$1") shift ;; diff --git a/home-manager/po/home-manager.pot b/home-manager/po/home-manager.pot index 4b238d10..2fcdc5a6 100644 --- a/home-manager/po/home-manager.pot +++ b/home-manager/po/home-manager.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,36 +18,41 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" msgstr "" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -68,42 +73,42 @@ msgid "" " $ rm -r \"%s\"" msgstr "" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "" -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "" -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "" #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -114,7 +119,7 @@ msgid "" msgstr "" #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -124,11 +129,11 @@ msgid "" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -138,72 +143,72 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "" -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "" -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "" -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "" -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "" -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "" -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "" -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "" diff --git a/modules/po/hm-modules.pot b/modules/po/hm-modules.pot index e187449c..7a33a805 100644 --- a/modules/po/hm-modules.pot +++ b/modules/po/hm-modules.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,23 +17,23 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -49,7 +49,7 @@ msgid "" "Then try activating your Home Manager configuration again." msgstr "" -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "" From 7cebe921eaffd5f9880f0dab7a23789d15f6169b Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 18 Apr 2024 17:26:10 +0200 Subject: [PATCH 014/102] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ Translation: Home Manager/Home Manager CLI Translation: Home Manager/Home Manager Modules --- home-manager/po/ca.po | 81 +++++++++++++++++++----------------- home-manager/po/cs.po | 81 +++++++++++++++++++----------------- home-manager/po/da.po | 81 +++++++++++++++++++----------------- home-manager/po/de.po | 81 +++++++++++++++++++----------------- home-manager/po/es.po | 81 +++++++++++++++++++----------------- home-manager/po/fa.po | 81 +++++++++++++++++++----------------- home-manager/po/fi.po | 81 +++++++++++++++++++----------------- home-manager/po/fr.po | 81 +++++++++++++++++++----------------- home-manager/po/id.po | 81 +++++++++++++++++++----------------- home-manager/po/it.po | 81 +++++++++++++++++++----------------- home-manager/po/ja.po | 81 +++++++++++++++++++----------------- home-manager/po/ko.po | 81 +++++++++++++++++++----------------- home-manager/po/lt.po | 85 ++++++++++++++++++++------------------ home-manager/po/nb_NO.po | 85 ++++++++++++++++++++------------------ home-manager/po/nl.po | 81 +++++++++++++++++++----------------- home-manager/po/pl.po | 81 +++++++++++++++++++----------------- home-manager/po/pt.po | 81 +++++++++++++++++++----------------- home-manager/po/pt_BR.po | 85 ++++++++++++++++++++------------------ home-manager/po/ro.po | 81 +++++++++++++++++++----------------- home-manager/po/ru.po | 81 +++++++++++++++++++----------------- home-manager/po/sv.po | 81 +++++++++++++++++++----------------- home-manager/po/th.po | 81 +++++++++++++++++++----------------- home-manager/po/tr.po | 81 +++++++++++++++++++----------------- home-manager/po/uk.po | 81 +++++++++++++++++++----------------- home-manager/po/vi.po | 81 +++++++++++++++++++----------------- home-manager/po/zh_Hans.po | 81 +++++++++++++++++++----------------- home-manager/po/zh_Hant.po | 81 +++++++++++++++++++----------------- modules/po/ca.po | 14 +++---- modules/po/cs.po | 14 +++---- modules/po/da.po | 14 +++---- modules/po/de.po | 14 +++---- modules/po/es.po | 14 +++---- modules/po/fa.po | 14 +++---- modules/po/fi.po | 14 +++---- modules/po/fr.po | 14 +++---- modules/po/id.po | 14 +++---- modules/po/it.po | 14 +++---- modules/po/ja.po | 14 +++---- modules/po/ko.po | 14 +++---- modules/po/lt.po | 18 ++++---- modules/po/nb_NO.po | 18 ++++---- modules/po/nl.po | 14 +++---- modules/po/pl.po | 14 +++---- modules/po/pt.po | 14 +++---- modules/po/pt_BR.po | 14 +++---- modules/po/ro.po | 14 +++---- modules/po/ru.po | 14 +++---- modules/po/sv.po | 14 +++---- modules/po/th.po | 14 +++---- modules/po/tr.po | 14 +++---- modules/po/uk.po | 14 +++---- modules/po/vi.po | 14 +++---- modules/po/zh_Hans.po | 14 +++---- modules/po/zh_Hant.po | 14 +++---- 54 files changed, 1360 insertions(+), 1225 deletions(-) diff --git a/home-manager/po/ca.po b/home-manager/po/ca.po index fe90504c..4159c95f 100644 --- a/home-manager/po/ca.po +++ b/home-manager/po/ca.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-04-05 11:01+0000\n" "Last-Translator: Leix b \n" "Language-Team: Catalan \n" "Language-Team: Czech =2 && n<=4) ? 1 : 2);\n" "X-Generator: Weblate 5.4\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "V %s nebyl nalezen konfigurační soubor" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" @@ -34,16 +39,16 @@ msgstr "" "Udržovat Home Manager %s v %s je zastaralé,\n" "prosím přesuňte jej do %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Konfigurační soubor nenalezen. Prosím vytvořte jej v %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager nebyl nalezen v %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." @@ -52,7 +57,7 @@ msgstr "" "adresář." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -91,42 +96,42 @@ msgstr "" "\n" " $ rm -r \"%s\"" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Kontrola správnosti Nix" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "Nebyl nalezen vhodný adresář profilu, byly zkoušeny %s a %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Nelze ověřit parametry z konfigurace flake" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: neznámý parametr '%s'" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Spusťte '%s --help' pro vypsání nápovědy" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "Soubor %s již existuje, ponechán beze změn..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Vytvářím %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Vytvářím první generaci Home Manageru..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -143,7 +148,7 @@ msgstr "" "k zobrazení všech dostupných možností." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -157,11 +162,11 @@ msgstr "" " %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Nelze vytvořit instanci flake konfigurace" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -178,72 +183,72 @@ msgstr[2] "" "%d nepřečtených novinek.\n" "Přečtěte je pomocí příkazu \"%s news\"." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Neznáme nastavení \"news.display\" \"%s\"." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Sestavení nelze provést v adresáři dostupném pouze pro čtení" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Generace s ID %s neexistuje" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Nelze odstranit současnou generaci %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Odstraňuji generaci %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Žádná generace k vypršení platnosti" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Žádný home-manager balíček není nainstalován." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Neznámý parametr %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Toto odstraní Home Manager z vašeho systému." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "Toto zkouška na nečisto, nic nebude odinstalováno." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Opravdu odinstalovat Home Manager?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Přepínám na prázdou konfiguraci Home Manageru..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Hurá!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager se odinstalovává, ale váš home.nix nebyl změněn." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generations očekává jeden parametr, přítomno %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Neznámý příkaz: %s" diff --git a/home-manager/po/da.po b/home-manager/po/da.po index de348823..c49a76fd 100644 --- a/home-manager/po/da.po +++ b/home-manager/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-02-16 22:01+0000\n" "Last-Translator: Robert Helgesson \n" "Language-Team: Danish \n" "Language-Team: German \n" "Language-Team: Spanish \n" "Language-Team: Persian 1;\n" "X-Generator: Weblate 4.18-dev\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "هیچ فایل تنظیماتی در %s پیدا نشد" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" msgstr "" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "هیچ فایل تنظیماتی پیدا نشد. لطفا یک فایل در %s بسازید" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -69,42 +74,42 @@ msgid "" " $ rm -r \"%s\"" msgstr "" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "فایل %s از قبل وجود داشته است، بدون تغییر رها شد..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "ساختن %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "" #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -115,7 +120,7 @@ msgid "" msgstr "" #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -125,11 +130,11 @@ msgid "" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -139,73 +144,73 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "" -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "نمی‌توان نسل فعلی %s را حذف کرد" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "حذف کردن نسل %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "" -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "" -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "" -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "واقعاً هوم منیجر را حذف نصب کنید؟" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "" -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 #, fuzzy msgid "Yay!" msgstr "آره!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "هوم منیجر حذف نصب شد اما home.nix شما دست نخورده باقی ماند." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "" -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "دستور ناشناخته: %s" diff --git a/home-manager/po/fi.po b/home-manager/po/fi.po index aed3b397..4e3c1935 100644 --- a/home-manager/po/fi.po +++ b/home-manager/po/fi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -17,36 +17,41 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" msgstr "" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -67,42 +72,42 @@ msgid "" " $ rm -r \"%s\"" msgstr "" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "" -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "" -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "" #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -113,7 +118,7 @@ msgid "" msgstr "" #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -123,11 +128,11 @@ msgid "" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -137,72 +142,72 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "" -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "" -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "" -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "" -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "" -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "" -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "" -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "" diff --git a/home-manager/po/fr.po b/home-manager/po/fr.po index b7a87485..1c9388eb 100644 --- a/home-manager/po/fr.po +++ b/home-manager/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-03-04 06:44+0000\n" "Last-Translator: Alexis Rossfelder \n" "Language-Team: French 1;\n" "X-Generator: Weblate 5.5-dev\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Aucun fichier de configuration trouvé à l'emplacement %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" @@ -34,18 +39,18 @@ msgstr "" "Garder votre Home Manager %s dans %s est obsolète,\n" "Veuillez le déplacer à %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "" "Aucun fichier de configuration trouvé. Veuillez en créer un à l'emplacement " "%s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager indisponible à %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." @@ -54,7 +59,7 @@ msgstr "" "dossier y a été trouvé." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -90,42 +95,42 @@ msgstr "" "\n" "\t$ rm -r \"%s\"" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Vérification de Nix" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "Impossible de trouver le dossier de profil approprié, essayé %s et %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Impossible d'inspecter les options de la configuration d'un flake" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s : option inconnue '%s'" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Exécuter « %s --help » pour de l'aide sur l'utilisation" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "Le fichier %s existe déjà, il sera laissé inchangé..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Création de %s ..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Création de la génération initiale de Home Manager..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -143,7 +148,7 @@ msgstr "" "essayez 'man home-configuration.nix'." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -159,11 +164,11 @@ msgstr "" "si l'erreur semble être liée à Home Manager." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Impossible d'instancier une configuration flake" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -177,72 +182,72 @@ msgstr[1] "" "Il y a %d nouveaux éléments non lus et pertinents.\n" "Vous pouvez les lire en exécutant la commande \"%s news\"." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Configuration \"news.display\" inconnue \"%s\"." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "Veuillez remplir la variable d'environnement $EDITOR ou VISUAL" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Impossible de lancer une compilation dans un dossier en écriture seule" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Aucune génération avec l'ID %s" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Impossible de supprimer la génération courante %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Suppression de la génération %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Aucune génération expirée" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Aucun package home-manager ne semble être installé." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Argument inconnu %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Cela va supprimer Home Manager de votre système." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "C'est un essai, rien ne sera réellement désinstallé." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Voulez-vous vraiment désinstaller Home Manager ?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Changement vers une configuration vierge de Home Manager..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Yay !" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager est désinstallé mais votre home.nix reste intact." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generations attend un argument, a obtenu %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Commande inconnue : %s" diff --git a/home-manager/po/id.po b/home-manager/po/id.po index 0db625b3..2dd2c14d 100644 --- a/home-manager/po/id.po +++ b/home-manager/po/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-02-16 22:01+0000\n" "Last-Translator: Robert Helgesson \n" "Language-Team: Indonesian \n" "Language-Team: Italian \n" "Language-Team: Japanese \n" "Language-Team: Korean \n" "Language-Team: Lithuanian =2 && (" -"n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"(n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.4\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Nerastas konfigūracijos failas %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 #, fuzzy msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" @@ -36,23 +41,23 @@ msgstr "" "Home Manager saugojimas %s viduje %s yra pasenes,\n" "prašome perkelti į %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Nerastas konfigūracijos failas. Sukurkite jį adresu %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Nerastas Home Manager šioje vietoje %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -73,42 +78,42 @@ msgid "" " $ rm -r \"%s\"" msgstr "" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Nix tikrinamas" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "Nepavyko rasti tinkamo profilio katalogo, bandyta naudoti %s ir %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Negalima patikrinti flake konfigūracijos pasirinkimų" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: nežinomas pasirinkimas „%s“" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Paleiskite „%s --help“, kad gautumėte naudojimosi instrukcijas" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "Failas %s jau egzistuoja, jis paliekamas nepakeistas..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Kuriamas %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Kuriama pradinė Home Manager generacija..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -127,7 +132,7 @@ msgstr "" "jei norite pamatyti visus pasirinkimus." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -142,11 +147,11 @@ msgstr "" "jei atrodo, kad klaida įvyko dėl Home Manager." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Negalima sukurti pradinės flake konfigūracijos" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -163,73 +168,73 @@ msgstr[2] "" "Yra %d neperskaitytų ir aktualių naujienų.\n" "Perskaitykite jas paleidus komandą \"%s news\"." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Nežinomas \"news.display\" nustatymas \"%s\"." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 #, fuzzy msgid "Cannot run build in read-only directory" msgstr "Negalima vykdyti kompiliavimo read-only kataloge" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Nėra generacijos su ID %s" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Negalima pašalinti esamos generacijos %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Pašalinama generacija %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Nėra generacijų, kurios baigtų galioti" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Nėra instaliuotų home-manager paketų." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Nežinomas argumentas %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Tai pašalins Home Manager iš jūsų sistemos." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "Tai bandomasis paleidimas, niekas nebus ištrinta." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Tikrai išdiegti Home Manager?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Perjungiama į tuščią Home Manager konfigūraciją..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Valio!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager yra išdiegtas, bet jūsų home.nix liko nepaliestas." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generations tikisi vieno argumento, gauta %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Nežinoma komanda: %s" diff --git a/home-manager/po/nb_NO.po b/home-manager/po/nb_NO.po index 97deaaf0..41f5035c 100644 --- a/home-manager/po/nb_NO.po +++ b/home-manager/po/nb_NO.po @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-04-02 21:38+0000\n" "Last-Translator: LilleAila \n" -"Language-Team: Norwegian Bokmål \n" +"Language-Team: Norwegian Bokmål \n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,14 +19,19 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.5-dev\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Fant ingen oppsettsfil i %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 #, fuzzy msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" @@ -35,23 +40,23 @@ msgstr "" "Å holde Home Manager %s i %s er avviklet,\n" "vennligst flytt det til %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Fant ikke noen oppsettsfil. Opprett en i %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager var ikke funnet på %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -72,43 +77,43 @@ msgid "" " $ rm -r \"%s\"" msgstr "" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Kontrollerer at Nix fungerer" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "Kunne ikke finne en passende profilmappe, prøvde %s og %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Kan ikke inspisere alternativer for et flake-oppsett" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: ukjent alternativ «%s»" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Kjør «%s --help» for brukshjelp" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 #, fuzzy msgid "The file %s already exists, leaving it unchanged..." msgstr "Filen %s eksisterer fra før, lar den være uendret..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Lager %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Oppretter ny Home Manager-generasjon..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -125,7 +130,7 @@ msgstr "" "se alle tilgjengelige innstillinger." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -140,11 +145,11 @@ msgstr "" "hvis du tror feilen er forårsaket av Home Manager." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Kan ikke igangsette flak-oppsett" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -158,72 +163,72 @@ msgstr[1] "" "Det er %d uleste og relevante nyhetssaker.\n" "Les dem ved å kjøre kommandoen «%s news»." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Ukjent «news.display»-innstilling «%s»." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Kan ikke kjøre bygg i skrivebeskyttet mappe" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Ingen generering med ID-en %s" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Kan ikke fjerne nåværende generering %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Fjerner generering %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Ingen genereringer til utløp" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Ingen «home-manager»-pakker ser ut til å være installert." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Ukjent parameter %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Dette vil fjerne Home Manager fra systemet ditt." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "Dette er en testkjøring. Ingenting vil bli avinstallert." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Vil du avinstallere Home Manager?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Bytter til tomt Home Manager-oppsett …" -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Hurra!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager er avinstallert, men din home.nix er levnet uforandret." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "«expire-generations» forventet ett argument, mottok %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Ukjent kommando: %s" diff --git a/home-manager/po/nl.po b/home-manager/po/nl.po index 5d6573f8..9f614ab1 100644 --- a/home-manager/po/nl.po +++ b/home-manager/po/nl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-02-16 22:01+0000\n" "Last-Translator: Robert Helgesson \n" "Language-Team: Dutch \n" "Language-Team: Polish =20) ? 1 : 2);\n" "X-Generator: Weblate 5.4\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Nie znaleziono pliku konfiguracyjnego %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" @@ -35,16 +40,16 @@ msgstr "" "Przechowywanie %s Home Managera w %s jest przestarzałe,\n" "proszę przenieść go do %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Nie znaleziono pliku konfiguracyjnego. Proszę utworzyć plik %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager nie znaleziony w %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." @@ -53,7 +58,7 @@ msgstr "" "katalog." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -93,42 +98,42 @@ msgstr "" "\n" " $ rm -r \"%s\"" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Sprawdzanie poprawności Nix" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "Nie można znaleźć odpowiedniego katalogu profilu, próbowano %s i %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Nie mogę sprawdzić konfiguracji flake'a" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: nieznana opcja „%s”" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Uruchom „%s --help” by otrzymać pomoc" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "Plik %s już istnieje, pozostawianie go bez zmian..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Tworzenie %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Tworzenie pierwotnej generacji Home Managera..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -146,7 +151,7 @@ msgstr "" "sprawdzić wszystkie możliwe opcje konfiguracyjne." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -161,11 +166,11 @@ msgstr "" "jeśli myślisz, że problem spowodowany jest przez błąd Home Managera." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Nie mogę utworzyć instancji konfiguracji flake'a" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -182,73 +187,73 @@ msgstr[2] "" "Jest %d nieodczytanych wiadomości.\n" "Możesz je odczytać uruchamiając „%s news”." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Nieznane ustawienie „%s” „news.display”." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Nie mogę uruchomić budowania w katalogu tylko-do-odczytu" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Brak generacji z ID %s" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Nie mogę usunąć bieżącej generacji %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Usuwanie generacji %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Brak wygasających generacji" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Pakiety home-manager nie wydają się być zainstalowane." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Nieznany argument %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "To usunie Home Managera z twojego systemu." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "To jest próba, faktycznie nic nie będzie usunięte." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Jesteś pewien usunięcia Home Managera?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Przełączanie do pustej konfiguracji Home Managera..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Jej!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "" "Home Manager jest usunięty ale twój home.nix jest pozostawiony nietknięty." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generations oczekuje jednego argumentu, otrzymano %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Nieznana komenda: %s" diff --git a/home-manager/po/pt.po b/home-manager/po/pt.po index 3e356d6a..30a16bde 100644 --- a/home-manager/po/pt.po +++ b/home-manager/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-02-16 22:01+0000\n" "Last-Translator: Robert Helgesson \n" "Language-Team: Portuguese 1;\n" "X-Generator: Weblate 5.4\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Nenhum ficheiro de configuração encontrado em %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" @@ -34,16 +39,16 @@ msgstr "" "Manter o %s do seu Home Manager em %s já não é suportado,\n" "por favor mova-o para %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Ficheiro de configuração não encontrado. Por favor crie um em %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager não foi encontrado em %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." @@ -52,7 +57,7 @@ msgstr "" "diretório foi encontrado lá." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -91,44 +96,44 @@ msgstr "" "\n" " $ rm -r \"%s\"" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Revalidando Nix" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" "Não foi possível encontrar uma diretoria de perfil apropriada, foi tentado " "%s e %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Não é possivel inspecionar a opção de configuração do flake" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: opção não reconhecida '%s'" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Execute '%s --help' para instruções de uso" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "O arquivo %s já existe, deixando do jeito que está..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Criando %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Criando a geração inicial do Home Manager..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -145,7 +150,7 @@ msgstr "" "ver todas as opções disponíveis." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -160,11 +165,11 @@ msgstr "" "se o erro lhe parecer ser um problema do Home Manager." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Não foi possível instanciar a configuração de flake" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -178,72 +183,72 @@ msgstr[1] "" "Há %d novos itens relevants não lidos\n" "Leia executando o comando \"%s news\"." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Não é possível fazer o build num diretório somente leitura" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Nenhuma geração com ID %s" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Não foi possível remover a geração atual %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "A remover a geração %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Nenhuma geração a expirar" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Nenhum pacote parece instalado com home-manager." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Argumento desconhecido %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Isto irá remover o Home Manager do seu sistema." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "Essa é uma execução de teste, nada de fato será desinstalado." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Confirma a desinstalação do Home Manager?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Trocando para configuração vazia do Home Manager..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Boa!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager foi desinstalado, mas o seu home.nix foi deixado intacto." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generations espera um argumento, recebeu %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Comando não reconhecido: %s" diff --git a/home-manager/po/pt_BR.po b/home-manager/po/pt_BR.po index 3cb16292..44aba563 100644 --- a/home-manager/po/pt_BR.po +++ b/home-manager/po/pt_BR.po @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-02-28 13:02+0000\n" "Last-Translator: guto \n" -"Language-Team: Portuguese (Brazil) \n" +"Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,14 +19,19 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.5-dev\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Nenhum arquivo de configuração encontrado no %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" @@ -34,16 +39,16 @@ msgstr "" "Manter seu Home Manager %s em %s foi descontinuado,\n" "por favor mova-o para %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Arquivo de configuração não encontrado. Por favor crie um em %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager não encontrado em %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." @@ -52,7 +57,7 @@ msgstr "" "algum arquivo/diretório nele." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -92,43 +97,43 @@ msgstr "" "\n" " $ rm -r \"%s\"" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Revalidando Nix" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" "Não foi possível encontrar um diretório de perfil apropriado, tentei %s e %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Não é possivel inspecionar a opção de configuração do flake" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: opção não reconhecida '%s'" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Execute '%s --help' para instruções de uso" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "O arquivo %s já existe, mantendo ele sem modificações..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Criando %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Criando a geração inicial do Home Manager..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -146,7 +151,7 @@ msgstr "" "ver todas as opções disponíveis." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -161,11 +166,11 @@ msgstr "" "se o erro lhe parecer ser um problema do Home Manager." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Não foi possível instanciar a configuração de flake" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -179,72 +184,72 @@ msgstr[1] "" "Há %d novos itens relevants não lidos\n" "Leia executando o comando \"%s news\"." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "Por favor, defina a variável de ambiente $EDITOR ou $VISUAL" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Não é possível fazer o build em um diretório somente leitura" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Nenhuma geração com ID %s" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Não foi possível remover a geração atual %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Removendo geração %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Nenhuma geração a expirar" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Nenhum pacote parece instalado com home-manager." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Argumento desconhecido %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Isso irá remover o Home Manager do seu sistema." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "Essa é uma execução de teste, nada de fato será desinstalado." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Confirma a desinstalação do Home Manager?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Trocando para configuração vazia do Home Manager..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Boa!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager foi desinstalado, mas o seu home.nix foi deixado intacto." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generations espera um argumento, recebeu %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Comando não reconhecido: %s" diff --git a/home-manager/po/ro.po b/home-manager/po/ro.po index 18f9dad7..bd48a4a8 100644 --- a/home-manager/po/ro.po +++ b/home-manager/po/ro.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-03-31 22:01+0000\n" "Last-Translator: SMFloris \n" "Language-Team: Romanian \n" "Language-Team: Russian =20) ? 1 : 2);\n" "X-Generator: Weblate 5.5-dev\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Не найден файл конфигурации в %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" @@ -35,16 +40,16 @@ msgstr "" "Файл %s вашего Home Manager находится в устаревшем месте %s\n" "пожалуйста, переместите его в %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Не найден файл конфигурации. Пожалуйста, создайте его в %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager не был найден в %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." @@ -53,7 +58,7 @@ msgstr "" "файл или папка." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -92,42 +97,42 @@ msgstr "" "\n" " $ rm -r \"%s\"" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Проверка работоспособности Nix" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "Не найдена подходящая директория профиля, пробовали %s и %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Не могу получить опции для flake-конфигурации" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: неизвестная опция '%s'" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Выполните '%s --help', чтобы получить справку" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "Файл %s уже существует и не будет изменен..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Создание %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Создаю начальное поколение Home Manager..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -144,7 +149,7 @@ msgstr "" "Выполните 'man home-configuration.nix', чтобы увидеть доступные опции." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -159,11 +164,11 @@ msgstr "" "если считаете, что в ошибке виноват Home Manager." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Не могу создать экземляр для flake-конфигурации" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -180,72 +185,72 @@ msgstr[2] "" "У вас есть %d непрочитанных и релевантных новостей.\n" "Прочтите их, выполнив команду \"%s news\"." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Неизвестное значение \"news.display\": \"%s\"." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "Пожалуйста, установите переменную среды $EDITOR или $VISUAL" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Не могу начать сборку в директории, защищённой от записи" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Поколение под номером %s не существует" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Не могу удалить текущее поколение %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Удаляю поколение %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Нет поколений, которые можно просрочить" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Не обнаружено пакетов, установленных через home-manager." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Неизвестный аргумент %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Это удалит Home Manager из вашей системы." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "Это пробный запуск, на самом деле ничего не удаляется." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Действительно хотите удалить Home Manager?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Переключаюсь на пустую конфигурацию Home Manager..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Ура!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager удалён, но ваш home.nix остался нетронутым." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generations требует один аргумент, но передано %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Неизвестная команда: %s" diff --git a/home-manager/po/sv.po b/home-manager/po/sv.po index 2454def1..428f9e10 100644 --- a/home-manager/po/sv.po +++ b/home-manager/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-02-18 14:02+0000\n" "Last-Translator: bittin1ddc447d824349b2 \n" "Language-Team: Swedish \n" @@ -20,36 +20,41 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.0.2\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "ไม่พบการตั้งค่าที่ %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" msgstr "" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." msgstr "" #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -70,42 +75,42 @@ msgid "" " $ rm -r \"%s\"" msgstr "" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "" -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "" -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "" #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -116,7 +121,7 @@ msgid "" msgstr "" #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -126,11 +131,11 @@ msgid "" msgstr "" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -140,72 +145,72 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "" -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "" -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "" -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "" -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "" -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "" -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "" -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "" diff --git a/home-manager/po/tr.po b/home-manager/po/tr.po index 7cbf6354..e382f3b5 100644 --- a/home-manager/po/tr.po +++ b/home-manager/po/tr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-02-16 22:01+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" "Language-Team: Ukrainian =20) ? 1 : 2);\n" "X-Generator: Weblate 5.4\n" -#: home-manager/home-manager:58 +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +msgid "%s: missing argument for %s" +msgstr "" + +#: home-manager/home-manager:64 msgid "No configuration file found at %s" msgstr "Файл конфігурації не знайдено в %s" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. -#: home-manager/home-manager:75 home-manager/home-manager:79 -#: home-manager/home-manager:178 +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" @@ -35,16 +40,16 @@ msgstr "" "Збереження вашого Home Manager %s у %s є застарілим,\n" "будь ласка, перемістіть його до %s" -#: home-manager/home-manager:86 +#: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" msgstr "Файл конфігурації не знайдено. Будь ласка, створіть його в %s" -#: home-manager/home-manager:101 +#: home-manager/home-manager:107 msgid "Home Manager not found at %s." msgstr "Home Manager не знайдено на %s." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:109 +#: home-manager/home-manager:115 msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." @@ -52,7 +57,7 @@ msgstr "" "Резервний шлях до Home Manager %s застарів, і там було знайдено файл/каталог." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. -#: home-manager/home-manager:112 +#: home-manager/home-manager:118 msgid "" "To remove this warning, do one of the following.\n" "\n" @@ -91,42 +96,42 @@ msgstr "" "\n" " $ rm -r \"%s\"" -#: home-manager/home-manager:140 +#: home-manager/home-manager:146 msgid "Sanity checking Nix" msgstr "Перевірка адекватності Nix" -#: home-manager/home-manager:160 +#: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "Не вдалося знайти відповідний каталог профілю, спробував %s і %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:215 +#: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" msgstr "Неможливо перевірити параметри flake-конфігурації" -#: home-manager/home-manager:288 home-manager/home-manager:311 -#: home-manager/home-manager:1030 +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" msgstr "%s: невідомий параметр '%s'" -#: home-manager/home-manager:293 home-manager/home-manager:1031 +#: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" msgstr "Запустіть '%s --help' для отримання довідки про використання" -#: home-manager/home-manager:319 home-manager/home-manager:423 +#: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." msgstr "Файл %s вже існує, залишаючи його незмінним..." -#: home-manager/home-manager:321 home-manager/home-manager:425 +#: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." msgstr "Створення %s..." -#: home-manager/home-manager:467 +#: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." msgstr "Створення початкової генерації Home Manager..." #. translators: The "%s" specifier will be replaced by a file path. -#: home-manager/home-manager:472 +#: home-manager/home-manager:480 msgid "" "All done! The home-manager tool should now be installed and you can edit\n" "\n" @@ -144,7 +149,7 @@ msgstr "" "переглянути всі доступні варіанти." #. translators: The "%s" specifier will be replaced by a URL. -#: home-manager/home-manager:477 +#: home-manager/home-manager:485 msgid "" "Uh oh, the installation failed! Please create an issue at\n" "\n" @@ -159,11 +164,11 @@ msgstr "" "якщо здається, що помилка сталася через Home Manager." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. -#: home-manager/home-manager:488 +#: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" msgstr "Не вдається створити екземпляр flake-конфігурації" -#: home-manager/home-manager:564 +#: home-manager/home-manager:572 msgid "" "There is %d unread and relevant news item.\n" "Read it by running the command \"%s news\"." @@ -180,72 +185,72 @@ msgstr[2] "" "Є %d непрочитаних і ревалентних новин.\n" "Прочитайте їх, виконавши команду \"%s news\"." -#: home-manager/home-manager:578 +#: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." msgstr "Невідоме налаштування \"news.display\" \"%s\"." -#: home-manager/home-manager:586 +#: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" msgstr "Будь ласка, встановіть змінну оточення $EDITOR або $VISUAL" -#: home-manager/home-manager:604 +#: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" msgstr "Неможливо запустити збірку в каталозі, доступному лише для читання" -#: home-manager/home-manager:685 +#: home-manager/home-manager:693 msgid "No generation with ID %s" msgstr "Немає генерації з ID %s" -#: home-manager/home-manager:687 +#: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" msgstr "Не вдається видалити поточну генерацію %s" -#: home-manager/home-manager:689 +#: home-manager/home-manager:697 msgid "Removing generation %s" msgstr "Видалення генерації %s" -#: home-manager/home-manager:710 +#: home-manager/home-manager:718 msgid "No generations to expire" msgstr "Немає генерацій, термін дії яких закінчується" -#: home-manager/home-manager:721 +#: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." msgstr "Здається, не встановлено жодних пакунків home-manager." -#: home-manager/home-manager:803 +#: home-manager/home-manager:811 msgid "Unknown argument %s" msgstr "Невідомий аргумент %s" -#: home-manager/home-manager:827 +#: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." msgstr "Це призведе до видалення Home Manager з вашої системи." -#: home-manager/home-manager:830 +#: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." msgstr "Це пробний запуск, насправді нічого не буде видалено." -#: home-manager/home-manager:834 +#: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" msgstr "Дійсно видаліть Home Manager?" -#: home-manager/home-manager:840 +#: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." msgstr "Перехід до порожньої конфігурації Home Manager..." -#: home-manager/home-manager:855 +#: home-manager/home-manager:863 msgid "Yay!" msgstr "Ура!" -#: home-manager/home-manager:860 +#: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." msgstr "Home Manager буде видалено, але ваш home.nix залишиться недоторканим." -#: home-manager/home-manager:1070 +#: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." msgstr "expire-generation очікує один аргумент, отримав %d." -#: home-manager/home-manager:1092 +#: home-manager/home-manager:1113 msgid "Unknown command: %s" msgstr "Невідома команда: %s" diff --git a/home-manager/po/vi.po b/home-manager/po/vi.po index d0a57b9b..336b5562 100644 --- a/home-manager/po/vi.po +++ b/home-manager/po/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-03-27 15:05+0000\n" "Last-Translator: Nguyen Khanh \n" "Language-Team: Vietnamese \n" "Language-Team: Chinese (Simplified) \n" "Language-Team: Chinese (Traditional) \n" "Language-Team: Catalan \n" "Language-Team: Czech =2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 5.3-dev\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Vytváření linků na domácí soubory v %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "Čištění osiřelých linků z %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Vytvářím profil generace %s" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Žádná změna, takže bude použita profil poslední generace %s" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "Poté zkuste znova aktivovat vaši Home Manager konfiguraci." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Aktivuji %s" diff --git a/modules/po/da.po b/modules/po/da.po index e01ade19..acb46662 100644 --- a/modules/po/da.po +++ b/modules/po/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2023-09-27 11:02+0000\n" "Last-Translator: Emil Heilbo \n" "Language-Team: Danish \n" "Language-Team: German \n" "Language-Team: Spanish \n" "Language-Team: French 1;\n" "X-Generator: Weblate 5.0-dev\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Création des liens de fichiers personnels dans %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "Nettoyage des liens orphelins de %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Création de la génération de profil %s" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Pas de changement, réutilisation du dernier profil génération %s" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "Après, essayez encore d'activer votre configuration de Home Manager." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Activation de %s" diff --git a/modules/po/id.po b/modules/po/id.po index 6e17edae..78db0232 100644 --- a/modules/po/id.po +++ b/modules/po/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2023-10-04 06:02+0000\n" "Last-Translator: Reza Almanda \n" "Language-Team: Indonesian \n" "Language-Team: Italian \n" "Language-Team: Japanese \n" "Language-Team: Korean \n" "Language-Team: Lithuanian =2 && (" -"n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"(n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.4\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Kuriamos home failų nuorodos adresu %s" -#: modules/files.nix:249 +#: modules/files.nix:204 #, fuzzy msgid "Cleaning up orphan links from %s" msgstr "Valomos pamestos nuorodos iš %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Kuriama profilio generacija %s" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Nėra pakeitimų, naudojama paskutinė profilio generacija %s" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -65,7 +65,7 @@ msgstr "" "\n" "Tada pabandykite aktyvuoti Home Manager konfigūraciją iš naujo." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Aktyvuojamas %s" diff --git a/modules/po/nb_NO.po b/modules/po/nb_NO.po index b1f4cfaa..b3754af0 100644 --- a/modules/po/nb_NO.po +++ b/modules/po/nb_NO.po @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-04-02 21:38+0000\n" "Last-Translator: LilleAila \n" -"Language-Team: Norwegian Bokmål \n" +"Language-Team: Norwegian Bokmål \n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,23 +19,23 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.5-dev\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Lager hjemmefillenker i %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "Fjerner frakoblede lenker fra %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Oppretter profil for generering %s" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Ingen endring, gjenbruker derfor siste profilgenerering %s" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "for så å aktivere ditt Home Manager-oppsett igjen." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Aktiverer %s" diff --git a/modules/po/nl.po b/modules/po/nl.po index 520af142..418594aa 100644 --- a/modules/po/nl.po +++ b/modules/po/nl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2023-12-02 23:06+0000\n" "Last-Translator: Zurga \n" "Language-Team: Dutch \n" "Language-Team: Polish =20) ? 1 : 2;\n" "X-Generator: Weblate 4.18-dev\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Tworzenie dowiązań plików w %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "Czyszczenie osieroconych linków z %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Tworzenie profilu generacji %s" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Brak zmian więc używam ostatniej generacji profilu %s" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -65,7 +65,7 @@ msgstr "" "\n" "Po czym spróbuj aktywować swoją konfigurację Home Manager jeszcze raz." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Aktywowanie %s" diff --git a/modules/po/pt.po b/modules/po/pt.po index 73a53688..9bd5144a 100644 --- a/modules/po/pt.po +++ b/modules/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2023-10-19 04:00+0000\n" "Last-Translator: SrGesus \n" "Language-Team: Portuguese 1;\n" "X-Generator: Weblate 5.1\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "A criar links simbólicos em %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "A limpar links órfãos do directório %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "A criar geração %s para o perfil" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Nenhuma mudança, portanto a reusar a última geração %s para o perfil" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "E então tente novamente ativar a sua configuração do Home Manager." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Ativando %s" diff --git a/modules/po/pt_BR.po b/modules/po/pt_BR.po index aea9b0ab..a8f2b484 100644 --- a/modules/po/pt_BR.po +++ b/modules/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2023-11-30 15:04+0000\n" "Last-Translator: Gabriel Fontes \n" "Language-Team: Portuguese (Brazil) 1;\n" "X-Generator: Weblate 5.3-dev\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Criando links simbólicos em %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "Limpando links órfãos do directório %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Criando geração %s para o perfil" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Nenhuma mudança, portanto reusando a última geração %s para o perfil" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "E então tente novamente ativar a sua configuração do Home Manager." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Ativando %s" diff --git a/modules/po/ro.po b/modules/po/ro.po index 022007dd..d817496a 100644 --- a/modules/po/ro.po +++ b/modules/po/ro.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2023-08-11 19:51+0000\n" "Last-Translator: HeartBlin913861820c094e37 \n" "Language-Team: Romanian \n" "Language-Team: Russian =20) ? 1 : 2;\n" "X-Generator: Weblate 5.3-dev\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Создаю ссылки в домашней директории %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "Удаляю устаревшие ссылки из %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Создаю профиль в поколении %s" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Изменений нет, переиспользую профиль в последнем поколении %s" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -64,7 +64,7 @@ msgstr "" "\n" "После попробуйте активировать конфигурацию снова." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Активирую %s" diff --git a/modules/po/sv.po b/modules/po/sv.po index 5d474429..266a84d8 100644 --- a/modules/po/sv.po +++ b/modules/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2023-05-27 12:11+0000\n" "Last-Translator: Robert Helgesson \n" "Language-Team: Swedish \n" "Language-Team: Turkish \n" "Language-Team: Ukrainian =20) ? 1 : 2;\n" "X-Generator: Weblate 5.4-dev\n" -#: modules/files.nix:236 +#: modules/files.nix:191 msgid "Creating home file links in %s" msgstr "Створення посилань на файли в домашньому каталозі в %s" -#: modules/files.nix:249 +#: modules/files.nix:204 msgid "Cleaning up orphan links from %s" msgstr "Очищення невідомих посилань із %s" -#: modules/files.nix:265 +#: modules/files.nix:220 msgid "Creating profile generation %s" msgstr "Створення генерації профілю %s" -#: modules/files.nix:282 +#: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" msgstr "Без змін, тому повторне використання останньої генерації профілю %s" -#: modules/home-environment.nix:622 +#: modules/home-environment.nix:634 msgid "" "Oops, Nix failed to install your new Home Manager profile!\n" "\n" @@ -64,7 +64,7 @@ msgstr "" "\n" "Потім спробуйте знову активувати конфігурацію Home Manager." -#: modules/home-environment.nix:655 +#: modules/home-environment.nix:667 msgid "Activating %s" msgstr "Активація %s" diff --git a/modules/po/vi.po b/modules/po/vi.po index a7c2bafb..a285c2bf 100644 --- a/modules/po/vi.po +++ b/modules/po/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Home Manager Modules\n" "Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n" -"POT-Creation-Date: 2024-02-15 16:04+0100\n" +"POT-Creation-Date: 2024-04-17 23:19+0200\n" "PO-Revision-Date: 2024-03-27 15:05+0000\n" "Last-Translator: Nguyen Khanh \n" "Language-Team: Vietnamese \n" "Language-Team: Chinese (Simplified) \n" "Language-Team: Chinese (Traditional) Date: Wed, 20 Mar 2024 08:41:18 +0100 Subject: [PATCH 015/102] qt: add adwaita platform theme Fixes #4702 and https://github.com/NixOS/nixpkgs/issues/295345. --- modules/misc/qt.nix | 160 ++++++++++++------ tests/modules/misc/qt/qt-basic.nix | 2 - .../misc/qt/qt-platform-theme-gnome.nix | 3 +- .../modules/misc/qt/qt-platform-theme-gtk.nix | 4 +- .../misc/qt/qt-platform-theme-gtk3.nix | 4 +- 5 files changed, 109 insertions(+), 64 deletions(-) diff --git a/modules/misc/qt.nix b/modules/misc/qt.nix index f02bc186..e3e5be41 100644 --- a/modules/misc/qt.nix +++ b/modules/misc/qt.nix @@ -6,6 +6,7 @@ let # Map platform names to their packages. platformPackages = with pkgs; { gnome = [ qgnomeplatform qgnomeplatform-qt6 ]; + adwaita = [ qadwaitadecorations qadwaitadecorations-qt6 ]; gtk = [ libsForQt5.qtstyleplugins qt6Packages.qt6gtk2 ]; kde = [ libsForQt5.plasma-integration libsForQt5.systemsettings ]; lxqt = [ lxqt.lxqt-qtplugin lxqt.lxqt-config ]; @@ -55,56 +56,85 @@ in { qt = { enable = lib.mkEnableOption "Qt 5 and 6 configuration"; - platformTheme = lib.mkOption { + platformTheme = let + newOption = { + name = lib.mkOption { + type = with lib.types; nullOr str; + default = null; + example = "adwaita"; + relatedPackages = [ + "qgnomeplatform" + "qgnomeplatform-qt6" + "qadwaitadecorations" + "qadwaitadecorations-qt6" + [ "libsForQt5" "plasma-integration" ] + [ "libsForQt5" "qt5ct" ] + [ "libsForQt5" "qtstyleplugins" ] + [ "libsForQt5" "systemsettings" ] + [ "lxqt" "lxqt-config" ] + [ "lxqt" "lxqt-qtplugin" ] + [ "qt6Packages" "qt6ct" ] + [ "qt6Packages" "qt6gtk2" ] + ]; + description = '' + Platform theme to use for Qt applications. + + Some examples are + + `gtk` + : Use GTK theme with + [`qtstyleplugins`](https://github.com/qt/qtstyleplugins) + + `gtk3` + : Use [GTK3 integration](https://github.com/qt/qtbase/tree/dev/src/plugins/platformthemes/gtk3) + for file picker dialogs, font and theme configuration + + `adwaita` + : Use Adwaita theme with + [`qadwaitadecorations`](https://github.com/FedoraQt/QGnomePlatform) + + `gnome` (deprecated) + : Use GNOME theme with + [`qgnomeplatform`](https://github.com/FedoraQt/QGnomePlatform). + Is no longer maintained so prefer `adwaita`. + + `lxqt` + : Use LXQt theme style set using the + [`lxqt-config-appearance`](https://github.com/lxqt/lxqt-config) + application + + `qtct` + : Use Qt style set using + [`qt5ct`](https://github.com/desktop-app/qt5ct) + and [`qt6ct`](https://github.com/trialuser02/qt6ct) + applications + + `kde` + : Use Qt settings from Plasma + ''; + }; + package = lib.mkOption { + type = with lib.types; nullOr (either package (listOf package)); + default = null; + example = + lib.literalExpression "[pkgs.adwaita-qt pkgs.adwaita-qt6]"; + description = '' + Theme package to be used in Qt5/Qt6 applications. + Auto-detected from {option}`qt.platformTheme.name` if possible. + See its documentation for available options. + ''; + }; + }; + in lib.mkOption { type = with lib.types; - nullOr (enum [ "gtk" "gtk3" "gnome" "lxqt" "qtct" "kde" ]); + nullOr + (either (enum [ "gtk" "gtk3" "gnome" "adwaita" "lxqt" "qtct" "kde" ]) + (lib.types.submodule { options = newOption; })); default = null; - example = "gnome"; - relatedPackages = [ - "qgnomeplatform" - "qgnomeplatform-qt6" - [ "libsForQt5" "plasma-integration" ] - [ "libsForQt5" "qt5ct" ] - [ "libsForQt5" "qtstyleplugins" ] - [ "libsForQt5" "systemsettings" ] - [ "lxqt" "lxqt-config" ] - [ "lxqt" "lxqt-qtplugin" ] - [ "qt6Packages" "qt6ct" ] - [ "qt6Packages" "qt6gtk2" ] - ]; description = '' - Platform theme to use for Qt applications. - - The options are - - `gtk` - : Use GTK theme with - [`qtstyleplugins`](https://github.com/qt/qtstyleplugins) - - `gtk3` - : Use [GTK3 integration](https://github.com/qt/qtbase/tree/dev/src/plugins/platformthemes/gtk3) - for file picker dialogs, font and theme configuration - - `gnome` - : Use GNOME theme with - [`qgnomeplatform`](https://github.com/FedoraQt/QGnomePlatform) - - `lxqt` - : Use LXQt theme style set using the - [`lxqt-config-appearance`](https://github.com/lxqt/lxqt-config) - application - - `qtct` - : Use Qt style set using - [`qt5ct`](https://github.com/desktop-app/qt5ct) - and [`qt6ct`](https://github.com/trialuser02/qt6ct) - applications - - `kde` - : Use Qt settings from Plasma + Deprecated. Use {option}`qt.platformTheme.name` instead. ''; }; - style = { name = lib.mkOption { type = with lib.types; nullOr str; @@ -149,6 +179,7 @@ in { description = '' Theme package to be used in Qt5/Qt6 applications. Auto-detected from {option}`qt.style.name` if possible. + See its documentation for available options. ''; }; }; @@ -156,11 +187,29 @@ in { }; config = let + warnGnomeDeprecation = option: name: + lib.warnIf (name == "gnome") + "The value `gnome` for option `${option}` is deprecated. Use `adwaita` instead." + name; + + platformTheme = if (builtins.isString cfg.platformTheme) then { + name = lib.warn + "The option `qt.platformTheme` has been renamed to `qt.platformTheme.name`." + (warnGnomeDeprecation "qt.platformTheme" cfg.platformTheme); + package = null; + } else if cfg.platformTheme == null then { + name = null; + package = null; + } else { + name = + warnGnomeDeprecation "cfg.platformTheme.name" cfg.platformTheme.name; + package = cfg.platformTheme.package; + }; # Necessary because home.sessionVariables doesn't support mkIf envVars = lib.filterAttrs (n: v: v != null) { - QT_QPA_PLATFORMTHEME = if (cfg.platformTheme != null) then - styleNames.${cfg.platformTheme} or cfg.platformTheme + QT_QPA_PLATFORMTHEME = if (platformTheme.name != null) then + styleNames.${platformTheme.name} or platformTheme.name else null; QT_STYLE_OVERRIDE = cfg.style.name; @@ -181,10 +230,10 @@ in { in lib.mkIf cfg.enable { assertions = [{ - assertion = cfg.platformTheme == "gnome" -> cfg.style.name != null + assertion = platformTheme.name == "gnome" -> cfg.style.name != null && cfg.style.package != null; message = '' - `qt.platformTheme` "gnome" must have `qt.style` set to a theme that + `qt.platformTheme.name` "gnome" must have `qt.style` set to a theme that supports both Qt and Gtk, for example "adwaita", "adwaita-dark", or "breeze". ''; }]; @@ -208,13 +257,16 @@ in { # Apply theming also to apps started by systemd. systemd.user.sessionVariables = envVars // envVarsExtra; - home.packages = (lib.optionals (cfg.platformTheme != null) - platformPackages.${cfg.platformTheme} or [ ]) - ++ (lib.optionals (cfg.style.package != null) - (lib.toList cfg.style.package)); + home.packages = (lib.findFirst (x: x != null) [ ] [ + (lib.optionals (platformTheme.package != null) + (lib.toList platformTheme.package)) + (lib.optionals (platformTheme.name != null) + platformPackages.${platformTheme.name}) + ]) ++ (lib.optionals (cfg.style.package != null) + (lib.toList cfg.style.package)); xsession.importedVariables = [ "QT_PLUGIN_PATH" "QML2_IMPORT_PATH" ] - ++ lib.optionals (cfg.platformTheme != null) [ "QT_QPA_PLATFORMTHEME" ] + ++ lib.optionals (platformTheme.name != null) [ "QT_QPA_PLATFORMTHEME" ] ++ lib.optionals (cfg.style.name != null) [ "QT_STYLE_OVERRIDE" ]; }; } diff --git a/tests/modules/misc/qt/qt-basic.nix b/tests/modules/misc/qt/qt-basic.nix index 9ddddb35..a4cadcb7 100644 --- a/tests/modules/misc/qt/qt-basic.nix +++ b/tests/modules/misc/qt/qt-basic.nix @@ -1,5 +1,3 @@ -{ config, lib, pkgs, ... }: - { config = { qt.enable = true; diff --git a/tests/modules/misc/qt/qt-platform-theme-gnome.nix b/tests/modules/misc/qt/qt-platform-theme-gnome.nix index d95ef704..617d99b0 100644 --- a/tests/modules/misc/qt/qt-platform-theme-gnome.nix +++ b/tests/modules/misc/qt/qt-platform-theme-gnome.nix @@ -1,9 +1,8 @@ -{ config, lib, pkgs, ... }: - { config = { qt = { enable = true; + # Check if still backwards compatible platformTheme = "gnome"; style.name = "adwaita"; }; diff --git a/tests/modules/misc/qt/qt-platform-theme-gtk.nix b/tests/modules/misc/qt/qt-platform-theme-gtk.nix index 070c8020..76a6512f 100644 --- a/tests/modules/misc/qt/qt-platform-theme-gtk.nix +++ b/tests/modules/misc/qt/qt-platform-theme-gtk.nix @@ -1,10 +1,8 @@ -{ config, lib, pkgs, ... }: - { config = { qt = { enable = true; - platformTheme = "gtk"; + platformTheme.name = "gtk"; }; i18n.inputMethod.enabled = "fcitx5"; diff --git a/tests/modules/misc/qt/qt-platform-theme-gtk3.nix b/tests/modules/misc/qt/qt-platform-theme-gtk3.nix index 2b3ade9d..26408818 100644 --- a/tests/modules/misc/qt/qt-platform-theme-gtk3.nix +++ b/tests/modules/misc/qt/qt-platform-theme-gtk3.nix @@ -1,10 +1,8 @@ -{ config, lib, pkgs, ... }: - { config = { qt = { enable = true; - platformTheme = "gtk3"; + platformTheme.name = "gtk3"; }; nmt.script = '' From be2b17615c536c31d0ea4989a959298b115353b3 Mon Sep 17 00:00:00 2001 From: Tschai <89387771+tschai-yim@users.noreply.github.com> Date: Fri, 22 Mar 2024 08:02:38 +0100 Subject: [PATCH 016/102] qt: fix adwaita decorations link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> --- modules/misc/qt.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/misc/qt.nix b/modules/misc/qt.nix index e3e5be41..2dbb3139 100644 --- a/modules/misc/qt.nix +++ b/modules/misc/qt.nix @@ -91,7 +91,7 @@ in { `adwaita` : Use Adwaita theme with - [`qadwaitadecorations`](https://github.com/FedoraQt/QGnomePlatform) + [`qadwaitadecorations`](https://github.com/FedoraQt/QAdwaitaDecorations) `gnome` (deprecated) : Use GNOME theme with From 54e35e0e1c1b6b4888c34423335a448ab3ec78d5 Mon Sep 17 00:00:00 2001 From: tschai-yim <89387771+tschai-yim@users.noreply.github.com> Date: Sun, 24 Mar 2024 15:52:14 +0100 Subject: [PATCH 017/102] qt: use warnings API --- modules/misc/qt.nix | 21 ++++++++++--------- .../misc/qt/qt-platform-theme-gnome.nix | 4 ++++ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/modules/misc/qt.nix b/modules/misc/qt.nix index 2dbb3139..51fbac46 100644 --- a/modules/misc/qt.nix +++ b/modules/misc/qt.nix @@ -187,22 +187,17 @@ in { }; config = let - warnGnomeDeprecation = option: name: - lib.warnIf (name == "gnome") - "The value `gnome` for option `${option}` is deprecated. Use `adwaita` instead." - name; - platformTheme = if (builtins.isString cfg.platformTheme) then { - name = lib.warn - "The option `qt.platformTheme` has been renamed to `qt.platformTheme.name`." - (warnGnomeDeprecation "qt.platformTheme" cfg.platformTheme); + option = "qt.platformTheme"; + name = cfg.platformTheme; package = null; } else if cfg.platformTheme == null then { + option = null; name = null; package = null; } else { - name = - warnGnomeDeprecation "cfg.platformTheme.name" cfg.platformTheme.name; + option = "qt.platformTheme.name"; + name = cfg.platformTheme.name; package = cfg.platformTheme.package; }; @@ -238,6 +233,12 @@ in { ''; }]; + warnings = (lib.lists.optional (platformTheme.option == "qt.platformTheme") + "The option `qt.platformTheme` has been renamed to `qt.platformTheme.name`.") + ++ (lib.lists.optional + (platformTheme.name == "gnome" && platformTheme.package == null) + "The value `gnome` for option `${platformTheme.option}` is deprecated. Use `adwaita` instead."); + qt.style.package = lib.mkIf (cfg.style.name != null) (lib.mkDefault (stylePackages.${lib.toLower cfg.style.name} or null)); diff --git a/tests/modules/misc/qt/qt-platform-theme-gnome.nix b/tests/modules/misc/qt/qt-platform-theme-gnome.nix index 617d99b0..ab65f146 100644 --- a/tests/modules/misc/qt/qt-platform-theme-gnome.nix +++ b/tests/modules/misc/qt/qt-platform-theme-gnome.nix @@ -19,5 +19,9 @@ 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." + ]; }; } From ffc3600f4009ca39b6cb63b24127ca4f93792854 Mon Sep 17 00:00:00 2001 From: uncenter <47499684+uncenter@users.noreply.github.com> Date: Fri, 12 Apr 2024 10:19:25 -0400 Subject: [PATCH 018/102] fd: add module --- modules/misc/news.nix | 7 +++++ modules/modules.nix | 1 + modules/programs/fd.nix | 59 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 modules/programs/fd.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 97b8da7b..2c00c5ed 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1476,6 +1476,13 @@ in { A new module is available: 'programs.bun'. ''; } + + { + time = "2024-04-18T22:30:49+00:00"; + message = '' + A new module is available: 'programs.fd'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index ff48b21a..b182a33e 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -86,6 +86,7 @@ let ./programs/emacs.nix ./programs/eww.nix ./programs/eza.nix + ./programs/fd.nix ./programs/feh.nix ./programs/firefox.nix ./programs/fish.nix diff --git a/modules/programs/fd.nix b/modules/programs/fd.nix new file mode 100644 index 00000000..bc5b709d --- /dev/null +++ b/modules/programs/fd.nix @@ -0,0 +1,59 @@ +{ config, lib, pkgs, ... }: +with lib; { + meta.maintainers = [ maintainers.uncenter ]; + + options.programs.fd = { + enable = mkEnableOption + "fd, a simple, fast and user-friendly alternative to {command}`find`"; + + ignores = mkOption { + type = types.listOf types.str; + default = [ ]; + example = [ ".git/" "*.bak" ]; + description = "List of paths that should be globally ignored."; + }; + + hidden = mkOption { + type = types.bool; + default = false; + description = '' + Search hidden files and directories ({option}`--hidden` argument). + ''; + }; + + extraOptions = mkOption { + type = types.listOf types.str; + default = [ ]; + example = [ "--no-ignore" "--absolute-path" ]; + description = '' + Extra command line options passed to fd. + ''; + }; + + package = mkPackageOption pkgs "fd" { }; + }; + + config = let + cfg = config.programs.fd; + + args = escapeShellArgs (optional cfg.hidden "--hidden" ++ cfg.extraOptions); + + optionsAlias = { fd = "fd ${args}"; }; + in mkIf cfg.enable { + home.packages = [ cfg.package ]; + + programs.bash.shellAliases = optionsAlias; + + programs.zsh.shellAliases = optionsAlias; + + programs.fish.shellAliases = optionsAlias; + + programs.ion.shellAliases = optionsAlias; + + programs.nushell.shellAliases = optionsAlias; + + xdg.configFile."fd/ignore" = mkIf (cfg.ignores != [ ]) { + text = concatStringsSep "\n" cfg.ignores + "\n"; + }; + }; +} From f3506ba86cbc5f8620ea6b4e108146702a4627e9 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Fri, 19 Apr 2024 09:50:22 +0200 Subject: [PATCH 019/102] bash: add bash package to home.packages Fixes #5295 --- modules/programs/bash.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/programs/bash.nix b/modules/programs/bash.nix index b48dc312..5e7a44b5 100644 --- a/modules/programs/bash.nix +++ b/modules/programs/bash.nix @@ -190,6 +190,8 @@ in { HISTIGNORE = escapeShellArg (concatStringsSep ":" cfg.historyIgnore); })); in mkIf cfg.enable { + home.packages = [ pkgs.bashInteractive ]; + home.file.".bash_profile".source = writeBashScript "bash_profile" '' # include .profile if it exists [[ -f ~/.profile ]] && . ~/.profile From 8ff7bb3f4d82a05a52d5242ec454bba14f5d6cc6 Mon Sep 17 00:00:00 2001 From: Henri Sota Date: Tue, 16 Apr 2024 22:44:55 +0200 Subject: [PATCH 020/102] tofi: add module --- modules/lib/maintainers.nix | 6 ++ modules/misc/news.nix | 8 +++ modules/modules.nix | 1 + modules/programs/tofi.nix | 63 +++++++++++++++++++ tests/default.nix | 1 + .../programs/tofi/basic-configuration.conf | 12 ++++ .../programs/tofi/basic-configuration.nix | 28 +++++++++ tests/modules/programs/tofi/default.nix | 1 + 8 files changed, 120 insertions(+) create mode 100644 modules/programs/tofi.nix create mode 100644 tests/modules/programs/tofi/basic-configuration.conf create mode 100644 tests/modules/programs/tofi/basic-configuration.nix create mode 100644 tests/modules/programs/tofi/default.nix diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index 2c4fbd9d..727d4c3c 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -77,6 +77,12 @@ githubId = 32838899; name = "Daniel Wagenknecht"; }; + henrisota = { + email = "henrisota@users.noreply.github.com"; + github = "henrisota"; + githubId = "56848082"; + name = "Henri Sota"; + }; jack5079 = { name = "Jack W."; email = "nix@jack.cab"; diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 2c00c5ed..8e304545 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1483,6 +1483,14 @@ in { A new module is available: 'programs.fd'. ''; } + + { + time = "2024-04-19T09:23:52+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'programs.tofi'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index b182a33e..c283b071 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -228,6 +228,7 @@ let ./programs/tiny.nix ./programs/tmate.nix ./programs/tmux.nix + ./programs/tofi.nix ./programs/topgrade.nix ./programs/translate-shell.nix ./programs/urxvt.nix diff --git a/modules/programs/tofi.nix b/modules/programs/tofi.nix new file mode 100644 index 00000000..acc1a994 --- /dev/null +++ b/modules/programs/tofi.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.programs.tofi; + +in { + meta.maintainers = [ hm.maintainers.henrisota ]; + + options.programs.tofi = { + enable = mkEnableOption "Tofi, a tiny dynamic menu for Wayland"; + + package = mkPackageOption pkgs "tofi" { }; + + settings = mkOption { + type = with types; + let primitive = either (either str int) bool; + in attrsOf primitive; + default = { }; + example = literalExpression '' + { + background-color = "#000000"; + border-width = 0; + font = "monospace"; + height = "100%"; + num-results = 5; + outline-width = 0; + padding-left = "35%"; + padding-top = "35%"; + result-spacing = 25; + width = "100%"; + } + ''; + description = '' + Settings to be written to the Tofi configuration file. + + See + for the full list of options. + ''; + }; + }; + + config = mkIf cfg.enable { + assertions = + [ (hm.assertions.assertPlatform "programs.tofi" pkgs platforms.linux) ]; + + home.packages = [ cfg.package ]; + + xdg.configFile."tofi/config" = mkIf (cfg.settings != { }) { + text = let + renderedSettings = generators.toINIWithGlobalSection { } { + globalSection = cfg.settings; + }; + in removeSuffix "\n\n" '' + # Generated by Home Manager. + + ${renderedSettings} + ''; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 62538966..c95b288a 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -207,6 +207,7 @@ in import nmtSrc { ./modules/programs/swayr ./modules/programs/terminator ./modules/programs/thunderbird + ./modules/programs/tofi ./modules/programs/waybar ./modules/programs/wlogout ./modules/programs/wofi diff --git a/tests/modules/programs/tofi/basic-configuration.conf b/tests/modules/programs/tofi/basic-configuration.conf new file mode 100644 index 00000000..3a95c23e --- /dev/null +++ b/tests/modules/programs/tofi/basic-configuration.conf @@ -0,0 +1,12 @@ +# Generated by Home Manager. + +background-color=#000000 +border-width=0 +font=monospace +height=100% +num-results=5 +outline-width=0 +padding-left=35% +padding-top=35% +result-spacing=25 +width=100% diff --git a/tests/modules/programs/tofi/basic-configuration.nix b/tests/modules/programs/tofi/basic-configuration.nix new file mode 100644 index 00000000..28b28996 --- /dev/null +++ b/tests/modules/programs/tofi/basic-configuration.nix @@ -0,0 +1,28 @@ +{ config, pkgs, ... }: { + config = { + programs.tofi = { + enable = true; + package = pkgs.tofi; + settings = { + background-color = "#000000"; + border-width = 0; + font = "monospace"; + height = "100%"; + num-results = 5; + outline-width = 0; + padding-left = "35%"; + padding-top = "35%"; + result-spacing = 25; + width = "100%"; + }; + }; + + test.stubs.tofi = { }; + + nmt.script = '' + assertFileExists home-files/.config/tofi/config + assertFileContent home-files/.config/tofi/config \ + ${./basic-configuration.conf} + ''; + }; +} diff --git a/tests/modules/programs/tofi/default.nix b/tests/modules/programs/tofi/default.nix new file mode 100644 index 00000000..22b89d80 --- /dev/null +++ b/tests/modules/programs/tofi/default.nix @@ -0,0 +1 @@ +{ tofi-basic-configuration = ./basic-configuration.nix; } From b5b2b1ac63458357e205bcb2df2d0840a2acca13 Mon Sep 17 00:00:00 2001 From: Danil Suetin Date: Fri, 19 Apr 2024 15:05:08 +0500 Subject: [PATCH 021/102] helix: add ignores option --- modules/programs/helix.nix | 13 +++++++++++++ tests/modules/programs/helix/example-settings.nix | 5 +++++ tests/modules/programs/helix/ignore-expected | 2 ++ 3 files changed, 20 insertions(+) create mode 100644 tests/modules/programs/helix/ignore-expected diff --git a/modules/programs/helix.nix b/modules/programs/helix.nix index 9c5519f3..96c5bdbf 100644 --- a/modules/programs/helix.nix +++ b/modules/programs/helix.nix @@ -96,6 +96,16 @@ in { ''; }; + ignores = mkOption { + type = types.listOf types.str; + default = [ ]; + example = [ ".build/" "!.gitignore" ]; + description = '' + List of paths that should be globally ignored for file picker. + Supports the usual ignore and negative ignore (unignore) rules used in `.gitignore` files. + ''; + }; + themes = mkOption { type = types.attrsOf tomlFormat.type; default = { }; @@ -195,6 +205,9 @@ in { "helix/languages.toml" = mkIf (cfg.languages != { }) { source = tomlFormat.generate "helix-languages-config" cfg.languages; }; + "helix/ignore" = mkIf (cfg.ignores != [ ]) { + text = concatStringsSep "\n" cfg.ignores + "\n"; + }; }; themes = (mapAttrs' (n: v: diff --git a/tests/modules/programs/helix/example-settings.nix b/tests/modules/programs/helix/example-settings.nix index 86c6766a..c60883a1 100644 --- a/tests/modules/programs/helix/example-settings.nix +++ b/tests/modules/programs/helix/example-settings.nix @@ -43,6 +43,8 @@ with lib; }]; }; + ignores = [ ".build/" "!.gitignore" ]; + themes = { base16 = let transparent = "none"; @@ -131,6 +133,9 @@ with lib; assertFileContent \ home-files/.config/helix/languages.toml \ ${./languages-expected.toml} + assertFileContent \ + home-files/.config/helix/ignore \ + ${./ignore-expected} assertFileContent \ home-files/.config/helix/themes/base16.toml \ ${./theme-base16-expected.toml} diff --git a/tests/modules/programs/helix/ignore-expected b/tests/modules/programs/helix/ignore-expected new file mode 100644 index 00000000..fe1c7398 --- /dev/null +++ b/tests/modules/programs/helix/ignore-expected @@ -0,0 +1,2 @@ +.build/ +!.gitignore From b62cad68b754224caec1e3b0dbadf86821b0b255 Mon Sep 17 00:00:00 2001 From: diniamo <55629891+diniamo@users.noreply.github.com> Date: Fri, 19 Apr 2024 12:39:30 +0200 Subject: [PATCH 022/102] spotify-player: add module --- modules/lib/maintainers.nix | 6 + modules/misc/news.nix | 7 + modules/modules.nix | 1 + modules/programs/spotify-player.nix | 154 ++++++++++++++++++ tests/default.nix | 1 + .../modules/programs/spotify-player/app.toml | 9 + .../programs/spotify-player/default.nix | 1 + .../programs/spotify-player/keymap.toml | 19 +++ .../programs/spotify-player/settings.nix | 103 ++++++++++++ .../programs/spotify-player/theme.toml | 58 +++++++ 10 files changed, 359 insertions(+) create mode 100644 modules/programs/spotify-player.nix create mode 100644 tests/modules/programs/spotify-player/app.toml create mode 100644 tests/modules/programs/spotify-player/default.nix create mode 100644 tests/modules/programs/spotify-player/keymap.toml create mode 100644 tests/modules/programs/spotify-player/settings.nix create mode 100644 tests/modules/programs/spotify-player/theme.toml diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index 727d4c3c..a2c56863 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -71,6 +71,12 @@ github = "Dines97"; githubId = 19364873; }; + diniamo = { + name = "diniamo"; + email = "diniamo69@gmail.com"; + github = "diniamo"; + githubId = 55629891; + }; dwagenk = { email = "dwagenk@mailbox.org"; github = "dwagenk"; diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 8e304545..ef5378af 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1491,6 +1491,13 @@ in { A new module is available: 'programs.tofi'. ''; } + + { + time = "2024-04-19T10:01:55+00:00"; + message = '' + A new module is available: 'programs.spotify-player'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index c283b071..51284102 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -211,6 +211,7 @@ let ./programs/sioyek.nix ./programs/skim.nix ./programs/sm64ex.nix + ./programs/spotify-player.nix ./programs/sqls.nix ./programs/ssh.nix ./programs/starship.nix diff --git a/modules/programs/spotify-player.nix b/modules/programs/spotify-player.nix new file mode 100644 index 00000000..83eefe12 --- /dev/null +++ b/modules/programs/spotify-player.nix @@ -0,0 +1,154 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) + mkEnableOption mkPackageOption mkOption types literalExpression mkIf; + + cfg = config.programs.spotify-player; + tomlFormat = pkgs.formats.toml { }; + +in { + meta.maintainers = with lib.hm.maintainers; [ diniamo ]; + + options.programs.spotify-player = { + enable = mkEnableOption "spotify-player"; + + package = mkPackageOption pkgs "spotify-player" { }; + + settings = mkOption { + type = tomlFormat.type; + default = { }; + example = literalExpression '' + { + theme = "default"; + playback_window_position = "Top"; + copy_command = { + command = "wl-copy"; + args = []; + }; + device = { + audio_cache = false; + normalization = false; + }; + } + ''; + description = '' + Configuration written to + {file}`$XDG_CONFIG_HOME/spotify-player/app.toml`. + + See + + for the full list of options. + ''; + }; + + themes = mkOption { + type = types.listOf tomlFormat.type; + default = [ ]; + example = literalExpression '' + [ + { + name = "default2"; + palette = { + black = "black"; + red = "red"; + green = "green"; + yellow = "yellow"; + blue = "blue"; + magenta = "magenta"; + cyan = "cyan"; + white = "white"; + bright_black = "bright_black"; + bright_red = "bright_red"; + bright_green = "bright_green"; + bright_yellow = "bright_yellow"; + bright_blue = "bright_blue"; + bright_magenta = "bright_magenta"; + bright_cyan = "bright_cyan"; + bright_white = "bright_white"; + }; + component_style = { + block_title = { fg = "Magenta"; }; + border = {}; + playback_track = { fg = "Cyan"; modifiers = ["Bold"]; }; + playback_artists = { fg = "Cyan"; modifiers = ["Bold"]; }; + playback_album = { fg = "Yellow"; }; + playback_metadata = { fg = "BrightBlack"; }; + playback_progress_bar = { bg = "BrightBlack"; fg = "Green"; }; + current_playing = { fg = "Green"; modifiers = ["Bold"]; }; + page_desc = { fg = "Cyan"; modifiers = ["Bold"]; }; + table_header = { fg = "Blue"; }; + selection = { modifiers = ["Bold" "Reversed"]; }; + }; + } + ] + ''; + description = '' + Configuration written to the `themes` field of + {file}`$XDG_CONFIG_HOME/spotify-player/theme.toml`. + + See + + for the full list of options. + ''; + }; + + keymaps = mkOption { + type = types.listOf tomlFormat.type; + default = [ ]; + example = literalExpression '' + [ + { + command = "NextTrack"; + key_sequence = "g n"; + } + { + command = "PreviousTrack"; + key_sequence = "g p"; + } + { + command = "Search"; + key_sequence = "C-c C-x /"; + } + { + command = "ResumePause"; + key_sequence = "M-enter"; + } + { + command = "None"; + key_sequence = "q"; + } + ] + ''; + description = '' + Configuration written to the `keymaps` field of + {file}`$XDG_CONFIG_HOME/spotify-player/keymap.toml`. + + See + + for the full list of options. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + + xdg.configFile = { + "spotify-player/app.toml" = mkIf (cfg.settings != { }) { + source = tomlFormat.generate "spotify-player-app" cfg.settings; + }; + + "spotify-player/theme.toml" = mkIf (cfg.themes != [ ]) { + source = + tomlFormat.generate "spotify-player-theme" { inherit (cfg) themes; }; + }; + + "spotify-player/keymap.toml" = mkIf (cfg.keymaps != [ ]) { + source = tomlFormat.generate "spotify-player-keymap" { + inherit (cfg) keymaps; + }; + }; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index c95b288a..c4d98ef2 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -140,6 +140,7 @@ in import nmtSrc { ./modules/programs/sftpman ./modules/programs/sioyek ./modules/programs/sm64ex + ./modules/programs/spotify-player ./modules/programs/ssh ./modules/programs/starship ./modules/programs/taskwarrior diff --git a/tests/modules/programs/spotify-player/app.toml b/tests/modules/programs/spotify-player/app.toml new file mode 100644 index 00000000..408e84b0 --- /dev/null +++ b/tests/modules/programs/spotify-player/app.toml @@ -0,0 +1,9 @@ +playback_window_position = "Top" +theme = "default" +[copy_command] +args = [] +command = "wl-copy" + +[device] +audio_cache = false +normalization = false diff --git a/tests/modules/programs/spotify-player/default.nix b/tests/modules/programs/spotify-player/default.nix new file mode 100644 index 00000000..9812b128 --- /dev/null +++ b/tests/modules/programs/spotify-player/default.nix @@ -0,0 +1 @@ +{ spotify-player-settings = ./settings.nix; } diff --git a/tests/modules/programs/spotify-player/keymap.toml b/tests/modules/programs/spotify-player/keymap.toml new file mode 100644 index 00000000..d11c86e4 --- /dev/null +++ b/tests/modules/programs/spotify-player/keymap.toml @@ -0,0 +1,19 @@ +[[keymaps]] +command = "NextTrack" +key_sequence = "g n" + +[[keymaps]] +command = "PreviousTrack" +key_sequence = "g p" + +[[keymaps]] +command = "Search" +key_sequence = "C-c C-x /" + +[[keymaps]] +command = "ResumePause" +key_sequence = "M-enter" + +[[keymaps]] +command = "None" +key_sequence = "q" diff --git a/tests/modules/programs/spotify-player/settings.nix b/tests/modules/programs/spotify-player/settings.nix new file mode 100644 index 00000000..dc7fe8c6 --- /dev/null +++ b/tests/modules/programs/spotify-player/settings.nix @@ -0,0 +1,103 @@ +{ + programs.spotify-player = { + enable = true; + + settings = { + theme = "default"; + playback_window_position = "Top"; + copy_command = { + command = "wl-copy"; + args = [ ]; + }; + device = { + audio_cache = false; + normalization = false; + }; + }; + + themes = [{ + name = "default2"; + palette = { + black = "black"; + red = "red"; + green = "green"; + yellow = "yellow"; + blue = "blue"; + magenta = "magenta"; + cyan = "cyan"; + white = "white"; + bright_black = "bright_black"; + bright_red = "bright_red"; + bright_green = "bright_green"; + bright_yellow = "bright_yellow"; + bright_blue = "bright_blue"; + bright_magenta = "bright_magenta"; + bright_cyan = "bright_cyan"; + bright_white = "bright_white"; + }; + component_style = { + block_title = { fg = "Magenta"; }; + border = { }; + playback_track = { + fg = "Cyan"; + modifiers = [ "Bold" ]; + }; + playback_artists = { + fg = "Cyan"; + modifiers = [ "Bold" ]; + }; + playback_album = { fg = "Yellow"; }; + playback_metadata = { fg = "BrightBlack"; }; + playback_progress_bar = { + bg = "BrightBlack"; + fg = "Green"; + }; + current_playing = { + fg = "Green"; + modifiers = [ "Bold" ]; + }; + page_desc = { + fg = "Cyan"; + modifiers = [ "Bold" ]; + }; + table_header = { fg = "Blue"; }; + selection = { modifiers = [ "Bold" "Reversed" ]; }; + }; + }]; + + keymaps = [ + { + command = "NextTrack"; + key_sequence = "g n"; + } + { + command = "PreviousTrack"; + key_sequence = "g p"; + } + { + command = "Search"; + key_sequence = "C-c C-x /"; + } + { + command = "ResumePause"; + key_sequence = "M-enter"; + } + { + command = "None"; + key_sequence = "q"; + } + ]; + }; + + test.stubs.spotify-player = { }; + + nmt.script = '' + assertFileContent home-files/.config/spotify-player/app.toml ${./app.toml} + assertFileContent home-files/.config/spotify-player/theme.toml ${ + ./theme.toml + } + assertFileContent home-files/.config/spotify-player/keymap.toml ${ + ./keymap.toml + } + ''; +} diff --git a/tests/modules/programs/spotify-player/theme.toml b/tests/modules/programs/spotify-player/theme.toml new file mode 100644 index 00000000..cb5fa99d --- /dev/null +++ b/tests/modules/programs/spotify-player/theme.toml @@ -0,0 +1,58 @@ +[[themes]] +name = "default2" + +[themes.component_style] +[themes.component_style.block_title] +fg = "Magenta" + +[themes.component_style.border] + +[themes.component_style.current_playing] +fg = "Green" +modifiers = ["Bold"] + +[themes.component_style.page_desc] +fg = "Cyan" +modifiers = ["Bold"] + +[themes.component_style.playback_album] +fg = "Yellow" + +[themes.component_style.playback_artists] +fg = "Cyan" +modifiers = ["Bold"] + +[themes.component_style.playback_metadata] +fg = "BrightBlack" + +[themes.component_style.playback_progress_bar] +bg = "BrightBlack" +fg = "Green" + +[themes.component_style.playback_track] +fg = "Cyan" +modifiers = ["Bold"] + +[themes.component_style.selection] +modifiers = ["Bold", "Reversed"] + +[themes.component_style.table_header] +fg = "Blue" + +[themes.palette] +black = "black" +blue = "blue" +bright_black = "bright_black" +bright_blue = "bright_blue" +bright_cyan = "bright_cyan" +bright_green = "bright_green" +bright_magenta = "bright_magenta" +bright_red = "bright_red" +bright_white = "bright_white" +bright_yellow = "bright_yellow" +cyan = "cyan" +green = "green" +magenta = "magenta" +red = "red" +white = "white" +yellow = "yellow" From b1a5b3d6a524c80c7dd20888bff227d52adf5f03 Mon Sep 17 00:00:00 2001 From: Felipe Silva Date: Fri, 19 Apr 2024 08:01:05 -0300 Subject: [PATCH 023/102] vdirsyncer: set `postHook` to null when not set (#5294) The `postHook` option was being processed and reset to a string, even if the user set it to null, causing issues under certain conditions (see Using `if-then-else` instead of `optionalString` keeps the option as null, instead of setting it to an empty string. --- modules/programs/vdirsyncer.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/programs/vdirsyncer.nix b/modules/programs/vdirsyncer.nix index 562d7b4b..2e013af0 100644 --- a/modules/programs/vdirsyncer.nix +++ b/modules/programs/vdirsyncer.nix @@ -26,9 +26,11 @@ let filterAttrs (_: v: v != null) ((getAttrs [ "type" "fileExt" "encoding" ] a.local) // { path = a.local.path; - postHook = optionalString (a.vdirsyncer.postHook != null) + postHook = if a.vdirsyncer.postHook != null then (pkgs.writeShellScriptBin "post-hook" a.vdirsyncer.postHook - + "/bin/post-hook"); + + "/bin/post-hook") + else + null; }); remoteStorage = a: From 0184c8180f5cbb8e3a54a239b874fe849d3073cb Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Sun, 14 Aug 2022 01:37:46 +0200 Subject: [PATCH 024/102] neomutt: add some options Superficially, allow source primary account by default and show default mailbox. --- modules/programs/neomutt-accounts.nix | 6 ++++++ modules/programs/neomutt.nix | 13 ++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/programs/neomutt-accounts.nix b/modules/programs/neomutt-accounts.nix index a7ed7ec6..bdeda863 100644 --- a/modules/programs/neomutt-accounts.nix +++ b/modules/programs/neomutt-accounts.nix @@ -76,6 +76,12 @@ in { ''; }; + showDefaultMailbox = mkOption { + type = types.bool; + default = true; + description = "Show the default mailbox (INBOX)"; + }; + mailboxName = mkOption { type = types.nullOr types.str; default = null; diff --git a/modules/programs/neomutt.nix b/modules/programs/neomutt.nix index d338a580..069c4de8 100644 --- a/modules/programs/neomutt.nix +++ b/modules/programs/neomutt.nix @@ -235,7 +235,8 @@ let account.neomutt.extraMailboxes; in with account; '' # register account ${name} - ${mailboxes} "${mailroot}/${folders.inbox}" + ${optionalString account.neomutt.showDefaultMailbox + ''${mailboxes} "${mailroot}/${folders.inbox}"''} ${extraMailboxes} ${hookName} ${mailroot}/ " \ source ${accountFilename account} " @@ -402,6 +403,11 @@ in { default = true; }; + sourcePrimaryAccount = + mkEnableOption "source the primary account by default" // { + default = true; + }; + unmailboxes = mkOption { type = types.bool; default = false; @@ -467,8 +473,9 @@ in { '' }${concatMapStringsSep "\n" registerAccount neomuttAccounts} - # Source primary account - source ${accountFilename primary} + ${optionalString cfg.sourcePrimaryAccount '' + # Source primary account + source ${accountFilename primary}''} # Extra configuration ${optionsStr cfg.settings} From dc906b197bc20c518e497fb040bb8240543fa634 Mon Sep 17 00:00:00 2001 From: Coutinho de Souza Date: Fri, 19 Apr 2024 08:30:58 -0300 Subject: [PATCH 025/102] kdeconnect: require "tray.target" for kdeconnect Since kdeconnect-indicator is a tray application, it should require "tray.target", as is the case for flameshot[0]. [0]: https://github.com/nix-community/home-manager/blob/b1a5b3d6a524c80c7dd20888bff227d52adf5f03/modules/services/flameshot.nix#L58 --- modules/services/kdeconnect.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix index 39673131..65477be1 100644 --- a/modules/services/kdeconnect.nix +++ b/modules/services/kdeconnect.nix @@ -24,7 +24,6 @@ in { default = false; description = "Whether to enable kdeconnect-indicator service."; }; - }; }; @@ -43,7 +42,7 @@ in { "Adds communication between your desktop and your smartphone"; After = [ "graphical-session-pre.target" ]; PartOf = [ "graphical-session.target" ]; - }; + } // lib.optionalAttrs cfg.indicator { Requires = [ "tray.target" ]; }; Install = { WantedBy = [ "graphical-session.target" ]; }; @@ -82,6 +81,5 @@ in { }; }; }) - ]; } From 7ca7025cf2fa88bebc2190955c44263c3989b706 Mon Sep 17 00:00:00 2001 From: Ramses Date: Fri, 19 Apr 2024 16:26:23 +0200 Subject: [PATCH 026/102] alacritty: fix escape sequence in example and test See https://github.com/nix-community/home-manager/pull/4817#discussion_r1441710049 --- modules/programs/alacritty.nix | 2 +- tests/modules/programs/alacritty/settings-toml-expected.toml | 2 +- tests/modules/programs/alacritty/toml_config.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/alacritty.nix b/modules/programs/alacritty.nix index 2f7845f4..edcd073e 100644 --- a/modules/programs/alacritty.nix +++ b/modules/programs/alacritty.nix @@ -32,7 +32,7 @@ in { { key = "K"; mods = "Control"; - chars = "\\x0c"; + chars = "\\u000c"; } ]; } diff --git a/tests/modules/programs/alacritty/settings-toml-expected.toml b/tests/modules/programs/alacritty/settings-toml-expected.toml index 9b0867ee..018881bc 100644 --- a/tests/modules/programs/alacritty/settings-toml-expected.toml +++ b/tests/modules/programs/alacritty/settings-toml-expected.toml @@ -6,7 +6,7 @@ family = "SFMono" family = "SFMono" [[keyboard.bindings]] -chars = "\x0c" +chars = "\u000c" key = "K" mods = "Control" diff --git a/tests/modules/programs/alacritty/toml_config.nix b/tests/modules/programs/alacritty/toml_config.nix index 4f15e70b..02d5aabf 100644 --- a/tests/modules/programs/alacritty/toml_config.nix +++ b/tests/modules/programs/alacritty/toml_config.nix @@ -15,7 +15,7 @@ keyboard.bindings = [{ key = "K"; mods = "Control"; - chars = "\\x0c"; + chars = "\\u000c"; }]; font = { From 068dd4ae292b5bf64bda18a48bcd80f39dd76257 Mon Sep 17 00:00:00 2001 From: Ramses Date: Fri, 19 Apr 2024 16:57:02 +0200 Subject: [PATCH 027/102] alacritty: cleanup after 0.13 merge in nixpkgs --- modules/programs/alacritty.nix | 31 ++++++------------- .../programs/alacritty/empty-settings.nix | 4 --- .../alacritty/example-settings-expected.toml | 2 +- .../programs/alacritty/example-settings.nix | 8 ++--- .../alacritty/settings-merging-expected.yml | 1 - .../programs/alacritty/settings-merging.nix | 14 ++++----- .../programs/alacritty/toml_config.nix | 2 +- 7 files changed, 21 insertions(+), 41 deletions(-) delete mode 100644 tests/modules/programs/alacritty/settings-merging-expected.yml diff --git a/modules/programs/alacritty.nix b/modules/programs/alacritty.nix index edcd073e..e799e269 100644 --- a/modules/programs/alacritty.nix +++ b/modules/programs/alacritty.nix @@ -4,9 +4,7 @@ with lib; let cfg = config.programs.alacritty; - useToml = lib.versionAtLeast cfg.package.version "0.13"; tomlFormat = pkgs.formats.toml { }; - configFileName = "alacritty.${if useToml then "toml" else "yml"}"; in { options = { programs.alacritty = { @@ -52,24 +50,15 @@ in { config = mkIf cfg.enable { home.packages = [ cfg.package ]; - xdg.configFile."alacritty/${configFileName}" = - lib.mkIf (cfg.settings != { }) (lib.mkMerge [ - (lib.mkIf useToml { - source = - (tomlFormat.generate configFileName cfg.settings).overrideAttrs - (finalAttrs: prevAttrs: { - buildCommand = lib.concatStringsSep "\n" [ - prevAttrs.buildCommand - # TODO: why is this needed? Is there a better way to retain escape sequences? - "substituteInPlace $out --replace '\\\\' '\\'" - ]; - }); - }) - # TODO remove this once we don't need to support Alacritty < 0.12 anymore - (lib.mkIf (!useToml) { - text = - replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.settings); - }) - ]); + xdg.configFile."alacritty/alacritty.toml" = lib.mkIf (cfg.settings != { }) { + source = (tomlFormat.generate "alacritty.toml" cfg.settings).overrideAttrs + (finalAttrs: prevAttrs: { + buildCommand = lib.concatStringsSep "\n" [ + prevAttrs.buildCommand + # TODO: why is this needed? Is there a better way to retain escape sequences? + "substituteInPlace $out --replace '\\\\' '\\'" + ]; + }); + }; }; } diff --git a/tests/modules/programs/alacritty/empty-settings.nix b/tests/modules/programs/alacritty/empty-settings.nix index ecc6df35..c587018e 100644 --- a/tests/modules/programs/alacritty/empty-settings.nix +++ b/tests/modules/programs/alacritty/empty-settings.nix @@ -1,7 +1,3 @@ -{ config, lib, pkgs, ... }: - -with lib; - { config = { programs.alacritty.enable = true; diff --git a/tests/modules/programs/alacritty/example-settings-expected.toml b/tests/modules/programs/alacritty/example-settings-expected.toml index 723f1874..7b08aae8 100644 --- a/tests/modules/programs/alacritty/example-settings-expected.toml +++ b/tests/modules/programs/alacritty/example-settings-expected.toml @@ -1,5 +1,5 @@ [[keyboard.bindings]] -chars = "\x0c" +chars = "\u000c" key = "K" mods = "Control" diff --git a/tests/modules/programs/alacritty/example-settings.nix b/tests/modules/programs/alacritty/example-settings.nix index 8aa01380..c8ecb206 100644 --- a/tests/modules/programs/alacritty/example-settings.nix +++ b/tests/modules/programs/alacritty/example-settings.nix @@ -1,12 +1,10 @@ -{ config, lib, pkgs, ... }: - -with lib; +{ config, ... }: { config = { programs.alacritty = { enable = true; - package = config.lib.test.mkStubPackage { version = "0.13.0"; }; + package = config.lib.test.mkStubPackage { }; settings = { window.dimensions = { @@ -17,7 +15,7 @@ with lib; keyboard.bindings = [{ key = "K"; mods = "Control"; - chars = "\\x0c"; + chars = "\\u000c"; }]; }; }; diff --git a/tests/modules/programs/alacritty/settings-merging-expected.yml b/tests/modules/programs/alacritty/settings-merging-expected.yml deleted file mode 100644 index 49d92a61..00000000 --- a/tests/modules/programs/alacritty/settings-merging-expected.yml +++ /dev/null @@ -1 +0,0 @@ -{"font":{"bold":{"family":"SFMono"},"normal":{"family":"SFMono"}},"key_bindings":[{"chars":"\x0c","key":"K","mods":"Control"}],"window":{"dimensions":{"columns":200,"lines":3}}} \ No newline at end of file diff --git a/tests/modules/programs/alacritty/settings-merging.nix b/tests/modules/programs/alacritty/settings-merging.nix index 76aedf4f..e08c96eb 100644 --- a/tests/modules/programs/alacritty/settings-merging.nix +++ b/tests/modules/programs/alacritty/settings-merging.nix @@ -1,12 +1,10 @@ -{ config, lib, pkgs, ... }: - -with lib; +{ config, lib, ... }: { config = { programs.alacritty = { enable = true; - package = config.lib.test.mkStubPackage { version = "0.12.3"; }; + package = config.lib.test.mkStubPackage { }; settings = { window.dimensions = { @@ -14,10 +12,10 @@ with lib; columns = 200; }; - key_bindings = [{ + keyboard.bindings = [{ key = "K"; mods = "Control"; - chars = "\\x0c"; + chars = "\\u000c"; }]; font = let @@ -32,8 +30,8 @@ with lib; nmt.script = '' assertFileContent \ - home-files/.config/alacritty/alacritty.yml \ - ${./settings-merging-expected.yml} + home-files/.config/alacritty/alacritty.toml \ + ${./settings-toml-expected.toml} ''; }; } diff --git a/tests/modules/programs/alacritty/toml_config.nix b/tests/modules/programs/alacritty/toml_config.nix index 02d5aabf..7094f9a9 100644 --- a/tests/modules/programs/alacritty/toml_config.nix +++ b/tests/modules/programs/alacritty/toml_config.nix @@ -4,7 +4,7 @@ config = { programs.alacritty = { enable = true; - package = config.lib.test.mkStubPackage { version = "0.13.0"; }; + package = config.lib.test.mkStubPackage { }; settings = { window.dimensions = { From 31c77dcc2e4b6b9f73df0e7eaa89536f175954e8 Mon Sep 17 00:00:00 2001 From: Ivan Leshchenko Date: Fri, 19 Apr 2024 11:15:54 -0400 Subject: [PATCH 028/102] sway: systemd customization --- .../services/window-managers/i3-sway/sway.nix | 39 ++++++- .../services/window-managers/sway/default.nix | 1 + .../sway/sway-systemd-variables.conf | 108 ++++++++++++++++++ .../sway/sway-systemd-variables.nix | 20 ++++ 4 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 tests/modules/services/window-managers/sway/sway-systemd-variables.conf create mode 100644 tests/modules/services/window-managers/sway/sway-systemd-variables.nix diff --git a/modules/services/window-managers/i3-sway/sway.nix b/modules/services/window-managers/i3-sway/sway.nix index 88048daf..646af20b 100644 --- a/modules/services/window-managers/i3-sway/sway.nix +++ b/modules/services/window-managers/i3-sway/sway.nix @@ -256,6 +256,11 @@ let outputStr = moduleStr "output"; seatStr = moduleStr "seat"; + variables = concatStringsSep " " cfg.systemd.variables; + extraCommands = concatStringsSep " && " cfg.systemd.extraCommands; + systemdActivation = '' + exec "${pkgs.dbus}/bin/dbus-update-activation-environment --systemd ${variables}; ${extraCommands}"''; + configFile = pkgs.writeText "sway.conf" (concatStringsSep "\n" ((optional (cfg.extraConfigEarly != "") cfg.extraConfigEarly) ++ (if cfg.config != null then @@ -310,8 +315,7 @@ let ++ map workspaceOutputStr workspaceOutputAssign # custom mapping ) else - [ ]) ++ (optional cfg.systemd.enable '' - exec "${pkgs.dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP XDG_SESSION_TYPE NIXOS_OZONE_WL XCURSOR_THEME XCURSOR_SIZE; systemctl --user start sway-session.target"'') + [ ]) ++ (optional cfg.systemd.enable systemdActivation) ++ (optional (!cfg.xwayland) "xwayland disable") ++ [ cfg.extraConfig ])); defaultSwayPackage = pkgs.sway.override { @@ -366,6 +370,37 @@ in { * {env}`WAYLAND_DISPLAY` * {env}`SWAYSOCK` * {env}`XDG_CURRENT_DESKTOP` + * {env}`XDG_SESSION_TYPE` + * {env}`NIXOS_OZONE_WL` + * {env}`XCURSOR_THEME` + * {env}`XCURSOR_SIZE` + You can extend this list using the `systemd.variables` option. + ''; + }; + + variables = mkOption { + type = types.listOf types.str; + default = [ + "DISPLAY" + "WAYLAND_DISPLAY" + "SWAYSOCK" + "XDG_CURRENT_DESKTOP" + "XDG_SESSION_TYPE" + "NIXOS_OZONE_WL" + "XCURSOR_THEME" + "XCURSOR_SIZE" + ]; + example = [ "-all" ]; + description = '' + Environment variables imported into the systemd and D-Bus user environment. + ''; + }; + + extraCommands = mkOption { + type = types.listOf types.str; + default = [ "systemctl --user start sway-session.target" ]; + description = '' + Extra commands to run after D-Bus activation. ''; }; diff --git a/tests/modules/services/window-managers/sway/default.nix b/tests/modules/services/window-managers/sway/default.nix index 2c7f5ff7..e3ce4a9c 100644 --- a/tests/modules/services/window-managers/sway/default.nix +++ b/tests/modules/services/window-managers/sway/default.nix @@ -11,6 +11,7 @@ sway-null-package = ./sway-null-package.nix; sway-post-2003 = ./sway-post-2003.nix; sway-systemd-autostart = ./sway-systemd-autostart.nix; + sway-systemd-variables = ./sway-systemd-variables.nix; sway-workspace-default = ./sway-workspace-default.nix; sway-workspace-output = ./sway-workspace-output.nix; swaynag-example-settings = ./swaynag-example-settings.nix; diff --git a/tests/modules/services/window-managers/sway/sway-systemd-variables.conf b/tests/modules/services/window-managers/sway/sway-systemd-variables.conf new file mode 100644 index 00000000..1cbb92c3 --- /dev/null +++ b/tests/modules/services/window-managers/sway/sway-systemd-variables.conf @@ -0,0 +1,108 @@ +font pango:monospace 8.000000 +floating_modifier Mod1 +default_border pixel 2 +default_floating_border pixel 2 +hide_edge_borders none +focus_wrapping no +focus_follows_mouse yes +focus_on_window_activation smart +mouse_warping output +workspace_layout default +workspace_auto_back_and_forth no +client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577 +client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a +client.unfocused #333333 #222222 #888888 #292d2e #222222 +client.urgent #2f343a #900000 #ffffff #900000 #900000 +client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c +client.background #ffffff + +bindsym Mod1+0 workspace number 10 +bindsym Mod1+1 workspace number 1 +bindsym Mod1+2 workspace number 2 +bindsym Mod1+3 workspace number 3 +bindsym Mod1+4 workspace number 4 +bindsym Mod1+5 workspace number 5 +bindsym Mod1+6 workspace number 6 +bindsym Mod1+7 workspace number 7 +bindsym Mod1+8 workspace number 8 +bindsym Mod1+9 workspace number 9 +bindsym Mod1+Down focus down +bindsym Mod1+Left focus left +bindsym Mod1+Return exec @foot@/bin/foot +bindsym Mod1+Right focus right +bindsym Mod1+Shift+0 move container to workspace number 10 +bindsym Mod1+Shift+1 move container to workspace number 1 +bindsym Mod1+Shift+2 move container to workspace number 2 +bindsym Mod1+Shift+3 move container to workspace number 3 +bindsym Mod1+Shift+4 move container to workspace number 4 +bindsym Mod1+Shift+5 move container to workspace number 5 +bindsym Mod1+Shift+6 move container to workspace number 6 +bindsym Mod1+Shift+7 move container to workspace number 7 +bindsym Mod1+Shift+8 move container to workspace number 8 +bindsym Mod1+Shift+9 move container to workspace number 9 +bindsym Mod1+Shift+Down move down +bindsym Mod1+Shift+Left move left +bindsym Mod1+Shift+Right move right +bindsym Mod1+Shift+Up move up +bindsym Mod1+Shift+c reload +bindsym Mod1+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' +bindsym Mod1+Shift+h move left +bindsym Mod1+Shift+j move down +bindsym Mod1+Shift+k move up +bindsym Mod1+Shift+l move right +bindsym Mod1+Shift+minus move scratchpad +bindsym Mod1+Shift+q kill +bindsym Mod1+Shift+space floating toggle +bindsym Mod1+Up focus up +bindsym Mod1+a focus parent +bindsym Mod1+b splith +bindsym Mod1+d exec @dmenu@/bin/dmenu_run +bindsym Mod1+e layout toggle split +bindsym Mod1+f fullscreen toggle +bindsym Mod1+h focus left +bindsym Mod1+j focus down +bindsym Mod1+k focus up +bindsym Mod1+l focus right +bindsym Mod1+minus scratchpad show +bindsym Mod1+r mode resize +bindsym Mod1+s layout stacking +bindsym Mod1+space focus mode_toggle +bindsym Mod1+v splitv +bindsym Mod1+w layout tabbed + +mode "resize" { + bindsym Down resize grow height 10 px + bindsym Escape mode default + bindsym Left resize shrink width 10 px + bindsym Return mode default + bindsym Right resize grow width 10 px + bindsym Up resize shrink height 10 px + bindsym h resize shrink width 10 px + bindsym j resize grow height 10 px + bindsym k resize shrink height 10 px + bindsym l resize grow width 10 px +} + +bar { + font pango:monospace 8.000000 + mode dock + hidden_state hide + position bottom + status_command @i3status@/bin/i3status + swaybar_command @sway@/bin/swaybar + workspace_buttons yes + strip_workspace_numbers no + tray_output * + colors { + background #000000 + statusline #ffffff + separator #666666 + focused_workspace #4c7899 #285577 #ffffff + active_workspace #333333 #5f676a #ffffff + inactive_workspace #333333 #222222 #888888 + urgent_workspace #2f343a #900000 #ffffff + binding_mode #2f343a #900000 #ffffff + } +} + +exec "/nix/store/00000000000000000000000000000000-dbus/bin/dbus-update-activation-environment --systemd XCURSOR_THEME XCURSOR_SIZE; systemctl --user start sway-session.target" diff --git a/tests/modules/services/window-managers/sway/sway-systemd-variables.nix b/tests/modules/services/window-managers/sway/sway-systemd-variables.nix new file mode 100644 index 00000000..aae02fef --- /dev/null +++ b/tests/modules/services/window-managers/sway/sway-systemd-variables.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ ./sway-stubs.nix ]; + + wayland.windowManager.sway = { + enable = true; + package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + # overriding findutils causes issues + config.menu = "${pkgs.dmenu}/bin/dmenu_run"; + + systemd.variables = [ "XCURSOR_THEME" "XCURSOR_SIZE" ]; + }; + + nmt.script = '' + assertFileExists home-files/.config/sway/config + assertFileContent $(normalizeStorePaths home-files/.config/sway/config) \ + ${./sway-systemd-variables.conf} + ''; +} From 1f305c363ecd7c6505f03fc7baba15505f3aa630 Mon Sep 17 00:00:00 2001 From: Cynthia Fox Date: Fri, 19 Apr 2024 11:16:42 -0400 Subject: [PATCH 029/102] remmina: add module Adds a module to enable managing Remmina, an RDP client, with a Home Manager module, providing a systemd service and mimetype integration that can be disabled if so desired. --- modules/misc/news.nix | 8 ++ modules/modules.nix | 1 + modules/services/remmina.nix | 74 +++++++++++++++++++ tests/default.nix | 1 + .../modules/services/remmina/basic-config.nix | 26 +++++++ .../services/remmina/default-config.nix | 20 +++++ tests/modules/services/remmina/default.nix | 4 + 7 files changed, 134 insertions(+) create mode 100644 modules/services/remmina.nix create mode 100644 tests/modules/services/remmina/basic-config.nix create mode 100644 tests/modules/services/remmina/default-config.nix create mode 100644 tests/modules/services/remmina/default.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index ef5378af..8d7e17a5 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1498,6 +1498,14 @@ in { A new module is available: 'programs.spotify-player'. ''; } + + { + time = "2024-04-19T14:53:17+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.remmina'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 51284102..96b2bec5 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -340,6 +340,7 @@ let ./services/recoll.nix ./services/redshift-gammastep/gammastep.nix ./services/redshift-gammastep/redshift.nix + ./services/remmina.nix ./services/rsibreak.nix ./services/safeeyes.nix ./services/screen-locker.nix diff --git a/modules/services/remmina.nix b/modules/services/remmina.nix new file mode 100644 index 00000000..dac0471d --- /dev/null +++ b/modules/services/remmina.nix @@ -0,0 +1,74 @@ +{ config, lib, pkgs, ... }: + +let + + inherit (lib) mkIf mkMerge mkEnableOption mkPackageOption mkOption; + + cfg = config.services.remmina; + +in { + meta.maintainers = with lib.maintainers; [ cyntheticfox ]; + + options.services.remmina = { + enable = mkEnableOption "Remmina"; + + package = mkPackageOption pkgs "remmina" { }; + + addRdpMimeTypeAssoc = mkEnableOption "Remmina RDP file open option" // { + default = true; + }; + + systemdService = { + enable = mkEnableOption "systemd Remmina service" // { default = true; }; + + startupFlags = mkOption { + type = with lib.types; listOf str; + default = [ "--icon" ]; + description = '' + Startup flags documented in the manpage to run at service startup. + ''; + }; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + { home.packages = [ cfg.package ]; } + + (mkIf cfg.systemdService.enable { + systemd.user.services.remmina = { + Unit = { + Description = "Remmina remote desktop client"; + Documentation = "man:remmina(1)"; + Requires = [ "graphical-session-pre.target" ]; + }; + + Service = { + Type = "simple"; + ExecStart = "${lib.getExe cfg.package} ${ + lib.escapeShellArgs cfg.systemdService.startupFlags + }"; + Restart = "on-failure"; + }; + + Install.WantedBy = [ "graphical-session.target" ]; + }; + }) + + (mkIf (config.xdg.mimeApps.enable && cfg.addRdpMimeTypeAssoc) { + xdg.mimeApps.associations.added."application/x-rdp" = + "org.remmina.Remmina.desktop"; + + xdg.dataFile."mime/packages/application-x-rdp.xml".text = '' + + + + rdp file + + + + + + ''; + }) + ]); +} diff --git a/tests/default.nix b/tests/default.nix index c4d98ef2..3729ce98 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -255,6 +255,7 @@ in import nmtSrc { ./modules/services/polybar ./modules/services/recoll ./modules/services/redshift-gammastep + ./modules/services/remmina ./modules/services/screen-locker ./modules/services/signaturepdf ./modules/services/swayidle diff --git a/tests/modules/services/remmina/basic-config.nix b/tests/modules/services/remmina/basic-config.nix new file mode 100644 index 00000000..2741353a --- /dev/null +++ b/tests/modules/services/remmina/basic-config.nix @@ -0,0 +1,26 @@ +{ config, ... }: { + xdg.mimeApps.enable = true; + + services.remmina = { + enable = true; + package = config.lib.test.mkStubPackage { }; + + addRdpMimeTypeAssoc = false; + systemdService = { + enable = true; + startupFlags = [ "--icon" "--enable-extra-hardening" ]; + }; + }; + + nmt.script = '' + serviceFile='./home-files/.config/systemd/user/remmina.service' + + assertFileExists $serviceFile + assertFileRegex $serviceFile 'ExecStart=.*/bin/dummy' + assertFileRegex $serviceFile "dummy '--icon' '--enable-extra-hardening'" + + mimetypeFile='./home-files/.local/share/mime/packages/application-x-rdp.xml' + + assertPathNotExists $mimetypeFile + ''; +} diff --git a/tests/modules/services/remmina/default-config.nix b/tests/modules/services/remmina/default-config.nix new file mode 100644 index 00000000..747623af --- /dev/null +++ b/tests/modules/services/remmina/default-config.nix @@ -0,0 +1,20 @@ +{ config, ... }: { + xdg.mimeApps.enable = true; + + services.remmina = { + enable = true; + package = config.lib.test.mkStubPackage { }; + }; + + nmt.script = '' + serviceFile='./home-files/.config/systemd/user/remmina.service' + + assertFileExists $serviceFile + assertFileRegex $serviceFile 'ExecStart=.*--icon' + + mimetypeFile='./home-files/.local/share/mime/packages/application-x-rdp.xml' + + assertFileExists $mimetypeFile + assertFileRegex $mimetypeFile '' + ''; +} diff --git a/tests/modules/services/remmina/default.nix b/tests/modules/services/remmina/default.nix new file mode 100644 index 00000000..43fa4894 --- /dev/null +++ b/tests/modules/services/remmina/default.nix @@ -0,0 +1,4 @@ +{ + remmina-default-config = ./default-config.nix; + remmina-basic-config = ./basic-config.nix; +} From 6a171bfd84ee9b3df83f6eb76dab042219978439 Mon Sep 17 00:00:00 2001 From: Pasquale Date: Wed, 15 Dec 2021 18:31:13 +0100 Subject: [PATCH 030/102] kconfig: add module --- modules/misc/qt/kconfig.nix | 73 +++++++++++++++++++++++++++++++++++++ modules/modules.nix | 1 + 2 files changed, 74 insertions(+) create mode 100644 modules/misc/qt/kconfig.nix diff --git a/modules/misc/qt/kconfig.nix b/modules/misc/qt/kconfig.nix new file mode 100644 index 00000000..22139f5c --- /dev/null +++ b/modules/misc/qt/kconfig.nix @@ -0,0 +1,73 @@ +{ config, pkgs, lib, ... }: + +let + + cfg = config.qt.kde.settings; +in { + options.qt.kde.settings = lib.mkOption { + type = with lib.types; + let + valueType = + nullOr (oneOf [ bool int float str path (attrsOf valueType) ]) // { + description = "KDE option value"; + }; + in attrsOf valueType; + default = { }; + example = { + powermanagementprofilesrc.AC.HandleButtonEvents.lidAction = 32; + }; + description = '' + A set of values to be modified by {command}`kwriteconfig5`. + + The example value would cause the following command to run in the + activation script: + + ``` shell + kwriteconfig5 --file $XDG_CONFIG_HOME/powermanagementprofilesrc \ + --group AC \ + --group HandleButtonEvents \ + --group lidAction \ + --key lidAction \ + 32 + ``` + + Note, `null` values will delete the corresponding entry instead of + inserting any value. + ''; + }; + + config = lib.mkIf (cfg != { }) { + home.activation.kconfig = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + ${let + inherit (config.xdg) configHome; + toValue = v: + let t = builtins.typeOf v; + in if v == null then + "--delete" + else if t == "bool" then + "--type bool ${builtins.toJSON v}" + else + toString v; + toLine = file: path: value: + if builtins.isAttrs value then + 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}' ${ + lib.concatMapStringsSep " " (x: "--group ${x}") + (lib.lists.init path) + } --key '${lib.lists.last path}' ${toValue value}"; + lines = lib.flatten + (lib.mapAttrsToList (file: attrs: toLine file [ ] attrs) cfg); + 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" + # 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 + run ${pkgs.dbus}/bin/dbus-send /KGlobalSettings org.kde.KGlobalSettings.notifyChange int32:$changeType int32:0 || echo "KGlobalSettings.notifyChange $changeType failed" + done + ''; + }; +} diff --git a/modules/modules.nix b/modules/modules.nix index 96b2bec5..154f2bd9 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -34,6 +34,7 @@ let ./misc/numlock.nix ./misc/pam.nix ./misc/qt.nix + ./misc/qt/kconfig.nix ./misc/specialisation.nix ./misc/submodule-support.nix ./misc/tmpfiles.nix From 938357cb234e85da37109df2cdd9cc59ab9c1cc0 Mon Sep 17 00:00:00 2001 From: Masum Reza <50095635+JohnRTitor@users.noreply.github.com> Date: Fri, 19 Apr 2024 22:55:59 +0530 Subject: [PATCH 031/102] hyprland: remove enableNvidiaPatches option Hyprland no longer requires patching to work on Nvidia. --- modules/services/window-managers/hyprland.nix | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/modules/services/window-managers/hyprland.nix b/modules/services/window-managers/hyprland.nix index cf163108..4401998f 100644 --- a/modules/services/window-managers/hyprland.nix +++ b/modules/services/window-managers/hyprland.nix @@ -28,9 +28,12 @@ in { [ "wayland" "windowManager" "hyprland" "xwayland" "hidpi" ] "HiDPI patches are deprecated. Refer to https://wiki.hyprland.org/Configuring/XWayland") - (lib.mkRenamedOptionModule # \ + (lib.mkRemovedOptionModule # \ [ "wayland" "windowManager" "hyprland" "nvidiaPatches" ] # \ - [ "wayland" "windowManager" "hyprland" "enableNvidiaPatches" ]) + "Nvidia patches are no longer needed") + (lib.mkRemovedOptionModule # \ + [ "wayland" "windowManager" "hyprland" "enableNvidiaPatches" ] # \ + "Nvidia patches are no longer needed") (lib.mkRenamedOptionModule # \ [ "wayland" "windowManager" "hyprland" "systemdIntegration" ] # \ @@ -45,10 +48,7 @@ in { finalPackage = lib.mkOption { type = lib.types.package; readOnly = true; - default = cfg.package.override { - enableXWayland = cfg.xwayland.enable; - enableNvidiaPatches = cfg.enableNvidiaPatches; - }; + default = cfg.package.override { enableXWayland = cfg.xwayland.enable; }; defaultText = lib.literalMD "`wayland.windowManager.hyprland.package` with applied configuration"; description = '' @@ -107,9 +107,6 @@ in { xwayland.enable = lib.mkEnableOption "XWayland" // { default = true; }; - enableNvidiaPatches = - lib.mkEnableOption "patching wlroots for better Nvidia support"; - settings = lib.mkOption { type = with lib.types; let From 5682ccdcaf72aef74be97e4b683545a9de27c386 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Fri, 19 Apr 2024 19:07:29 +0200 Subject: [PATCH 032/102] Translate using Weblate (Spanish) Currently translated at 100.0% (37 of 37 strings) Co-authored-by: gallegonovato Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/es/ Translation: Home Manager/Home Manager CLI --- home-manager/po/es.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home-manager/po/es.po b/home-manager/po/es.po index 9da9fa8f..cafc9a0a 100644 --- a/home-manager/po/es.po +++ b/home-manager/po/es.po @@ -8,7 +8,7 @@ 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-02-21 12:02+0000\n" +"PO-Revision-Date: 2024-04-19 17:07+0000\n" "Last-Translator: gallegonovato \n" "Language-Team: Spanish \n" @@ -22,7 +22,7 @@ msgstr "" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s: falta argumento para %s" #: home-manager/home-manager:64 msgid "No configuration file found at %s" From 991f6fafce729e6d7d64107a66e445114194b778 Mon Sep 17 00:00:00 2001 From: Felipe Silva Date: Fri, 19 Apr 2024 19:07:29 +0200 Subject: [PATCH 033/102] Translate using Weblate (Portuguese) Currently translated at 100.0% (37 of 37 strings) Translate using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (18 of 18 strings) Translate using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (37 of 37 strings) Co-authored-by: Felipe Silva Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/pt/ Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pt_BR/ Translation: Home Manager/Home Manager CLI Translation: Home Manager/Home Manager Modules --- home-manager/po/pt.po | 10 +++++----- home-manager/po/pt_BR.po | 12 ++++++------ modules/po/pt_BR.po | 16 ++++++++-------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/home-manager/po/pt.po b/home-manager/po/pt.po index 30a16bde..a5de344b 100644 --- a/home-manager/po/pt.po +++ b/home-manager/po/pt.po @@ -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-02-16 22:01+0000\n" -"Last-Translator: Robert Helgesson \n" +"PO-Revision-Date: 2024-04-19 17:07+0000\n" +"Last-Translator: Felipe Silva \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -17,12 +17,12 @@ 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.4\n" +"X-Generator: Weblate 5.5-dev\n" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s: faltando argumento para %s" #: home-manager/home-manager:64 msgid "No configuration file found at %s" @@ -190,7 +190,7 @@ msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido." #: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" -msgstr "" +msgstr "Por favor, defina a variável de ambiente $EDITOR ou $VISUAL" #: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" diff --git a/home-manager/po/pt_BR.po b/home-manager/po/pt_BR.po index 44aba563..a3075d41 100644 --- a/home-manager/po/pt_BR.po +++ b/home-manager/po/pt_BR.po @@ -8,10 +8,10 @@ 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-02-28 13:02+0000\n" -"Last-Translator: guto \n" -"Language-Team: Portuguese (Brazil) \n" +"PO-Revision-Date: 2024-04-19 17:07+0000\n" +"Last-Translator: Felipe Silva \n" +"Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,7 +22,7 @@ msgstr "" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s: faltando argumento para %s" #: home-manager/home-manager:64 msgid "No configuration file found at %s" @@ -104,7 +104,7 @@ msgstr "Revalidando Nix" #: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" -"Não foi possível encontrar um diretório de perfil apropriado, tentei %s e %s" +"Não foi possível encontrar um diretório de perfil apropriado, tentou %s e %s" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. #: home-manager/home-manager:221 diff --git a/modules/po/pt_BR.po b/modules/po/pt_BR.po index a8f2b484..83d01927 100644 --- a/modules/po/pt_BR.po +++ b/modules/po/pt_BR.po @@ -8,16 +8,16 @@ msgstr "" "Project-Id-Version: Home Manager Modules\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: 2023-11-30 15:04+0000\n" -"Last-Translator: Gabriel Fontes \n" -"Language-Team: Portuguese (Brazil) \n" +"PO-Revision-Date: 2024-04-19 17:07+0000\n" +"Last-Translator: Felipe Silva \n" +"Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "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.3-dev\n" +"X-Generator: Weblate 5.5-dev\n" #: modules/files.nix:191 msgid "Creating home file links in %s" @@ -25,11 +25,11 @@ msgstr "Criando links simbólicos em %s" #: modules/files.nix:204 msgid "Cleaning up orphan links from %s" -msgstr "Limpando links órfãos do directório %s" +msgstr "Limpando links órfãos de %s" #: modules/files.nix:220 msgid "Creating profile generation %s" -msgstr "Criando geração %s para o perfil" +msgstr "Criando perfil de geração %s" #: modules/files.nix:237 msgid "No change so reusing latest profile generation %s" @@ -74,7 +74,7 @@ msgstr "Migrando perfil de %s para %s" #: modules/lib-bash/activation-init.sh:54 msgid "Could not find suitable profile directory, tried %s and %s" msgstr "" -"Não foi possível encontrar um diretório de perfil apropriado, tentei %s e %s" +"Não foi possível encontrar um diretório de perfil apropriado, tentou %s e %s" #: modules/lib-bash/activation-init.sh:83 msgid "Sanity checking oldGenNum and oldGenPath" From 7c61e400a99f33cdff3118c1e4032bcb049e1a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Fri, 19 Apr 2024 19:07:29 +0200 Subject: [PATCH 034/102] Translate using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (37 of 37 strings) Co-authored-by: Oğuz Ersen Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/tr/ Translation: Home Manager/Home Manager CLI --- home-manager/po/tr.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home-manager/po/tr.po b/home-manager/po/tr.po index e382f3b5..66c89e60 100644 --- a/home-manager/po/tr.po +++ b/home-manager/po/tr.po @@ -8,7 +8,7 @@ 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-02-16 22:01+0000\n" +"PO-Revision-Date: 2024-04-19 17:07+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" @@ -17,12 +17,12 @@ 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.4\n" +"X-Generator: Weblate 5.5-dev\n" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s: %s için argüman eksik" #: home-manager/home-manager:64 msgid "No configuration file found at %s" From 95888b153c24c36971c4b4b66beecf32593064fb Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Thu, 9 Nov 2023 13:14:12 -0500 Subject: [PATCH 035/102] sway: writeText -> writeTextFile The latter is more flexible and shall be used soon, splitting this change out for simpler diff later. --- .../services/window-managers/i3-sway/sway.nix | 116 +++++++++--------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/modules/services/window-managers/i3-sway/sway.nix b/modules/services/window-managers/i3-sway/sway.nix index 646af20b..ea63e78c 100644 --- a/modules/services/window-managers/i3-sway/sway.nix +++ b/modules/services/window-managers/i3-sway/sway.nix @@ -261,62 +261,66 @@ let systemdActivation = '' exec "${pkgs.dbus}/bin/dbus-update-activation-environment --systemd ${variables}; ${extraCommands}"''; - configFile = pkgs.writeText "sway.conf" (concatStringsSep "\n" - ((optional (cfg.extraConfigEarly != "") cfg.extraConfigEarly) - ++ (if cfg.config != null then - with cfg.config; - ([ - (fontConfigStr fonts) - "floating_modifier ${floating.modifier}" - (windowBorderString window floating) - "hide_edge_borders ${window.hideEdgeBorders}" - "focus_wrapping ${focus.wrapping}" - "focus_follows_mouse ${focus.followMouse}" - "focus_on_window_activation ${focus.newWindow}" - "mouse_warping ${ - if builtins.isString (focus.mouseWarping) then - focus.mouseWarping - else if focus.mouseWarping then - "output" - else - "none" - }" - "workspace_layout ${workspaceLayout}" - "workspace_auto_back_and_forth ${ - lib.hm.booleans.yesNo workspaceAutoBackAndForth - }" - "client.focused ${colorSetStr colors.focused}" - "client.focused_inactive ${colorSetStr colors.focusedInactive}" - "client.unfocused ${colorSetStr colors.unfocused}" - "client.urgent ${colorSetStr colors.urgent}" - "client.placeholder ${colorSetStr colors.placeholder}" - "client.background ${colors.background}" - (keybindingsStr { - keybindings = keybindingDefaultWorkspace; - bindsymArgs = - lib.optionalString (cfg.config.bindkeysToCode) "--to-code"; - }) - (keybindingsStr { - keybindings = keybindingsRest; - bindsymArgs = - lib.optionalString (cfg.config.bindkeysToCode) "--to-code"; - }) - (keycodebindingsStr keycodebindings) - ] ++ mapAttrsToList inputStr input - ++ mapAttrsToList outputStr output # outputs - ++ mapAttrsToList seatStr seat # seats - ++ mapAttrsToList (modeStr cfg.config.bindkeysToCode) modes # modes - ++ mapAttrsToList assignStr assigns # assigns - ++ map barStr bars # bars - ++ optional (gaps != null) gapsStr # gaps - ++ map floatingCriteriaStr floating.criteria # floating - ++ map windowCommandsStr window.commands # window commands - ++ map startupEntryStr startup # startup - ++ map workspaceOutputStr workspaceOutputAssign # custom mapping - ) - else - [ ]) ++ (optional cfg.systemd.enable systemdActivation) - ++ (optional (!cfg.xwayland) "xwayland disable") ++ [ cfg.extraConfig ])); + configFile = pkgs.writeTextFile { + name = "sway.conf"; + text = (concatStringsSep "\n" + ((optional (cfg.extraConfigEarly != "") cfg.extraConfigEarly) + ++ (if cfg.config != null then + with cfg.config; + ([ + (fontConfigStr fonts) + "floating_modifier ${floating.modifier}" + (windowBorderString window floating) + "hide_edge_borders ${window.hideEdgeBorders}" + "focus_wrapping ${focus.wrapping}" + "focus_follows_mouse ${focus.followMouse}" + "focus_on_window_activation ${focus.newWindow}" + "mouse_warping ${ + if builtins.isString (focus.mouseWarping) then + focus.mouseWarping + else if focus.mouseWarping then + "output" + else + "none" + }" + "workspace_layout ${workspaceLayout}" + "workspace_auto_back_and_forth ${ + lib.hm.booleans.yesNo workspaceAutoBackAndForth + }" + "client.focused ${colorSetStr colors.focused}" + "client.focused_inactive ${colorSetStr colors.focusedInactive}" + "client.unfocused ${colorSetStr colors.unfocused}" + "client.urgent ${colorSetStr colors.urgent}" + "client.placeholder ${colorSetStr colors.placeholder}" + "client.background ${colors.background}" + (keybindingsStr { + keybindings = keybindingDefaultWorkspace; + bindsymArgs = + lib.optionalString (cfg.config.bindkeysToCode) "--to-code"; + }) + (keybindingsStr { + keybindings = keybindingsRest; + bindsymArgs = + lib.optionalString (cfg.config.bindkeysToCode) "--to-code"; + }) + (keycodebindingsStr keycodebindings) + ] ++ mapAttrsToList inputStr input + ++ mapAttrsToList outputStr output # outputs + ++ mapAttrsToList seatStr seat # seats + ++ mapAttrsToList (modeStr cfg.config.bindkeysToCode) modes # modes + ++ mapAttrsToList assignStr assigns # assigns + ++ map barStr bars # bars + ++ optional (gaps != null) gapsStr # gaps + ++ map floatingCriteriaStr floating.criteria # floating + ++ map windowCommandsStr window.commands # window commands + ++ map startupEntryStr startup # startup + ++ map workspaceOutputStr workspaceOutputAssign # custom mapping + ) + else + [ ]) ++ (optional cfg.systemd.enable systemdActivation) + ++ (optional (!cfg.xwayland) "xwayland disable") + ++ [ cfg.extraConfig ])); + }; defaultSwayPackage = pkgs.sway.override { extraSessionCommands = cfg.extraSessionCommands; From 3a435342e2e5e2bff1d3331c2bd9e70f25693ea2 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Thu, 9 Nov 2023 13:19:45 -0500 Subject: [PATCH 036/102] sway: check config file validity Helps avoid successful build but Sway failing to start. To meaningfully test this, I had to actually use `pkgs.sway` in the test rather than the stub, but left all other tests using the stub and changed them to skipping the test. We need to pass `--unsupported-gpu` as Sway checks for `nvidia` in `/proc/modules`, and the Nix sandbox has `/proc/modules` available. --- .../services/window-managers/i3-sway/sway.nix | 24 +++++++++++++++---- .../services/window-managers/sway/default.nix | 1 + .../sway/sway-bar-focused-colors.nix | 1 + ...sway-bindkeys-to-code-and-extra-config.nix | 1 + .../sway/sway-check-config.nix | 12 ++++++++++ .../window-managers/sway/sway-default.nix | 1 + .../sway/sway-followmouse-legacy.nix | 1 + .../window-managers/sway/sway-followmouse.nix | 1 + .../window-managers/sway/sway-modules.nix | 1 + .../window-managers/sway/sway-no-xwayland.nix | 1 + .../window-managers/sway/sway-null-config.nix | 1 + .../sway/sway-null-package.nix | 1 + .../window-managers/sway/sway-post-2003.nix | 1 + .../sway/sway-systemd-autostart.nix | 1 + .../sway/sway-systemd-variables.nix | 1 + .../sway/sway-workspace-default.nix | 1 + .../sway/sway-workspace-output.nix | 1 + 17 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 tests/modules/services/window-managers/sway/sway-check-config.nix diff --git a/modules/services/window-managers/i3-sway/sway.nix b/modules/services/window-managers/i3-sway/sway.nix index ea63e78c..bc20e9d9 100644 --- a/modules/services/window-managers/i3-sway/sway.nix +++ b/modules/services/window-managers/i3-sway/sway.nix @@ -258,12 +258,21 @@ let variables = concatStringsSep " " cfg.systemd.variables; extraCommands = concatStringsSep " && " cfg.systemd.extraCommands; + swayPackage = if cfg.package == null then pkgs.sway else cfg.package; systemdActivation = '' exec "${pkgs.dbus}/bin/dbus-update-activation-environment --systemd ${variables}; ${extraCommands}"''; configFile = pkgs.writeTextFile { name = "sway.conf"; - text = (concatStringsSep "\n" + + # Sway always does some init, see https://github.com/swaywm/sway/issues/4691 + checkPhase = lib.optionalString cfg.checkConfig '' + export DBUS_SESSION_BUS_ADDRESS=/dev/null + export XDG_RUNTIME_DIR=$(mktemp -d) + ${pkgs.xvfb-run}/bin/xvfb-run ${swayPackage}/bin/sway --config "$target" --validate --unsupported-gpu + ''; + + text = concatStringsSep "\n" ((optional (cfg.extraConfigEarly != "") cfg.extraConfigEarly) ++ (if cfg.config != null then with cfg.config; @@ -319,7 +328,7 @@ let else [ ]) ++ (optional cfg.systemd.enable systemdActivation) ++ (optional (!cfg.xwayland) "xwayland disable") - ++ [ cfg.extraConfig ])); + ++ [ cfg.extraConfig ]); }; defaultSwayPackage = pkgs.sway.override { @@ -469,6 +478,13 @@ in { description = "Sway configuration options."; }; + checkConfig = mkOption { + type = types.bool; + default = true; + description = + "If enabled (the default), validates the generated config file."; + }; + extraConfig = mkOption { type = types.lines; default = ""; @@ -506,9 +522,7 @@ in { home.packages = optional (cfg.package != null) cfg.package ++ optional cfg.xwayland pkgs.xwayland; - xdg.configFile."sway/config" = let - swayPackage = if cfg.package == null then pkgs.sway else cfg.package; - in { + xdg.configFile."sway/config" = { source = configFile; onChange = '' swaySocket="''${XDG_RUNTIME_DIR:-/run/user/$UID}/sway-ipc.$UID.$(${pkgs.procps}/bin/pgrep --uid $UID -x sway || true).sock" diff --git a/tests/modules/services/window-managers/sway/default.nix b/tests/modules/services/window-managers/sway/default.nix index e3ce4a9c..7627aab0 100644 --- a/tests/modules/services/window-managers/sway/default.nix +++ b/tests/modules/services/window-managers/sway/default.nix @@ -5,6 +5,7 @@ sway-default = ./sway-default.nix; sway-followmouse = ./sway-followmouse.nix; sway-followmouse-legacy = ./sway-followmouse-legacy.nix; + sway-check-config = ./sway-check-config.nix; sway-modules = ./sway-modules.nix; sway-no-xwayland = ./sway-no-xwayland.nix; sway-null-config = ./sway-null-config.nix; diff --git a/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix b/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix index 399790fb..9488d00f 100644 --- a/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix +++ b/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; diff --git a/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix b/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix index 0817837a..cf316988 100644 --- a/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix +++ b/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; config.bindkeysToCode = true; diff --git a/tests/modules/services/window-managers/sway/sway-check-config.nix b/tests/modules/services/window-managers/sway/sway-check-config.nix new file mode 100644 index 00000000..e566e4fd --- /dev/null +++ b/tests/modules/services/window-managers/sway/sway-check-config.nix @@ -0,0 +1,12 @@ +{ config, lib, ... }: + +lib.mkIf config.test.enableBig { + wayland.windowManager.sway = { + enable = true; + checkConfig = true; + }; + + nmt.script = '' + assertFileExists home-files/.config/sway/config + ''; +} diff --git a/tests/modules/services/window-managers/sway/sway-default.nix b/tests/modules/services/window-managers/sway/sway-default.nix index 59527247..c62effbe 100644 --- a/tests/modules/services/window-managers/sway/sway-default.nix +++ b/tests/modules/services/window-managers/sway/sway-default.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; }; diff --git a/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix b/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix index 03f64fc2..3bce4850 100644 --- a/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix +++ b/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; config = { focus.followMouse = false; diff --git a/tests/modules/services/window-managers/sway/sway-followmouse.nix b/tests/modules/services/window-managers/sway/sway-followmouse.nix index b8a2bc16..de2e91b3 100644 --- a/tests/modules/services/window-managers/sway/sway-followmouse.nix +++ b/tests/modules/services/window-managers/sway/sway-followmouse.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; config = { focus.followMouse = "always"; diff --git a/tests/modules/services/window-managers/sway/sway-modules.nix b/tests/modules/services/window-managers/sway/sway-modules.nix index b8aa58c5..287dec17 100644 --- a/tests/modules/services/window-managers/sway/sway-modules.nix +++ b/tests/modules/services/window-managers/sway/sway-modules.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config = { menu = "${pkgs.dmenu}/bin/dmenu_run"; diff --git a/tests/modules/services/window-managers/sway/sway-no-xwayland.nix b/tests/modules/services/window-managers/sway/sway-no-xwayland.nix index b4091267..5eded3b8 100644 --- a/tests/modules/services/window-managers/sway/sway-no-xwayland.nix +++ b/tests/modules/services/window-managers/sway/sway-no-xwayland.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; config = null; systemd.enable = false; xwayland = false; diff --git a/tests/modules/services/window-managers/sway/sway-null-config.nix b/tests/modules/services/window-managers/sway/sway-null-config.nix index a859e04e..46e4df23 100644 --- a/tests/modules/services/window-managers/sway/sway-null-config.nix +++ b/tests/modules/services/window-managers/sway/sway-null-config.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; config = null; systemd.enable = false; }; diff --git a/tests/modules/services/window-managers/sway/sway-null-package.nix b/tests/modules/services/window-managers/sway/sway-null-package.nix index a449b42c..042830d1 100644 --- a/tests/modules/services/window-managers/sway/sway-null-package.nix +++ b/tests/modules/services/window-managers/sway/sway-null-package.nix @@ -9,6 +9,7 @@ wayland.windowManager.sway = { enable = true; package = null; + checkConfig = false; config.menu = "${pkgs.dmenu}/bin/dmenu_run"; }; diff --git a/tests/modules/services/window-managers/sway/sway-post-2003.nix b/tests/modules/services/window-managers/sway/sway-post-2003.nix index 13aac533..3617a3b1 100644 --- a/tests/modules/services/window-managers/sway/sway-post-2003.nix +++ b/tests/modules/services/window-managers/sway/sway-post-2003.nix @@ -8,6 +8,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; }; diff --git a/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix b/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix index 5a1d90e2..5c32c19c 100644 --- a/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix +++ b/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; diff --git a/tests/modules/services/window-managers/sway/sway-systemd-variables.nix b/tests/modules/services/window-managers/sway/sway-systemd-variables.nix index aae02fef..f0b42ecc 100644 --- a/tests/modules/services/window-managers/sway/sway-systemd-variables.nix +++ b/tests/modules/services/window-managers/sway/sway-systemd-variables.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; diff --git a/tests/modules/services/window-managers/sway/sway-workspace-default.nix b/tests/modules/services/window-managers/sway/sway-workspace-default.nix index 6af944eb..e5637fd9 100644 --- a/tests/modules/services/window-managers/sway/sway-workspace-default.nix +++ b/tests/modules/services/window-managers/sway/sway-workspace-default.nix @@ -6,6 +6,7 @@ wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; config.defaultWorkspace = "workspace number 9"; diff --git a/tests/modules/services/window-managers/sway/sway-workspace-output.nix b/tests/modules/services/window-managers/sway/sway-workspace-output.nix index 47fb7527..dcbff91e 100644 --- a/tests/modules/services/window-managers/sway/sway-workspace-output.nix +++ b/tests/modules/services/window-managers/sway/sway-workspace-output.nix @@ -15,6 +15,7 @@ in { wayland.windowManager.sway = { enable = true; package = config.lib.test.mkStubPackage { outPath = "@sway@"; }; + checkConfig = false; # overriding findutils causes issues config.menu = "${pkgs.dmenu}/bin/dmenu_run"; From a20408227466032a16e73893b09a67092258cf67 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Sat, 20 Apr 2024 00:02:59 +0200 Subject: [PATCH 037/102] firefox: fix test --- .../programs/firefox/profile-settings-expected-containers.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/modules/programs/firefox/profile-settings-expected-containers.json b/tests/modules/programs/firefox/profile-settings-expected-containers.json index d1727cc2..8eea5555 100644 --- a/tests/modules/programs/firefox/profile-settings-expected-containers.json +++ b/tests/modules/programs/firefox/profile-settings-expected-containers.json @@ -1 +1 @@ -{"identities":[{"color":"yellow","icon":"circle","name":"shopping","public":true,"userContextId":6}],"lastUserContextId":6,"version":4} +{"identities":[{"color":"yellow","icon":"circle","name":"shopping","public":true,"userContextId":6},{"accessKey":"","color":"","icon":"","name":"userContextIdInternal.thumbnail","public":false,"userContextId":4294967294},{"accessKey":"","color":"","icon":"","name":"userContextIdInternal.webextStorageLocal","public":false,"userContextId":4294967295}],"lastUserContextId":6,"version":4} From 057117a401a34259c9615ce62218aea7afdee4d3 Mon Sep 17 00:00:00 2001 From: Coutinho de Souza Date: Fri, 19 Apr 2024 18:41:23 -0300 Subject: [PATCH 038/102] kdeconnect: fix "tray.target" requires The PR #5299[0] actually adds the requirement on "tray.target" for the kdeconnect service, when kdeconnect-indicator is set to true. What it should do is add the requirement directly to the latter. This commit fixes it. [0]: https://github.com/nix-community/home-manager/pull/5299#issue-2252834123 --- modules/services/kdeconnect.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix index 65477be1..91b6657f 100644 --- a/modules/services/kdeconnect.nix +++ b/modules/services/kdeconnect.nix @@ -42,7 +42,7 @@ in { "Adds communication between your desktop and your smartphone"; After = [ "graphical-session-pre.target" ]; PartOf = [ "graphical-session.target" ]; - } // lib.optionalAttrs cfg.indicator { Requires = [ "tray.target" ]; }; + }; Install = { WantedBy = [ "graphical-session.target" ]; }; @@ -70,6 +70,7 @@ in { "stalonetray.service" ]; PartOf = [ "graphical-session.target" ]; + Requires = [ "tray.target" ]; }; Install = { WantedBy = [ "graphical-session.target" ]; }; From 4cec20dbf5c0a716115745ae32531e34816ecbbe Mon Sep 17 00:00:00 2001 From: home-manager-bot <106474382+home-manager-bot@users.noreply.github.com> Date: Sun, 21 Apr 2024 08:49:42 +0200 Subject: [PATCH 039/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/5672bc9dbf9d88246ddab5ac454e82318d094bb8' (2024-04-16) → 'github:NixOS/nixpkgs/5c24cf2f0a12ad855f444c30b2421d044120c66f' (2024-04-19) Co-authored-by: github-actions[bot] --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index aeb90586..54981090 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1713248628, - "narHash": "sha256-NLznXB5AOnniUtZsyy/aPWOk8ussTuePp2acb9U+ISA=", + "lastModified": 1713537308, + "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5672bc9dbf9d88246ddab5ac454e82318d094bb8", + "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f", "type": "github" }, "original": { From 147b5a5e1c04e1f27e30b6df720966422fb4bc09 Mon Sep 17 00:00:00 2001 From: JulianFP Date: Sat, 20 Apr 2024 15:29:07 +0200 Subject: [PATCH 040/102] qt: fix platform theme package install --- modules/misc/qt.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/misc/qt.nix b/modules/misc/qt.nix index 51fbac46..beb97434 100644 --- a/modules/misc/qt.nix +++ b/modules/misc/qt.nix @@ -258,7 +258,7 @@ in { # Apply theming also to apps started by systemd. systemd.user.sessionVariables = envVars // envVarsExtra; - home.packages = (lib.findFirst (x: x != null) [ ] [ + home.packages = (lib.findFirst (x: x != [ ]) [ ] [ (lib.optionals (platformTheme.package != null) (lib.toList platformTheme.package)) (lib.optionals (platformTheme.name != null) From ad83c154bdfedad9807e86dd0633729ea3b116c5 Mon Sep 17 00:00:00 2001 From: JulianFP Date: Sun, 21 Apr 2024 14:07:06 +0200 Subject: [PATCH 041/102] qt: fix `qt.platformTheme = "gtk3"` --- modules/misc/qt.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/misc/qt.nix b/modules/misc/qt.nix index beb97434..a36bd567 100644 --- a/modules/misc/qt.nix +++ b/modules/misc/qt.nix @@ -262,7 +262,7 @@ in { (lib.optionals (platformTheme.package != null) (lib.toList platformTheme.package)) (lib.optionals (platformTheme.name != null) - platformPackages.${platformTheme.name}) + platformPackages.${platformTheme.name} or [ ]) ]) ++ (lib.optionals (cfg.style.package != null) (lib.toList cfg.style.package)); From 2846d5230a3c3923618eabb367deaf8885df580f Mon Sep 17 00:00:00 2001 From: zorrobert <118135271+zorrobert@users.noreply.github.com> Date: Thu, 4 Apr 2024 21:49:02 +0200 Subject: [PATCH 042/102] joplin-desktop: allow undefined options This PR fixes two issues that cause rebuild to fail, see #5222. The first was caused when sync.target and sync.interval were not set, this was fixed by changing the default values from null to "undefined" and filtering these out later. The second error occurred when the .config/joplin-desktop directory didn't exist (e.g. when installing Joplin for the first time) which caused the touch command to fail. This was fixed using mkdir to ensure that .config/joplin-desktop exists. --- modules/programs/joplin-desktop.nix | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/modules/programs/joplin-desktop.nix b/modules/programs/joplin-desktop.nix index bbf9e400..418abff3 100644 --- a/modules/programs/joplin-desktop.nix +++ b/modules/programs/joplin-desktop.nix @@ -49,7 +49,7 @@ in { sync = { target = lib.mkOption { type = lib.types.enum [ - null + "undefined" "none" "file-system" "onedrive" @@ -60,15 +60,23 @@ in { "joplin-server" "joplin-cloud" ]; - default = null; + default = "undefined"; example = "dropbox"; description = "What is the type of sync target."; }; interval = lib.mkOption { - type = - lib.types.enum [ null "disabled" "5m" "10m" "30m" "1h" "12h" "1d" ]; - default = null; + type = lib.types.enum [ + "undefined" + "disabled" + "5m" + "10m" + "30m" + "1h" + "12h" + "1d" + ]; + default = "undefined"; example = "10m"; description = '' Set the synchronisation interval. @@ -90,6 +98,7 @@ in { "editor" = cfg.general.editor; "sync.target" = { + "undefined" = null; "none" = 0; "file-system" = 2; "onedrive" = 3; @@ -99,9 +108,10 @@ in { "s3" = 8; "joplin-server" = 9; "joplin-cloud" = 10; - }.${cfg.sync.target} or null; + }.${cfg.sync.target}; "sync.interval" = { + "undefined" = null; "disabled" = 0; "5m" = 300; "10m" = 600; @@ -109,10 +119,11 @@ in { "1h" = 3600; "12h" = 43200; "1d" = 86400; - }.${cfg.sync.interval} or null; + }.${cfg.sync.interval}; } // cfg.extraConfig)); in lib.hm.dag.entryAfter [ "linkGeneration" ] '' # Ensure that settings.json exists. + mkdir -p ${builtins.dirOf configPath} touch ${configPath} # Config has to be written to temporary variable because jq cannot edit files in place. config="$(jq -s '.[0] + .[1]' ${configPath} ${newConfig})" From 670d9ecc3e46a6e3265c203c2d136031a3d3548e Mon Sep 17 00:00:00 2001 From: Mirko Lenz Date: Sat, 24 Feb 2024 17:39:35 +0100 Subject: [PATCH 043/102] poetry: add module --- modules/misc/news.nix | 10 ++++ modules/modules.nix | 1 + modules/programs/poetry.nix | 55 +++++++++++++++++++ tests/default.nix | 1 + .../programs/poetry/custom-settings.nix | 27 +++++++++ .../programs/poetry/default-settings.nix | 15 +++++ tests/modules/programs/poetry/default.nix | 4 ++ 7 files changed, 113 insertions(+) create mode 100644 modules/programs/poetry.nix create mode 100644 tests/modules/programs/poetry/custom-settings.nix create mode 100644 tests/modules/programs/poetry/default-settings.nix create mode 100644 tests/modules/programs/poetry/default.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 8d7e17a5..bbbf3b8f 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1506,6 +1506,16 @@ in { A new module is available: 'services.remmina'. ''; } + + { + time = "2024-04-21T20:53:09+00:00"; + message = '' + A new module is available: 'programs.poetry'. + + Poetry is a tool that helps you manage Python project dependencies and + packages. See https://python-poetry.org/ for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 154f2bd9..01247077 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -186,6 +186,7 @@ let ./programs/pistol.nix ./programs/piston-cli.nix ./programs/pls.nix + ./programs/poetry.nix ./programs/powerline-go.nix ./programs/pqiv.nix ./programs/pubs.nix diff --git a/modules/programs/poetry.nix b/modules/programs/poetry.nix new file mode 100644 index 00000000..d297f0c7 --- /dev/null +++ b/modules/programs/poetry.nix @@ -0,0 +1,55 @@ +{ pkgs, config, lib, ... }: + +let + + inherit (lib) mkEnableOption mkPackageOption mkOption literalExpression; + + tomlFormat = pkgs.formats.toml { }; + + configDir = if pkgs.stdenv.isDarwin then + "Library/Application Support" + else + config.xdg.configHome; + + cfg = config.programs.poetry; + +in { + meta.maintainers = with lib.maintainers; [ mirkolenz ]; + + options.programs.poetry = { + enable = mkEnableOption "poetry"; + + package = mkPackageOption pkgs "poetry" { + example = "pkgs.poetry.withPlugins (ps: with ps; [ poetry-plugin-up ])"; + extraDescription = "May be used to install custom poetry plugins."; + }; + + settings = mkOption { + type = tomlFormat.type; + default = { }; + example = literalExpression '' + { + virtualenvs.create = true; + virtualenvs.in-project = true; + } + ''; + description = '' + Configuration written to + {file}`$XDG_CONFIG_HOME/pypoetry/config.toml` on Linux or + {file}`$HOME/Library/Application Support/pypoetry/config.toml` on Darwin. + See + + for more information. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ cfg.package ]; + + home.file."${configDir}/pypoetry/config.toml" = + lib.mkIf (cfg.settings != { }) { + source = tomlFormat.generate "poetry-config" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 3729ce98..4b7b6ebf 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -122,6 +122,7 @@ in import nmtSrc { ./modules/programs/pet ./modules/programs/pistol ./modules/programs/pls + ./modules/programs/poetry ./modules/programs/powerline-go ./modules/programs/pubs ./modules/programs/pyenv diff --git a/tests/modules/programs/poetry/custom-settings.nix b/tests/modules/programs/poetry/custom-settings.nix new file mode 100644 index 00000000..fc979306 --- /dev/null +++ b/tests/modules/programs/poetry/custom-settings.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: + +{ + programs.poetry = { + enable = true; + settings = { + virtualenvs.create = true; + virtualenvs.in-project = true; + }; + }; + + test.stubs.poetry = { }; + + nmt.script = let + expectedConfDir = + if pkgs.stdenv.isDarwin then "Library/Application Support" else ".config"; + expectedConfigPath = "home-files/${expectedConfDir}/pypoetry/config.toml"; + expectedConfigContent = pkgs.writeText "poetry.config-custom.expected" '' + [virtualenvs] + create = true + in-project = true + ''; + in '' + assertFileExists "${expectedConfigPath}" + assertFileContent "${expectedConfigPath}" "${expectedConfigContent}" + ''; +} diff --git a/tests/modules/programs/poetry/default-settings.nix b/tests/modules/programs/poetry/default-settings.nix new file mode 100644 index 00000000..145cf18a --- /dev/null +++ b/tests/modules/programs/poetry/default-settings.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: + +{ + programs.poetry = { enable = true; }; + + test.stubs.poetry = { }; + + nmt.script = let + expectedConfDir = + if pkgs.stdenv.isDarwin then "Library/Application Support" else ".config"; + expectedConfigPath = "home-files/${expectedConfDir}/pypoetry/config.toml"; + in '' + assertPathNotExists "${expectedConfigPath}" + ''; +} diff --git a/tests/modules/programs/poetry/default.nix b/tests/modules/programs/poetry/default.nix new file mode 100644 index 00000000..50af2a33 --- /dev/null +++ b/tests/modules/programs/poetry/default.nix @@ -0,0 +1,4 @@ +{ + poetry-default-settings = ./default-settings.nix; + poetry-custom-settings = ./custom-settings.nix; +} From 46833c3115e8858370880d892748f0927d8193c3 Mon Sep 17 00:00:00 2001 From: Nicolas Goudry Date: Mon, 22 Apr 2024 14:44:39 +0200 Subject: [PATCH 044/102] bat: allow overriding package (#5301) --- modules/programs/bat.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/programs/bat.nix b/modules/programs/bat.nix index bf8040d1..5d09145a 100644 --- a/modules/programs/bat.nix +++ b/modules/programs/bat.nix @@ -6,8 +6,6 @@ let cfg = config.programs.bat; - package = pkgs.bat; - toConfigFile = attrs: let inherit (builtins) isBool attrNames; @@ -52,6 +50,8 @@ in { ''; }; + package = mkPackageOption pkgs "bat" { }; + themes = mkOption { type = types.attrsOf (types.either types.lines (types.submodule { options = { @@ -138,7 +138,7 @@ in { '']; }) { - home.packages = [ package ] ++ cfg.extraPackages; + home.packages = [ cfg.package ] ++ cfg.extraPackages; xdg.configFile = mkMerge ([({ "bat/config" = @@ -167,7 +167,7 @@ in { export XDG_CACHE_HOME=${escapeShellArg config.xdg.cacheHome} verboseEcho "Rebuilding bat theme cache" cd "${pkgs.emptyDirectory}" - run ${lib.getExe package} cache --build + run ${lib.getExe cfg.package} cache --build ) ''; } From 2ad154bd1be2441ac8c624704587734dddb9f41a Mon Sep 17 00:00:00 2001 From: bittin1ddc447d824349b2 Date: Mon, 22 Apr 2024 09:07:19 +0200 Subject: [PATCH 045/102] Translate using Weblate (Swedish) Currently translated at 100.0% (37 of 37 strings) Co-authored-by: bittin1ddc447d824349b2 Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/sv/ Translation: Home Manager/Home Manager CLI --- home-manager/po/sv.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home-manager/po/sv.po b/home-manager/po/sv.po index 428f9e10..15930e49 100644 --- a/home-manager/po/sv.po +++ b/home-manager/po/sv.po @@ -8,7 +8,7 @@ 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-02-18 14:02+0000\n" +"PO-Revision-Date: 2024-04-22 07:07+0000\n" "Last-Translator: bittin1ddc447d824349b2 \n" "Language-Team: Swedish \n" @@ -17,12 +17,12 @@ 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.4\n" +"X-Generator: Weblate 5.5-dev\n" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s: saknar argument för %s" #: home-manager/home-manager:64 msgid "No configuration file found at %s" From e2e7ea9b8f3de1e6a09f4fc512eae75f6e413a10 Mon Sep 17 00:00:00 2001 From: paki23 Date: Sat, 20 Apr 2024 21:06:28 +0200 Subject: [PATCH 046/102] kconfig: fix missing quoting --- modules/misc/qt/kconfig.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/misc/qt/kconfig.nix b/modules/misc/qt/kconfig.nix index 22139f5c..f7c35573 100644 --- a/modules/misc/qt/kconfig.nix +++ b/modules/misc/qt/kconfig.nix @@ -47,7 +47,7 @@ in { else if t == "bool" then "--type bool ${builtins.toJSON v}" else - toString v; + lib.escapeShellArg (toString v); toLine = file: path: value: if builtins.isAttrs value then lib.mapAttrsToList From 1451d2866d9ef3739c20f964c9c8bd6db39cc373 Mon Sep 17 00:00:00 2001 From: quasigod Date: Mon, 22 Apr 2024 12:04:34 -0400 Subject: [PATCH 047/102] foot: unset PATH in server's systemd unit file This reverts commit 40ab43ae98cb3e6f07eaeaa3f3ed56d589da21b0. --- modules/programs/foot.nix | 1 - .../modules/programs/foot/systemd-user-service-expected.service | 1 - 2 files changed, 2 deletions(-) diff --git a/modules/programs/foot.nix b/modules/programs/foot.nix index 52bab938..79832dce 100644 --- a/modules/programs/foot.nix +++ b/modules/programs/foot.nix @@ -68,7 +68,6 @@ in { }; Service = { - Environment = "PATH=${makeBinPath [ cfg.package ]}"; ExecStart = "${cfg.package}/bin/foot --server"; Restart = "on-failure"; OOMPolicy = "continue"; diff --git a/tests/modules/programs/foot/systemd-user-service-expected.service b/tests/modules/programs/foot/systemd-user-service-expected.service index 0c452b9d..517344e5 100644 --- a/tests/modules/programs/foot/systemd-user-service-expected.service +++ b/tests/modules/programs/foot/systemd-user-service-expected.service @@ -2,7 +2,6 @@ WantedBy=graphical-session.target [Service] -Environment=PATH=@foot@/bin ExecStart=@foot@/bin/foot --server OOMPolicy=continue Restart=on-failure From e866aae5bbbcfe6798ca05d3004a4e62f1828954 Mon Sep 17 00:00:00 2001 From: nat Date: Sun, 21 Apr 2024 18:53:24 +0200 Subject: [PATCH 048/102] amberol: add module Amberol is a small and simple music player. --- modules/misc/news.nix | 21 +++++++++++ modules/modules.nix | 3 +- modules/services/amberol.nix | 70 ++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 modules/services/amberol.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index bbbf3b8f..88e43a4c 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1470,6 +1470,14 @@ in { ''; } + { + time = "2024-03-28T17:02:19+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.amberol'. + ''; + } + { time = "2024-04-08T21:43:38+00:00"; message = '' @@ -1516,6 +1524,19 @@ in { packages. See https://python-poetry.org/ for more. ''; } + + { + time = "2024-04-22T18:04:47+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.amberol'. + + Amberol is a music player with no delusions of grandeur. If you just + want to play music available on your local system then Amberol is the + music player you are looking for. See https://apps.gnome.org/Amberol/ + for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 01247077..06d1c331 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -261,8 +261,9 @@ let ./programs/zsh.nix ./programs/zsh/prezto.nix ./programs/zsh/zsh-abbr.nix - ./services/arrpc.nix ./services/activitywatch.nix + ./services/amberol.nix + ./services/arrpc.nix ./services/autorandr.nix ./services/avizo.nix ./services/barrier.nix diff --git a/modules/services/amberol.nix b/modules/services/amberol.nix new file mode 100644 index 00000000..a6301244 --- /dev/null +++ b/modules/services/amberol.nix @@ -0,0 +1,70 @@ +{ config, lib, pkgs, ... }: + +let + + cfg = config.services.amberol; + +in { + meta.maintainers = with lib.maintainers; [ surfaceflinger ]; + + options.services.amberol = { + enable = lib.mkEnableOption "" // { + description = '' + Whether to enable Amberol music player as a daemon. + + Note, it is necessary to add + ```nix + programs.dconf.enable = true; + ``` + to your system configuration for the daemon to work correctly. + ''; + }; + + package = lib.mkPackageOption pkgs "amberol" { }; + + enableRecoloring = lib.mkOption { + type = lib.types.bool; + default = true; + description = "UI recoloring using the album art."; + }; + + replaygain = lib.mkOption { + type = lib.types.enum [ "album" "track" "off" ]; + default = "track"; + description = "ReplayGain mode."; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "services.amberol" pkgs + lib.platforms.linux) + ]; + + # Running amberol will just attach itself to gapplication service. + home.packages = [ cfg.package ]; + + dconf.settings."io/bassi/Amberol" = { + background-play = true; + enable-recoloring = cfg.enableRecoloring; + replay-gain = cfg.replaygain; + }; + + systemd.user.services.amberol = { + Unit = { + Description = "Amberol music player daemon"; + Requires = [ "dbus.service" ]; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install.WantedBy = [ "graphical-session.target" ]; + + Service = { + ExecStart = "${lib.getExe cfg.package} --gapplication-service"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; + }; +} From 67de98ae6eed5ad6f91b1142356d71a87ba97f21 Mon Sep 17 00:00:00 2001 From: Samuel Tschiedel <431708+aisamu@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:38:46 -0300 Subject: [PATCH 049/102] tealdeer: documentation typo --- modules/programs/tealdeer.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/tealdeer.nix b/modules/programs/tealdeer.nix index 55b6c22b..d9318d10 100644 --- a/modules/programs/tealdeer.nix +++ b/modules/programs/tealdeer.nix @@ -50,7 +50,7 @@ in { The activation script should be fast and idempotent, so the option was removed. Please use - `programs.teadleer.settings.updates.auto_update = true` + `programs.tealdeer.settings.updates.auto_update = true` instead, to make sure tealdeer's cache is updated periodically. '') From 33a20182e3164f451b6a4ac2ecadcab5c2c36703 Mon Sep 17 00:00:00 2001 From: dotconfig404 <119617043+dotconfig404@users.noreply.github.com> Date: Tue, 23 Apr 2024 19:49:42 +0200 Subject: [PATCH 050/102] home-manager: improve session variables comment --- home-manager/home-manager | 7 ++++--- tests/integration/standalone/alice-home-init.nix | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/home-manager/home-manager b/home-manager/home-manager index 8e5fb4c5..9703505d 100644 --- a/home-manager/home-manager +++ b/home-manager/home-manager @@ -398,9 +398,10 @@ $xdgVars }; # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. If you don't want to manage your shell through Home - # Manager then you have to manually source 'hm-session-vars.sh' located at - # either + # 'home.sessionVariables'. These will be explicitly sourced when using a + # shell provided by Home Manager. If you don't want to manage your shell + # through Home Manager then you have to manually source 'hm-session-vars.sh' + # located at either # # ~/.nix-profile/etc/profile.d/hm-session-vars.sh # diff --git a/tests/integration/standalone/alice-home-init.nix b/tests/integration/standalone/alice-home-init.nix index c5abf850..3aab1897 100644 --- a/tests/integration/standalone/alice-home-init.nix +++ b/tests/integration/standalone/alice-home-init.nix @@ -52,9 +52,10 @@ }; # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. If you don't want to manage your shell through Home - # Manager then you have to manually source 'hm-session-vars.sh' located at - # either + # 'home.sessionVariables'. These will be explicitly sourced when using a + # shell provided by Home Manager. If you don't want to manage your shell + # through Home Manager then you have to manually source 'hm-session-vars.sh' + # located at either # # ~/.nix-profile/etc/profile.d/hm-session-vars.sh # From bfa7c06436771e3a0c666ccc6ee01e815d4c33aa Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Sun, 21 Apr 2024 02:55:00 -0400 Subject: [PATCH 051/102] swayosd: add custom style option --- modules/services/swayosd.nix | 11 +++++++++++ tests/modules/services/swayosd/swayosd.nix | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/services/swayosd.nix b/modules/services/swayosd.nix index 51e7eb6d..79ca7f5e 100644 --- a/modules/services/swayosd.nix +++ b/modules/services/swayosd.nix @@ -26,6 +26,15 @@ in { description = "OSD margin from top edge (0.5 would be screen center)."; }; + stylePath = mkOption { + type = types.nullOr types.path; + default = null; + example = "/etc/xdg/swayosd/style.css"; + description = '' + Use a custom Stylesheet file instead of looking for one. + ''; + }; + display = mkOption { type = types.nullOr types.str; default = null; @@ -57,6 +66,8 @@ in { Type = "simple"; ExecStart = "${cfg.package}/bin/swayosd-server" + (optionalString (cfg.display != null) " --display ${cfg.display}") + + (optionalString (cfg.stylePath != null) + " --style ${escapeShellArg cfg.stylePath}") + (optionalString (cfg.topMargin != null) " --top-margin ${toString cfg.topMargin}"); Restart = "always"; diff --git a/tests/modules/services/swayosd/swayosd.nix b/tests/modules/services/swayosd/swayosd.nix index ba92d81f..88a7c536 100644 --- a/tests/modules/services/swayosd/swayosd.nix +++ b/tests/modules/services/swayosd/swayosd.nix @@ -8,6 +8,7 @@ outPath = "@swayosd@"; }; display = "DISPLAY"; + stylePath = "/etc/xdg/swayosd/style.css"; topMargin = 0.1; }; @@ -20,7 +21,7 @@ WantedBy=graphical-session.target [Service] - ExecStart=@swayosd@/bin/swayosd-server --display DISPLAY --top-margin 0.100000 + ExecStart=@swayosd@/bin/swayosd-server --display DISPLAY --style '/etc/xdg/swayosd/style.css' --top-margin 0.100000 Restart=always Type=simple From 2f072c127c041eec36621b8e38a531fe0fe07961 Mon Sep 17 00:00:00 2001 From: Johan Runsten Date: Wed, 24 Apr 2024 22:59:02 +0200 Subject: [PATCH 052/102] zsh: use correct autosuggestion color variable (#5320) To configure zsh's autosuggest "highlight style" we use ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE but it's currently set to AUTOSUGGESTION_HIGHLIGHT_COLOR (via autosuggestion.highlight). This change was apparently made back in 2016 or earlier. --- modules/programs/zsh.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix index c4520e7a..3ec73f30 100644 --- a/modules/programs/zsh.nix +++ b/modules/programs/zsh.nix @@ -612,7 +612,7 @@ in source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh '') (optionalString (cfg.autosuggestion.enable && cfg.autosuggestion.highlight != null) '' - AUTOSUGGESTION_HIGHLIGHT_COLOR="${cfg.autosuggestion.highlight}" + ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.autosuggestion.highlight}" '') (optionalString cfg.oh-my-zsh.enable '' From 4c157f84e8fbd6a0fd1688b458c6ce04d047a165 Mon Sep 17 00:00:00 2001 From: home-manager-bot <106474382+home-manager-bot@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:04:09 +0200 Subject: [PATCH 053/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/5c24cf2f0a12ad855f444c30b2421d044120c66f' (2024-04-19) → 'github:NixOS/nixpkgs/6143fc5eeb9c4f00163267708e26191d1e918932' (2024-04-21) Co-authored-by: github-actions[bot] --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 54981090..3a0d2858 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1713537308, - "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { From 3ebcff8d1219c9e0fb3c880ef7959feca7ea2c4a Mon Sep 17 00:00:00 2001 From: Bjarki Gunnarsson Date: Tue, 23 Apr 2024 19:49:46 +0200 Subject: [PATCH 054/102] Translate using Weblate (Icelandic) Currently translated at 13.5% (5 of 37 strings) Add translation using Weblate (Icelandic) Co-authored-by: Bjarki Gunnarsson Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/is/ Translation: Home Manager/Home Manager CLI --- home-manager/po/is.po | 223 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 home-manager/po/is.po diff --git a/home-manager/po/is.po b/home-manager/po/is.po new file mode 100644 index 00000000..8c29d2a2 --- /dev/null +++ b/home-manager/po/is.po @@ -0,0 +1,223 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Home Manager contributors +# This file is distributed under the same license as the Home Manager package. +# FIRST AUTHOR , YEAR. +# +msgid "" +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-04-23 17:49+0000\n" +"Last-Translator: Bjarki Gunnarsson \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n % 10 != 1 || n % 100 == 11;\n" +"X-Generator: Weblate 5.5-dev\n" + +#. translators: For example: "home-manager: missing argument for --cores" +#: home-manager/home-manager:16 +#, fuzzy +msgid "%s: missing argument for %s" +msgstr "%s: vantar inntak fyrir %s" + +#: home-manager/home-manager:64 +msgid "No configuration file found at %s" +msgstr "Engin stillingaskrá fundin í %s" + +#. translators: The first '%s' specifier will be replaced by either +#. 'home.nix' or 'flake.nix'. +#: home-manager/home-manager:81 home-manager/home-manager:85 +#: home-manager/home-manager:184 +msgid "" +"Keeping your Home Manager %s in %s is deprecated,\n" +"please move it to %s" +msgstr "" +"Það er úrelt að geyma Home Manager %s í %s,\n" +"vinsamlega færðu hann í %s" + +#: home-manager/home-manager:92 +msgid "No configuration file found. Please create one at %s" +msgstr "Engin stillingaskrá fundin. Vinsamlegast búðu hana til í %s" + +#: home-manager/home-manager:107 +msgid "Home Manager not found at %s." +msgstr "Home Manager ekki fundinn í %s." + +#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. +#: home-manager/home-manager:115 +msgid "" +"The fallback Home Manager path %s has been deprecated and a file/directory " +"was found there." +msgstr "" +"Vara Home Manager slóðin %s hefur verið úreld en skrá/mappa hefur verið " +"fundin þar." + +#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. +#: home-manager/home-manager:118 +msgid "" +"To remove this warning, do one of the following.\n" +"\n" +"1. Explicitly tell Home Manager to use the path, for example by adding\n" +"\n" +" { programs.home-manager.path = \"%s\"; }\n" +"\n" +" to your configuration.\n" +"\n" +" If you import Home Manager directly, you can use the `path` parameter\n" +"\n" +" pkgs.callPackage /path/to/home-manager-package { path = \"%s\"; }\n" +"\n" +" when calling the Home Manager package.\n" +"\n" +"2. Remove the deprecated path.\n" +"\n" +" $ rm -r \"%s\"" +msgstr "" + +#: home-manager/home-manager:146 +msgid "Sanity checking Nix" +msgstr "" + +#: home-manager/home-manager:166 +msgid "Could not find suitable profile directory, tried %s and %s" +msgstr "" + +#. translators: Here "flake" is a noun that refers to the Nix Flakes feature. +#: home-manager/home-manager:221 +msgid "Can't inspect options of a flake configuration" +msgstr "" + +#: home-manager/home-manager:296 home-manager/home-manager:319 +#: home-manager/home-manager:1051 +msgid "%s: unknown option '%s'" +msgstr "" + +#: home-manager/home-manager:301 home-manager/home-manager:1052 +msgid "Run '%s --help' for usage help" +msgstr "" + +#: home-manager/home-manager:327 home-manager/home-manager:431 +msgid "The file %s already exists, leaving it unchanged..." +msgstr "" + +#: home-manager/home-manager:329 home-manager/home-manager:433 +msgid "Creating %s..." +msgstr "" + +#: home-manager/home-manager:475 +msgid "Creating initial Home Manager generation..." +msgstr "" + +#. translators: The "%s" specifier will be replaced by a file path. +#: home-manager/home-manager:480 +msgid "" +"All done! The home-manager tool should now be installed and you can edit\n" +"\n" +" %s\n" +"\n" +"to configure Home Manager. Run 'man home-configuration.nix' to\n" +"see all available options." +msgstr "" + +#. translators: The "%s" specifier will be replaced by a URL. +#: home-manager/home-manager:485 +msgid "" +"Uh oh, the installation failed! Please create an issue at\n" +"\n" +" %s\n" +"\n" +"if the error seems to be the fault of Home Manager." +msgstr "" + +#. translators: Here "flake" is a noun that refers to the Nix Flakes feature. +#: home-manager/home-manager:496 +msgid "Can't instantiate a flake configuration" +msgstr "" + +#: home-manager/home-manager:572 +msgid "" +"There is %d unread and relevant news item.\n" +"Read it by running the command \"%s news\"." +msgid_plural "" +"There are %d unread and relevant news items.\n" +"Read them by running the command \"%s news\"." +msgstr[0] "" +msgstr[1] "" + +#: home-manager/home-manager:586 +msgid "Unknown \"news.display\" setting \"%s\"." +msgstr "" + +#: home-manager/home-manager:594 +#, sh-format +msgid "Please set the $EDITOR or $VISUAL environment variable" +msgstr "" + +#: home-manager/home-manager:612 +msgid "Cannot run build in read-only directory" +msgstr "" + +#: home-manager/home-manager:693 +msgid "No generation with ID %s" +msgstr "" + +#: home-manager/home-manager:695 +msgid "Cannot remove the current generation %s" +msgstr "" + +#: home-manager/home-manager:697 +msgid "Removing generation %s" +msgstr "" + +#: home-manager/home-manager:718 +msgid "No generations to expire" +msgstr "" + +#: home-manager/home-manager:729 +msgid "No home-manager packages seem to be installed." +msgstr "" + +#: home-manager/home-manager:811 +msgid "Unknown argument %s" +msgstr "" + +#: home-manager/home-manager:835 +msgid "This will remove Home Manager from your system." +msgstr "" + +#: home-manager/home-manager:838 +msgid "This is a dry run, nothing will actually be uninstalled." +msgstr "" + +#: home-manager/home-manager:842 +msgid "Really uninstall Home Manager?" +msgstr "" + +#: home-manager/home-manager:848 +msgid "Switching to empty Home Manager configuration..." +msgstr "" + +#: home-manager/home-manager:863 +msgid "Yay!" +msgstr "" + +#: home-manager/home-manager:868 +msgid "Home Manager is uninstalled but your home.nix is left untouched." +msgstr "" + +#: home-manager/home-manager:1091 +msgid "expire-generations expects one argument, got %d." +msgstr "" + +#: home-manager/home-manager:1113 +msgid "Unknown command: %s" +msgstr "" + +#: home-manager/install.nix:18 +msgid "This derivation is not buildable, please run it using nix-shell." +msgstr "" From 6864ca2d2657d57a041110dcaf8be0c4b71346c0 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Tue, 23 Apr 2024 19:49:46 +0200 Subject: [PATCH 055/102] Add translation using Weblate (Icelandic) Co-authored-by: Languages add-on --- modules/po/is.po | 113 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 modules/po/is.po diff --git a/modules/po/is.po b/modules/po/is.po new file mode 100644 index 00000000..4f7e3bdc --- /dev/null +++ b/modules/po/is.po @@ -0,0 +1,113 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Home Manager contributors +# This file is distributed under the same license as the Home Manager Modules package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Home Manager Modules\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: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: modules/files.nix:191 +msgid "Creating home file links in %s" +msgstr "" + +#: modules/files.nix:204 +msgid "Cleaning up orphan links from %s" +msgstr "" + +#: modules/files.nix:220 +msgid "Creating profile generation %s" +msgstr "" + +#: modules/files.nix:237 +msgid "No change so reusing latest profile generation %s" +msgstr "" + +#: modules/home-environment.nix:634 +msgid "" +"Oops, Nix failed to install your new Home Manager profile!\n" +"\n" +"Perhaps there is a conflict with a package that was installed using\n" +"\"%s\"? Try running\n" +"\n" +" %s\n" +"\n" +"and if there is a conflicting package you can remove it with\n" +"\n" +" %s\n" +"\n" +"Then try activating your Home Manager configuration again." +msgstr "" + +#: modules/home-environment.nix:667 +msgid "Activating %s" +msgstr "" + +#: modules/lib-bash/activation-init.sh:22 +msgid "Migrating profile from %s to %s" +msgstr "" + +#: modules/lib-bash/activation-init.sh:54 +msgid "Could not find suitable profile directory, tried %s and %s" +msgstr "" + +#: modules/lib-bash/activation-init.sh:83 +msgid "Sanity checking oldGenNum and oldGenPath" +msgstr "" + +#: modules/lib-bash/activation-init.sh:86 +msgid "" +"The previous generation number and path are in conflict! These\n" +"must be either both empty or both set but are now set to\n" +"\n" +" '%s' and '%s'\n" +"\n" +"If you don't mind losing previous profile generations then\n" +"the easiest solution is probably to run\n" +"\n" +" rm %s/home-manager*\n" +" rm %s/current-home\n" +"\n" +"and trying home-manager switch again. Good luck!" +msgstr "" + +#: modules/lib-bash/activation-init.sh:127 +msgid "Error: USER is set to \"%s\" but we expect \"%s\"" +msgstr "" + +#: modules/lib-bash/activation-init.sh:136 +msgid "Error: HOME is set to \"%s\" but we expect \"%s\"" +msgstr "" + +#: modules/lib-bash/activation-init.sh:153 +msgid "Starting Home Manager activation" +msgstr "" + +#: modules/lib-bash/activation-init.sh:157 +msgid "Sanity checking Nix" +msgstr "" + +#: modules/lib-bash/activation-init.sh:170 +msgid "This is a dry run" +msgstr "" + +#: modules/lib-bash/activation-init.sh:174 +msgid "This is a live run" +msgstr "" + +#: modules/lib-bash/activation-init.sh:180 +msgid "Using Nix version: %s" +msgstr "" + +#: modules/lib-bash/activation-init.sh:183 +msgid "Activation variables:" +msgstr "" From 0c5704eceefcb7bb238a958f532a86e3b59d76db Mon Sep 17 00:00:00 2001 From: Luna Nova Date: Tue, 23 Apr 2024 09:52:19 -0700 Subject: [PATCH 056/102] home-manager: make newsReadIdsFile more reliable Specifically, avoid duplicate remove duplicate slashes in the `news-read-ids` file path. Also quote the use of `newsReadIdsFile` to reduce problems with potential spaces. --- home-manager/home-manager | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/home-manager/home-manager b/home-manager/home-manager index 9703505d..630fe39a 100644 --- a/home-manager/home-manager +++ b/home-manager/home-manager @@ -742,7 +742,11 @@ function newsReadIdsFile() { touch "$path" fi - echo "$path" + # Remove duplicate slashes in case $HOME or $XDG_DATA_HOME have a trailing + # slash. Double slashes causes Nix to error out with + # + # error: syntax error, unexpected PATH_END, expecting DOLLAR_CURLY". + echo "$path" | tr -s / } # Builds the Home Manager news data file. @@ -777,7 +781,7 @@ function buildNews() { done local readIdsFile - readIdsFile=$(newsReadIdsFile) + readIdsFile="$(newsReadIdsFile)" nix-instantiate \ --no-build-output --strict \ @@ -796,7 +800,7 @@ function doShowNews() { buildNews "$newsNixFile" local readIdsFile - readIdsFile=$(newsReadIdsFile) + readIdsFile="$(newsReadIdsFile)" local news From 26e72d85e6fbda36bf2266f1447215501ec376fd Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Fri, 26 Apr 2024 22:02:25 +0200 Subject: [PATCH 057/102] home-manager: set module class to "homeManager" This enables a module system feature documented here: https://nixos.org/manual/nixpkgs/stable/index.html#module-system-lib-evalModules-param-class For example, it allows a mistake to be caught, which is loading a NixOS module into home-manager. This only works when the offending module declares what it's for with a `_class` attribute. It is not expected that users declare the `_type`, because the payoff is small. It is only expected to be set by generic code, such as functions or libraries that help with the "publishing" of modules (e.g. flake-parts, flake-utils). The class feature has been available in the module system since https://github.com/NixOS/nixpkgs/pull/197547, merged May 6, 2023. It has been part of all releases since 23.05-beta. The last NixOS release that did _not_ support it has been end-of-life for close to a year now. Example: (lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.x86_64-linux; modules = [{ _class = "nixos"; imports = [ ./foo.nix ]; }]; }).activation-script Corresponding error: error: The module was imported into homeManager instead of nixos. (`` can be improved by also setting `_file`, if known; a much older feature) PR #5339 --- docs/default.nix | 7 ++++++- modules/default.nix | 1 + nixos/common.nix | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/default.nix b/docs/default.nix index 422e5ef8..21f00fb4 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -55,7 +55,11 @@ let hmPath = toString ./..; buildOptionsDocs = args@{ modules, includeModuleSystemOptions ? true, ... }: - let options = (lib.evalModules { inherit modules; }).options; + let + options = (lib.evalModules { + inherit modules; + class = "homeManager"; + }).options; in pkgs.buildPackages.nixosOptionsDoc ({ options = if includeModuleSystemOptions then options @@ -160,6 +164,7 @@ in { inherit lib pkgs; check = false; } ++ [ scrubbedPkgsModule ]; + class = "homeManager"; }; in builtins.toJSON result.config.meta.maintainers); } diff --git a/modules/default.nix b/modules/default.nix index ad0e6764..6c54148a 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -25,6 +25,7 @@ let rawModule = extendedLib.evalModules { modules = [ configuration ] ++ hmModules; + class = "homeManager"; specialArgs = { modulesPath = builtins.toString ./.; } // extraSpecialArgs; }; diff --git a/nixos/common.nix b/nixos/common.nix index 5da3240b..08491be9 100644 --- a/nixos/common.nix +++ b/nixos/common.nix @@ -13,6 +13,7 @@ let hmModule = types.submoduleWith { description = "Home Manager module"; + class = "homeManager"; specialArgs = { lib = extendedLib; osConfig = config; From c1609d584a6b5e9e6a02010f51bd368cb4782f8e Mon Sep 17 00:00:00 2001 From: Gabriel Fontes Date: Tue, 26 Mar 2024 08:25:05 -0300 Subject: [PATCH 058/102] xdg-portal: improve description of `enable` option Specifically, add note about useUserPackages and pathsToLink. As suggested in . --- modules/misc/xdg-portal.nix | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/modules/misc/xdg-portal.nix b/modules/misc/xdg-portal.nix index af305374..b863b23e 100644 --- a/modules/misc/xdg-portal.nix +++ b/modules/misc/xdg-portal.nix @@ -2,9 +2,7 @@ let - inherit (lib) - mapAttrsToList mkEnableOption mkIf mkMerge mkOption optional optionalString - types; + inherit (lib) mkIf mkMerge mkOption optional types; associationOptions = with types; attrsOf (coercedTo (either (listOf str) str) @@ -14,8 +12,24 @@ in { meta.maintainers = [ lib.maintainers.misterio77 ]; options.xdg.portal = { - enable = mkEnableOption - "[XDG desktop integration](https://github.com/flatpak/xdg-desktop-portal)"; + enable = mkOption { + type = types.bool; + default = false; + example = true; + description = '' + Whether to enable [XDG desktop integration](https://github.com/flatpak/xdg-desktop-portal). + + Note, if you use the NixOS module and have `useUserPackages = true`, + make sure to add + + ``` nix + environment.pathsToLink = [ "/share/xdg-desktop-portal" "/share/applications" ]; + ``` + + to your system configuration so that the portal definitions and DE + provided configurations get linked. + ''; + }; extraPortals = mkOption { type = types.listOf types.package; From d1980931de8252b6ac1104b7191fd68bbbe3a291 Mon Sep 17 00:00:00 2001 From: Jan Schmitz <44864658+danjujan@users.noreply.github.com> Date: Sun, 28 Apr 2024 19:35:01 +0200 Subject: [PATCH 059/102] psd: add module PR #5349 --- modules/lib/maintainers.nix | 6 +++ modules/misc/news.nix | 12 +++++ modules/modules.nix | 1 + modules/services/psd.nix | 88 +++++++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 modules/services/psd.nix diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index a2c56863..f3dd83fe 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -55,6 +55,12 @@ github = "cvoges12"; githubId = 38054771; }; + danjujan = { + name = "Jan Schmitz"; + email = "44864658+danjujan@users.noreply.github.com"; + github = "danjujan"; + githubId = 44864658; + }; d-dervishi = { email = "david.dervishi@epfl.ch"; github = "d-dervishi"; diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 88e43a4c..f8617f54 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1537,6 +1537,18 @@ in { for more. ''; } + + { + time = "2024-04-28T20:27:08+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.psd'. + + Profile-sync-daemon (psd) is a tiny pseudo-daemon designed to manage + your browser's profile in tmpfs and to periodically sync it back to + your physical disc (HDD/SSD). + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 06d1c331..b1e8b9b4 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -337,6 +337,7 @@ let ./services/plex-mpv-shim.nix ./services/polybar.nix ./services/poweralertd.nix + ./services/psd.nix ./services/pueue.nix ./services/pulseeffects.nix ./services/random-background.nix diff --git a/modules/services/psd.nix b/modules/services/psd.nix new file mode 100644 index 00000000..477176aa --- /dev/null +++ b/modules/services/psd.nix @@ -0,0 +1,88 @@ +{ config, lib, pkgs, ... }: + +let + + cfg = config.services.psd; + +in { + meta.maintainers = [ lib.hm.maintainers.danjujan ]; + + options.services.psd = { + enable = lib.mkEnableOption "Profile-sync-daemon service"; + + resyncTimer = lib.mkOption { + type = lib.types.str; + default = "1h"; + example = "1h 30min"; + description = '' + The amount of time to wait before syncing browser profiles back to the + disk. + + Takes a systemd time span, see {manpage}`systemd.time(7)`. The time unit + defaults to seconds if omitted. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "services.psd" pkgs lib.platforms.linux) + ]; + + home.packages = [ pkgs.profile-sync-daemon ]; + + systemd.user = { + services = let + exe = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon"; + envPath = lib.makeBinPath (with pkgs; [ + rsync + kmod + gawk + nettools + util-linux + profile-sync-daemon + ]); + in { + psd = { + Unit = { + Description = "Profile-sync-daemon"; + Wants = [ "psd-resync.service" ]; + RequiresMountsFor = [ "/home/" ]; + After = "winbindd.service"; + }; + Service = { + Type = "oneshot"; + RemainAfterExit = "yes"; + ExecStart = "${exe} startup"; + ExecStop = "${exe} unsync"; + Environment = [ "LAUNCHED_BY_SYSTEMD=1" "PATH=$PATH:${envPath}" ]; + }; + Install = { WantedBy = [ "default.target" ]; }; + }; + + psd-resync = { + Unit = { + Description = "Timed profile resync"; + After = [ "psd.service" ]; + Wants = [ "psd-resync.timer" ]; + PartOf = [ "psd.service" ]; + }; + Service = { + Type = "oneshot"; + ExecStart = "${exe} resync"; + Environment = [ "PATH=$PATH:${envPath}" ]; + }; + Install = { WantedBy = [ "default.target" ]; }; + }; + }; + + timers.psd-resync = { + Unit = { + Description = "Timer for Profile-sync-daemon"; + PartOf = [ "psd-resync.service" "psd.service" ]; + }; + Timer = { OnUnitActiveSec = cfg.resyncTimer; }; + }; + }; + }; +} From 02002a08b489b43e3ac1400609a9bf1b7c08e384 Mon Sep 17 00:00:00 2001 From: home-manager-bot <106474382+home-manager-bot@users.noreply.github.com> Date: Sun, 28 Apr 2024 22:43:49 +0200 Subject: [PATCH 060/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6143fc5eeb9c4f00163267708e26191d1e918932' (2024-04-21) → 'github:NixOS/nixpkgs/7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856' (2024-04-25) Co-authored-by: github-actions[bot] --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 3a0d2858..513eff46 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1714076141, + "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", "type": "github" }, "original": { From c002bc08c8ea6c87198f3024e8bfd6fdb1c90c9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Zwoli=C5=84ski?= Date: Sun, 28 Apr 2024 23:51:59 +0200 Subject: [PATCH 061/102] cliphist: support images in clipboard history --- modules/services/cliphist.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/modules/services/cliphist.nix b/modules/services/cliphist.nix index 6ba733fa..504b519a 100644 --- a/modules/services/cliphist.nix +++ b/modules/services/cliphist.nix @@ -9,6 +9,14 @@ in { package = lib.mkPackageOption pkgs "cliphist" { }; + allowImages = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Store images in clipboard history. + ''; + }; + systemdTarget = lib.mkOption { type = lib.types.str; default = "graphical-session.target"; @@ -46,5 +54,21 @@ in { Install = { WantedBy = [ cfg.systemdTarget ]; }; }; + + systemd.user.services.cliphist-images = lib.mkIf cfg.allowImages { + Unit = { + Description = "Clipboard management daemon - images"; + PartOf = [ "graphical-session.target" ]; + }; + + Service = { + Type = "simple"; + ExecStart = + "${pkgs.wl-clipboard}/bin/wl-paste --type image --watch ${cfg.package}/bin/cliphist store"; + Restart = "on-failure"; + }; + + Install = { WantedBy = [ cfg.systemdTarget ]; }; + }; }; } From 9fe79591c1005ce6f93084ae7f7dab0a2891440d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20Tri=C3=B1anes?= Date: Mon, 29 Apr 2024 00:30:45 +0200 Subject: [PATCH 062/102] direnv: add nix-direnv to lib instead of sourcing Also removes use of `with lib`. --- modules/programs/direnv.nix | 19 ++++++++++--------- tests/modules/programs/direnv/nix-direnv.nix | 4 +--- .../programs/direnv/stdlib-and-nix-direnv.nix | 4 +--- tests/modules/programs/direnv/stdlib.nix | 1 + 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index fcbc4634..add2c8fc 100644 --- a/modules/programs/direnv.nix +++ b/modules/programs/direnv.nix @@ -1,8 +1,8 @@ { config, lib, pkgs, ... }: - -with lib; - let + inherit (lib) + mkOption mkRenamedOptionModule mkRemovedOptionModule mkEnableOption types + mkPackageOption mkIf mkAfter getExe; cfg = config.programs.direnv; @@ -19,7 +19,7 @@ in { "Flake support is now always enabled.") ]; - meta.maintainers = [ maintainers.rycee ]; + meta.maintainers = [ lib.maintainers.rycee ]; options.programs.direnv = { enable = mkEnableOption "direnv, the environment switcher"; @@ -104,11 +104,12 @@ in { source = tomlFormat.generate "direnv-config" cfg.config; }; - xdg.configFile."direnv/direnvrc" = let - text = concatStringsSep "\n" (optional (cfg.stdlib != "") cfg.stdlib - ++ optional cfg.nix-direnv.enable - "source ${cfg.nix-direnv.package}/share/nix-direnv/direnvrc"); - in mkIf (text != "") { inherit text; }; + xdg.configFile."direnv/lib/hm-nix-direnv.sh" = mkIf cfg.nix-direnv.enable { + source = "${cfg.nix-direnv.package}/share/nix-direnv/direnvrc"; + }; + + xdg.configFile."direnv/direnvrc" = + lib.mkIf (cfg.stdlib != "") { text = cfg.stdlib; }; programs.bash.initExtra = mkIf cfg.enableBashIntegration ( # Using mkAfter to make it more likely to appear after other diff --git a/tests/modules/programs/direnv/nix-direnv.nix b/tests/modules/programs/direnv/nix-direnv.nix index 4c173097..588cd6ed 100644 --- a/tests/modules/programs/direnv/nix-direnv.nix +++ b/tests/modules/programs/direnv/nix-direnv.nix @@ -10,9 +10,7 @@ with lib; nmt.script = '' assertFileExists home-files/.bashrc - assertFileRegex \ - home-files/.config/direnv/direnvrc \ - 'source /nix/store/.*nix-direnv.*/share/nix-direnv/direnvrc' + assertFileExists home-files/.config/direnv/lib/hm-nix-direnv.sh ''; }; } diff --git a/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix b/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix index 4e5efb87..3bfd768c 100644 --- a/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix +++ b/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix @@ -12,9 +12,7 @@ in { nmt.script = '' assertFileExists home-files/.bashrc - assertFileRegex \ - home-files/.config/direnv/direnvrc \ - 'source /nix/store/.*nix-direnv.*/share/nix-direnv/direnvrc' + assertFileExists home-files/.config/direnv/lib/hm-nix-direnv.sh assertFileRegex \ home-files/.config/direnv/direnvrc \ '${expectedContent}' diff --git a/tests/modules/programs/direnv/stdlib.nix b/tests/modules/programs/direnv/stdlib.nix index 1d06a0bc..2a859132 100644 --- a/tests/modules/programs/direnv/stdlib.nix +++ b/tests/modules/programs/direnv/stdlib.nix @@ -10,6 +10,7 @@ in { programs.direnv.stdlib = expectedContent; nmt.script = '' + assertPathNotExists home-files/.config/direnv/lib/hm-nix-direnv.sh assertFileExists home-files/.bashrc assertFileRegex \ home-files/.config/direnv/direnvrc \ From 2af7c78b7bb9cf18406a193eba13ef9f99388f49 Mon Sep 17 00:00:00 2001 From: Alvaro Fresquet <29437693+afresquet@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:53:42 +0200 Subject: [PATCH 063/102] thefuck: add nushell integration --- modules/programs/thefuck.nix | 14 ++++++++++++++ .../programs/thefuck/integration-disabled.nix | 3 +++ .../programs/thefuck/integration-enabled.nix | 6 ++++++ 3 files changed, 23 insertions(+) diff --git a/modules/programs/thefuck.nix b/modules/programs/thefuck.nix index 2cad4c33..ab56ea01 100644 --- a/modules/programs/thefuck.nix +++ b/modules/programs/thefuck.nix @@ -32,6 +32,14 @@ with lib; Whether to enable Zsh integration. ''; }; + + enableNushellIntegration = mkOption { + default = true; + type = types.bool; + description = '' + Whether to enable Nushell integration. + ''; + }; }; config = let @@ -66,5 +74,11 @@ with lib; }; programs.zsh.initExtra = mkIf cfg.enableZshIntegration shEvalCmd; + + programs.nushell = mkIf cfg.enableNushellIntegration { + extraConfig = '' + alias fuck = ${cfg.package}/bin/thefuck $"(history | last 1 | get command | get 0)" + ''; + }; }; } diff --git a/tests/modules/programs/thefuck/integration-disabled.nix b/tests/modules/programs/thefuck/integration-disabled.nix index 9a55efac..45696359 100644 --- a/tests/modules/programs/thefuck/integration-disabled.nix +++ b/tests/modules/programs/thefuck/integration-disabled.nix @@ -6,8 +6,10 @@ thefuck.enableBashIntegration = false; thefuck.enableFishIntegration = false; thefuck.enableZshIntegration = false; + thefuck.enableNushellIntegration = false; bash.enable = true; zsh.enable = true; + nushell.enable = true; }; test.stubs.thefuck = { }; @@ -16,5 +18,6 @@ assertFileNotRegex home-files/.bashrc '@thefuck@/bin/thefuck' assertPathNotExists home-files/.config/fish/functions/fuck.fish assertFileNotRegex home-files/.zshrc '@thefuck@/bin/thefuck' + assertFileNotRegex home-files/.config/nushell/config.nu '@thefuck@/bin/thefuck' ''; } diff --git a/tests/modules/programs/thefuck/integration-enabled.nix b/tests/modules/programs/thefuck/integration-enabled.nix index 79cadaf8..54d6b794 100644 --- a/tests/modules/programs/thefuck/integration-enabled.nix +++ b/tests/modules/programs/thefuck/integration-enabled.nix @@ -6,6 +6,7 @@ bash.enable = true; fish.enable = true; zsh.enable = true; + nushell.enable = true; }; test.stubs.thefuck = { }; @@ -33,5 +34,10 @@ assertFileContains \ home-files/.zshrc \ 'eval "$(@thefuck@/bin/thefuck '"'"'--alias'"'"')"' + + assertFileExists home-files/.config/nushell/config.nu + assertFileContains \ + home-files/.config/nushell/config.nu \ + 'alias fuck = @thefuck@/bin/thefuck $"(history | last 1 | get command | get 0)"' ''; } From b8d81ef15ed8ec4c72ffc610279d39aa0c4ccbf0 Mon Sep 17 00:00:00 2001 From: Lichthagel Date: Mon, 29 Apr 2024 15:49:58 +0200 Subject: [PATCH 064/102] mpv: add extraInput option --- modules/programs/mpv.nix | 21 +++++++++++++++++-- .../mpv-example-settings-expected-bindings | 3 ++- .../programs/mpv/mpv-example-settings.nix | 4 ++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/modules/programs/mpv.nix b/modules/programs/mpv.nix index eb9c9c4a..26cad111 100644 --- a/modules/programs/mpv.nix +++ b/modules/programs/mpv.nix @@ -176,6 +176,20 @@ in { } ''; }; + + extraInput = mkOption { + description = '' + Additional lines that are appended to {file}`$XDG_CONFIG_HOME/mpv/input.conf`. + See {manpage}`mpv(1)` for the full list of options. + ''; + type = with types; lines; + default = ""; + example = '' + esc quit #! Quit + # script-binding uosc/video #! Video tracks + # additional comments + ''; + }; }; }; @@ -199,8 +213,11 @@ in { ${optionalString (cfg.profiles != { }) (renderProfiles cfg.profiles)} ''; }) - (mkIf (cfg.bindings != { }) { - xdg.configFile."mpv/input.conf".text = renderBindings cfg.bindings; + (mkIf (cfg.bindings != { } || cfg.extraInput != "") { + xdg.configFile."mpv/input.conf".text = mkMerge [ + (mkIf (cfg.bindings != { }) (renderBindings cfg.bindings)) + (mkIf (cfg.extraInput != "") cfg.extraInput) + ]; }) { xdg.configFile = mapAttrs' (name: value: diff --git a/tests/modules/programs/mpv/mpv-example-settings-expected-bindings b/tests/modules/programs/mpv/mpv-example-settings-expected-bindings index 7a2ee13b..d4ff9c4d 100644 --- a/tests/modules/programs/mpv/mpv-example-settings-expected-bindings +++ b/tests/modules/programs/mpv/mpv-example-settings-expected-bindings @@ -1,3 +1,4 @@ Alt+0 set window-scale 0.5 WHEEL_DOWN seek -10 -WHEEL_UP seek 10 \ No newline at end of file +WHEEL_UP seek 10 +# script-binding uosc/video #! Video tracks diff --git a/tests/modules/programs/mpv/mpv-example-settings.nix b/tests/modules/programs/mpv/mpv-example-settings.nix index 9974aff6..002e071c 100644 --- a/tests/modules/programs/mpv/mpv-example-settings.nix +++ b/tests/modules/programs/mpv/mpv-example-settings.nix @@ -12,6 +12,10 @@ "Alt+0" = "set window-scale 0.5"; }; + extraInput = '' + # script-binding uosc/video #! Video tracks + ''; + config = { force-window = true; ytdl-format = "bestvideo+bestaudio"; From 08d3cbfe4d400dad74e54815127fd67c76608a55 Mon Sep 17 00:00:00 2001 From: IldenH Date: Thu, 25 Apr 2024 19:53:11 +0200 Subject: [PATCH 065/102] firefox: update extensions option description --- modules/programs/firefox.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix index cf62f82c..1370d4c2 100644 --- a/modules/programs/firefox.nix +++ b/modules/programs/firefox.nix @@ -683,6 +683,11 @@ in { Note that it is necessary to manually enable these extensions inside Firefox after the first installation. + + To automatically enable extensions add + `"extensions.autoDisableScopes" = 0;` + to + [{option}`programs.firefox.profiles..settings`](#opt-programs.firefox.profiles._name_.settings) ''; }; From ba97ffcfb2bd3ef026bb0a14d8808e9926f57fd7 Mon Sep 17 00:00:00 2001 From: Michael Thomas Date: Mon, 29 Apr 2024 20:07:27 +0200 Subject: [PATCH 066/102] Translate using Weblate (French) Currently translated at 100.0% (37 of 37 strings) Co-authored-by: Michael Thomas Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fr/ Translation: Home Manager/Home Manager CLI --- home-manager/po/fr.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home-manager/po/fr.po b/home-manager/po/fr.po index 1c9388eb..de1c061b 100644 --- a/home-manager/po/fr.po +++ b/home-manager/po/fr.po @@ -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-03-04 06:44+0000\n" -"Last-Translator: Alexis Rossfelder \n" +"PO-Revision-Date: 2024-04-29 18:07+0000\n" +"Last-Translator: Michael Thomas \n" "Language-Team: French \n" "Language: fr\n" @@ -17,12 +17,12 @@ 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.5-dev\n" +"X-Generator: Weblate 5.5.2\n" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s : argument manquant pour %s" #: home-manager/home-manager:64 msgid "No configuration file found at %s" From 7ec0ae18cda5e3aae80996d35f6d0ebd418f1ac8 Mon Sep 17 00:00:00 2001 From: Kento Okamoto Date: Mon, 29 Apr 2024 20:07:28 +0200 Subject: [PATCH 067/102] Translate using Weblate (Japanese) Currently translated at 89.1% (33 of 37 strings) Co-authored-by: Kento Okamoto Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/ Translation: Home Manager/Home Manager CLI --- home-manager/po/ja.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home-manager/po/ja.po b/home-manager/po/ja.po index 5d0d15d8..17af07a8 100644 --- a/home-manager/po/ja.po +++ b/home-manager/po/ja.po @@ -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-02-16 22:01+0000\n" -"Last-Translator: Robert Helgesson \n" +"PO-Revision-Date: 2024-04-29 18:07+0000\n" +"Last-Translator: Kento Okamoto \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -17,12 +17,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.4\n" +"X-Generator: Weblate 5.5.2\n" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s: %s の引数がありません" #: home-manager/home-manager:64 msgid "No configuration file found at %s" From 1a91cb7cdbcf6b18c27bbead57241baf279d4513 Mon Sep 17 00:00:00 2001 From: Gabriel Birke Date: Mon, 29 Apr 2024 23:54:54 +0200 Subject: [PATCH 068/102] neomutt: allow binds to override vimKeys In the generated neomutt configuration, source the optional `vim-keys.rc` before applying the `binds` configuration, to allow the user to override keybindings from `vim-keys.rc`. Adapt the test files to account for the empty space left by the unset `vimKeys` option. --- modules/programs/neomutt.nix | 6 +++--- tests/modules/programs/neomutt/neomutt-expected.conf | 4 ++-- .../programs/neomutt/neomutt-not-primary-expected.conf | 4 ++-- .../programs/neomutt/neomutt-with-binds-expected.conf | 4 ++-- .../programs/neomutt/neomutt-with-imap-expected.conf | 4 ++-- .../neomutt/neomutt-with-imap-type-mailboxes-expected.conf | 4 ++-- .../neomutt/neomutt-with-named-mailboxes-expected.conf | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/modules/programs/neomutt.nix b/modules/programs/neomutt.nix index 069c4de8..588b801e 100644 --- a/modules/programs/neomutt.nix +++ b/modules/programs/neomutt.nix @@ -457,15 +457,15 @@ in { set delete = yes + ${optionalString cfg.vimKeys + "source ${pkgs.neomutt}/share/doc/neomutt/vim-keys/vim-keys.rc"} + # Binds ${bindSection} # Macros ${macroSection} - ${optionalString cfg.vimKeys - "source ${pkgs.neomutt}/share/doc/neomutt/vim-keys/vim-keys.rc"} - # Register accounts ${ optionalString (accountCommandNeeded) '' diff --git a/tests/modules/programs/neomutt/neomutt-expected.conf b/tests/modules/programs/neomutt/neomutt-expected.conf index 94c13b29..2a45234d 100644 --- a/tests/modules/programs/neomutt/neomutt-expected.conf +++ b/tests/modules/programs/neomutt/neomutt-expected.conf @@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text set delete = yes + + # Binds # Macros - - # Register accounts # register account hm@example.com mailboxes "/home/hm-user/Mail/hm@example.com/Inbox" diff --git a/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf b/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf index cffdace6..47dc8173 100644 --- a/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf +++ b/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf @@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text set delete = yes + + # Binds # Macros - - # Register accounts # register account hm-account mailboxes "/home/hm-user/Mail/hm-account/Inbox" diff --git a/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf b/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf index 64ea6890..05736749 100644 --- a/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf +++ b/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf @@ -9,6 +9,8 @@ alternative_order text/enriched text/plain text set delete = yes + + # Binds bind editor "complete-query" bind index,pager \Cp "sidebar-prev" @@ -17,8 +19,6 @@ bind index,pager \Cp "sidebar-prev" macro index s "?" macro index,pager c "?^K=" - - # Register accounts # register account hm@example.com mailboxes "/home/hm-user/Mail/hm@example.com/Inbox" diff --git a/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf b/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf index 005fd5b0..02f03f6e 100644 --- a/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf +++ b/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf @@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text set delete = yes + + # Binds # Macros - - # Register accounts set account_command = '/nix/store/00000000000000000000000000000000-account-command.sh/bin/account-command.sh' # register account hm@example.com diff --git a/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf b/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf index c6838d4c..51c6c6b9 100644 --- a/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf +++ b/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf @@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text set delete = yes + + # Binds # Macros - - # Register accounts set account_command = '/nix/store/00000000000000000000000000000000-account-command.sh/bin/account-command.sh' # register account hm@example.com diff --git a/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf b/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf index a166b355..605b5ed6 100644 --- a/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf +++ b/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf @@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text set delete = yes + + # Binds # Macros - - # Register accounts # register account hm@example.com named-mailboxes "someCustomName" "/home/hm-user/Mail/hm@example.com/Inbox" From 9fdd301a5e4d8cf4d4cf3f990e799000a54a3737 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Fri, 26 Apr 2024 21:31:43 -0500 Subject: [PATCH 069/102] lib/generators: toHyprconf init Create shared hyprlang generator for mainting Hyprland ecosystem. --- modules/lib/generators.nix | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/modules/lib/generators.nix b/modules/lib/generators.nix index 9cb0e1cf..2aebd92c 100644 --- a/modules/lib/generators.nix +++ b/modules/lib/generators.nix @@ -1,6 +1,49 @@ { lib }: { + toHyprconf = { attrs, indentLevel ? 0, importantPrefixes ? [ "$" ], }: + let + inherit (lib) + all concatMapStringsSep concatStrings concatStringsSep filterAttrs foldl + generators hasPrefix isAttrs isList mapAttrsToList replicate; + + initialIndent = concatStrings (replicate indentLevel " "); + + toHyprconf' = indent: attrs: + let + sections = + filterAttrs (n: v: isAttrs v || (isList v && all isAttrs v)) attrs; + + mkSection = n: attrs: + if lib.isList attrs then + (concatMapStringsSep "\n" (a: mkSection n a) attrs) + else '' + ${indent}${n} { + ${toHyprconf' " ${indent}" attrs}${indent}} + ''; + + mkFields = generators.toKeyValue { + listsAsDuplicateKeys = true; + inherit indent; + }; + + allFields = + filterAttrs (n: v: !(isAttrs v || (isList v && all isAttrs v))) + attrs; + + isImportantField = n: _: + foldl (acc: prev: if hasPrefix prev n then true else acc) false + importantPrefixes; + + importantFields = filterAttrs isImportantField allFields; + + fields = builtins.removeAttrs allFields + (mapAttrsToList (n: _: n) importantFields); + in mkFields importantFields + + concatStringsSep "\n" (mapAttrsToList mkSection sections) + + mkFields fields; + in toHyprconf' initialIndent attrs; + toKDL = { }: let inherit (lib) concatStringsSep splitString mapAttrsToList any; From 4fe1f064bd1a37754266eb4c190eac784ca4aaa9 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Fri, 26 Apr 2024 21:32:08 -0500 Subject: [PATCH 070/102] hyprland: use lib.generators.toHyprconf --- modules/services/window-managers/hyprland.nix | 82 ++++++----------- .../window-managers/hyprland/default.nix | 2 + .../hyprland/multiple-devices-config.conf | 60 +++++++++++++ .../hyprland/multiple-devices-config.nix | 88 +++++++++++++++++++ .../hyprland/simple-config.conf | 9 +- .../hyprland/sourceFirst-false-config.conf | 13 +++ .../hyprland/sourceFirst-false-config.nix | 34 +++++++ 7 files changed, 229 insertions(+), 59 deletions(-) create mode 100644 tests/modules/services/window-managers/hyprland/multiple-devices-config.conf create mode 100644 tests/modules/services/window-managers/hyprland/multiple-devices-config.nix create mode 100644 tests/modules/services/window-managers/hyprland/sourceFirst-false-config.conf create mode 100644 tests/modules/services/window-managers/hyprland/sourceFirst-false-config.nix diff --git a/modules/services/window-managers/hyprland.nix b/modules/services/window-managers/hyprland.nix index 4401998f..4f1c9e92 100644 --- a/modules/services/window-managers/hyprland.nix +++ b/modules/services/window-managers/hyprland.nix @@ -9,7 +9,6 @@ let systemdActivation = '' exec-once = ${pkgs.dbus}/bin/dbus-update-activation-environment --systemd ${variables} ${extraCommands} ''; - in { meta.maintainers = [ lib.maintainers.fufexan ]; @@ -178,6 +177,16 @@ in { '' // { default = true; }; + + importantPrefixes = lib.mkOption { + type = with lib.types; listOf str; + default = [ "$" "bezier" "name" ] + ++ lib.optionals cfg.sourceFirst [ "source" ]; + example = [ "$" "bezier" ]; + description = '' + List of prefix of attributes to source at the top of the config. + ''; + }; }; config = lib.mkIf cfg.enable { @@ -199,65 +208,28 @@ in { shouldGenerate = cfg.systemd.enable || cfg.extraConfig != "" || cfg.settings != { } || cfg.plugins != [ ]; - toHyprconf = with lib; - attrs: indentLevel: - let - indent = concatStrings (replicate indentLevel " "); - - sections = filterAttrs (n: v: isAttrs v && n != "device") attrs; - - mkSection = n: attrs: '' - ${indent}${n} { - ${toHyprconf attrs (indentLevel + 1)}${indent}} - ''; - - mkDeviceCategory = device: '' - ${indent}device { - name=${device.name} - ${ - toHyprconf (filterAttrs (n: _: "name" != n) device) - (indentLevel + 1) - }${indent}} - ''; - - deviceCategory = lib.optionalString (hasAttr "device" attrs) - (if isList attrs.device then - (concatMapStringsSep "\n" (d: mkDeviceCategory d) attrs.device) - else - mkDeviceCategory attrs.device); - - mkFields = generators.toKeyValue { - listsAsDuplicateKeys = true; - inherit indent; - }; - allFields = filterAttrs (n: v: !(isAttrs v) && n != "device") attrs; - - importantFields = filterAttrs (n: _: - (hasPrefix "$" n) || (hasPrefix "bezier" n) - || (cfg.sourceFirst && (hasPrefix "source" n))) allFields; - - fields = builtins.removeAttrs allFields - (mapAttrsToList (n: _: n) importantFields); - in mkFields importantFields + deviceCategory - + concatStringsSep "\n" (mapAttrsToList mkSection sections) - + mkFields fields; - pluginsToHyprconf = plugins: - toHyprconf { - plugin = let - mkEntry = entry: - if lib.types.package.check entry then - "${entry}/lib/lib${entry.pname}.so" - else - entry; - in map mkEntry cfg.plugins; - } 0; + lib.hm.generators.toHyprconf { + attrs = { + plugin = let + mkEntry = entry: + if lib.types.package.check entry then + "${entry}/lib/lib${entry.pname}.so" + else + entry; + in map mkEntry cfg.plugins; + }; + inherit (cfg) importantPrefixes; + }; in lib.mkIf shouldGenerate { text = lib.optionalString cfg.systemd.enable systemdActivation + lib.optionalString (cfg.plugins != [ ]) (pluginsToHyprconf cfg.plugins) - + lib.optionalString (cfg.settings != { }) (toHyprconf cfg.settings 0) - + lib.optionalString (cfg.extraConfig != "") cfg.extraConfig; + + lib.optionalString (cfg.settings != { }) + (lib.hm.generators.toHyprconf { + attrs = cfg.settings; + inherit (cfg) importantPrefixes; + }) + lib.optionalString (cfg.extraConfig != "") cfg.extraConfig; onChange = lib.mkIf (cfg.package != null) '' ( # Execute in subshell so we don't poision environment with vars diff --git a/tests/modules/services/window-managers/hyprland/default.nix b/tests/modules/services/window-managers/hyprland/default.nix index 96cae5e4..ae431939 100644 --- a/tests/modules/services/window-managers/hyprland/default.nix +++ b/tests/modules/services/window-managers/hyprland/default.nix @@ -1,4 +1,6 @@ { hyprland-simple-config = ./simple-config.nix; + hyprland-multiple-devices-config = ./multiple-devices-config.nix; + hyprland-sourceFirst-false-config = ./sourceFirst-false-config.nix; hyprland-inconsistent-config = ./inconsistent-config.nix; } diff --git a/tests/modules/services/window-managers/hyprland/multiple-devices-config.conf b/tests/modules/services/window-managers/hyprland/multiple-devices-config.conf new file mode 100644 index 00000000..5d910297 --- /dev/null +++ b/tests/modules/services/window-managers/hyprland/multiple-devices-config.conf @@ -0,0 +1,60 @@ +exec-once = /nix/store/00000000000000000000000000000000-dbus/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target +plugin=/path/to/plugin1 +plugin=/nix/store/00000000000000000000000000000000-foo/lib/libfoo.so +$mod=SUPER +bezier=smoothOut, 0.36, 0, 0.66, -0.56 +bezier=smoothIn, 0.25, 1, 0.5, 1 +bezier=overshot, 0.4,0.8,0.2,1.2 +source=sourced.conf +animations { + animation=border, 1, 2, smoothIn + animation=fade, 1, 4, smoothOut + animation=windows, 1, 3, overshot, popin 80% + enabled=true +} + +decoration { + col.shadow=rgba(00000099) + shadow_offset=0 5 +} + +device { + name=some:device + enable=true +} + +device { + name=some:device-secondary + enable=true +} + +input { + touchpad { + scroll_factor=0.300000 + } + accel_profile=flat + follow_mouse=1 + kb_layout=ro +} + +plugin { + plugin1 { + section { + other=dummy setting + } + dummy=plugin setting + } +} +bindm=$mod, mouse:272, movewindow +bindm=$mod, mouse:273, resizewindow +bindm=$mod ALT, mouse:272, resizewindow +# window resize +bind = $mod, S, submap, resize + +submap = resize +binde = , right, resizeactive, 10 0 +binde = , left, resizeactive, -10 0 +binde = , up, resizeactive, 0 -10 +binde = , down, resizeactive, 0 10 +bind = , escape, submap, reset +submap = reset diff --git a/tests/modules/services/window-managers/hyprland/multiple-devices-config.nix b/tests/modules/services/window-managers/hyprland/multiple-devices-config.nix new file mode 100644 index 00000000..86d60c63 --- /dev/null +++ b/tests/modules/services/window-managers/hyprland/multiple-devices-config.nix @@ -0,0 +1,88 @@ +{ config, lib, ... }: + +{ + wayland.windowManager.hyprland = { + enable = true; + package = lib.makeOverridable + (attrs: config.lib.test.mkStubPackage { name = "hyprland"; }) { }; + plugins = + [ "/path/to/plugin1" (config.lib.test.mkStubPackage { name = "foo"; }) ]; + settings = { + source = [ "sourced.conf" ]; + + decoration = { + shadow_offset = "0 5"; + "col.shadow" = "rgba(00000099)"; + }; + + "$mod" = "SUPER"; + + animations = { + enabled = true; + animation = [ + "border, 1, 2, smoothIn" + "fade, 1, 4, smoothOut" + "windows, 1, 3, overshot, popin 80%" + ]; + }; + + bezier = [ + "smoothOut, 0.36, 0, 0.66, -0.56" + "smoothIn, 0.25, 1, 0.5, 1" + "overshot, 0.4,0.8,0.2,1.2" + ]; + + input = { + kb_layout = "ro"; + follow_mouse = 1; + accel_profile = "flat"; + touchpad = { scroll_factor = 0.3; }; + }; + + bindm = [ + # mouse movements + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod ALT, mouse:272, resizewindow" + ]; + + device = [ + { + name = "some:device"; + enable = true; + } + { + name = "some:device-secondary"; + enable = true; + } + ]; + + plugin = { + plugin1 = { + dummy = "plugin setting"; + section = { other = "dummy setting"; }; + }; + }; + }; + extraConfig = '' + # window resize + bind = $mod, S, submap, resize + + submap = resize + binde = , right, resizeactive, 10 0 + binde = , left, resizeactive, -10 0 + binde = , up, resizeactive, 0 -10 + binde = , down, resizeactive, 0 10 + bind = , escape, submap, reset + submap = reset + ''; + }; + + nmt.script = '' + config=home-files/.config/hypr/hyprland.conf + assertFileExists "$config" + + normalizedConfig=$(normalizeStorePaths "$config") + assertFileContent "$normalizedConfig" ${./multiple-devices-config.conf} + ''; +} diff --git a/tests/modules/services/window-managers/hyprland/simple-config.conf b/tests/modules/services/window-managers/hyprland/simple-config.conf index 9b15ba32..29dcd7cd 100644 --- a/tests/modules/services/window-managers/hyprland/simple-config.conf +++ b/tests/modules/services/window-managers/hyprland/simple-config.conf @@ -6,10 +6,6 @@ bezier=smoothOut, 0.36, 0, 0.66, -0.56 bezier=smoothIn, 0.25, 1, 0.5, 1 bezier=overshot, 0.4,0.8,0.2,1.2 source=sourced.conf -device { - name=some:device - enable=true -} animations { animation=border, 1, 2, smoothIn animation=fade, 1, 4, smoothOut @@ -22,6 +18,11 @@ decoration { shadow_offset=0 5 } +device { + name=some:device + enable=true +} + input { touchpad { scroll_factor=0.300000 diff --git a/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.conf b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.conf new file mode 100644 index 00000000..3dc8c39c --- /dev/null +++ b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.conf @@ -0,0 +1,13 @@ +exec-once = /nix/store/00000000000000000000000000000000-dbus/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target +bezier=smoothOut, 0.36, 0, 0.66, -0.56 +bezier=smoothIn, 0.25, 1, 0.5, 1 +bezier=overshot, 0.4,0.8,0.2,1.2 +input { + touchpad { + scroll_factor=0.300000 + } + accel_profile=flat + follow_mouse=1 + kb_layout=ro +} +source=sourced.conf diff --git a/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.nix b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.nix new file mode 100644 index 00000000..4161cd75 --- /dev/null +++ b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.nix @@ -0,0 +1,34 @@ +{ config, lib, ... }: + +{ + wayland.windowManager.hyprland = { + enable = true; + package = lib.makeOverridable + (attrs: config.lib.test.mkStubPackage { name = "hyprland"; }) { }; + settings = { + source = [ "sourced.conf" ]; + + bezier = [ + "smoothOut, 0.36, 0, 0.66, -0.56" + "smoothIn, 0.25, 1, 0.5, 1" + "overshot, 0.4,0.8,0.2,1.2" + ]; + + input = { + kb_layout = "ro"; + follow_mouse = 1; + accel_profile = "flat"; + touchpad = { scroll_factor = 0.3; }; + }; + }; + sourceFirst = false; + }; + + nmt.script = '' + config=home-files/.config/hypr/hyprland.conf + assertFileExists "$config" + + normalizedConfig=$(normalizeStorePaths "$config") + assertFileContent "$normalizedConfig" ${./sourceFirst-false-config.conf} + ''; +} From 0125041fc9ca3127fe95cf53f15c49c482ebaf70 Mon Sep 17 00:00:00 2001 From: Yomi Ikuru Date: Sat, 27 Apr 2024 16:04:12 +0100 Subject: [PATCH 071/102] maintainers: add abayomi185 as maintainer --- modules/lib/maintainers.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index f3dd83fe..28327916 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -7,6 +7,12 @@ # [1] https://github.com/NixOS/nixpkgs/blob/fca0d6e093c82b31103dc0dacc48da2a9b06e24b/maintainers/maintainer-list.nix#LC1 { + abayomi185 = { + name = "Yomi"; + email = "yomi+nix@yomitosh.com"; + github = "abayomi185"; + githubId = 21103047; + }; amesgen = { name = "amesgen"; email = "amesgen@amesgen.de"; From 563265988637c27ba3abe39acb9be3ba2cb35a29 Mon Sep 17 00:00:00 2001 From: Yomi Ikuru Date: Sat, 27 Apr 2024 16:03:11 +0100 Subject: [PATCH 072/102] swaync: add module Co-authored-by: Ryan Horiguchi --- modules/misc/news.nix | 12 +++ modules/modules.nix | 1 + modules/services/swaync.nix | 113 ++++++++++++++++++++++ tests/default.nix | 1 + tests/modules/services/swaync/default.nix | 1 + tests/modules/services/swaync/swaync.nix | 35 +++++++ 6 files changed, 163 insertions(+) create mode 100644 modules/services/swaync.nix create mode 100644 tests/modules/services/swaync/default.nix create mode 100644 tests/modules/services/swaync/swaync.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index f8617f54..b13a9d33 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1549,6 +1549,18 @@ in { your physical disc (HDD/SSD). ''; } + + { + time = "2024-04-29T22:01:51+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.swaync'. + + SwayNotificationCenter is a simple notification daemon with a GTK GUI + for notifications and the control center. See + https://github.com/ErikReider/SwayNotificationCenter for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index b1e8b9b4..d526c352 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -355,6 +355,7 @@ let ./services/stalonetray.nix ./services/status-notifier-watcher.nix ./services/swayidle.nix + ./services/swaync.nix ./services/swayosd.nix ./services/sxhkd.nix ./services/syncthing.nix diff --git a/modules/services/swaync.nix b/modules/services/swaync.nix new file mode 100644 index 00000000..bb1f9d57 --- /dev/null +++ b/modules/services/swaync.nix @@ -0,0 +1,113 @@ +{ pkgs, lib, config, ... }: + +let + + cfg = config.services.swaync; + + jsonFormat = pkgs.formats.json { }; + +in { + meta.maintainers = [ lib.hm.maintainers.abayomi185 ]; + + options.services.swaync = { + enable = lib.mkEnableOption "Swaync notification daemon"; + + package = lib.mkPackageOption pkgs "swaynotificationcenter" { }; + + style = lib.mkOption { + type = lib.types.nullOr (lib.types.either lib.types.path lib.types.lines); + default = null; + example = '' + .notification-row { + outline: none; + } + + .notification-row:focus, + .notification-row:hover { + background: @noti-bg-focus; + } + + .notification { + border-radius: 12px; + margin: 6px 12px; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7), + 0 2px 6px 2px rgba(0, 0, 0, 0.3); + padding: 0; + } + ''; + description = '' + CSS style of the bar. See + + for the documentation. + + If the value is set to a path literal, then the path will be used as the CSS file. + ''; + }; + + settings = lib.mkOption { + type = jsonFormat.type; + default = { }; + example = lib.literalExpression '' + { + positionX = "right"; + positionY = "top"; + layer = "overlay"; + control-center-layer = "top"; + layer-shell = true; + cssPriority = "application"; + control-center-margin-top = 0; + control-center-margin-bottom = 0; + control-center-margin-right = 0; + control-center-margin-left = 0; + notification-2fa-action = true; + notification-inline-replies = false; + notification-icon-size = 64; + notification-body-image-height = 100; + notification-body-image-width = 200 + }; + ''; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/swaync/config.json`. + See + + for the documentation. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + # at-spi2-core is to minimize journalctl noise of: + # "AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files" + home.packages = [ cfg.package pkgs.at-spi2-core ]; + + xdg.configFile = { + "swaync/config.json".source = + jsonFormat.generate "config.json" cfg.settings; + "swaync/style.css" = lib.mkIf (cfg.style != null) { + source = if lib.isStorePath cfg.style then + cfg.style + else + pkgs.writeText "swaync/style.css" cfg.style; + }; + }; + + systemd.user.services.swaync = { + Unit = { + Description = "Swaync notification daemon"; + Documentation = "https://github.com/ErikReider/SwayNotificationCenter"; + PartOf = [ "graphical-session.target" ]; + After = [ "graphical-session-pre.target" ]; + ConditionEnvironment = "WAYLAND_DISPLAY"; + }; + + Service = { + Type = "dbus"; + BusName = "org.freedesktop.Notifications"; + ExecStart = "${cfg.package}/bin/swaync"; + Restart = "on-failure"; + }; + + Install.WantedBy = [ "graphical-session.target" ]; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 4b7b6ebf..15a54f08 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -260,6 +260,7 @@ in import nmtSrc { ./modules/services/screen-locker ./modules/services/signaturepdf ./modules/services/swayidle + ./modules/services/swaync ./modules/services/swayosd ./modules/services/sxhkd ./modules/services/syncthing/linux diff --git a/tests/modules/services/swaync/default.nix b/tests/modules/services/swaync/default.nix new file mode 100644 index 00000000..d5682daa --- /dev/null +++ b/tests/modules/services/swaync/default.nix @@ -0,0 +1 @@ +{ swaync = ./swaync.nix; } diff --git a/tests/modules/services/swaync/swaync.nix b/tests/modules/services/swaync/swaync.nix new file mode 100644 index 00000000..ceb3bf06 --- /dev/null +++ b/tests/modules/services/swaync/swaync.nix @@ -0,0 +1,35 @@ +{ config, ... }: + +{ + services.swaync = { + enable = true; + package = config.lib.test.mkStubPackage { + name = "swaync"; + outPath = "@swaync@"; + }; + }; + + nmt.script = '' + assertFileContent \ + home-files/.config/systemd/user/swaync.service \ + ${ + builtins.toFile "swaync.service" '' + [Install] + WantedBy=graphical-session.target + + [Service] + BusName=org.freedesktop.Notifications + ExecStart=@swaync@/bin/swaync + Restart=on-failure + Type=dbus + + [Unit] + After=graphical-session-pre.target + ConditionEnvironment=WAYLAND_DISPLAY + Description=Swaync notification daemon + Documentation=https://github.com/ErikReider/SwayNotificationCenter + PartOf=graphical-session.target + '' + } + ''; +} From f8e6694edabe4aaa7a85aac47b43ea5d978b116d Mon Sep 17 00:00:00 2001 From: Lichthagel Date: Mon, 29 Apr 2024 23:13:35 +0200 Subject: [PATCH 073/102] files: make collision error message more helpful Most importantly, also indicate how to use file backup for NixOS and nix-darwin modules. --- modules/files/check-link-targets.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/files/check-link-targets.sh b/modules/files/check-link-targets.sh index c3200d33..215ff6c3 100644 --- a/modules/files/check-link-targets.sh +++ b/modules/files/check-link-targets.sh @@ -48,6 +48,12 @@ for sourcePath in "$@" ; do done if [[ -v collision ]] ; then - errorEcho "Please move the above files and try again or use 'home-manager switch -b backup' to back up existing files automatically." + errorEcho "Please do one of the following: +- Move or remove the above files and try again. +- In standalone mode, use 'home-manager switch -b backup' to back up + files automatically. +- When used as a NixOS or nix-darwin module, set + 'home-manager.backupFileExtension' + to, for example, 'backup' and rebuild." exit 1 fi From 3c0df2a7e43b432b739d8e9d289dcb362a44b308 Mon Sep 17 00:00:00 2001 From: Vonixxx Date: Sun, 21 Apr 2024 13:12:43 +0200 Subject: [PATCH 074/102] freetube: add module --- modules/misc/news.nix | 11 ++++ modules/modules.nix | 1 + modules/programs/freetube.nix | 60 +++++++++++++++++++ tests/default.nix | 1 + .../programs/freetube/basic-configuration.db | 8 +++ .../programs/freetube/basic-configuration.nix | 30 ++++++++++ tests/modules/programs/freetube/default.nix | 1 + 7 files changed, 112 insertions(+) create mode 100644 modules/programs/freetube.nix create mode 100644 tests/modules/programs/freetube/basic-configuration.db create mode 100644 tests/modules/programs/freetube/basic-configuration.nix create mode 100644 tests/modules/programs/freetube/default.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index b13a9d33..b189fb00 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1561,6 +1561,17 @@ in { https://github.com/ErikReider/SwayNotificationCenter for more. ''; } + + { + time = "2024-04-30T18:28:28+00:00"; + message = '' + A new module is available: 'programs.freetube'. + + FreeTube is a YouTube client built around using YouTube more + privately. You can enjoy your favorite content and creators without + your habits being tracked. See https://freetubeapp.io/ for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index d526c352..e14c26d5 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -92,6 +92,7 @@ let ./programs/firefox.nix ./programs/fish.nix ./programs/foot.nix + ./programs/freetube.nix ./programs/fuzzel.nix ./programs/fzf.nix ./programs/gallery-dl.nix diff --git a/modules/programs/freetube.nix b/modules/programs/freetube.nix new file mode 100644 index 00000000..77700fe5 --- /dev/null +++ b/modules/programs/freetube.nix @@ -0,0 +1,60 @@ +{ lib, pkgs, config, ... }: + +let + inherit (lib) + concatStringsSep mapAttrsToList mkIf mkEnableOption mkPackageOption mkOption + literalExpression; + + cfg = config.programs.freetube; + + settings = settings: + let + convertSetting = name: value: + builtins.toJSON { + "_id" = name; + "value" = value; + }; + in concatStringsSep "\n" (mapAttrsToList convertSetting settings) + "\n"; +in { + meta.maintainers = with lib.maintainers; [ vonixxx ]; + + options.programs.freetube = { + enable = mkEnableOption "FreeTube, a YT client for Windows, Mac, and Linux"; + + package = mkPackageOption pkgs "freetube" { }; + + settings = mkOption { + type = lib.types.attrs; + default = { }; + example = literalExpression '' + { + allowDashAv1Formats = true; + checkForUpdates = false; + defaultQuality = "1080"; + baseTheme = "catppuccinMocha"; + } + ''; + description = '' + Configuration settings for FreeTube. + + All configurable options can be deduced by enabling them through the + GUI and observing the changes in {file}`settings.db`. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + + xdg.configFile."FreeTube/hm_settings.db" = { + source = pkgs.writeText "hm_settings.db" (settings cfg.settings); + + onChange = let + hmSettingsDb = "${config.xdg.configHome}/FreeTube/hm_settings.db"; + settingsDb = "${config.xdg.configHome}/FreeTube/settings.db"; + in '' + run install -Dm644 $VERBOSE_ARG '${hmSettingsDb}' '${settingsDb}' + ''; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 15a54f08..7f92c2bd 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -190,6 +190,7 @@ in import nmtSrc { ./modules/programs/boxxy ./modules/programs/firefox ./modules/programs/foot + ./modules/programs/freetube ./modules/programs/fuzzel ./modules/programs/getmail ./modules/programs/gnome-terminal diff --git a/tests/modules/programs/freetube/basic-configuration.db b/tests/modules/programs/freetube/basic-configuration.db new file mode 100644 index 00000000..50d43a11 --- /dev/null +++ b/tests/modules/programs/freetube/basic-configuration.db @@ -0,0 +1,8 @@ +{"_id":"allowDashAv1Formats","value":true} +{"_id":"checkForBlogPosts","value":false} +{"_id":"checkForUpdates","value":false} +{"_id":"commentAutoLoadEnabled","value":true} +{"_id":"defaultQuality","value":"1080"} +{"_id":"hideHeaderLogo","value":true} +{"_id":"listType","value":"list"} +{"_id":"useRssFeeds","value":true} diff --git a/tests/modules/programs/freetube/basic-configuration.nix b/tests/modules/programs/freetube/basic-configuration.nix new file mode 100644 index 00000000..a30d3bed --- /dev/null +++ b/tests/modules/programs/freetube/basic-configuration.nix @@ -0,0 +1,30 @@ +{ config, pkgs, ... }: + +{ + programs.freetube = { + enable = true; + settings = { + useRssFeeds = true; + hideHeaderLogo = true; + allowDashAv1Formats = true; + commentAutoLoadEnabled = true; + + checkForUpdates = false; + checkForBlogPosts = false; + + listType = "list"; + defaultQuality = "1080"; + }; + }; + + test.stubs.freetube = { }; + + nmt.script = '' + assertFileExists home-files/.config/FreeTube/hm_settings.db + assertFileContent home-files/.config/FreeTube/hm_settings.db \ + ${./basic-configuration.db} + + assertFileContains activate \ + "install -Dm644 \$VERBOSE_ARG '/home/hm-user/.config/FreeTube/hm_settings.db' '/home/hm-user/.config/FreeTube/settings.db'" + ''; +} diff --git a/tests/modules/programs/freetube/default.nix b/tests/modules/programs/freetube/default.nix new file mode 100644 index 00000000..cb6fd4d2 --- /dev/null +++ b/tests/modules/programs/freetube/default.nix @@ -0,0 +1 @@ +{ freetube-basic-configuration = ./basic-configuration.nix; } From 28ef93bb8e5208ae4230f59efe7b96e115e5ddd2 Mon Sep 17 00:00:00 2001 From: Kaleo Date: Wed, 27 Dec 2023 19:57:51 +0800 Subject: [PATCH 075/102] maintainers: add kaleocheng --- modules/lib/maintainers.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index 28327916..1e988cc2 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -119,6 +119,12 @@ github = "JustinLovinger"; githubId = 7183441; }; + kaleo = { + name = "Kaleo Cheng"; + email = "kaleocheng@gmail.com"; + github = "kaleocheng"; + githubId = 7939352; + }; owm111 = { email = "7798336+owm111@users.noreply.github.com"; name = "Owen McGrath"; From 6d3b6dc9222c12b951169becdf4b0592ee9576ef Mon Sep 17 00:00:00 2001 From: Kaleo Date: Wed, 27 Dec 2023 20:00:49 +0800 Subject: [PATCH 076/102] conky: add module --- modules/misc/news.nix | 12 +++++ modules/modules.nix | 1 + modules/services/conky.nix | 53 +++++++++++++++++++ tests/default.nix | 1 + .../services/conky/basic-configuration.conf | 7 +++ .../services/conky/basic-configuration.nix | 30 +++++++++++ tests/modules/services/conky/default.nix | 1 + 7 files changed, 105 insertions(+) create mode 100644 modules/services/conky.nix create mode 100644 tests/modules/services/conky/basic-configuration.conf create mode 100644 tests/modules/services/conky/basic-configuration.nix create mode 100644 tests/modules/services/conky/default.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index b189fb00..92d3e9f5 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1572,6 +1572,18 @@ in { your habits being tracked. See https://freetubeapp.io/ for more. ''; } + + { + time = "2024-04-30T21:57:23+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.conky'. + + Conky is a system monitor for X. Conky can display just about + anything, either on your root desktop or in its own window. See + https://conky.cc/ for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index e14c26d5..7c81102a 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -279,6 +279,7 @@ let ./services/clipman.nix ./services/clipmenu.nix ./services/comodoro.nix + ./services/conky.nix ./services/copyq.nix ./services/darkman.nix ./services/devilspie2.nix diff --git a/modules/services/conky.nix b/modules/services/conky.nix new file mode 100644 index 00000000..bf7eeea8 --- /dev/null +++ b/modules/services/conky.nix @@ -0,0 +1,53 @@ +{ config, lib, pkgs, ... }: + +let + + cfg = config.services.conky; + +in with lib; { + meta.maintainers = [ hm.maintainers.kaleo ]; + + options = { + services.conky = { + enable = mkEnableOption "Conky, a light-weight system monitor"; + + package = mkPackageOption pkgs "conky" { }; + + extraConfig = lib.mkOption { + type = types.lines; + default = ""; + description = '' + Configuration used by the Conky daemon. Check + for + options. If not set, the default configuration, as described by + {command}`conky --print-config`, will be used. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + assertions = + [ (hm.assertions.assertPlatform "services.conky" pkgs platforms.linux) ]; + + home.packages = [ cfg.package ]; + + systemd.user.services.conky = { + Unit = { + Description = "Conky - Lightweight system monitor"; + After = [ "graphical-session.target" ]; + }; + + Service = { + Restart = "always"; + RestartSec = "3"; + ExecStart = toString ([ "${pkgs.conky}/bin/conky" ] + ++ optional (cfg.extraConfig != "") + "--config ${pkgs.writeText "conky.conf" cfg.extraConfig}"); + }; + + Install.WantedBy = [ "graphical-session.target" ]; + }; + }; +} + diff --git a/tests/default.nix b/tests/default.nix index 7f92c2bd..7b714581 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -225,6 +225,7 @@ in import nmtSrc { ./modules/services/cliphist ./modules/services/clipman ./modules/services/comodoro + ./modules/services/conky ./modules/services/darkman ./modules/services/devilspie2 ./modules/services/dropbox diff --git a/tests/modules/services/conky/basic-configuration.conf b/tests/modules/services/conky/basic-configuration.conf new file mode 100644 index 00000000..010eac37 --- /dev/null +++ b/tests/modules/services/conky/basic-configuration.conf @@ -0,0 +1,7 @@ +conky.text = [[ + S Y S T E M I N F O + $hr + Host:$alignr $nodename + Uptime:$alignr $uptime + RAM:$alignr $mem/$memmax +]] diff --git a/tests/modules/services/conky/basic-configuration.nix b/tests/modules/services/conky/basic-configuration.nix new file mode 100644 index 00000000..479a1923 --- /dev/null +++ b/tests/modules/services/conky/basic-configuration.nix @@ -0,0 +1,30 @@ +{ config, pkgs, ... }: + +{ + services.conky = { + enable = true; + extraConfig = '' + conky.text = [[ + S Y S T E M I N F O + $hr + Host:$alignr $nodename + Uptime:$alignr $uptime + RAM:$alignr $mem/$memmax + ]] + ''; + }; + + test.stubs.conky = { }; + + nmt.script = '' + serviceFile="$TESTED/home-files/.config/systemd/user/conky.service" + + assertFileExists $serviceFile + assertFileRegex "$serviceFile" \ + 'ExecStart=@conky@/bin/conky --config .*conky.conf' + + configFile="$(grep -o '/nix.*conky.conf' "$serviceFile")" + assertFileContent "$configFile" \ + ${./basic-configuration.conf} + ''; +} diff --git a/tests/modules/services/conky/default.nix b/tests/modules/services/conky/default.nix new file mode 100644 index 00000000..e4ca38e0 --- /dev/null +++ b/tests/modules/services/conky/default.nix @@ -0,0 +1 @@ +{ conky-basic-configuration = ./basic-configuration.nix; } From 67d0e7db8827abc3634c02de62f3e651a0c92d8c Mon Sep 17 00:00:00 2001 From: Keivan Date: Thu, 2 May 2024 12:58:30 +0200 Subject: [PATCH 077/102] Translate using Weblate (Persian) Currently translated at 11.1% (2 of 18 strings) Translate using Weblate (Persian) Currently translated at 100.0% (37 of 37 strings) Co-authored-by: Keivan Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fa/ Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/fa/ Translation: Home Manager/Home Manager CLI Translation: Home Manager/Home Manager Modules --- home-manager/po/fa.po | 97 ++++++++++++++++++++++++++++++------------- modules/po/fa.po | 13 +++--- 2 files changed, 75 insertions(+), 35 deletions(-) diff --git a/home-manager/po/fa.po b/home-manager/po/fa.po index e4255a17..b3aceeb1 100644 --- a/home-manager/po/fa.po +++ b/home-manager/po/fa.po @@ -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: 2023-05-28 22:49+0000\n" -"Last-Translator: Mohammad Abdolirad \n" +"PO-Revision-Date: 2024-05-02 10:58+0000\n" +"Last-Translator: Keivan \n" "Language-Team: Persian \n" "Language: fa\n" @@ -17,16 +17,16 @@ 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 4.18-dev\n" +"X-Generator: Weblate 5.5.3-dev\n" #. translators: For example: "home-manager: missing argument for --cores" #: home-manager/home-manager:16 msgid "%s: missing argument for %s" -msgstr "" +msgstr "%s: مقدار %s یافت نشد" #: home-manager/home-manager:64 msgid "No configuration file found at %s" -msgstr "هیچ فایل تنظیماتی در %s پیدا نشد" +msgstr "هیچ فایل تنظیماتی در %s یافت نشد" #. translators: The first '%s' specifier will be replaced by either #. 'home.nix' or 'flake.nix'. @@ -36,6 +36,8 @@ msgid "" "Keeping your Home Manager %s in %s is deprecated,\n" "please move it to %s" msgstr "" +"نگه داری %s در %s منسوخ شده است.\n" +"لطفا آنرا به %s انتفال دهید" #: home-manager/home-manager:92 msgid "No configuration file found. Please create one at %s" @@ -43,7 +45,7 @@ msgstr "هیچ فایل تنظیماتی پیدا نشد. لطفا یک فایل #: home-manager/home-manager:107 msgid "Home Manager not found at %s." -msgstr "" +msgstr "Home manager در %s یافت نشد." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. #: home-manager/home-manager:115 @@ -51,6 +53,8 @@ msgid "" "The fallback Home Manager path %s has been deprecated and a file/directory " "was found there." msgstr "" +"مسیر زاپاس برای Home manager در %s منسوخ شده است اما یک فایل/دایرکتوری در " +"این مسیر پیدا شد." #. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated. #: home-manager/home-manager:118 @@ -73,28 +77,46 @@ msgid "" "\n" " $ rm -r \"%s\"" msgstr "" +"برای از بین بردن این اخطار, یکی از کار های زیر را انجام دهید.\n" +"\n" +"1. مسیر Home Manager را به صورت دقیق با اضافه کردن خط زیر\n" +"\n" +" { programs.home-manager.path = \"%s\"; }\n" +"\n" +"به کانفیگ خود, تعریف کنید\n" +"\n" +"اگر Home Manager را به طور مستقیم import کرده اید, میتوانید از پارامتر `path`" +" استفاده کنید\n" +"\n" +" pkgs.callPackage /path/to/home-manager-package { path = \"%s\"; }\n" +"\n" +"برای هنگامی که دارید پکیج Home Manager را صدا میزنید\n" +"\n" +"2. مسیر منسوخ شده را پاک کنید\n" +"\n" +" $ rm -r \"%s\"" #: home-manager/home-manager:146 msgid "Sanity checking Nix" -msgstr "" +msgstr "چک کردن پایداری Nix" #: home-manager/home-manager:166 msgid "Could not find suitable profile directory, tried %s and %s" -msgstr "" +msgstr "بعد از امتحان کردن %s و %s , دایرکتوری مناسب برای پروفایل یافت نشد" #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. #: home-manager/home-manager:221 msgid "Can't inspect options of a flake configuration" -msgstr "" +msgstr "عدم امکان بررسی گزینه‌های تنظیمات Flake" #: home-manager/home-manager:296 home-manager/home-manager:319 #: home-manager/home-manager:1051 msgid "%s: unknown option '%s'" -msgstr "" +msgstr "%s: آپشن مورد نظر شما یافت نشد %s" #: home-manager/home-manager:301 home-manager/home-manager:1052 msgid "Run '%s --help' for usage help" -msgstr "" +msgstr "%s --help برای دیدن راهنمایی دستور رو به رو را اجرا کنید" #: home-manager/home-manager:327 home-manager/home-manager:431 msgid "The file %s already exists, leaving it unchanged..." @@ -102,11 +124,11 @@ msgstr "فایل %s از قبل وجود داشته است، بدون تغییر #: home-manager/home-manager:329 home-manager/home-manager:433 msgid "Creating %s..." -msgstr "ساختن %s..." +msgstr "درحال ساختن %s..." #: home-manager/home-manager:475 msgid "Creating initial Home Manager generation..." -msgstr "" +msgstr "در حال ساخت نسخه اولیه Home Manager." #. translators: The "%s" specifier will be replaced by a file path. #: home-manager/home-manager:480 @@ -118,6 +140,12 @@ msgid "" "to configure Home Manager. Run 'man home-configuration.nix' to\n" "see all available options." msgstr "" +"پایان! ابزار home-manager نصب شده است و شما میتوانید با تغییر دادن فایل\n" +"\n" +" %s\n" +"\n" +"تنظیمات Home Manager خود را تغییر دهید. برای دیدن همه ی تنظیمات موجود\n" +"دستور 'man home-configuration.nix' را اجرا کنید." #. translators: The "%s" specifier will be replaced by a URL. #: home-manager/home-manager:485 @@ -128,11 +156,17 @@ msgid "" "\n" "if the error seems to be the fault of Home Manager." msgstr "" +"ای بابا, فرایند نصب با شکست مواجه شد! اگر بنظرتان میاید مشکل از Home Manager " +"است, لطفا یک issue در\n" +"\n" +" %s\n" +"\n" +"ایجاد کنید." #. translators: Here "flake" is a noun that refers to the Nix Flakes feature. #: home-manager/home-manager:496 msgid "Can't instantiate a flake configuration" -msgstr "" +msgstr "عدم امکان نمونه‌سازی تنظیمات flake" #: home-manager/home-manager:572 msgid "" @@ -142,24 +176,28 @@ msgid_plural "" "There are %d unread and relevant news items.\n" "Read them by running the command \"%s news\"." msgstr[0] "" +"%d خبر خوانده نشده وجود دارد.\n" +"میتوانید آن را با اجرای دستور \"%s news\" بخوانید." msgstr[1] "" +"%d خبر خوانده نشده وجود دارد.\n" +"میتوانید آنها را با اجرای دستور \"%s news\" بخوانید." #: home-manager/home-manager:586 msgid "Unknown \"news.display\" setting \"%s\"." -msgstr "" +msgstr "تنظیمات \"news.display\" در \"%s\" شناخته شده نیست." #: home-manager/home-manager:594 #, sh-format msgid "Please set the $EDITOR or $VISUAL environment variable" -msgstr "" +msgstr "لطفا متغیر محلی $EDITOR و یا $VISUAL را تنظیم کنید" #: home-manager/home-manager:612 msgid "Cannot run build in read-only directory" -msgstr "" +msgstr "نمیتوان دستور build را در یک دایکتوری read-only اجرا کرد" #: home-manager/home-manager:693 msgid "No generation with ID %s" -msgstr "" +msgstr "هیچ نسل ای با شناسه %s یافت نشد" #: home-manager/home-manager:695 msgid "Cannot remove the current generation %s" @@ -171,44 +209,43 @@ msgstr "حذف کردن نسل %s" #: home-manager/home-manager:718 msgid "No generations to expire" -msgstr "" +msgstr "هیچ نسلی برای منسوخ کردن وجود ندارد" #: home-manager/home-manager:729 msgid "No home-manager packages seem to be installed." -msgstr "" +msgstr "بنظر میاید هیچ پکیجی از home-manager نصب نشده است." #: home-manager/home-manager:811 msgid "Unknown argument %s" -msgstr "" +msgstr "پارامتر %s شناخته نشده است" #: home-manager/home-manager:835 msgid "This will remove Home Manager from your system." -msgstr "" +msgstr "این عمل Home Manager را از سیستم شما حذف میکند." #: home-manager/home-manager:838 msgid "This is a dry run, nothing will actually be uninstalled." -msgstr "" +msgstr "این یک عمل آزمایشی است, قرار نیست چیزی واقعا حذف شود." #: home-manager/home-manager:842 msgid "Really uninstall Home Manager?" -msgstr "واقعاً هوم منیجر را حذف نصب کنید؟" +msgstr "واقعا میخواهید Home Manager را حذف کنید؟" #: home-manager/home-manager:848 msgid "Switching to empty Home Manager configuration..." -msgstr "" +msgstr "در حال انتقال به تنظیمات خالی Home Manager..." #: home-manager/home-manager:863 -#, fuzzy msgid "Yay!" -msgstr "آره!" +msgstr "ایول!" #: home-manager/home-manager:868 msgid "Home Manager is uninstalled but your home.nix is left untouched." -msgstr "هوم منیجر حذف نصب شد اما home.nix شما دست نخورده باقی ماند." +msgstr "Home Manager حذف نصب شد اما home.nix شما دست نخورده باقی ماند." #: home-manager/home-manager:1091 msgid "expire-generations expects one argument, got %d." -msgstr "" +msgstr "expire-generations یک پارامتر نیاز دارد, اما %d پارامتر دریافت کرد" #: home-manager/home-manager:1113 msgid "Unknown command: %s" @@ -216,7 +253,7 @@ msgstr "دستور ناشناخته: %s" #: home-manager/install.nix:18 msgid "This derivation is not buildable, please run it using nix-shell." -msgstr "" +msgstr "این نسخه قابل build کردن نیست, لطفا آن را با nix-shell اجرا کنید." #, sh-format #~ msgid "Please set the $EDITOR environment variable" diff --git a/modules/po/fa.po b/modules/po/fa.po index fc0d7c1f..d39e27a9 100644 --- a/modules/po/fa.po +++ b/modules/po/fa.po @@ -8,13 +8,16 @@ msgstr "" "Project-Id-Version: Home Manager Modules\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: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2024-05-02 10:58+0000\n" +"Last-Translator: Keivan \n" +"Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "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.5.3-dev\n" #: modules/files.nix:191 msgid "Creating home file links in %s" @@ -58,7 +61,7 @@ msgstr "" #: modules/lib-bash/activation-init.sh:54 msgid "Could not find suitable profile directory, tried %s and %s" -msgstr "" +msgstr "بعد از امتحان کردن %s و %s , دایرکتوری مناسب برای پروفایل یافت نشد" #: modules/lib-bash/activation-init.sh:83 msgid "Sanity checking oldGenNum and oldGenPath" @@ -94,7 +97,7 @@ msgstr "" #: modules/lib-bash/activation-init.sh:157 msgid "Sanity checking Nix" -msgstr "" +msgstr "چک کردن پایداری Nix" #: modules/lib-bash/activation-init.sh:170 msgid "This is a dry run" From 9036fe9ef8e15a819fa76f47a8b1f287903fb848 Mon Sep 17 00:00:00 2001 From: home-manager-bot <106474382+home-manager-bot@users.noreply.github.com> Date: Thu, 2 May 2024 21:58:28 +0200 Subject: [PATCH 078/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856' (2024-04-25) → 'github:NixOS/nixpkgs/58a1abdbae3217ca6b702f03d3b35125d88a2994' (2024-04-27) Co-authored-by: github-actions[bot] --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 513eff46..908e1866 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1714076141, - "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", "type": "github" }, "original": { From e0825ea2112d09d9f0680833cd716f6aee3b973f Mon Sep 17 00:00:00 2001 From: 9p4 Date: Sat, 4 May 2024 19:28:16 -0400 Subject: [PATCH 079/102] swaync: fix style path --- modules/services/swaync.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/swaync.nix b/modules/services/swaync.nix index bb1f9d57..60bcc913 100644 --- a/modules/services/swaync.nix +++ b/modules/services/swaync.nix @@ -84,7 +84,7 @@ in { "swaync/config.json".source = jsonFormat.generate "config.json" cfg.settings; "swaync/style.css" = lib.mkIf (cfg.style != null) { - source = if lib.isStorePath cfg.style then + source = if builtins.isPath cfg.style || lib.isStorePath cfg.style then cfg.style else pkgs.writeText "swaync/style.css" cfg.style; From 2a44f4d09f891d8a9d72b9a7331fa8d94b066119 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 5 May 2024 03:59:36 +0000 Subject: [PATCH 080/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/58a1abdbae3217ca6b702f03d3b35125d88a2994' (2024-04-27) → 'github:NixOS/nixpkgs/63c3a29ca82437c87573e4c6919b09a24ea61b0f' (2024-05-02) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 908e1866..5913a4e4 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "lastModified": 1714635257, + "narHash": "sha256-4cPymbty65RvF1DWQfc+Bc8B233A1BWxJnNULJKQ1EY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "rev": "63c3a29ca82437c87573e4c6919b09a24ea61b0f", "type": "github" }, "original": { From f69bf670d29d3921e00cc626d174654769d743c6 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 5 May 2024 15:37:54 +0800 Subject: [PATCH 081/102] cliphist: add extraOptions option Add an extraOptions option that would be appended to the cliphist command. --- modules/services/cliphist.nix | 15 +++++++++--- .../cliphist/cliphist-extra-options.nix | 24 +++++++++++++++++++ tests/modules/services/cliphist/default.nix | 5 +++- 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 tests/modules/services/cliphist/cliphist-extra-options.nix diff --git a/modules/services/cliphist.nix b/modules/services/cliphist.nix index 504b519a..3599557f 100644 --- a/modules/services/cliphist.nix +++ b/modules/services/cliphist.nix @@ -17,6 +17,14 @@ in { ''; }; + extraOptions = lib.mkOption { + type = with lib.types; listOf str; + default = [ "-max-dedupe-search" "10" "-max-items" "500" ]; + description = '' + Flags to append to the cliphist command. + ''; + }; + systemdTarget = lib.mkOption { type = lib.types.str; default = "graphical-session.target"; @@ -31,7 +39,8 @@ in { }; }; - config = lib.mkIf cfg.enable { + config = let extraOptionsStr = lib.escapeShellArgs cfg.extraOptions; + in lib.mkIf cfg.enable { assertions = [ (lib.hm.assertions.assertPlatform "services.cliphist" pkgs lib.platforms.linux) @@ -48,7 +57,7 @@ in { Service = { Type = "simple"; ExecStart = - "${pkgs.wl-clipboard}/bin/wl-paste --watch ${cfg.package}/bin/cliphist store"; + "${pkgs.wl-clipboard}/bin/wl-paste --watch ${cfg.package}/bin/cliphist ${extraOptionsStr} store"; Restart = "on-failure"; }; @@ -64,7 +73,7 @@ in { Service = { Type = "simple"; ExecStart = - "${pkgs.wl-clipboard}/bin/wl-paste --type image --watch ${cfg.package}/bin/cliphist store"; + "${pkgs.wl-clipboard}/bin/wl-paste --type image --watch ${cfg.package}/bin/cliphist ${extraOptionsStr} store"; Restart = "on-failure"; }; diff --git a/tests/modules/services/cliphist/cliphist-extra-options.nix b/tests/modules/services/cliphist/cliphist-extra-options.nix new file mode 100644 index 00000000..65d4fdca --- /dev/null +++ b/tests/modules/services/cliphist/cliphist-extra-options.nix @@ -0,0 +1,24 @@ +{ ... }: { + services.cliphist = { + enable = true; + allowImages = true; + extraOptions = [ "-max-dedupe-search" "10" "-max-items" "500" ]; + }; + + test.stubs = { + cliphist = { }; + wl-clipboard = { }; + }; + + nmt.script = '' + servicePath=home-files/.config/systemd/user + + assertFileExists $servicePath/cliphist.service + assertFileExists $servicePath/cliphist-images.service + + assertFileRegex $servicePath/cliphist.service " '-max-dedupe-search' '10' " + assertFileRegex $servicePath/cliphist.service " '-max-items' '500' " + assertFileRegex $servicePath/cliphist-images.service " '-max-dedupe-search' '10' " + assertFileRegex $servicePath/cliphist-images.service " '-max-items' '500' " + ''; +} diff --git a/tests/modules/services/cliphist/default.nix b/tests/modules/services/cliphist/default.nix index 01101332..d74a469b 100644 --- a/tests/modules/services/cliphist/default.nix +++ b/tests/modules/services/cliphist/default.nix @@ -1 +1,4 @@ -{ cliphist-sway-session-target = ./cliphist-sway-session-target.nix; } +{ + cliphist-sway-session-target = ./cliphist-sway-session-target.nix; + cliphist-extra-options = ./cliphist-extra-options.nix; +} From fdaaf543bad047639ef0b356ea2e6caec2f1215c Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sun, 5 May 2024 04:13:18 -0500 Subject: [PATCH 082/102] hypridle: add module --- modules/misc/news.nix | 11 +++ modules/modules.nix | 1 + modules/services/hypridle.nix | 95 +++++++++++++++++++ tests/default.nix | 1 + .../services/hypridle/basic-configuration.nix | 38 ++++++++ tests/modules/services/hypridle/default.nix | 1 + tests/modules/services/hypridle/hypridle.conf | 16 ++++ 7 files changed, 163 insertions(+) create mode 100644 modules/services/hypridle.nix create mode 100644 tests/modules/services/hypridle/basic-configuration.nix create mode 100644 tests/modules/services/hypridle/default.nix create mode 100644 tests/modules/services/hypridle/hypridle.conf diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 92d3e9f5..ef3b98f5 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1584,6 +1584,17 @@ in { https://conky.cc/ for more. ''; } + + { + time = "2024-05-05T07:22:01+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.hypridle'. + + Hypridle is a program that monitors user activity and runs commands + when idle or active. See https://github.com/hyprwm/hypridle for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 7c81102a..b59812b7 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -302,6 +302,7 @@ let ./services/gromit-mpx.nix ./services/home-manager-auto-upgrade.nix ./services/hound.nix + ./services/hypridle.nix ./services/imapnotify.nix ./services/kanshi.nix ./services/kbfs.nix diff --git a/modules/services/hypridle.nix b/modules/services/hypridle.nix new file mode 100644 index 00000000..0e28c543 --- /dev/null +++ b/modules/services/hypridle.nix @@ -0,0 +1,95 @@ +{ config, lib, pkgs, ... }: +with lib; +let + + cfg = config.services.hypridle; +in { + meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ]; + + options.services.hypridle = { + enable = mkEnableOption "Hypridle, Hyprland's idle daemon"; + + package = mkPackageOption pkgs "hypridle" { }; + + settings = lib.mkOption { + type = with lib.types; + let + valueType = nullOr (oneOf [ + bool + int + float + str + path + (attrsOf valueType) + (listOf valueType) + ]) // { + description = "Hypridle configuration value"; + }; + in valueType; + default = { }; + description = '' + Hypridle configuration written in Nix. Entries with the same key + should be written as lists. Variables' and colors' names should be + quoted. See for more examples. + ''; + example = lib.literalExpression '' + { + general = { + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "hyprlock"; + }; + + listener = [ + { + timeout = 900; + on-timeout = "hyprlock"; + } + { + timeout = 1200; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; + } + ''; + }; + + importantPrefixes = lib.mkOption { + type = with lib.types; listOf str; + default = [ "$" ]; + example = [ "$" ]; + description = '' + List of prefix of attributes to source at the top of the config. + ''; + }; + }; + + config = mkIf cfg.enable { + xdg.configFile."hypr/hypridle.conf" = mkIf (cfg.settings != { }) { + text = lib.hm.generators.toHyprconf { + attrs = cfg.settings; + inherit (cfg) importantPrefixes; + }; + }; + + systemd.user.services.hypridle = { + Install = { WantedBy = [ "graphical-session.target" ]; }; + + Unit = { + ConditionEnvironment = "WAYLAND_DISPLAY"; + Description = "hypridle"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + X-Restart-Triggers = + [ "${config.xdg.configFile."hypr/hypridle.conf".source}" ]; + }; + + Service = { + ExecStart = "${getExe cfg.package}"; + Restart = "always"; + RestartSec = "10"; + }; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 7b714581..e879c13c 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -239,6 +239,7 @@ in import nmtSrc { ./modules/services/gpg-agent ./modules/services/gromit-mpx ./modules/services/home-manager-auto-upgrade + ./modules/services/hypridle ./modules/services/imapnotify ./modules/services/kanshi ./modules/services/lieer diff --git a/tests/modules/services/hypridle/basic-configuration.nix b/tests/modules/services/hypridle/basic-configuration.nix new file mode 100644 index 00000000..461f70a5 --- /dev/null +++ b/tests/modules/services/hypridle/basic-configuration.nix @@ -0,0 +1,38 @@ +{ pkgs, ... }: + +{ + services.hypridle = { + enable = true; + package = pkgs.hypridle; + + settings = { + general = { + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "hyprlock"; + }; + + listener = [ + { + timeout = 900; + on-timeout = "hyprlock"; + } + { + timeout = 1200; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; + }; + }; + + test.stubs.hypridle = { }; + + nmt.script = '' + config=home-files/.config/hypr/hypridle.conf + clientServiceFile=home-files/.config/systemd/user/hypridle.service + assertFileExists $config + assertFileExists $clientServiceFile + assertFileContent $config ${./hypridle.conf} + ''; +} diff --git a/tests/modules/services/hypridle/default.nix b/tests/modules/services/hypridle/default.nix new file mode 100644 index 00000000..c959983c --- /dev/null +++ b/tests/modules/services/hypridle/default.nix @@ -0,0 +1 @@ +{ hypridle-basic-configuration = ./basic-configuration.nix; } diff --git a/tests/modules/services/hypridle/hypridle.conf b/tests/modules/services/hypridle/hypridle.conf new file mode 100644 index 00000000..ee296337 --- /dev/null +++ b/tests/modules/services/hypridle/hypridle.conf @@ -0,0 +1,16 @@ +general { + after_sleep_cmd=hyprctl dispatch dpms on + ignore_dbus_inhibit=false + lock_cmd=hyprlock +} + +listener { + on-timeout=hyprlock + timeout=900 +} + +listener { + on-resume=hyprctl dispatch dpms on + on-timeout=hyprctl dispatch dpms off + timeout=1200 +} From 3dfe05aa9b5646995ace887931fa60269a039777 Mon Sep 17 00:00:00 2001 From: Daru <135046711+Daru-san@users.noreply.github.com> Date: Sun, 5 May 2024 19:59:14 +0200 Subject: [PATCH 083/102] wlsunset: update options --- modules/services/wlsunset.nix | 82 +++++++++++++++---- .../wlsunset-service-expected.service | 2 +- 2 files changed, 67 insertions(+), 17 deletions(-) diff --git a/modules/services/wlsunset.nix b/modules/services/wlsunset.nix index 3bc3f2f7..f3352750 100644 --- a/modules/services/wlsunset.nix +++ b/modules/services/wlsunset.nix @@ -11,7 +11,7 @@ in { enable = mkEnableOption "wlsunset"; package = mkOption { - type = types.package; + type = with types; package; default = pkgs.wlsunset; defaultText = "pkgs.wlsunset"; description = '' @@ -20,7 +20,9 @@ in { }; latitude = mkOption { - type = types.str; + type = with types; nullOr (either str (either float int)); + default = null; + example = -74.3; description = '' Your current latitude, between `-90.0` and `90.0`. @@ -28,7 +30,9 @@ in { }; longitude = mkOption { - type = types.str; + type = with types; nullOr (either str (either float int)); + default = null; + example = 12.5; description = '' Your current longitude, between `-180.0` and `180.0`. @@ -37,7 +41,7 @@ in { temperature = { day = mkOption { - type = types.int; + type = with types; int; default = 6500; description = '' Colour temperature to use during the day, in Kelvin (K). @@ -46,7 +50,7 @@ in { }; night = mkOption { - type = types.int; + type = with types; int; default = 4000; description = '' Colour temperature to use during the night, in Kelvin (K). @@ -56,15 +60,42 @@ in { }; gamma = mkOption { - type = types.str; - default = "1.0"; + type = with types; (either str (either float int)); + default = 1.0; + example = 0.6; description = '' Gamma value to use. ''; }; + output = mkOption { + type = with types; nullOr str; + default = null; + description = '' + Name of output to use, by default all outputs are used. + ''; + }; + + sunrise = mkOption { + type = with types; nullOr str; + default = null; + example = "06:30"; + description = '' + The time when the sun rises (in 24 hour format). + ''; + }; + + sunset = mkOption { + type = with types; nullOr str; + default = null; + example = "18:00"; + description = '' + The time when the sun sets (in 24 hour format). + ''; + }; + systemdTarget = mkOption { - type = types.str; + type = with types; str; default = "graphical-session.target"; description = '' Systemd target to bind to. @@ -76,6 +107,22 @@ in { assertions = [ (lib.hm.assertions.assertPlatform "services.wlsunset" pkgs lib.platforms.linux) + { + assertion = (cfg.sunrise != null || cfg.sunset != null) + != (cfg.latitude != null || cfg.longitude != null); + message = + "Either `sunrise` and `sunset` together or `longitude` and `latitude` together must be set for wlsunset"; + } + { + assertion = (cfg.sunrise != null) == (cfg.sunset != null); + message = + "Both `sunset` and `sunrise` together must be set for wlsunset"; + } + { + assertion = (cfg.latitude != null) == (cfg.longitude != null); + message = + "Both `latitude and `longitude` together must be set for wlsunset"; + } ]; systemd.user.services.wlsunset = { @@ -86,14 +133,17 @@ in { Service = { ExecStart = let - args = [ - "-l ${cfg.latitude}" - "-L ${cfg.longitude}" - "-t ${toString cfg.temperature.night}" - "-T ${toString cfg.temperature.day}" - "-g ${cfg.gamma}" - ]; - in "${cfg.package}/bin/wlsunset ${concatStringsSep " " args}"; + args = cli.toGNUCommandLineShell { } { + t = cfg.temperature.night; + T = cfg.temperature.day; + g = cfg.gamma; + l = cfg.latitude; + L = cfg.longitude; + S = cfg.sunrise; + s = cfg.sunset; + o = cfg.output; + }; + in "${cfg.package}/bin/wlsunset ${args}"; }; Install = { WantedBy = [ cfg.systemdTarget ]; }; diff --git a/tests/modules/services/wlsunset/wlsunset-service-expected.service b/tests/modules/services/wlsunset/wlsunset-service-expected.service index f0cf96f3..f311d900 100644 --- a/tests/modules/services/wlsunset/wlsunset-service-expected.service +++ b/tests/modules/services/wlsunset/wlsunset-service-expected.service @@ -2,7 +2,7 @@ WantedBy=test.target [Service] -ExecStart=@wlsunset@/bin/wlsunset -l 12.3 -L 128.8 -t 3500 -T 6000 -g 0.6 +ExecStart=@wlsunset@/bin/wlsunset '-L' '128.8' '-T' '6000' '-g' '0.6' '-l' '12.3' '-t' '3500' [Unit] Description=Day/night gamma adjustments for Wayland compositors. From 2b87a11125f988a9f67ee63eeaa3682bc841d9b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20DUBOIN?= <34611103+d4ilyrun@users.noreply.github.com> Date: Mon, 6 May 2024 08:17:53 +0200 Subject: [PATCH 084/102] git: add realName inside From field We currently have no way of specifying the sender's name inside the From field, making a patch sent through `git send-email` appear as coming from "xxx@domain.com". In this commit we make this field follow the standard realName format. --- modules/programs/git.nix | 4 ++-- tests/modules/programs/git/git-with-email-expected.conf | 4 ++-- tests/modules/programs/git/git-with-email.nix | 4 ++-- tests/modules/programs/git/git-with-msmtp-expected.conf | 4 ++-- tests/modules/programs/git/git-with-msmtp.nix | 5 +++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 53728060..3061feff 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -392,7 +392,7 @@ in { nameValuePair "sendemail.${name}" (if account.msmtp.enable then { smtpServer = "${pkgs.msmtp}/bin/msmtp"; envelopeSender = "auto"; - from = address; + from = "${realName} <${address}>"; } else { smtpEncryption = if smtp.tls.enable then @@ -407,7 +407,7 @@ in { mkIf smtp.tls.enable (toString smtp.tls.certificatesFile); smtpServer = smtp.host; smtpUser = userName; - from = address; + from = "${realName} <${address}>"; } // optionalAttrs (smtp.port != null) { smtpServerPort = smtp.port; }); diff --git a/tests/modules/programs/git/git-with-email-expected.conf b/tests/modules/programs/git/git-with-email-expected.conf index c34ab1d7..fa027422 100644 --- a/tests/modules/programs/git/git-with-email-expected.conf +++ b/tests/modules/programs/git/git-with-email-expected.conf @@ -1,12 +1,12 @@ [sendemail "hm-account"] - from = "hm@example.org" + from = "H. M. Test Jr. " smtpEncryption = "tls" smtpServer = "smtp.example.org" smtpSslCertPath = "/etc/test/certificates.crt" smtpUser = "home.manager.jr" [sendemail "hm@example.com"] - from = "hm@example.com" + from = "H. M. Test " smtpEncryption = "ssl" smtpServer = "smtp.example.com" smtpSslCertPath = "/etc/ssl/certs/ca-certificates.crt" diff --git a/tests/modules/programs/git/git-with-email.nix b/tests/modules/programs/git/git-with-email.nix index ec18ecb9..0999eaa8 100644 --- a/tests/modules/programs/git/git-with-email.nix +++ b/tests/modules/programs/git/git-with-email.nix @@ -33,8 +33,8 @@ with lib; ./git-with-email-expected.conf } - assertGitConfig "sendemail.hm@example.com.from" "hm@example.com" - assertGitConfig "sendemail.hm-account.from" "hm@example.org" + assertGitConfig "sendemail.hm@example.com.from" "H. M. Test " + assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. " ''; }; } diff --git a/tests/modules/programs/git/git-with-msmtp-expected.conf b/tests/modules/programs/git/git-with-msmtp-expected.conf index 1f2c7b79..8cd5d86f 100644 --- a/tests/modules/programs/git/git-with-msmtp-expected.conf +++ b/tests/modules/programs/git/git-with-msmtp-expected.conf @@ -1,5 +1,5 @@ [sendemail "hm-account"] - from = "hm@example.org" + from = "H. M. Test Jr. " smtpEncryption = "tls" smtpServer = "smtp.example.org" smtpSslCertPath = "/etc/ssl/certs/ca-certificates.crt" @@ -7,7 +7,7 @@ [sendemail "hm@example.com"] envelopeSender = "auto" - from = "hm@example.com" + from = "H. M. Test " smtpServer = "@msmtp@/bin/msmtp" [user] diff --git a/tests/modules/programs/git/git-with-msmtp.nix b/tests/modules/programs/git/git-with-msmtp.nix index dc6ba465..80e082c9 100644 --- a/tests/modules/programs/git/git-with-msmtp.nix +++ b/tests/modules/programs/git/git-with-msmtp.nix @@ -7,6 +7,7 @@ with lib; config = { accounts.email.accounts."hm@example.com".msmtp.enable = true; + programs.git = { enable = true; package = pkgs.gitMinimal; @@ -33,8 +34,8 @@ with lib; assertFileContent home-files/.config/git/config \ ${./git-with-msmtp-expected.conf} - assertGitConfig "sendemail.hm@example.com.from" "hm@example.com" - assertGitConfig "sendemail.hm-account.from" "hm@example.org" + assertGitConfig "sendemail.hm@example.com.from" "H. M. Test " + assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. " assertGitConfig "sendemail.hm@example.com.smtpServer" "${pkgs.msmtp}/bin/msmtp" assertGitConfig "sendemail.hm@example.com.envelopeSender" "auto" ''; From 6ebe7be2e67be7b9b54d61ce5704f6fb466c536f Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Sun, 16 May 2021 14:54:43 -0700 Subject: [PATCH 085/102] gnome-shell: add module --- modules/misc/news.nix | 12 ++ modules/modules.nix | 1 + modules/programs/gnome-shell.nix | 115 ++++++++++++++++++ tests/default.nix | 1 + .../modules/programs/gnome-shell/default.nix | 1 + .../programs/gnome-shell/gnome-shell.nix | 94 ++++++++++++++ 6 files changed, 224 insertions(+) create mode 100644 modules/programs/gnome-shell.nix create mode 100644 tests/modules/programs/gnome-shell/default.nix create mode 100644 tests/modules/programs/gnome-shell/gnome-shell.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index ef3b98f5..16f372c8 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1595,6 +1595,18 @@ in { when idle or active. See https://github.com/hyprwm/hypridle for more. ''; } + + { + time = "2024-05-06T07:36:13+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'programs.gnome-shell'. + + GNOME Shell is the graphical shell of the GNOME desktop environment. + It provides basic functions like launching applications and switching + between windows, and is also a widget engine. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index b59812b7..98f7de80 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -103,6 +103,7 @@ let ./programs/git-credential-oauth.nix ./programs/git.nix ./programs/gitui.nix + ./programs/gnome-shell.nix ./programs/gnome-terminal.nix ./programs/go.nix ./programs/gpg.nix diff --git a/modules/programs/gnome-shell.nix b/modules/programs/gnome-shell.nix new file mode 100644 index 00000000..36a57cea --- /dev/null +++ b/modules/programs/gnome-shell.nix @@ -0,0 +1,115 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.programs.gnome-shell; + + extensionOpts = { config, ... }: { + options = { + id = mkOption { + type = types.str; + example = "user-theme@gnome-shell-extensions.gcampax.github.com"; + description = '' + ID of the GNOME Shell extension. If not provided, it + will be obtained from `package.extensionUuid`. + ''; + }; + + package = mkOption { + type = types.package; + example = "pkgs.gnome.gnome-shell-extensions"; + description = '' + Package providing a GNOME Shell extension in + `$out/share/gnome-shell/extensions/''${id}`. + ''; + }; + }; + + config = mkIf (hasAttr "extensionUuid" config.package) { + id = mkDefault config.package.extensionUuid; + }; + }; + + themeOpts = { + options = { + name = mkOption { + type = types.str; + example = "Plata-Noir"; + description = '' + Name of the GNOME Shell theme. + ''; + }; + + package = mkOption { + type = types.nullOr types.package; + default = null; + example = literalExpression "pkgs.plata-theme"; + description = '' + Package providing a GNOME Shell theme in + `$out/share/themes/''${name}/gnome-shell`. + ''; + }; + }; + }; + +in { + meta.maintainers = [ maintainers.terlar ]; + + options.programs.gnome-shell = { + enable = mkEnableOption "GNOME Shell customization"; + + extensions = mkOption { + type = types.listOf (types.submodule extensionOpts); + default = [ ]; + example = literalExpression '' + [ + { package = pkgs.gnomeExtensions.dash-to-panel; } + { + id = "user-theme@gnome-shell-extensions.gcampax.github.com"; + package = pkgs.gnome.gnome-shell-extensions; + } + ] + ''; + description = '' + List of GNOME Shell extensions. + ''; + }; + + theme = mkOption { + type = types.nullOr (types.submodule themeOpts); + default = null; + example = literalExpression '' + { + name = "Plata-Noir"; + package = pkgs.plata-theme; + } + ''; + description = '' + Theme to use for GNOME Shell. + ''; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + (mkIf (cfg.extensions != [ ]) { + dconf.settings."org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = catAttrs "id" cfg.extensions; + }; + + home.packages = catAttrs "package" cfg.extensions; + }) + + (mkIf (cfg.theme != null) { + dconf.settings."org/gnome/shell/extensions/user-theme".name = + cfg.theme.name; + + programs.gnome-shell.extensions = [{ + id = "user-theme@gnome-shell-extensions.gcampax.github.com"; + package = pkgs.gnome.gnome-shell-extensions; + }]; + + home.packages = [ cfg.theme.package ]; + }) + ]); +} diff --git a/tests/default.nix b/tests/default.nix index e879c13c..2ecffad8 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -193,6 +193,7 @@ in import nmtSrc { ./modules/programs/freetube ./modules/programs/fuzzel ./modules/programs/getmail + ./modules/programs/gnome-shell ./modules/programs/gnome-terminal ./modules/programs/hexchat ./modules/programs/i3blocks diff --git a/tests/modules/programs/gnome-shell/default.nix b/tests/modules/programs/gnome-shell/default.nix new file mode 100644 index 00000000..58e4598f --- /dev/null +++ b/tests/modules/programs/gnome-shell/default.nix @@ -0,0 +1 @@ +{ gnome-shell = ./gnome-shell.nix; } diff --git a/tests/modules/programs/gnome-shell/gnome-shell.nix b/tests/modules/programs/gnome-shell/gnome-shell.nix new file mode 100644 index 00000000..02f44e0c --- /dev/null +++ b/tests/modules/programs/gnome-shell/gnome-shell.nix @@ -0,0 +1,94 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + dummy-gnome-shell-extensions = pkgs.runCommand "dummy-package" { } '' + mkdir -p $out/share/gnome-shell/extensions/dummy-package + touch $out/share/gnome-shell/extensions/dummy-package/test + ''; + + test-extension = pkgs.runCommand "test-extension" { } '' + mkdir -p $out/share/gnome-shell/extensions/test-extension + touch $out/share/gnome-shell/extensions/test-extension/test + ''; + + test-extension-uuid = pkgs.runCommand "test-extension-uuid" { + passthru.extensionUuid = "test-extension-uuid"; + } '' + mkdir -p $out/share/gnome-shell/extensions/test-extension-uuid + touch $out/share/gnome-shell/extensions/test-extension-uuid/test + ''; + + test-theme = pkgs.runCommand "test-theme" { } '' + mkdir -p $out/share/themes/Test/gnome-shell + touch $out/share/themes/Test/gnome-shell/test + ''; + + expectedEnabledExtensions = [ + "user-theme@gnome-shell-extensions.gcampax.github.com" + "test-extension" + "test-extension-uuid" + ]; + + actualEnabledExtensions = catAttrs "value" + config.dconf.settings."org/gnome/shell".enabled-extensions.value; + +in { + nixpkgs.overlays = [ + (self: super: { + gnome = super.gnome.overrideScope (gself: gsuper: { + gnome-shell-extensions = dummy-gnome-shell-extensions; + }); + }) + ]; + + programs.gnome-shell.enable = true; + + programs.gnome-shell.extensions = [ + { + id = "test-extension"; + package = test-extension; + } + { package = test-extension-uuid; } + ]; + + programs.gnome-shell.theme = { + name = "Test"; + package = test-theme; + }; + + assertions = [ + { + assertion = + config.dconf.settings."org/gnome/shell".disable-user-extensions + == false; + message = "Expected disable-user-extensions to be false."; + } + { + assertion = + all (e: elem e actualEnabledExtensions) expectedEnabledExtensions; + message = '' + Expected enabled-extensions to contain all of: + ${toString expectedEnabledExtensions} + But it was: + ${toString actualEnabledExtensions} + ''; + } + { + assertion = + config.dconf.settings."org/gnome/shell/extensions/user-theme".name + == "Test"; + message = "Expected extensions/user-theme/name to be 'Test'."; + } + ]; + + test.stubs.dconf = { }; + + nmt.script = '' + assertFileExists home-path/share/gnome-shell/extensions/dummy-package/test + assertFileExists home-path/share/gnome-shell/extensions/test-extension/test + assertFileExists home-path/share/gnome-shell/extensions/test-extension-uuid/test + assertFileExists home-path/share/themes/Test/gnome-shell/test + ''; +} From 6e277d9566de9976f47228dd8c580b97488734d4 Mon Sep 17 00:00:00 2001 From: Bruno Bigras Date: Tue, 7 May 2024 06:25:03 -0400 Subject: [PATCH 086/102] jujutsu: add ediff option Based on . --- modules/programs/jujutsu.nix | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/programs/jujutsu.nix b/modules/programs/jujutsu.nix index 269c5ef9..b1fcc703 100644 --- a/modules/programs/jujutsu.nix +++ b/modules/programs/jujutsu.nix @@ -22,6 +22,15 @@ in { package = mkPackageOption pkgs "jujutsu" { }; + ediff = mkOption { + type = types.bool; + default = config.programs.emacs.enable; + defaultText = literalExpression "config.programs.emacs.enable"; + description = '' + Enable ediff as a merge tool + ''; + }; + settings = mkOption { type = tomlFormat.type; default = { }; @@ -45,7 +54,18 @@ in { home.packages = [ cfg.package ]; home.file.".jjconfig.toml" = mkIf (cfg.settings != { }) { - source = tomlFormat.generate "jujutsu-config" cfg.settings; + source = tomlFormat.generate "jujutsu-config" (cfg.settings + // optionalAttrs (cfg.ediff) (let + emacsDiffScript = pkgs.writeShellScriptBin "emacs-ediff" '' + set -euxo pipefail + ${config.programs.emacs.package}/bin/emacsclient -c --eval "(ediff-merge-files-with-ancestor \"$1\" \"$2\" \"$3\" nil \"$4\")" + ''; + in { + merge-tools.ediff = { + program = getExe emacsDiffScript; + merge-args = [ "$left" "$right" "$base" "$output" ]; + }; + })); }; }; } From f61917cbaa6dba317e757aefd0bbb56403aff2f8 Mon Sep 17 00:00:00 2001 From: afresquet <29437693+afresquet@users.noreply.github.com> Date: Thu, 2 May 2024 02:23:11 +0200 Subject: [PATCH 087/102] fastfetch: add module PR #5363 --- modules/lib/maintainers.nix | 6 ++ modules/misc/news.nix | 11 ++++ modules/modules.nix | 1 + modules/programs/fastfetch.nix | 65 +++++++++++++++++++ tests/default.nix | 1 + .../fastfetch/basic-configuration.jsonc | 28 ++++++++ .../fastfetch/basic-configuration.nix | 39 +++++++++++ .../fastfetch/default-configuration.nix | 9 +++ tests/modules/programs/fastfetch/default.nix | 4 ++ 9 files changed, 164 insertions(+) create mode 100644 modules/programs/fastfetch.nix create mode 100755 tests/modules/programs/fastfetch/basic-configuration.jsonc create mode 100644 tests/modules/programs/fastfetch/basic-configuration.nix create mode 100644 tests/modules/programs/fastfetch/default-configuration.nix create mode 100644 tests/modules/programs/fastfetch/default.nix diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index 1e988cc2..b5175a87 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -13,6 +13,12 @@ github = "abayomi185"; githubId = 21103047; }; + afresquet = { + name = "Alvaro Fresquet"; + email = "alvarofresquet@gmail.com"; + github = "afresquet"; + githubId = 29437693; + }; amesgen = { name = "amesgen"; email = "amesgen@amesgen.de"; diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 16f372c8..6319d635 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1607,6 +1607,17 @@ in { between windows, and is also a widget engine. ''; } + + { + time = "2024-05-10T10:30:58+00:00"; + message = '' + A new module is available: 'programs.fastfetch'. + + Fastfetch is a Neofetch-like tool for fetching system information and + displaying them in a pretty way. See + https://github.com/fastfetch-cli/fastfetch for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 98f7de80..22664091 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -87,6 +87,7 @@ let ./programs/emacs.nix ./programs/eww.nix ./programs/eza.nix + ./programs/fastfetch.nix ./programs/fd.nix ./programs/feh.nix ./programs/firefox.nix diff --git a/modules/programs/fastfetch.nix b/modules/programs/fastfetch.nix new file mode 100644 index 00000000..32021611 --- /dev/null +++ b/modules/programs/fastfetch.nix @@ -0,0 +1,65 @@ +{ pkgs, lib, config, ... }: + +let + inherit (lib) mkEnableOption mkPackageOption mkOption mkIf literalExpression; + + cfg = config.programs.fastfetch; + + jsonFormat = pkgs.formats.json { }; +in { + meta.maintainers = with lib.hm.maintainers; [ afresquet ]; + + options.programs.fastfetch = { + enable = mkEnableOption "Fastfetch"; + + package = mkPackageOption pkgs "fastfetch" { }; + + settings = mkOption { + type = jsonFormat.type; + default = { }; + example = literalExpression '' + { + logo = { + source = "nixos_small"; + padding = { + right = 1; + }; + }; + display = { + binaryPrefix = "si"; + color = "blue"; + separator = "  "; + }; + modules = [ + { + type = "datetime"; + key = "Date"; + format = "{1}-{3}-{11}"; + } + { + type = "datetime"; + key = "Time"; + format = "{14}:{17}:{20}"; + } + "break" + "player" + "media" + ]; + }; + ''; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/fastfetch/config.jsonc`. + See + for the documentation. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + + xdg.configFile."fastfetch/config.jsonc" = mkIf (cfg.settings != { }) { + source = jsonFormat.generate "config.jsonc" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 2ecffad8..0ebf4715 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -71,6 +71,7 @@ in import nmtSrc { ./modules/programs/dircolors ./modules/programs/direnv ./modules/programs/emacs + ./modules/programs/fastfetch ./modules/programs/feh ./modules/programs/fish ./modules/programs/gallery-dl diff --git a/tests/modules/programs/fastfetch/basic-configuration.jsonc b/tests/modules/programs/fastfetch/basic-configuration.jsonc new file mode 100755 index 00000000..70eabbd6 --- /dev/null +++ b/tests/modules/programs/fastfetch/basic-configuration.jsonc @@ -0,0 +1,28 @@ +{ + "display": { + "binaryPrefix": "si", + "color": "blue", + "separator": "  " + }, + "logo": { + "padding": { + "right": 1 + }, + "source": "nixos_small" + }, + "modules": [ + { + "format": "{1}-{3}-{11}", + "key": "Date", + "type": "datetime" + }, + { + "format": "{14}:{17}:{20}", + "key": "Time", + "type": "datetime" + }, + "break", + "player", + "media" + ] +} diff --git a/tests/modules/programs/fastfetch/basic-configuration.nix b/tests/modules/programs/fastfetch/basic-configuration.nix new file mode 100644 index 00000000..a0b6783a --- /dev/null +++ b/tests/modules/programs/fastfetch/basic-configuration.nix @@ -0,0 +1,39 @@ +{ + programs.fastfetch = { + enable = true; + settings = { + logo = { + source = "nixos_small"; + padding = { right = 1; }; + }; + display = { + binaryPrefix = "si"; + color = "blue"; + separator = "  "; + }; + modules = [ + { + type = "datetime"; + key = "Date"; + format = "{1}-{3}-{11}"; + } + { + type = "datetime"; + key = "Time"; + format = "{14}:{17}:{20}"; + } + "break" + "player" + "media" + ]; + }; + }; + + test.stubs.fastfetch = { }; + + nmt.script = let configFile = "home-files/.config/fastfetch/config.jsonc"; + in '' + assertFileExists "${configFile}" + assertFileContent "${configFile}" ${./basic-configuration.jsonc} + ''; +} diff --git a/tests/modules/programs/fastfetch/default-configuration.nix b/tests/modules/programs/fastfetch/default-configuration.nix new file mode 100644 index 00000000..428081d4 --- /dev/null +++ b/tests/modules/programs/fastfetch/default-configuration.nix @@ -0,0 +1,9 @@ +{ + programs.fastfetch.enable = true; + + test.stubs.fastfetch = { }; + + nmt.script = '' + assertPathNotExists "home-files/.config/fastfetch/config.jsonc" + ''; +} diff --git a/tests/modules/programs/fastfetch/default.nix b/tests/modules/programs/fastfetch/default.nix new file mode 100644 index 00000000..d347e562 --- /dev/null +++ b/tests/modules/programs/fastfetch/default.nix @@ -0,0 +1,4 @@ +{ + fastfetch-default-configuration = ./default-configuration.nix; + fastfetch-basic-configuration = ./basic-configuration.nix; +} From 4855bfb6ce20225a1b0e2aae2379da909ab38350 Mon Sep 17 00:00:00 2001 From: Vincent Gatine Date: Thu, 9 May 2024 18:04:48 +0200 Subject: [PATCH 088/102] kanshi: update configuration to better match upstream --- modules/services/kanshi.nix | 175 ++++++++++++++---- .../services/kanshi/basic-configuration.nix | 5 + tests/modules/services/kanshi/default.nix | 5 +- .../services/kanshi/new-configuration.conf | 19 ++ .../services/kanshi/new-configuration.nix | 63 +++++++ 5 files changed, 231 insertions(+), 36 deletions(-) create mode 100644 tests/modules/services/kanshi/new-configuration.conf create mode 100644 tests/modules/services/kanshi/new-configuration.nix diff --git a/modules/services/kanshi.nix b/modules/services/kanshi.nix index 02fe8e3c..1e695030 100644 --- a/modules/services/kanshi.nix +++ b/modules/services/kanshi.nix @@ -6,6 +6,48 @@ let cfg = config.services.kanshi; + directivesTag = types.attrTag { + profile = mkOption { + type = profileModule; + description = '' + profile attribute set. + ''; + }; + output = mkOption { + type = outputModule; + description = '' + output attribute set. + ''; + }; + include = mkOption { + type = types.str; + description = '' + Include as another file from _path_. + Expands shell syntax (see *wordexp*(3) for details). + ''; + }; + }; + + tagToStr = x: + if x ? profile then + profileStr x.profile + else if x ? output then + outputStr x.output + else if x ? include then + ''include "${x.include}"'' + else + throw "Unknown tags ${attrNames x}"; + + directivesStr = '' + ${concatStringsSep "\n" (map tagToStr cfg.settings)} + ''; + + oldDirectivesStr = '' + ${concatStringsSep "\n" + (mapAttrsToList (n: v: profileStr (v // { name = n; })) cfg.profiles)} + ${cfg.extraConfig} + ''; + outputModule = types.submodule { options = { @@ -113,6 +155,14 @@ let ''; }; + name = mkOption { + type = types.str; + default = ""; + description = '' + Profile name + ''; + }; + exec = mkOption { type = with types; coercedTo str singleton (listOf str); default = [ ]; @@ -127,15 +177,14 @@ let }; }; - profileStr = name: - { outputs, exec, ... }: '' - profile ${name} { - ${ - concatStringsSep "\n " - (map outputStr outputs ++ map (cmd: "exec ${cmd}") exec) - } + profileStr = { outputs, exec, ... }@args: '' + profile ${args.name or ""} { + ${ + concatStringsSep "\n " + (map outputStr outputs ++ map (cmd: "exec ${cmd}") exec) } - ''; + } + ''; in { meta.maintainers = [ hm.maintainers.nurelin ]; @@ -157,7 +206,7 @@ in { type = types.attrsOf profileModule; default = { }; description = '' - List of profiles. + Attribute set of profiles. ''; example = literalExpression '' undocked = { @@ -190,6 +239,39 @@ in { ''; }; + settings = mkOption { + type = types.listOf directivesTag; + default = [ ]; + description = '' + Ordered list of directives. + See kanshi(5) for informations. + ''; + example = literalExpression '' + { include = "path/to/included/files"; } + { output.criteria = "eDP-1"; + output.scale = 2; + } + { profile.name = "undocked"; + profile.outputs = [ + { + criteria = "eDP-1"; + } + ]; + } + { profile.name = "docked"; + profile.outputs = [ + { + criteria = "eDP-1"; + } + { + criteria = "Some Company ASDF 4242"; + transform = "90"; + } + ]; + } + ''; + }; + systemdTarget = mkOption { type = types.str; default = "sway-session.target"; @@ -199,33 +281,56 @@ in { }; }; - config = mkIf cfg.enable { - assertions = [ - (lib.hm.assertions.assertPlatform "services.kanshi" pkgs - lib.platforms.linux) - ]; + config = mkIf cfg.enable (mkMerge [ + { + assertions = [ + (lib.hm.assertions.assertPlatform "services.kanshi" pkgs + lib.platforms.linux) + { + assertion = (cfg.profiles == { } && cfg.extraConfig == "") + || (length cfg.settings) == 0; + message = + "Cannot mix kanshi.settings with kanshi.profiles or kanshi.extraConfig"; + } + ]; + } - xdg.configFile."kanshi/config".text = '' - ${concatStringsSep "\n" (mapAttrsToList profileStr cfg.profiles)} - ${cfg.extraConfig} - ''; + (mkIf (cfg.profiles != { }) { + warnings = [ + "kanshi.profiles option is deprecated. Use kanshi.settings instead." + ]; + }) - systemd.user.services.kanshi = { - Unit = { - Description = "Dynamic output configuration"; - Documentation = "man:kanshi(1)"; - PartOf = cfg.systemdTarget; - Requires = cfg.systemdTarget; - After = cfg.systemdTarget; + (mkIf (cfg.extraConfig != "") { + warnings = [ + "kanshi.extraConfig option is deprecated. Use kanshi.settings instead." + ]; + }) + + { + xdg.configFile."kanshi/config".text = + if cfg.profiles == { } && cfg.extraConfig == "" then + directivesStr + else + oldDirectivesStr; + + systemd.user.services.kanshi = { + Unit = { + Description = "Dynamic output configuration"; + Documentation = "man:kanshi(1)"; + PartOf = cfg.systemdTarget; + Requires = cfg.systemdTarget; + After = cfg.systemdTarget; + }; + + Service = { + Type = "simple"; + ExecStart = "${cfg.package}/bin/kanshi"; + Restart = "always"; + }; + + Install = { WantedBy = [ cfg.systemdTarget ]; }; }; - - Service = { - Type = "simple"; - ExecStart = "${cfg.package}/bin/kanshi"; - Restart = "always"; - }; - - Install = { WantedBy = [ cfg.systemdTarget ]; }; - }; - }; + } + ]); } diff --git a/tests/modules/services/kanshi/basic-configuration.nix b/tests/modules/services/kanshi/basic-configuration.nix index c5706e63..ffb6db7b 100644 --- a/tests/modules/services/kanshi/basic-configuration.nix +++ b/tests/modules/services/kanshi/basic-configuration.nix @@ -47,6 +47,11 @@ ''; }; + test.asserts.warnings.expected = [ + "kanshi.profiles option is deprecated. Use kanshi.settings instead." + "kanshi.extraConfig option is deprecated. Use kanshi.settings instead." + ]; + nmt.script = '' serviceFile=home-files/.config/systemd/user/kanshi.service assertFileExists $serviceFile diff --git a/tests/modules/services/kanshi/default.nix b/tests/modules/services/kanshi/default.nix index cb6b2a6b..b7704b11 100644 --- a/tests/modules/services/kanshi/default.nix +++ b/tests/modules/services/kanshi/default.nix @@ -1 +1,4 @@ -{ kanshi-basic-configuration = ./basic-configuration.nix; } +{ + kanshi-basic-configuration = ./basic-configuration.nix; + kanshi-new-configuration = ./new-configuration.nix; +} diff --git a/tests/modules/services/kanshi/new-configuration.conf b/tests/modules/services/kanshi/new-configuration.conf new file mode 100644 index 00000000..c0858a04 --- /dev/null +++ b/tests/modules/services/kanshi/new-configuration.conf @@ -0,0 +1,19 @@ +include "path/to/included/file" +output "*" enable +profile nomad { + output "eDP-1" enable +} + +profile desktop { + output "eDP-1" disable + output "Iiyama North America PLE2483H-DP" enable position 0,0 + output "Iiyama North America PLE2483H-DP 1158765348486" enable mode 1920x1080 position 1920,0 scale 2.100000 transform flipped-270 + exec echo "1 two 3" + exec echo "4 five 6" +} + +profile { + output "LVDS-1" enable + exec echo "7 eight 9" +} + diff --git a/tests/modules/services/kanshi/new-configuration.nix b/tests/modules/services/kanshi/new-configuration.nix new file mode 100644 index 00000000..9b3a3647 --- /dev/null +++ b/tests/modules/services/kanshi/new-configuration.nix @@ -0,0 +1,63 @@ +{ config, pkgs, ... }: { + config = { + services.kanshi = { + enable = true; + package = config.lib.test.mkStubPackage { }; + settings = [ + { include = "path/to/included/file"; } + { + output = { + criteria = "*"; + status = "enable"; + }; + } + { + profile.name = "nomad"; + profile.outputs = [{ + criteria = "eDP-1"; + status = "enable"; + }]; + } + { + profile.name = "desktop"; + profile.exec = [ ''echo "1 two 3"'' ''echo "4 five 6"'' ]; + profile.outputs = [ + { + criteria = "eDP-1"; + status = "disable"; + } + { + criteria = "Iiyama North America PLE2483H-DP"; + status = "enable"; + position = "0,0"; + } + { + criteria = "Iiyama North America PLE2483H-DP 1158765348486"; + status = "enable"; + position = "1920,0"; + scale = 2.1; + mode = "1920x1080"; + transform = "flipped-270"; + } + ]; + } + { + profile.outputs = [{ + criteria = "LVDS-1"; + status = "enable"; + }]; + profile.exec = ''echo "7 eight 9"''; + } + ]; + }; + + nmt.script = '' + serviceFile=home-files/.config/systemd/user/kanshi.service + assertFileExists $serviceFile + + assertFileExists home-files/.config/kanshi/config + assertFileContent home-files/.config/kanshi/config \ + ${./new-configuration.conf} + ''; + }; +} From c6ddd80fb1e5a286b3a5cb32ef94a2e4e346a9d3 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Mon, 22 Apr 2024 22:34:22 -0500 Subject: [PATCH 089/102] hyprlock: add module --- modules/misc/news.nix | 11 ++ modules/modules.nix | 1 + modules/programs/hyprlock.nix | 127 ++++++++++++ tests/default.nix | 1 + .../hyprlock/basic-configuration.conf | 27 +++ .../programs/hyprlock/basic-configuration.nix | 45 +++++ .../hyprlock/complex-configuration.conf | 167 ++++++++++++++++ .../hyprlock/complex-configuration.nix | 183 ++++++++++++++++++ tests/modules/programs/hyprlock/default.nix | 4 + 9 files changed, 566 insertions(+) create mode 100644 modules/programs/hyprlock.nix create mode 100644 tests/modules/programs/hyprlock/basic-configuration.conf create mode 100644 tests/modules/programs/hyprlock/basic-configuration.nix create mode 100644 tests/modules/programs/hyprlock/complex-configuration.conf create mode 100644 tests/modules/programs/hyprlock/complex-configuration.nix create mode 100644 tests/modules/programs/hyprlock/default.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 6319d635..dbbca455 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1618,6 +1618,17 @@ in { https://github.com/fastfetch-cli/fastfetch for more. ''; } + + { + time = "2024-05-10T11:48:34+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'programs.hyprlock'. + + Hyprland's simple, yet multi-threaded and GPU-accelerated screen + locking utility. See https://github.com/hyprwm/hyprlock for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 22664091..05692356 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -118,6 +118,7 @@ let ./programs/hstr.nix ./programs/htop.nix ./programs/hyfetch.nix + ./programs/hyprlock.nix ./programs/i3blocks.nix ./programs/i3status-rust.nix ./programs/i3status.nix diff --git a/modules/programs/hyprlock.nix b/modules/programs/hyprlock.nix new file mode 100644 index 00000000..25d87188 --- /dev/null +++ b/modules/programs/hyprlock.nix @@ -0,0 +1,127 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + + cfg = config.programs.hyprlock; + +in { + meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ]; + + options.programs.hyprlock = { + enable = mkEnableOption "" // { + description = '' + Whether to enable Hyprlock, Hyprland's GPU-accelerated lock screen + utility. + + Note that PAM must be configured to enable hyprlock to perform + authentication. The package installed through home-manager will *not* be + able to unlock the session without this configuration. + + On NixOS, it can be enabled using: + + ```nix + security.pam.services.hyprlock = {}; + ``` + ''; + }; + + package = mkPackageOption pkgs "hyprlock" { }; + + settings = lib.mkOption { + type = with lib.types; + let + valueType = nullOr (oneOf [ + bool + int + float + str + path + (attrsOf valueType) + (listOf valueType) + ]) // { + description = "Hyprlock configuration value"; + }; + in valueType; + default = { }; + example = lib.literalExpression '' + { + general = { + disable_loading_bar = true; + grace = 300; + hide_cursor = true; + no_fade_in = false; + }; + + background = [ + { + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + } + ]; + + input-field = [ + { + size = "200, 50"; + position = "0, -80"; + monitor = ""; + dots_center = true; + fade_on_empty = false; + font_color = "rgb(202, 211, 245)"; + inner_color = "rgb(91, 96, 120)"; + outer_color = "rgb(24, 25, 38)"; + outline_thickness = 5; + placeholder_text = '\'Password...'\'; + shadow_passes = 2; + } + ]; + } + ''; + description = '' + Hyprlock configuration written in Nix. Entries with the same key should + be written as lists. Variables' and colors' names should be quoted. See + for more examples. + ''; + }; + + extraConfig = lib.mkOption { + type = lib.types.lines; + default = ""; + description = '' + Extra configuration lines to add to `~/.config/hypr/hyprlock.conf`. + ''; + }; + + sourceFirst = lib.mkEnableOption '' + putting source entries at the top of the configuration + '' // { + default = true; + }; + + importantPrefixes = lib.mkOption { + type = with lib.types; listOf str; + default = [ "$" "monitor" "size" ] + ++ lib.optionals cfg.sourceFirst [ "source" ]; + example = [ "$" "monitor" "size" ]; + description = '' + List of prefix of attributes to source at the top of the config. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + + xdg.configFile."hypr/hyprlock.conf" = + let shouldGenerate = cfg.extraConfig != "" || cfg.settings != { }; + in mkIf shouldGenerate { + text = lib.optionalString (cfg.settings != { }) + (lib.hm.generators.toHyprconf { + attrs = cfg.settings; + inherit (cfg) importantPrefixes; + }) + lib.optionalString (cfg.extraConfig != null) cfg.extraConfig; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 0ebf4715..f5b0cbc6 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -197,6 +197,7 @@ in import nmtSrc { ./modules/programs/gnome-shell ./modules/programs/gnome-terminal ./modules/programs/hexchat + ./modules/programs/hyprlock ./modules/programs/i3blocks ./modules/programs/i3status-rust ./modules/programs/imv diff --git a/tests/modules/programs/hyprlock/basic-configuration.conf b/tests/modules/programs/hyprlock/basic-configuration.conf new file mode 100644 index 00000000..3fdf9ce3 --- /dev/null +++ b/tests/modules/programs/hyprlock/basic-configuration.conf @@ -0,0 +1,27 @@ +background { + monitor= + blur_passes=3 + blur_size=8 + path=screenshot +} + +general { + disable_loading_bar=true + grace=300 + hide_cursor=true + no_fade_in=false +} + +input-field { + monitor= + size=200, 50 + dots_center=true + fade_on_empty=false + font_color=rgb(202, 211, 245) + inner_color=rgb(91, 96, 120) + outer_color=rgb(24, 25, 38) + outline_thickness=5 + placeholder_text=Password... + position=0, -80 + shadow_passes=2 +} diff --git a/tests/modules/programs/hyprlock/basic-configuration.nix b/tests/modules/programs/hyprlock/basic-configuration.nix new file mode 100644 index 00000000..c4f6821e --- /dev/null +++ b/tests/modules/programs/hyprlock/basic-configuration.nix @@ -0,0 +1,45 @@ +{ ... }: + +{ + programs.hyprlock = { + enable = true; + + settings = { + general = { + disable_loading_bar = true; + grace = 300; + hide_cursor = true; + no_fade_in = false; + }; + + background = [{ + monitor = ""; + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + }]; + + input-field = [{ + size = "200, 50"; + position = "0, -80"; + monitor = ""; + dots_center = true; + fade_on_empty = false; + font_color = "rgb(202, 211, 245)"; + inner_color = "rgb(91, 96, 120)"; + outer_color = "rgb(24, 25, 38)"; + outline_thickness = 5; + placeholder_text = ''Password...''; + shadow_passes = 2; + }]; + }; + }; + + test.stubs.hyprlock = { }; + + nmt.script = '' + assertFileContent \ + home-files/.config/hypr/hyprlock.conf \ + ${./basic-configuration.conf} + ''; +} diff --git a/tests/modules/programs/hyprlock/complex-configuration.conf b/tests/modules/programs/hyprlock/complex-configuration.conf new file mode 100644 index 00000000..1936f43f --- /dev/null +++ b/tests/modules/programs/hyprlock/complex-configuration.conf @@ -0,0 +1,167 @@ +background { + monitor= + blur_passes=3 + blur_size=8 + brightness=0.817200 + color=rgba(25, 20, 20, 1.0) + contrast=0.891700 + noise=0.011700 + path=screenshot + vibrancy=0.168600 + vibrancy_darkness=0.050000 +} + +general { + disable_loading_bar=true + grace=300 + hide_cursor=true + ignore_empty_input=false + no_fade_in=false + no_fade_out=false +} + +image { + monitor= + size=120 + border_color=rgb(202, 211, 245) + border_size=5 + halign=center + path=/home/$USER/.face + position=0, 45 + reload_cmd= + reload_time=-1 + rotate=0.000000 + rounding=-1 + shadow_passes=1 + valign=center +} + +input-field { + monitor= + size=200, 50 + bothlock_color=-1 + capslock_color=-1 + check_color=rgb(204, 136, 34) + dots_center=true + dots_rounding=-1 + dots_size=0.330000 + dots_spacing=0.150000 + fade_on_empty=false + fade_timeout=2000 + fail_color=rgb(204, 34, 34) + fail_text=$FAIL + fail_transition=300 + font_color=rgb(202, 211, 245) + halign=center + hide_input=false + inner_color=rgb(91, 96, 120) + invert_numlock=false + numlock_color=-1 + outer_color=rgb(24, 25, 38) + outline_thickness=5 + placeholder_text=Password... + position=0, -80 + rounding=-1 + shadow_boost=1.200000 + shadow_color=rgba(0, 0, 0, 1.0) + shadow_passes=2 + shadow_size=3 + swap_font_color=false + valign=center +} + +label { + monitor= + color=rgb(202, 211, 245) + font_family=MonaspiceNe Nerd Font + font_size=100 + halign=center + position=0, 330 + rotate=0.000000 + shadow_boost=1.200000 + shadow_color=rgba(0, 0, 0, 1.0) + shadow_passes=2 + shadow_size=3 + text=$TIME + valign=center +} + +label { + monitor= + color=rgb(202, 211, 245) + font_family=MonaspiceNe Nerd Font + font_size=25 + halign=left + position=10, 0 + rotate=0.000000 + shadow_boost=1.200000 + shadow_color=rgba(0, 0, 0, 1.0) + shadow_passes=1 + shadow_size=3 + text= $USER + valign=top +} + +label { + monitor= + color=rgb(202, 211, 245) + font_family=MonaspiceNe Nerd Font + font_size=50 + halign=center + position=15, -350 + rotate=0.000000 + shadow_boost=1.200000 + shadow_color=rgba(0, 0, 0, 1.0) + shadow_passes=1 + shadow_size=3 + text=󰌾 + valign=center +} + +label { + monitor= + color=rgb(202, 211, 245) + font_family=MonaspiceNe Nerd Font + font_size=25 + halign=center + position=0, -430 + rotate=0.000000 + shadow_boost=1.200000 + shadow_color=rgba(0, 0, 0, 1.0) + shadow_passes=1 + shadow_size=3 + text=Locked + valign=center +} + +label { + monitor= + color=rgb(202, 211, 245) + font_family=MonaspiceNe Nerd Font + font_size=30 + halign=center + position=0, 210 + rotate=0.000000 + shadow_boost=1.200000 + shadow_color=rgba(0, 0, 0, 1.0) + shadow_passes=1 + shadow_size=3 + text=cmd[update:120000] echo "$(date +'%a %d %B')" + valign=center +} + +label { + monitor= + color=rgb(202, 211, 245) + font_family=MonaspiceNe Nerd Font + font_size=25 + halign=right + position=5, 8 + rotate=0.000000 + shadow_boost=1.200000 + shadow_color=rgba(0, 0, 0, 1.0) + shadow_passes=1 + shadow_size=3 + text= + valign=bottom +} diff --git a/tests/modules/programs/hyprlock/complex-configuration.nix b/tests/modules/programs/hyprlock/complex-configuration.nix new file mode 100644 index 00000000..8544a8c5 --- /dev/null +++ b/tests/modules/programs/hyprlock/complex-configuration.nix @@ -0,0 +1,183 @@ +{ ... }: + +{ + programs.hyprlock = { + enable = true; + + settings = { + general = { + disable_loading_bar = true; + hide_cursor = true; + ignore_empty_input = false; + grace = 300; + no_fade_in = false; + no_fade_out = false; + }; + + background = [{ + monitor = ""; + brightness = "0.817200"; + color = "rgba(25, 20, 20, 1.0)"; + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + contrast = "0.891700"; + noise = "0.011700"; + vibrancy = "0.168600"; + vibrancy_darkness = "0.050000"; + }]; + + input-field = [{ + monitor = ""; + size = "200, 50"; + position = "0, -80"; + outline_thickness = 5; + dots_center = true; + outer_color = "rgb(24, 25, 38)"; + inner_color = "rgb(91, 96, 120)"; + font_color = "rgb(202, 211, 245)"; + fade_on_empty = false; + placeholder_text = ''Password...''; + shadow_passes = 2; + bothlock_color = -1; + capslock_color = "-1"; + check_color = "rgb(204, 136, 34)"; + dots_rounding = "-1"; + dots_size = "0.330000"; + dots_spacing = "0.150000"; + fade_timeout = "2000"; + fail_color = "rgb(204, 34, 34)"; + fail_text = "$FAIL"; + fail_transition = 300; + halign = "center"; + hide_input = false; + invert_numlock = false; + numlock_color = -1; + rounding = -1; + shadow_boost = "1.200000"; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_size = 3; + swap_font_color = false; + valign = "center"; + }]; + + image = [{ + monitor = ""; + size = 120; + position = "0, 45"; + path = "/home/$USER/.face"; + border_color = "rgb(202, 211, 245)"; + border_size = 5; + halign = "center"; + valign = "center"; + shadow_passes = 1; + reload_cmd = ""; + reload_time = -1; + rotate = "0.000000"; + rounding = "-1"; + }]; + + label = [ + { + monitor = ""; + text = ''$TIME''; + color = "rgb(202, 211, 245)"; + font_size = 100; + font_family = "MonaspiceNe Nerd Font"; + valign = "center"; + halign = "center"; + position = "0, 330"; + shadow_passes = 2; + rotate = "0.000000"; + shadow_boost = "1.200000"; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_size = 3; + } + { + monitor = ""; + text = '' $USER''; + color = "rgb(202, 211, 245)"; + font_size = 25; + font_family = "MonaspiceNe Nerd Font"; + valign = "top"; + halign = "left"; + position = "10, 0"; + rotate = "0.000000"; + shadow_boost = "1.200000"; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_size = 3; + shadow_passes = 1; + } + { + monitor = ""; + text = ''󰌾 ''; + color = "rgb(202, 211, 245)"; + font_size = 50; + font_family = "MonaspiceNe Nerd Font"; + valign = "center"; + halign = "center"; + position = "15, -350"; + rotate = "0.000000"; + shadow_boost = "1.200000"; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_size = 3; + shadow_passes = 1; + } + { + monitor = ""; + text = ''Locked''; + color = "rgb(202, 211, 245)"; + font_size = 25; + font_family = "MonaspiceNe Nerd Font"; + valign = "center"; + halign = "center"; + position = "0, -430"; + rotate = "0.000000"; + shadow_boost = "1.200000"; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_size = 3; + shadow_passes = 1; + } + { + monitor = ""; + text = '' + cmd[update:120000] echo "$(date +'%a %d %B')"''; + color = "rgb(202, 211, 245)"; + font_size = 30; + font_family = "MonaspiceNe Nerd Font"; + valign = "center"; + halign = "center"; + position = "0, 210"; + rotate = "0.000000"; + shadow_boost = "1.200000"; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_size = 3; + shadow_passes = 1; + } + { + monitor = ""; + text = '' ''; + color = "rgb(202, 211, 245)"; + font_size = 25; + font_family = "MonaspiceNe Nerd Font"; + valign = "bottom"; + halign = "right"; + position = "5, 8"; + rotate = "0.000000"; + shadow_boost = "1.200000"; + shadow_color = "rgba(0, 0, 0, 1.0)"; + shadow_size = 3; + shadow_passes = 1; + } + ]; + }; + }; + + test.stubs.hyprlock = { }; + + nmt.script = '' + assertFileContent \ + home-files/.config/hypr/hyprlock.conf \ + ${./complex-configuration.conf} + ''; +} diff --git a/tests/modules/programs/hyprlock/default.nix b/tests/modules/programs/hyprlock/default.nix new file mode 100644 index 00000000..3ea18c02 --- /dev/null +++ b/tests/modules/programs/hyprlock/default.nix @@ -0,0 +1,4 @@ +{ + hyprlock-basic-configuration = ./basic-configuration.nix; + hyprlock-complex-configuration = ./complex-configuration.nix; +} From 223743313bab8b0b44a57eaf9573de9f69082b4d Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sat, 27 Apr 2024 09:54:16 -0500 Subject: [PATCH 090/102] hyprpaper: add module --- modules/misc/news.nix | 13 +++ modules/modules.nix | 1 + modules/services/hyprpaper.nix | 89 +++++++++++++++++++ tests/default.nix | 1 + .../hyprpaper/basic-configuration.nix | 30 +++++++ tests/modules/services/hyprpaper/default.nix | 1 + .../modules/services/hyprpaper/hyprpaper.conf | 7 ++ 7 files changed, 142 insertions(+) create mode 100644 modules/services/hyprpaper.nix create mode 100644 tests/modules/services/hyprpaper/basic-configuration.nix create mode 100644 tests/modules/services/hyprpaper/default.nix create mode 100644 tests/modules/services/hyprpaper/hyprpaper.conf diff --git a/modules/misc/news.nix b/modules/misc/news.nix index dbbca455..b83d0858 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1629,6 +1629,19 @@ in { locking utility. See https://github.com/hyprwm/hyprlock for more. ''; } + + { + time = "2024-05-10T13:35:19+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'services.hyprpaper'. + + Hyprpaper is a blazing fast wallpaper utility for Hyprland with the + ability to dynamically change wallpapers through sockets. It will work + on all wlroots-based compositors, though. See + https://github.com/hyprwm/hyprpaper for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 05692356..e1b08087 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -306,6 +306,7 @@ let ./services/home-manager-auto-upgrade.nix ./services/hound.nix ./services/hypridle.nix + ./services/hyprpaper.nix ./services/imapnotify.nix ./services/kanshi.nix ./services/kbfs.nix diff --git a/modules/services/hyprpaper.nix b/modules/services/hyprpaper.nix new file mode 100644 index 00000000..ede09b25 --- /dev/null +++ b/modules/services/hyprpaper.nix @@ -0,0 +1,89 @@ +{ config, lib, pkgs, ... }: +with lib; +let + + cfg = config.services.hyprpaper; +in { + meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ]; + + options.services.hyprpaper = { + enable = mkEnableOption "Hyprpaper, Hyprland's wallpaper daemon"; + + package = mkPackageOption pkgs "hyprpaper" { }; + + settings = lib.mkOption { + type = with lib.types; + let + valueType = nullOr (oneOf [ + bool + int + float + str + path + (attrsOf valueType) + (listOf valueType) + ]) // { + description = "Hyprpaper configuration value"; + }; + in valueType; + default = { }; + description = '' + hyprpaper configuration written in Nix. Entries with the same key + should be written as lists. Variables' and colors' names should be + quoted. See for more examples. + ''; + example = lib.literalExpression '' + { + ipc = "on"; + splash = false; + splash_offset = 2.0; + + preload = + [ "/share/wallpapers/buttons.png" "/share/wallpapers/cat_pacman.png" ]; + + wallpaper = [ + "DP-3,/share/wallpapers/buttons.png" + "DP-1,/share/wallpapers/cat_pacman.png" + ]; + } + ''; + }; + + importantPrefixes = lib.mkOption { + type = with lib.types; listOf str; + default = [ "$" ]; + example = [ "$" ]; + description = '' + List of prefix of attributes to source at the top of the config. + ''; + }; + }; + + config = mkIf cfg.enable { + xdg.configFile."hypr/hyprpaper.conf" = mkIf (cfg.settings != { }) { + text = lib.hm.generators.toHyprconf { + attrs = cfg.settings; + inherit (cfg) importantPrefixes; + }; + }; + + systemd.user.services.hyprpaper = { + Install = { WantedBy = [ "graphical-session.target" ]; }; + + Unit = { + ConditionEnvironment = "WAYLAND_DISPLAY"; + Description = "hyprpaper"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + X-Restart-Triggers = + [ "${config.xdg.configFile."hypr/hyprpaper.conf".source}" ]; + }; + + Service = { + ExecStart = "${getExe cfg.package}"; + Restart = "always"; + RestartSec = "10"; + }; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index f5b0cbc6..3b52ff40 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -243,6 +243,7 @@ in import nmtSrc { ./modules/services/gromit-mpx ./modules/services/home-manager-auto-upgrade ./modules/services/hypridle + ./modules/services/hyprpaper ./modules/services/imapnotify ./modules/services/kanshi ./modules/services/lieer diff --git a/tests/modules/services/hyprpaper/basic-configuration.nix b/tests/modules/services/hyprpaper/basic-configuration.nix new file mode 100644 index 00000000..7bf944fb --- /dev/null +++ b/tests/modules/services/hyprpaper/basic-configuration.nix @@ -0,0 +1,30 @@ +{ pkgs, ... }: + +{ + services.hyprpaper = { + enable = true; + settings = { + ipc = "on"; + splash = false; + splash_offset = 2.0; + + preload = + [ "/share/wallpapers/buttons.png" "/share/wallpapers/cat_pacman.png" ]; + + wallpaper = [ + "DP-3,/share/wallpapers/buttons.png" + "DP-1,/share/wallpapers/cat_pacman.png" + ]; + }; + }; + + test.stubs.hyprpaper = { }; + + nmt.script = '' + config=home-files/.config/hypr/hyprpaper.conf + clientServiceFile=home-files/.config/systemd/user/hyprpaper.service + assertFileExists $config + assertFileExists $clientServiceFile + assertFileContent $config ${./hyprpaper.conf} + ''; +} diff --git a/tests/modules/services/hyprpaper/default.nix b/tests/modules/services/hyprpaper/default.nix new file mode 100644 index 00000000..2a5abbfe --- /dev/null +++ b/tests/modules/services/hyprpaper/default.nix @@ -0,0 +1 @@ +{ hyprpaper-basic-configuration = ./basic-configuration.nix; } diff --git a/tests/modules/services/hyprpaper/hyprpaper.conf b/tests/modules/services/hyprpaper/hyprpaper.conf new file mode 100644 index 00000000..d7b4ccb4 --- /dev/null +++ b/tests/modules/services/hyprpaper/hyprpaper.conf @@ -0,0 +1,7 @@ +ipc=on +preload=/share/wallpapers/buttons.png +preload=/share/wallpapers/cat_pacman.png +splash=false +splash_offset=2.000000 +wallpaper=DP-3,/share/wallpapers/buttons.png +wallpaper=DP-1,/share/wallpapers/cat_pacman.png From f55718aec361f6a5101f07e3203106f85d6cad20 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Fri, 9 Feb 2024 18:09:33 +0100 Subject: [PATCH 091/102] hyprland: add support for XDG autostart using systemd Using the option wayland.windowManager.hyprland.systemd.enableXdgAutostart users can now choose to start applications present in `$XDG_CONFIG_HOME/autostart` when starting their sway session. See 0144ac418ef633bfc9dbd89b8c199ad3a617c59f and https://github.com/nix-community/home-manager/pull/3747 --- modules/services/window-managers/hyprland.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/services/window-managers/hyprland.nix b/modules/services/window-managers/hyprland.nix index 4f1c9e92..ff162fb3 100644 --- a/modules/services/window-managers/hyprland.nix +++ b/modules/services/window-managers/hyprland.nix @@ -102,6 +102,10 @@ in { ]; description = "Extra commands to be run after D-Bus activation."; }; + + enableXdgAutostart = lib.mkEnableOption '' + autostart of applications using + {manpage}`systemd-xdg-autostart-generator(8)`''; }; xwayland.enable = lib.mkEnableOption "XWayland" // { default = true; }; @@ -247,8 +251,12 @@ in { Description = "Hyprland compositor session"; Documentation = [ "man:systemd.special(7)" ]; BindsTo = [ "graphical-session.target" ]; - Wants = [ "graphical-session-pre.target" ]; + Wants = [ "graphical-session-pre.target" ] + ++ lib.optional cfg.systemd.enableXdgAutostart + "xdg-desktop-autostart.target"; After = [ "graphical-session-pre.target" ]; + Before = lib.mkIf cfg.systemd.enableXdgAutostart + [ "xdg-desktop-autostart.target" ]; }; }; From e6a315900db775da3bb3138bab8caa70dafdaf9e Mon Sep 17 00:00:00 2001 From: home-manager-bot <106474382+home-manager-bot@users.noreply.github.com> Date: Fri, 10 May 2024 18:26:25 +0200 Subject: [PATCH 092/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/63c3a29ca82437c87573e4c6919b09a24ea61b0f' (2024-05-02) → 'github:NixOS/nixpkgs/25865a40d14b3f9cf19f19b924e2ab4069b09588' (2024-05-05) Co-authored-by: github-actions[bot] --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 5913a4e4..cfe58270 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1714635257, - "narHash": "sha256-4cPymbty65RvF1DWQfc+Bc8B233A1BWxJnNULJKQ1EY=", + "lastModified": 1714906307, + "narHash": "sha256-UlRZtrCnhPFSJlDQE7M0eyhgvuuHBTe1eJ9N9AQlJQ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "63c3a29ca82437c87573e4c6919b09a24ea61b0f", + "rev": "25865a40d14b3f9cf19f19b924e2ab4069b09588", "type": "github" }, "original": { From f2c5ba5e720fd584d83f2f97399dac0d26ae60b9 Mon Sep 17 00:00:00 2001 From: ilkecan Date: Fri, 18 Feb 2022 23:34:39 +0000 Subject: [PATCH 093/102] fontconfig: add defaultFonts.* options --- modules/misc/fontconfig.nix | 100 +++++++++++++++++++++++++++++++----- 1 file changed, 87 insertions(+), 13 deletions(-) diff --git a/modules/misc/fontconfig.nix b/modules/misc/fontconfig.nix index 49fef96a..9bc6ac47 100644 --- a/modules/misc/fontconfig.nix +++ b/modules/misc/fontconfig.nix @@ -1,3 +1,7 @@ +# This module is heavily inspired by the corresponding NixOS module. See +# +# https://github.com/NixOS/nixpkgs/blob/23.11/nixos/modules/config/fonts/fontconfig.nix + { config, lib, pkgs, ... }: with lib; @@ -32,6 +36,50 @@ in { {command}`nix-env`. ''; }; + + defaultFonts = { + monospace = mkOption { + type = with types; listOf str; + default = [ ]; + description = '' + Per-user default monospace font(s). Multiple fonts may be listed in + case multiple languages must be supported. + ''; + }; + + sansSerif = mkOption { + type = with types; listOf str; + default = [ ]; + description = '' + Per-user default sans serif font(s). Multiple fonts may be listed + in case multiple languages must be supported. + ''; + }; + + serif = mkOption { + type = with types; listOf str; + default = [ ]; + description = '' + Per-user default serif font(s). Multiple fonts may be listed in + case multiple languages must be supported. + ''; + }; + + emoji = mkOption { + type = with types; listOf str; + default = [ ]; + description = '' + Per-user default emoji font(s). Multiple fonts may be listed in + case a font does not support all emoji. + + Note that fontconfig matches color emoji fonts preferentially, + so if you want to use a black and white font while having + a color font installed (eg. Noto Color Emoji installed alongside + Noto Emoji), fontconfig will still choose the color font even + when it is later in the list. + ''; + }; + }; }; }; @@ -71,27 +119,53 @@ in { fi ''; - xdg.configFile = { - "fontconfig/conf.d/10-hm-fonts.conf".text = '' + xdg.configFile = let + mkFontconfigConf = conf: '' - Add fonts in the Nix user profile - - ${config.home.path}/etc/fonts/conf.d - ${config.home.path}/etc/fonts/fonts.conf - - ${config.home.path}/lib/X11/fonts - ${config.home.path}/share/fonts - ${profileDirectory}/lib/X11/fonts - ${profileDirectory}/share/fonts - - ${config.home.path}/lib/fontconfig/cache + ${conf} ''; + in { + "fontconfig/conf.d/10-hm-fonts.conf".text = mkFontconfigConf '' + Add fonts in the Nix user profile + + ${config.home.path}/etc/fonts/conf.d + ${config.home.path}/etc/fonts/fonts.conf + + ${config.home.path}/lib/X11/fonts + ${config.home.path}/share/fonts + ${profileDirectory}/lib/X11/fonts + ${profileDirectory}/share/fonts + + ${config.home.path}/lib/fontconfig/cache + ''; + + "fontconfig/conf.d/52-hm-default-fonts.conf".text = let + genDefault = fonts: name: + optionalString (fonts != [ ]) '' + + ${name} + + ${ + concatStringsSep "" (map (font: '' + ${font} + '') fonts) + } + + + ''; + in mkFontconfigConf '' + + ${genDefault cfg.defaultFonts.sansSerif "sans-serif"} + ${genDefault cfg.defaultFonts.serif "serif"} + ${genDefault cfg.defaultFonts.monospace "monospace"} + ${genDefault cfg.defaultFonts.emoji "emoji"} + ''; }; }; } From 5514ed321087f0b5af42564352d135acad4ff055 Mon Sep 17 00:00:00 2001 From: Akiyoshi Suda Date: Tue, 25 Oct 2022 21:31:46 +0900 Subject: [PATCH 094/102] yambar: add module --- modules/misc/news.nix | 14 +++++ modules/modules.nix | 1 + modules/programs/yambar.nix | 55 +++++++++++++++++++ tests/default.nix | 1 + tests/modules/programs/yambar/default.nix | 4 ++ .../programs/yambar/empty-settings.nix | 11 ++++ .../yambar/example-settings-expected.yml | 9 +++ .../programs/yambar/example-settings.nix | 35 ++++++++++++ 8 files changed, 130 insertions(+) create mode 100644 modules/programs/yambar.nix create mode 100644 tests/modules/programs/yambar/default.nix create mode 100644 tests/modules/programs/yambar/empty-settings.nix create mode 100644 tests/modules/programs/yambar/example-settings-expected.yml create mode 100644 tests/modules/programs/yambar/example-settings.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index b83d0858..2164d66a 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1642,6 +1642,20 @@ in { https://github.com/hyprwm/hyprpaper for more. ''; } + + { + time = "2024-05-10T21:28:38+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'programs.yambar'. + + Yambar is a lightweight and configurable status panel for X11 and + Wayland, that goes to great lengths to be both CPU and battery + efficient - polling is only done when absolutely necessary. + + See https://codeberg.org/dnkl/yambar for more. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index e1b08087..4e1f0e20 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -254,6 +254,7 @@ let ./programs/wpaperd.nix ./programs/xmobar.nix ./programs/xplr.nix + ./programs/yambar.nix ./programs/yazi.nix ./programs/yt-dlp.nix ./programs/z-lua.nix diff --git a/modules/programs/yambar.nix b/modules/programs/yambar.nix new file mode 100644 index 00000000..f4e0a434 --- /dev/null +++ b/modules/programs/yambar.nix @@ -0,0 +1,55 @@ +{ config, lib, pkgs, ... }: + +let + + cfg = config.programs.yambar; + yamlFormat = pkgs.formats.yaml { }; + +in { + meta.maintainers = [ lib.maintainers.carpinchomug ]; + + options.programs.yambar = { + enable = lib.mkEnableOption "Yambar"; + + package = lib.mkPackageOption pkgs "yambar" { }; + + settings = lib.mkOption { + type = yamlFormat.type; + default = { }; + example = lib.literalExpression '' + bar = { + location = "top"; + height = 26; + background = "00000066"; + + right = [ + { + clock.content = [ + { + string.text = "{time}"; + } + ]; + } + ]; + }; + ''; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/yambar/config.yml`. + See {manpage}`yambar(5)` for options. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "programs.yambar" pkgs + lib.platforms.linux) + ]; + + home.packages = [ cfg.package ]; + + xdg.configFile."yambar/config.yml" = lib.mkIf (cfg.settings != { }) { + source = yamlFormat.generate "config.yml" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 3b52ff40..4d8d49d4 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -219,6 +219,7 @@ in import nmtSrc { ./modules/programs/wofi ./modules/programs/wpaperd ./modules/programs/xmobar + ./modules/programs/yambar ./modules/programs/yt-dlp ./modules/services/activitywatch ./modules/services/avizo diff --git a/tests/modules/programs/yambar/default.nix b/tests/modules/programs/yambar/default.nix new file mode 100644 index 00000000..26de5673 --- /dev/null +++ b/tests/modules/programs/yambar/default.nix @@ -0,0 +1,4 @@ +{ + yambar-empty-settings = ./empty-settings.nix; + yambar-example-settings = ./example-settings.nix; +} diff --git a/tests/modules/programs/yambar/empty-settings.nix b/tests/modules/programs/yambar/empty-settings.nix new file mode 100644 index 00000000..56cdf27d --- /dev/null +++ b/tests/modules/programs/yambar/empty-settings.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + programs.yambar.enable = true; + + test.stubs.yambar = { }; + + nmt.script = '' + assertPathNotExists home-files/.config/yambar + ''; +} diff --git a/tests/modules/programs/yambar/example-settings-expected.yml b/tests/modules/programs/yambar/example-settings-expected.yml new file mode 100644 index 00000000..0bd9120a --- /dev/null +++ b/tests/modules/programs/yambar/example-settings-expected.yml @@ -0,0 +1,9 @@ +bar: + background: '00000066' + height: 26 + location: top + right: + - clock: + content: + - string: + text: '{time}' diff --git a/tests/modules/programs/yambar/example-settings.nix b/tests/modules/programs/yambar/example-settings.nix new file mode 100644 index 00000000..de572090 --- /dev/null +++ b/tests/modules/programs/yambar/example-settings.nix @@ -0,0 +1,35 @@ +{ config, ... }: + +{ + programs.yambar = { + enable = true; + package = config.lib.test.mkStubPackage { }; + + settings = { + bar = { + location = "top"; + height = 26; + background = "00000066"; + right = [{ clock.content = [{ string.text = "{time}"; }]; }]; + }; + }; + }; + + nmt.script = '' + assertFileContent \ + home-files/.config/yambar/config.yml \ + ${ + builtins.toFile "yambar-expected.yml" '' + bar: + background: '00000066' + height: 26 + location: top + right: + - clock: + content: + - string: + text: '{time}' + '' + } + ''; +} From 15d7ec30511199349c6cf8b6cbdc5e205a6a15e8 Mon Sep 17 00:00:00 2001 From: Hraban Luyat Date: Wed, 21 Feb 2024 16:15:28 -0500 Subject: [PATCH 095/102] darwin: misc defaults (dock, menu clock, finder) --- .../darwin/user-defaults/opts-allhosts.nix | 100 +++++++++++++++++- 1 file changed, 97 insertions(+), 3 deletions(-) diff --git a/modules/targets/darwin/user-defaults/opts-allhosts.nix b/modules/targets/darwin/user-defaults/opts-allhosts.nix index 820f05b3..4a4f1067 100644 --- a/modules/targets/darwin/user-defaults/opts-allhosts.nix +++ b/modules/targets/darwin/user-defaults/opts-allhosts.nix @@ -41,6 +41,19 @@ in { description = "Sets the measurement unit."; }; + ApplePressAndHoldEnabled = mkNullableOption { + type = types.bool; + example = true; + description = + "Repeat a key when it is held down (false) or display the accented character selector (true)"; + }; + + AppleShowAllExtensions = mkNullableOption { + type = types.bool; + example = true; + description = "Always show file extensions in Finder"; + }; + AppleTemperatureUnit = mkNullableOption { type = types.enum [ "Celsius" "Fahrenheit" ]; example = "Celsius"; @@ -49,6 +62,16 @@ in { AppleMetricUnits = mkNullableEnableOption "the metric system"; + KeyRepeat = mkNullableOption { + type = types.int; + example = 2; + description = '' + Interval between key repetitions when holding down a key. Lower is + faster. When setting through the control panel, 2 is the lowest value, + and 120 the highest. + ''; + }; + NSAutomaticCapitalizationEnabled = mkNullableEnableOption "automatic capitalization"; @@ -85,14 +108,50 @@ in { }; "com.apple.dock" = { + autohide = mkNullableOption { + type = types.bool; + example = true; + description = "Hide the Dock automatically"; + }; + expose-group-apps = mkNullableEnableOption + "grouping of windows by application in Mission Control"; + orientation = mkNullableOption { + type = types.enum [ "left" "bottom" "right" ]; + example = "left"; + description = "Position of the Dock on the screen"; + }; + size-immutable = mkNullableEnableOption "locking of the dock size"; tilesize = mkNullableOption { type = types.int; example = 64; description = "Sets the size of the dock."; }; - size-immutable = mkNullableEnableOption "locking of the dock size"; - expose-group-apps = mkNullableEnableOption - "grouping of windows by application in Mission Control"; + }; + + "com.apple.finder" = { + AppleShowAllFiles = mkNullableOption { + type = types.bool; + example = true; + description = "Show hidden files in Finder"; + }; + + FXRemoveOldTrashItems = mkNullableOption { + type = types.bool; + example = true; + description = "Automatically delete items from trash after 30 days"; + }; + + ShowPathBar = mkNullableOption { + type = types.bool; + example = true; + description = "Show the path bar at the bottom of a Finder window"; + }; + + ShowStatusBar = mkNullableOption { + type = types.bool; + example = true; + description = "Show the status bar at the bottom of a Finder window"; + }; }; "com.apple.menuextra.battery".ShowPercent = mkNullableOption { @@ -106,6 +165,41 @@ in { ''; }; + "com.apple.menuextra.clock" = { + IsAnalog = mkNullableEnableOption + "showing an analog clock instead of a digital one"; + + Show24Hour = mkNullableEnableOption + "showing a 24-hour clock, instead of a 12-hour clock"; + + ShowAMPM = mkNullableOption { + type = types.bool; + description = '' + Show the AM/PM label. Useful if Show24Hour is false. Default is null. + ''; + }; + + ShowDate = mkNullableOption { + type = types.enum [ 0 1 2 ]; + description = '' + Show the full date. Default is null. + + 0 = Show the date + 1 = Don't show + 2 = Don't show + + TODO: I don't know what the difference is between 1 and 2. + ''; + }; + + ShowDayOfMonth = mkNullableEnableOption "showing the day of the month"; + + ShowDayOfWeek = mkNullableEnableOption "showing the day of the week"; + + ShowSeconds = mkNullableEnableOption + "showing the clock with second precision, instead of minutes"; + }; + "com.apple.Safari" = { AutoOpenSafeDownloads = mkNullableEnableOption "opening of downloaded files"; From d939ce585c611c00ca44145a74acab04c20619ad Mon Sep 17 00:00:00 2001 From: winston Date: Sat, 11 May 2024 00:26:54 +0200 Subject: [PATCH 096/102] mopidy: make scan service depend on `mopidy-local` --- modules/services/mopidy.nix | 4 +++- .../modules/services/mopidy/basic-configuration.nix | 3 ++- tests/modules/services/mopidy/default.nix | 6 +++++- tests/modules/services/mopidy/mopidy-scan.nix | 13 +++++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 tests/modules/services/mopidy/mopidy-scan.nix diff --git a/modules/services/mopidy.nix b/modules/services/mopidy.nix index 37642a29..b0270857 100644 --- a/modules/services/mopidy.nix +++ b/modules/services/mopidy.nix @@ -48,6 +48,8 @@ let configFilePaths = concatStringsSep ":" ([ "${config.xdg.configHome}/mopidy/mopidy.conf" ] ++ cfg.extraConfigFiles); + hasMopidyLocal = builtins.elem pkgs.mopidy-local cfg.extensionPackages; + in { meta.maintainers = [ hm.maintainers.foo-dogsquared ]; @@ -133,7 +135,7 @@ in { Install.WantedBy = [ "default.target" ]; }; - systemd.user.services.mopidy-scan = { + systemd.user.services.mopidy-scan = mkIf hasMopidyLocal { Unit = { Description = "mopidy local files scanner"; Documentation = [ "https://mopidy.com/" ]; diff --git a/tests/modules/services/mopidy/basic-configuration.nix b/tests/modules/services/mopidy/basic-configuration.nix index 418bfde1..2bffbd68 100644 --- a/tests/modules/services/mopidy/basic-configuration.nix +++ b/tests/modules/services/mopidy/basic-configuration.nix @@ -3,6 +3,7 @@ { services.mopidy = { enable = true; + extensionPackages = [ ]; settings = { file = { enabled = true; @@ -29,7 +30,7 @@ nmt.script = '' assertFileExists home-files/.config/systemd/user/mopidy.service - assertFileExists home-files/.config/systemd/user/mopidy-scan.service + assertPathNotExists home-files/.config/systemd/user/mopidy-scan.service assertFileExists home-files/.config/mopidy/mopidy.conf assertFileContent home-files/.config/mopidy/mopidy.conf \ diff --git a/tests/modules/services/mopidy/default.nix b/tests/modules/services/mopidy/default.nix index 2f2c33d2..6d71e1f5 100644 --- a/tests/modules/services/mopidy/default.nix +++ b/tests/modules/services/mopidy/default.nix @@ -1 +1,5 @@ -{ mopidy-basic-configuration = ./basic-configuration.nix; } +{ + mopidy-basic-configuration = ./basic-configuration.nix; + mopidy-scan = ./mopidy-scan.nix; +} + diff --git a/tests/modules/services/mopidy/mopidy-scan.nix b/tests/modules/services/mopidy/mopidy-scan.nix new file mode 100644 index 00000000..58a035a6 --- /dev/null +++ b/tests/modules/services/mopidy/mopidy-scan.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ + services.mopidy = { + enable = true; + extensionPackages = [ pkgs.mopidy-local ]; + }; + + nmt.script = '' + assertFileExists home-files/.config/systemd/user/mopidy.service + assertFileExists home-files/.config/systemd/user/mopidy-scan.service + ''; +} From d7682620185f213df384c363288093b486b2883f Mon Sep 17 00:00:00 2001 From: Milo Moisson Date: Sun, 31 Mar 2024 19:57:00 +0200 Subject: [PATCH 097/102] jujutsu: switch to XDG config home --- modules/programs/jujutsu.nix | 18 ++++++++---------- .../modules/programs/jujutsu/empty-config.nix | 2 +- .../programs/jujutsu/example-config.nix | 4 ++-- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/modules/programs/jujutsu.nix b/modules/programs/jujutsu.nix index b1fcc703..a21c7108 100644 --- a/modules/programs/jujutsu.nix +++ b/modules/programs/jujutsu.nix @@ -34,16 +34,14 @@ in { settings = mkOption { type = tomlFormat.type; default = { }; - example = literalExpression '' - { - user = { - name = "John Doe"; - email = "jdoe@example.org"; - }; - } - ''; + example = { + user = { + name = "John Doe"; + email = "jdoe@example.org"; + }; + }; description = '' - Options to add to the {file}`.jjconfig.toml` file. See + Options to add to the {file}`config.toml` file. See for options. ''; @@ -53,7 +51,7 @@ in { config = mkIf cfg.enable { home.packages = [ cfg.package ]; - home.file.".jjconfig.toml" = mkIf (cfg.settings != { }) { + xdg.configFile."jj/config.toml" = mkIf (cfg.settings != { }) { source = tomlFormat.generate "jujutsu-config" (cfg.settings // optionalAttrs (cfg.ediff) (let emacsDiffScript = pkgs.writeShellScriptBin "emacs-ediff" '' diff --git a/tests/modules/programs/jujutsu/empty-config.nix b/tests/modules/programs/jujutsu/empty-config.nix index 12c4a2f5..10dd1258 100644 --- a/tests/modules/programs/jujutsu/empty-config.nix +++ b/tests/modules/programs/jujutsu/empty-config.nix @@ -6,6 +6,6 @@ test.stubs.jujutsu = { }; nmt.script = '' - assertPathNotExists home-files/.jjconfig.toml + assertPathNotExists home-files/.config/jj/config.toml ''; } diff --git a/tests/modules/programs/jujutsu/example-config.nix b/tests/modules/programs/jujutsu/example-config.nix index 06b68f18..d83b552b 100644 --- a/tests/modules/programs/jujutsu/example-config.nix +++ b/tests/modules/programs/jujutsu/example-config.nix @@ -13,9 +13,9 @@ }; nmt.script = '' - assertFileExists home-files/.jjconfig.toml + assertFileExists home-files/.config/jj/config.toml assertFileContent \ - home-files/.jjconfig.toml \ + home-files/.config/jj/config.toml \ ${ builtins.toFile "expected.toml" '' [user] From 44677a1c96810a8e8c4ffaeaad10c842402647c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 12 May 2024 03:59:17 +0000 Subject: [PATCH 098/102] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/25865a40d14b3f9cf19f19b924e2ab4069b09588' (2024-05-05) → 'github:NixOS/nixpkgs/f1010e0469db743d14519a1efd37e23f8513d714' (2024-05-09) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index cfe58270..3213b2ad 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1714906307, - "narHash": "sha256-UlRZtrCnhPFSJlDQE7M0eyhgvuuHBTe1eJ9N9AQlJQ0=", + "lastModified": 1715266358, + "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "25865a40d14b3f9cf19f19b924e2ab4069b09588", + "rev": "f1010e0469db743d14519a1efd37e23f8513d714", "type": "github" }, "original": { From 65b74b20450cd54fc6389b43ec7c7e6e58630370 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Thu, 16 May 2024 16:03:33 -0600 Subject: [PATCH 099/102] espanso: add n8henrie to maintainers --- modules/services/espanso.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/services/espanso.nix b/modules/services/espanso.nix index a466b6f7..865a03eb 100644 --- a/modules/services/espanso.nix +++ b/modules/services/espanso.nix @@ -17,6 +17,7 @@ in { maintainers.lucasew maintainers.bobvanderlinden lib.hm.maintainers.liyangau + maintainers.n8henrie ]; options = { services.espanso = { From e3ad5108f54177e6520535768ddbf1e6af54b59d Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Thu, 16 May 2024 13:34:13 -0600 Subject: [PATCH 100/102] espanso: remove `background` process type on Darwin This leads to a considerably slower expansion time for snippets, which severely degrades the user experience. Also, the launchd plist from the source omits this key: https://github.com/espanso/espanso/blob/8daadcc949c35a7b7aa20b7f544fdcff83e2c5f7/espanso/src/res/macos/com.federicoterzi.espanso.plist PR #5411 --- modules/services/espanso.nix | 1 - tests/modules/services/espanso-darwin/launchd.plist | 2 -- 2 files changed, 3 deletions(-) diff --git a/modules/services/espanso.nix b/modules/services/espanso.nix index 865a03eb..f6e27e79 100644 --- a/modules/services/espanso.nix +++ b/modules/services/espanso.nix @@ -138,7 +138,6 @@ in { Crashed = true; SuccessfulExit = false; }; - ProcessType = "Background"; RunAtLoad = true; }; }; diff --git a/tests/modules/services/espanso-darwin/launchd.plist b/tests/modules/services/espanso-darwin/launchd.plist index 8cbc4af0..ac8ff53e 100644 --- a/tests/modules/services/espanso-darwin/launchd.plist +++ b/tests/modules/services/espanso-darwin/launchd.plist @@ -16,8 +16,6 @@ Label org.nix-community.home.espanso - ProcessType - Background ProgramArguments @espanso@/bin/espanso From 25dedb0d52c20448f6a63cc346df1adbd6ef417e Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Thu, 23 May 2024 09:07:00 +0200 Subject: [PATCH 101/102] version: allow 24.11 as state version --- modules/misc/version.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/misc/version.nix b/modules/misc/version.nix index 048f784a..d068a386 100644 --- a/modules/misc/version.nix +++ b/modules/misc/version.nix @@ -21,6 +21,7 @@ in { "23.05" "23.11" "24.05" + "24.11" ]; description = '' It is occasionally necessary for Home Manager to change From 850cb322046ef1a268449cf1ceda5fd24d930b05 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Thu, 23 May 2024 11:45:08 +0200 Subject: [PATCH 102/102] ci: make dependabot consider the release-24.05 Also remove 23.05 from dependabot. --- .github/dependabot.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 76b9adfa..6ba7256d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,7 +10,7 @@ updates: - package-ecosystem: "github-actions" directory: "/" - target-branch: "release-23.05" + target-branch: "release-23.11" schedule: interval: "weekly" commit-message: @@ -18,7 +18,7 @@ updates: - package-ecosystem: "github-actions" directory: "/" - target-branch: "release-23.11" + target-branch: "release-24.05" schedule: interval: "weekly" commit-message: