Merge branch 'nix-community:master' into herbstluftwm/optional-herbstclient-alias
This commit is contained in:
commit
2b825087f6
32
docs/manual/introduction.md
Normal file
32
docs/manual/introduction.md
Normal file
|
@ -0,0 +1,32 @@
|
|||
# Introduction to Home Manager {#ch-introduction}
|
||||
|
||||
Home Manager is a [Nix](https://nix.dev/)-powered tool for reproducible management of the contents of users' home directories.
|
||||
This includes programs, configuration files, environment variables and, well… arbitrary files.
|
||||
The following example snippet of Nix code:
|
||||
|
||||
```nix
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userEmail = "joe@example.org";
|
||||
userName = "joe";
|
||||
};
|
||||
```
|
||||
|
||||
would make available to a user the `git` executable and man pages and a configuration file `~/.config/git/config`:
|
||||
|
||||
```ini
|
||||
[user]
|
||||
email = "joe@example.org"
|
||||
name = "joe"
|
||||
```
|
||||
|
||||
Since Home Manager is implemented in Nix, it provides several benefits:
|
||||
|
||||
- Contents are reproducible — a home will be the exact same every time it is built, unless of course, an intentional change is made.
|
||||
This also means you can have the exact same home on different hosts.
|
||||
- Significantly faster and more powerful than various backup strategies.
|
||||
- Unlike "dotfiles" repositories, Home Manager supports specifying programs, as well as their configurations.
|
||||
- Supported by <http://cache.nixos.org/>, so that you don't have to build from source.
|
||||
- If you do want to build some programs from source, there is hardly a tool more useful than Nix for that, and the build instructions can be neatly integrated in your Home Manager usage.
|
||||
- Infinitely composable, so that values in different configuration files and build instructions can share a source of truth.
|
||||
- Connects you with the [most extensive](https://repology.org/repositories/statistics/total) and [most up-to-date](https://repology.org/repositories/statistics/newest) software package repository on earth, [Nixpkgs](https://github.com/NixOS/nixpkgs).
|
|
@ -8,6 +8,7 @@ preface.md
|
|||
```
|
||||
|
||||
```{=include=} parts
|
||||
introduction.md
|
||||
installation.md
|
||||
usage.md
|
||||
nix-flakes.md
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1718530797,
|
||||
"narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=",
|
||||
"lastModified": 1719254875,
|
||||
"narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b60ebf54c15553b393d144357375ea956f89e9a9",
|
||||
"rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -173,6 +173,13 @@
|
|||
github = "iosmanthus";
|
||||
githubId = 16307070;
|
||||
};
|
||||
jonringer = {
|
||||
email = "jonringer117@gmail.com";
|
||||
matrix = "@jonringer:matrix.org";
|
||||
github = "jonringer";
|
||||
githubId = 7673602;
|
||||
name = "Jonathan Ringer";
|
||||
};
|
||||
kalhauge = {
|
||||
name = "Christian Gram Kalhauge";
|
||||
email = "kalhauge@users.noreply.github.com";
|
||||
|
@ -201,6 +208,12 @@
|
|||
github = "kubukoz";
|
||||
githubId = 894884;
|
||||
};
|
||||
lheckemann = {
|
||||
name = "Linus Heckemann";
|
||||
email = "git@sphalerite.org";
|
||||
github = "lheckemann";
|
||||
githubId = 341954;
|
||||
};
|
||||
loicreynier = {
|
||||
name = "Loïc Reynier";
|
||||
email = "loic@loireynier.fr";
|
||||
|
|
|
@ -1679,6 +1679,30 @@ in {
|
|||
https://github.com/rafaelmardojai/blanket for more.
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
time = "2024-06-26T07:07:17+00:00";
|
||||
condition = with config.programs.yazi;
|
||||
enable && (enableBashIntegration || enableZshIntegration
|
||||
|| enableFishIntegration || enableNushellIntegration);
|
||||
message = ''
|
||||
Yazi's shell integration wrappers have been renamed from 'ya' to 'yy'.
|
||||
|
||||
A new option `programs.yazi.shellWrapperName` is also available that
|
||||
allows you to override this name.
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
time = "2024-06-28T14:18:16+00:00";
|
||||
condition = hostPlatform.isLinux;
|
||||
message = ''
|
||||
A new module is available: 'services.glance'.
|
||||
|
||||
Glance is a self-hosted dashboard that puts all your feeds in
|
||||
one place. See https://github.com/glanceapp/glance for more.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -301,6 +301,7 @@ let
|
|||
./services/fusuma.nix
|
||||
./services/getmail.nix
|
||||
./services/git-sync.nix
|
||||
./services/glance.nix
|
||||
./services/gnome-keyring.nix
|
||||
./services/gpg-agent.nix
|
||||
./services/grobi.nix
|
||||
|
|
|
@ -95,6 +95,7 @@ in {
|
|||
package = mkPackageOption pkgs "nix-direnv" { };
|
||||
};
|
||||
|
||||
silent = mkEnableOption "silent mode, that is, disabling direnv logging";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
@ -163,5 +164,7 @@ in {
|
|||
}
|
||||
)
|
||||
'');
|
||||
|
||||
home.sessionVariables = lib.mkIf cfg.silent { DIRENV_LOG_FORMAT = ""; };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ let
|
|||
base_url = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
example = "bitwarden.example.com";
|
||||
example = "https://bitwarden.example.com/";
|
||||
description =
|
||||
"The base-url for a self-hosted bitwarden installation.";
|
||||
};
|
||||
|
@ -27,7 +27,7 @@ let
|
|||
identity_url = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
example = "identity.example.com";
|
||||
example = "https://identity.example.com/";
|
||||
description = "The identity url for your bitwarden installation.";
|
||||
};
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ let
|
|||
tomlFormat = pkgs.formats.toml { };
|
||||
|
||||
bashIntegration = ''
|
||||
function ya() {
|
||||
function ${cfg.shellWrapperName}() {
|
||||
local tmp="$(mktemp -t "yazi-cwd.XXXXX")"
|
||||
yazi "$@" --cwd-file="$tmp"
|
||||
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
|
||||
|
@ -18,7 +18,7 @@ let
|
|||
'';
|
||||
|
||||
fishIntegration = ''
|
||||
function ya
|
||||
function ${cfg.shellWrapperName}
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||
yazi $argv --cwd-file="$tmp"
|
||||
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
|
@ -29,7 +29,7 @@ let
|
|||
'';
|
||||
|
||||
nushellIntegration = ''
|
||||
def --env ya [...args] {
|
||||
def --env ${cfg.shellWrapperName} [...args] {
|
||||
let tmp = (mktemp -t "yazi-cwd.XXXXX")
|
||||
yazi ...$args --cwd-file $tmp
|
||||
let cwd = (open $tmp)
|
||||
|
@ -40,13 +40,22 @@ let
|
|||
}
|
||||
'';
|
||||
in {
|
||||
meta.maintainers = with maintainers; [ xyenon ];
|
||||
meta.maintainers = with maintainers; [ xyenon eljamm ];
|
||||
|
||||
options.programs.yazi = {
|
||||
enable = mkEnableOption "yazi";
|
||||
|
||||
package = mkPackageOption pkgs "yazi" { };
|
||||
|
||||
shellWrapperName = mkOption {
|
||||
type = types.str;
|
||||
default = "yy";
|
||||
example = "y";
|
||||
description = ''
|
||||
Name of the shell wrapper to be called.
|
||||
'';
|
||||
};
|
||||
|
||||
enableBashIntegration = mkEnableOption "Bash integration";
|
||||
|
||||
enableZshIntegration = mkEnableOption "Zsh integration";
|
||||
|
@ -145,8 +154,11 @@ in {
|
|||
default = { };
|
||||
description = ''
|
||||
Lua plugins.
|
||||
Values should be a package or path containing an `init.lua` file.
|
||||
Will be linked to {file}`$XDG_CONFIG_HOME/yazi/plugins/<name>.yazi`.
|
||||
|
||||
See https://yazi-rs.github.io/docs/plugins/overview/ for documentation.
|
||||
See <https://yazi-rs.github.io/docs/plugins/overview>
|
||||
for documentation.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
|
@ -161,8 +173,10 @@ in {
|
|||
default = { };
|
||||
description = ''
|
||||
Pre-made themes.
|
||||
Values should be a package or path containing the required files.
|
||||
Will be linked to {file}`$XDG_CONFIG_HOME/yazi/flavors/<name>.yazi`.
|
||||
|
||||
See https://yazi-rs.github.io/docs/flavors/overview/ for documentation.
|
||||
See <https://yazi-rs.github.io/docs/flavors/overview/> for documentation.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
|
@ -171,7 +185,6 @@ in {
|
|||
}
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
@ -198,10 +211,63 @@ in {
|
|||
source = tomlFormat.generate "yazi-theme" cfg.theme;
|
||||
};
|
||||
"yazi/init.lua" = mkIf (cfg.initLua != null) { source = cfg.initLua; };
|
||||
} // (mapAttrs'
|
||||
(name: value: nameValuePair "yazi/plugins/${name}" { source = value; })
|
||||
cfg.plugins) // (mapAttrs'
|
||||
(name: value: nameValuePair "yazi/flavors/${name}" { source = value; })
|
||||
cfg.flavors);
|
||||
} // (mapAttrs' (name: value:
|
||||
nameValuePair "yazi/flavors/${name}.yazi" { source = value; })
|
||||
cfg.flavors) // (mapAttrs' (name: value:
|
||||
nameValuePair "yazi/plugins/${name}.yazi" { source = value; })
|
||||
cfg.plugins);
|
||||
|
||||
warnings = filter (s: s != "") (concatLists [
|
||||
(mapAttrsToList (name: value:
|
||||
optionalString (hasSuffix ".yazi" name) ''
|
||||
Flavors like `programs.yazi.flavors."${name}"` should no longer have the suffix ".yazi" in their attribute name.
|
||||
The flavor will be linked to `$XDG_CONFIG_HOME/yazi/flavors/${name}.yazi`.
|
||||
You probably want to rename it to `programs.yazi.flavors."${
|
||||
removeSuffix ".yazi" name
|
||||
}"`.
|
||||
'') cfg.flavors)
|
||||
(mapAttrsToList (name: value:
|
||||
optionalString (hasSuffix ".yazi" name) ''
|
||||
Plugins like `programs.yazi.plugins."${name}"` should no longer have the suffix ".yazi" in their attribute name.
|
||||
The plugin will be linked to `$XDG_CONFIG_HOME/yazi/plugins/${name}.yazi`.
|
||||
You probably want to rename it to `programs.yazi.plugins."${
|
||||
removeSuffix ".yazi" name
|
||||
}"`.
|
||||
'') cfg.plugins)
|
||||
]);
|
||||
|
||||
assertions = let
|
||||
mkAsserts = opt: requiredFiles:
|
||||
mapAttrsToList (name: value:
|
||||
let
|
||||
isDir = pathIsDirectory "${value}";
|
||||
msgNotDir = optionalString (!isDir)
|
||||
"The path or package should be a directory, not a single file.";
|
||||
isFileMissing = file:
|
||||
!(pathExists "${value}/${file}")
|
||||
|| pathIsDirectory "${value}/${file}";
|
||||
missingFiles = filter isFileMissing requiredFiles;
|
||||
msgFilesMissing = optionalString (missingFiles != [ ])
|
||||
"The ${singularOpt} is missing these files: ${
|
||||
toString missingFiles
|
||||
}";
|
||||
singularOpt = removeSuffix "s" opt;
|
||||
in {
|
||||
assertion = isDir && missingFiles == [ ];
|
||||
message = ''
|
||||
Value at `programs.yazi.${opt}.${name}` is not a valid yazi ${singularOpt}.
|
||||
${msgNotDir}
|
||||
${msgFilesMissing}
|
||||
Evaluated value: `${value}`
|
||||
'';
|
||||
}) cfg.${opt};
|
||||
in (mkAsserts "flavors" [
|
||||
"flavor.toml"
|
||||
"tmtheme.xml"
|
||||
"README.md"
|
||||
"preview.png"
|
||||
"LICENSE"
|
||||
"LICENSE-tmtheme"
|
||||
]) ++ (mkAsserts "plugins" [ "init.lua" ]);
|
||||
};
|
||||
}
|
||||
|
|
77
modules/services/glance.nix
Normal file
77
modules/services/glance.nix
Normal file
|
@ -0,0 +1,77 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.glance;
|
||||
|
||||
inherit (lib) mkEnableOption mkPackageOption mkOption mkIf getExe;
|
||||
|
||||
settingsFormat = pkgs.formats.yaml { };
|
||||
|
||||
settingsFile = settingsFormat.generate "glance.yml" cfg.settings;
|
||||
|
||||
configFilePath = "${config.xdg.configHome}/glance/glance.yml";
|
||||
in {
|
||||
meta.maintainers = [ pkgs.lib.maintainers.gepbird ];
|
||||
|
||||
options.services.glance = {
|
||||
enable = mkEnableOption "glance";
|
||||
|
||||
package = mkPackageOption pkgs "glance" { };
|
||||
|
||||
settings = mkOption {
|
||||
type = settingsFormat.type;
|
||||
default = {
|
||||
pages = [{
|
||||
name = "Calendar";
|
||||
columns = [{
|
||||
size = "full";
|
||||
widgets = [{ type = "calendar"; }];
|
||||
}];
|
||||
}];
|
||||
};
|
||||
example = {
|
||||
server.port = 5678;
|
||||
pages = [{
|
||||
name = "Home";
|
||||
columns = [{
|
||||
size = "full";
|
||||
widgets = [
|
||||
{ type = "calendar"; }
|
||||
{
|
||||
type = "weather";
|
||||
location = "London, United Kingdom";
|
||||
}
|
||||
];
|
||||
}];
|
||||
}];
|
||||
};
|
||||
description = ''
|
||||
Configuration written to a yaml file that is read by glance. See
|
||||
<https://github.com/glanceapp/glance/blob/main/docs/configuration.md>
|
||||
for more.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
(lib.hm.assertions.assertPlatform "services.glance" pkgs
|
||||
lib.platforms.linux)
|
||||
];
|
||||
|
||||
home.packages = [ cfg.package ];
|
||||
|
||||
xdg.configFile."glance/glance.yml".source = settingsFile;
|
||||
|
||||
systemd.user.services.glance = {
|
||||
Unit = {
|
||||
Description = "Glance feed dashboard server";
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
|
||||
Service.ExecStart = "${getExe cfg.package} --config ${configFilePath}";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -9,7 +9,7 @@ let
|
|||
presetOpts = optionalString (cfg.preset != "") "--load-preset ${cfg.preset}";
|
||||
|
||||
in {
|
||||
meta.maintainers = [ maintainers.jonringer ];
|
||||
meta.maintainers = [ hm.maintainers.jonringer ];
|
||||
|
||||
options.services.pulseeffects = {
|
||||
enable = mkEnableOption ''
|
||||
|
|
|
@ -5,7 +5,7 @@ let
|
|||
cfg = config.services.ssh-agent;
|
||||
|
||||
in {
|
||||
meta.maintainers = [ lib.maintainers.lheckemann ];
|
||||
meta.maintainers = [ lib.hm.maintainers.lheckemann ];
|
||||
|
||||
options = {
|
||||
services.ssh-agent = {
|
||||
|
|
|
@ -74,7 +74,7 @@ in {
|
|||
}
|
||||
|
||||
(mkIf (cfg.config != { }) {
|
||||
home.file.".stalonetrayrc".text = let
|
||||
xdg.configFile."stalonetrayrc".text = let
|
||||
valueToString = v:
|
||||
if isBool v then
|
||||
(if v then "true" else "false")
|
||||
|
@ -88,7 +88,7 @@ in {
|
|||
})
|
||||
|
||||
(mkIf (cfg.extraConfig != "") {
|
||||
home.file.".stalonetrayrc".text = cfg.extraConfig;
|
||||
xdg.configFile."stalonetrayrc".text = cfg.extraConfig;
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ function systemdPostReload() {
|
|||
touch "$oldServiceFiles"
|
||||
else
|
||||
find "$oldUserServicePath" \
|
||||
-maxdepth 1 -name '*.service' -exec basename '{}' ';' \
|
||||
-maxdepth 1 -name '*.service' \! -name '*@.service' -exec basename '{}' ';' \
|
||||
| sort \
|
||||
> "$oldServiceFiles"
|
||||
fi
|
||||
|
@ -43,7 +43,7 @@ function systemdPostReload() {
|
|||
touch "$newServiceFiles"
|
||||
else
|
||||
find "$newUserServicePath" \
|
||||
-maxdepth 1 -name '*.service' -exec basename '{}' ';' \
|
||||
-maxdepth 1 -name '*.service' \! -name '*@.service' -exec basename '{}' ';' \
|
||||
| sort \
|
||||
> "$newServiceFiles"
|
||||
fi
|
||||
|
|
|
@ -336,7 +336,7 @@ in {
|
|||
${pkgs.sd-switch}/bin/sd-switch \
|
||||
''${DRY_RUN:+--dry-run} $VERBOSE_ARG ${timeoutArg} \
|
||||
''${oldGenPath:+--old-units $oldGenPath/home-files/.config/systemd/user} \
|
||||
--new-units $newGenPath/home-files/.config/systemd/user
|
||||
--new-units "$newUnitsDir"
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -354,8 +354,15 @@ in {
|
|||
warnEcho "Attempting to reload services anyway..."
|
||||
fi
|
||||
|
||||
newUnitsDir="$newGenPath/home-files/.config/systemd/user"
|
||||
if [[ ! -e $newUnitsDir ]]; then
|
||||
newUnitsDir=${pkgs.emptyDirectory}
|
||||
fi
|
||||
|
||||
${ensureRuntimeDir} \
|
||||
${getAttr cfg.startServices cmd}
|
||||
|
||||
unset newUnitsDir
|
||||
else
|
||||
echo "User systemd daemon not running. Skipping reload."
|
||||
fi
|
||||
|
|
|
@ -241,6 +241,7 @@ in import nmtSrc {
|
|||
./modules/services/fnott
|
||||
./modules/services/fusuma
|
||||
./modules/services/git-sync
|
||||
./modules/services/glance
|
||||
./modules/services/gpg-agent
|
||||
./modules/services/gromit-mpx
|
||||
./modules/services/home-manager-auto-upgrade
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
let
|
||||
shellIntegration = ''
|
||||
function ya() {
|
||||
function yy() {
|
||||
local tmp="$(mktemp -t "yazi-cwd.XXXXX")"
|
||||
yazi "$@" --cwd-file="$tmp"
|
||||
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
|
||||
|
|
0
tests/modules/programs/yazi/empty/.gitkeep
Normal file
0
tests/modules/programs/yazi/empty/.gitkeep
Normal file
|
@ -2,7 +2,7 @@
|
|||
|
||||
let
|
||||
shellIntegration = ''
|
||||
function ya
|
||||
function yy
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||
yazi $argv --cwd-file="$tmp"
|
||||
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
|
|
0
tests/modules/programs/yazi/flavor/LICENSE
Normal file
0
tests/modules/programs/yazi/flavor/LICENSE
Normal file
0
tests/modules/programs/yazi/flavor/LICENSE-tmtheme
Normal file
0
tests/modules/programs/yazi/flavor/LICENSE-tmtheme
Normal file
50
tests/modules/programs/yazi/flavor/README.md
Normal file
50
tests/modules/programs/yazi/flavor/README.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
<div align="center">
|
||||
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
|
||||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
Example Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
|
||||
</h3>
|
||||
|
||||
## Cooking up a new flavor
|
||||
|
||||
> [!NOTE]
|
||||
> Please remove this section from your README before publishing.
|
||||
|
||||
1. [x] Fork this repository and rename it to `your-flavor-name.yazi`.
|
||||
2. [ ] Copy the **parts you need to customize** from the [default theme.toml](https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/theme.toml) as `./flavor.toml`, and change them to meet your preferences.
|
||||
3. [ ] Find a `.tmTheme` file on GitHub that matches the color of your flavor, copy it and it's license file as `./tmtheme.xml`, and `LICENSE-tmtheme`.
|
||||
4. [ ] Modify the content and preview image in the README to fit your flavor.
|
||||
|
||||
## 👀 Preview
|
||||
|
||||
<img src="preview.png" width="600" />
|
||||
|
||||
## 🎨 Installation
|
||||
|
||||
<!-- Please replace "username/example.yazi" with your repository name. -->
|
||||
|
||||
```bash
|
||||
# Linux/macOS
|
||||
git clone https://github.com/username/example.yazi.git ~/.config/yazi/flavors/example.yazi
|
||||
|
||||
# Windows
|
||||
git clone https://github.com/username/example.yazi.git %AppData%\yazi\config\flavors\example.yazi
|
||||
```
|
||||
|
||||
## ⚙️ Usage
|
||||
|
||||
Add the these lines to your `theme.toml` configuration file to use it:
|
||||
|
||||
<!-- Please replace "example" with your flavor name. -->
|
||||
|
||||
```toml
|
||||
[flavor]
|
||||
use = "example"
|
||||
```
|
||||
|
||||
## 📜 License
|
||||
|
||||
The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed.
|
||||
|
||||
Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details.
|
2
tests/modules/programs/yazi/flavor/flavor.toml
Normal file
2
tests/modules/programs/yazi/flavor/flavor.toml
Normal file
|
@ -0,0 +1,2 @@
|
|||
# This is a flavor.
|
||||
|
|
@ -1 +0,0 @@
|
|||
-- This is a flavor.
|
0
tests/modules/programs/yazi/flavor/preview.png
Normal file
0
tests/modules/programs/yazi/flavor/preview.png
Normal file
0
tests/modules/programs/yazi/flavor/tmtheme.xml
Normal file
0
tests/modules/programs/yazi/flavor/tmtheme.xml
Normal file
|
@ -2,7 +2,7 @@
|
|||
|
||||
let
|
||||
shellIntegration = ''
|
||||
def --env ya [...args] {
|
||||
def --env yy [...args] {
|
||||
let tmp = (mktemp -t "yazi-cwd.XXXXX")
|
||||
yazi ...$args --cwd-file $tmp
|
||||
let cwd = (open $tmp)
|
||||
|
|
|
@ -70,8 +70,22 @@
|
|||
};
|
||||
};
|
||||
initLua = ./init.lua;
|
||||
plugins = { "test.yazi" = ./plugin; };
|
||||
flavors = { "test.yazi" = ./flavor; };
|
||||
plugins = {
|
||||
testplugin = ./plugin;
|
||||
## Produces warning
|
||||
#"plugin-with-suffix.yazi" = ./plugin;
|
||||
## Fails assertion
|
||||
#single-file-plugin = ./plugin/init.lua;
|
||||
#empty-dir-plugin = ./empty;
|
||||
};
|
||||
flavors = {
|
||||
testflavor = ./flavor;
|
||||
## Produces warning
|
||||
#"flavor-with-suffix.yazi" = ./flavor;
|
||||
## Fails assertion
|
||||
#single-file-flavor = ./flavor/flavor.toml;
|
||||
#empty-dir-flavor = ./empty;
|
||||
};
|
||||
};
|
||||
|
||||
test.stubs.yazi = { };
|
||||
|
@ -85,9 +99,9 @@
|
|||
${./theme-expected.toml}
|
||||
assertFileContent home-files/.config/yazi/init.lua \
|
||||
${./init.lua}
|
||||
assertFileContent home-files/.config/yazi/plugins/test.yazi/init.lua \
|
||||
assertFileContent home-files/.config/yazi/plugins/testplugin.yazi/init.lua \
|
||||
${./plugin/init.lua}
|
||||
assertFileContent home-files/.config/yazi/flavors/test.yazi/init.lua \
|
||||
${./flavor/init.lua}
|
||||
assertFileContent home-files/.config/yazi/flavors/testflavor.yazi/flavor.toml \
|
||||
${./flavor/flavor.toml}
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
let
|
||||
shellIntegration = ''
|
||||
function ya() {
|
||||
function yy() {
|
||||
local tmp="$(mktemp -t "yazi-cwd.XXXXX")"
|
||||
yazi "$@" --cwd-file="$tmp"
|
||||
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
|
||||
|
|
15
tests/modules/services/glance/default-settings.nix
Normal file
15
tests/modules/services/glance/default-settings.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
services.glance.enable = true;
|
||||
|
||||
test.stubs.glance = { };
|
||||
|
||||
nmt.script = ''
|
||||
configFile=home-files/.config/glance/glance.yml
|
||||
serviceFile=home-files/.config/systemd/user/glance.service
|
||||
|
||||
assertFileContent $configFile ${./glance-default-config.yml}
|
||||
assertFileContent $serviceFile ${./glance.service}
|
||||
'';
|
||||
}
|
4
tests/modules/services/glance/default.nix
Normal file
4
tests/modules/services/glance/default.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
glance-default-settings = ./default-settings.nix;
|
||||
glance-example-settings = ./example-settings.nix;
|
||||
}
|
33
tests/modules/services/glance/example-settings.nix
Normal file
33
tests/modules/services/glance/example-settings.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
services.glance = {
|
||||
enable = true;
|
||||
settings = {
|
||||
server.port = 5678;
|
||||
pages = [{
|
||||
name = "Home";
|
||||
columns = [{
|
||||
size = "full";
|
||||
widgets = [
|
||||
{ type = "calendar"; }
|
||||
{
|
||||
type = "weather";
|
||||
location = "London, United Kingdom";
|
||||
}
|
||||
];
|
||||
}];
|
||||
}];
|
||||
};
|
||||
};
|
||||
|
||||
test.stubs.glance = { };
|
||||
|
||||
nmt.script = ''
|
||||
configFile=home-files/.config/glance/glance.yml
|
||||
serviceFile=home-files/.config/systemd/user/glance.service
|
||||
|
||||
assertFileContent $configFile ${./glance-example-config.yml}
|
||||
assertFileContent $serviceFile ${./glance.service}
|
||||
'';
|
||||
}
|
6
tests/modules/services/glance/glance-default-config.yml
Normal file
6
tests/modules/services/glance/glance-default-config.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
pages:
|
||||
- columns:
|
||||
- size: full
|
||||
widgets:
|
||||
- type: calendar
|
||||
name: Calendar
|
10
tests/modules/services/glance/glance-example-config.yml
Normal file
10
tests/modules/services/glance/glance-example-config.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
pages:
|
||||
- columns:
|
||||
- size: full
|
||||
widgets:
|
||||
- type: calendar
|
||||
- location: London, United Kingdom
|
||||
type: weather
|
||||
name: Home
|
||||
server:
|
||||
port: 5678
|
9
tests/modules/services/glance/glance.service
Normal file
9
tests/modules/services/glance/glance.service
Normal file
|
@ -0,0 +1,9 @@
|
|||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=@glance@/bin/dummy --config /home/hm-user/.config/glance/glance.yml
|
||||
|
||||
[Unit]
|
||||
Description=Glance feed dashboard server
|
||||
PartOf=graphical-session.target
|
Loading…
Reference in a new issue