# SPDX-FileCopyrightText: 2024 Tom Hubrecht # # SPDX-License-Identifier: EUPL-1.2 { config, lib, pkgs, ... }: let inherit (lib) mkEnableOption mkOption mkIf; cfg = config.dgn-console; in { options.dgn-console = { enable = mkEnableOption "DGNum console setup." // { default = true; }; pg-upgrade-from = mkOption { type = lib.types.package; default = config.services.postgresql.package; description = '' Old postgresql package. ''; }; pg-upgrade-to = mkOption { type = lib.types.package; default = pkgs.postgresql_15; description = '' New postgresql package. ''; }; }; config = mkIf cfg.enable { time.timeZone = "Europe/Paris"; console = { keyMap = "fr"; }; environment.variables.EDITOR = "nvim"; programs = { neovim.vimAlias = true; rust-motd = { enable = true; settings = { uptime.prefix = "Up"; filesystems.root = "/"; memory.swap_pos = "below"; last_login.root = 5; }; }; bash.promptInit = '' FQDN="$(hostname).$(domainname)" # Provide a nice prompt if the terminal supports it. if [ "$TERM" != "dumb" ] || [ -n "$INSIDE_EMACS" ]; then PROMPT_COLOR="1;31m" ((UID)) && PROMPT_COLOR="1;32m" if [ -n "$INSIDE_EMACS" ] || [ "$TERM" = "eterm" ] || [ "$TERM" = "eterm-color" ]; then # Emacs term mode doesn't support xterm title escape sequence (\e]0;) PS1="\n\[\033[$PROMPT_COLOR\][\u@$FQDN:\w]\\$\[\033[0m\] " else PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\H: \w\a\]\u@$FQDN:\w]\\$\[\033[0m\] " fi if test "$TERM" = "xterm"; then PS1="\[\033]2;$FQDN:\u:\w\007\]$PS1" fi fi ''; }; system.activationScripts.diff = { supportsDryActivation = true; text = '' ${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig" ''; }; hardware.enableRedistributableFirmware = true; environment.systemPackages = (with pkgs; [ neovim wget kitty.terminfo # Utilities bcc bottom cpuid dig htop iftop mtr tcpdump ]) ++ [ config.boot.kernelPackages.perf ] ++ lib.optional (config.services.postgresql.enable && cfg.pg-upgrade-from != cfg.pg-upgrade-to) ( pkgs.writeScriptBin "upgrade-pg-cluster" '' set -eux # XXX it's perhaps advisable to stop all services that depend on postgresql systemctl stop postgresql export NEWDATA="/var/lib/postgresql/${cfg.pg-upgrade-to.psqlSchema}" export NEWBIN="${cfg.pg-upgrade-to}/bin" export OLDDATA="${config.services.postgresql.dataDir}" export OLDBIN="${cfg.pg-upgrade-from}/bin" install -d -m 0700 -o postgres -g postgres "$NEWDATA" cd "$NEWDATA" sudo -u postgres $NEWBIN/initdb -D "$NEWDATA" sudo -u postgres $NEWBIN/pg_upgrade \ --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ --old-bindir $OLDBIN --new-bindir $NEWBIN \ "$@" '' ); }; }