mirror of
https://github.com/nix-community/home-manager.git
synced 2025-03-18 22:33:00 +00:00
Can generate the config without installing application through home-manager. Helpful when a package is broken (or not provided) on a specific platform through nixpkgs and needs to be installed through other means but you still can benefit from the declarative configuration.
64 lines
1.7 KiB
Nix
64 lines
1.7 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
|
|
cfg = config.programs.sagemath;
|
|
|
|
inherit (lib) literalExpression mkEnableOption mkOption types;
|
|
|
|
in {
|
|
meta.maintainers = [ lib.maintainers.kirelagin ];
|
|
|
|
options.programs.sagemath = {
|
|
enable = mkEnableOption "SageMath, a mathematics software system";
|
|
|
|
package = lib.mkPackageOption pkgs "sage" {
|
|
nullable = true;
|
|
extraDescription = ''
|
|
The SageMath package to use.
|
|
'';
|
|
};
|
|
|
|
configDir = mkOption {
|
|
type = types.str;
|
|
default = "${config.xdg.configHome}/sage";
|
|
defaultText = literalExpression "\${config.xdg.configHome}/sage";
|
|
description = ''
|
|
Directory where the {file}`sage.init` file will be stored.
|
|
Note that the upstream default is {file}`~/.sage`,
|
|
but our default is to follow XDG.
|
|
'';
|
|
};
|
|
|
|
dataDir = mkOption {
|
|
type = types.str;
|
|
default = "${config.xdg.dataHome}/sage";
|
|
defaultText = literalExpression "\${config.xdg.dataHome}/sage";
|
|
description = ''
|
|
Location for {env}`DOT_SAGE`.
|
|
Note that the upstream default is {file}`~/.sage`,
|
|
but our default is to follow XDG.
|
|
'';
|
|
};
|
|
|
|
initScript = mkOption {
|
|
type = types.lines;
|
|
default = "";
|
|
example = "%colors linux";
|
|
description = ''
|
|
Contents of the {file}`init.sage` file that is loaded on startup.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.packages = lib.mkIf (cfg.package != null) [ cfg.package ];
|
|
|
|
home.file."${cfg.configDir}/init.sage".text = cfg.initScript;
|
|
|
|
home.sessionVariables = {
|
|
DOT_SAGE = cfg.dataDir;
|
|
SAGE_STARTUP_FILE = "${cfg.configDir}/init.sage";
|
|
};
|
|
};
|
|
}
|