3228f92b90
These files all have options that trip up the `nix-doc-munge` conversion tool for one reason or another (syntax that clashes with Markdown, options that were already using Markdown syntax despite not being marked that way, output that differs slightly after conversion, syntax too elaborate to convert with some cheap regular expressions, ...). Translate them manually and do a little copyediting to options in the vicinity while we're at it.
83 lines
2.1 KiB
Nix
83 lines
2.1 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
let
|
|
|
|
cfg = config.programs.pyenv;
|
|
|
|
tomlFormat = pkgs.formats.toml { };
|
|
|
|
in {
|
|
meta.maintainers = with lib.maintainers; [ tmarkus ];
|
|
|
|
options.programs.pyenv = {
|
|
enable = lib.mkEnableOption "pyenv";
|
|
|
|
package = lib.mkOption {
|
|
type = lib.types.package;
|
|
default = pkgs.pyenv;
|
|
defaultText = lib.literalExpression "pkgs.pyenv";
|
|
description = "The package to use for pyenv.";
|
|
};
|
|
|
|
enableBashIntegration = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = ''
|
|
Whether to enable pyenv's Bash integration.
|
|
'';
|
|
};
|
|
|
|
enableZshIntegration = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = ''
|
|
Whether to enable pyenv's Zsh integration.
|
|
'';
|
|
};
|
|
|
|
enableFishIntegration = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = ''
|
|
Whether to enable pyenv's Fish integration.
|
|
'';
|
|
};
|
|
|
|
rootDirectory = lib.mkOption {
|
|
type = lib.types.path;
|
|
apply = toString;
|
|
default = "${config.xdg.dataHome}/pyenv";
|
|
defaultText = "\${config.xdg.dataHome}/pyenv";
|
|
description = lib.mdDoc ''
|
|
The pyenv root directory ({env}`PYENV_ROOT`).
|
|
|
|
::: {.note}
|
|
This deviates from upstream, which uses {file}`$HOME/.pyenv`.
|
|
The default path in Home Manager is set according to the XDG
|
|
base directory specification.
|
|
:::
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
# Always add the configured `pyenv` package.
|
|
home.packages = [ cfg.package ];
|
|
|
|
programs.bash.initExtra = lib.mkIf cfg.enableBashIntegration ''
|
|
export PYENV_ROOT="${cfg.rootDirectory}"
|
|
eval "$(${lib.getExe cfg.package} init - bash)"
|
|
'';
|
|
|
|
programs.zsh.initExtra = lib.mkIf cfg.enableZshIntegration ''
|
|
export PYENV_ROOT="${cfg.rootDirectory}"
|
|
eval "$(${lib.getExe cfg.package} init - zsh)"
|
|
'';
|
|
|
|
programs.fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration ''
|
|
set -Ux PYENV_ROOT "${cfg.rootDirectory}"
|
|
${lib.getExe cfg.package} init - fish | source
|
|
'';
|
|
};
|
|
}
|