diff --git a/modules/module-list.nix b/modules/module-list.nix index 511bcc3..a99d4f8 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -16,6 +16,7 @@ ./environment/shell.nix ./home-manager.nix ./nixpkgs/options.nix + ./terminal.nix ./time.nix ./upgrade.nix ./user.nix diff --git a/modules/terminal.nix b/modules/terminal.nix new file mode 100644 index 0000000..c482dae --- /dev/null +++ b/modules/terminal.nix @@ -0,0 +1,74 @@ +# Copyright (c) 2019-2022, see AUTHORS. Licensed under MIT License, see LICENSE. + +{ config, lib, ... }: + +with lib; + +let + cfg = config.terminal; +in + +{ + + ###### interface + + options = { + + terminal.font = mkOption { + default = null; + type = types.nullOr types.path; + example = lib.literalExpression + ''"''${pkgs.terminus_font_ttf}/share/fonts/truetype/TerminusTTF.ttf"''; + description = '' + Font used for the terminal. + Must be a path to a TTF font. + ''; + }; + + }; + + + ###### implementation + + config = { + + build.activation = + let + fontPath = + if (lib.strings.hasPrefix "/nix" cfg.font) + then "${config.build.installationDir}/${cfg.font}" + else cfg.font; + configDir = "${config.user.home}/.termux"; + fontTarget = "${configDir}/font.ttf"; + fontBackup = "${configDir}/font.ttf.bak"; + in + if (cfg.font != null) then + { + linkFont = '' + $DRY_RUN_CMD mkdir $VERBOSE_ARG -p ${configDir} + if [ -e ${fontTarget} ] && ! [ -L ${fontTarget} ]; then + $DRY_RUN_CMD mv $VERBOSE_ARG ${fontTarget} ${fontBackup} + $DRY_RUN_CMD echo "${fontTarget} has been moved to ${fontBackup}" + fi + $DRY_RUN_CMD ln $VERBOSE_ARG -sf ${fontPath} ${fontTarget} + ''; + } + else + { + unlinkFont = '' + if [ -e ${fontTarget} ] && [ -L ${fontTarget} ]; then + $DRY_RUN_CMD rm $VERBOSE_ARG ${fontTarget} + if [ -e ${fontBackup} ]; then + $DRY_RUN_CMD mv $VERBOSE_ARG ${fontBackup} ${fontTarget} + $DRY_RUN_CMD echo "${fontTarget} has been restored from backup" + else + if $DRY_RUN_CMD rm $VERBOSE_ARG -d ${configDir} 2>/dev/null + then + $DRY_RUN_CMD echo "removed empty ${configDir}" + fi + fi + fi + ''; + }; + }; +}