{ config, pkgs, ... }: { home = { username = "hms"; homeDirectory = "/home/hms"; # Packages packages = with pkgs; [ # Utilities xz zip unzip ripgrep tealdeer zoxide just gnome-tweaks protonmail-bridge-gui xclip adw-gtk3 nerd-fonts.adwaita-mono # Applications blackbox-terminal zotero zulip discord signal-desktop gapless newsflash gnome-solanum # Development ## Typst, LaTeX tinymist texliveFull ## Nix nixfmt-rfc-style nil ] ++ (with gnomeExtensions; [ blur-my-shell clipboard-indicator rounded-window-corners-reborn runcat caffeine launch-new-instance light-style ]); # Bash configuration shell.enableBashIntegration = true; shellAliases = { ":q" = "exit"; "h" = "hx"; "o" = "xdg-open"; "update" = "sudo nixos-rebuild switch --flake ~/dev/nixos"; }; # Custom files file."librewolf-gnome-theme" = { target = ".librewolf/default/chrome/librewolf-gnome-theme"; source = fetchTarball { url = "https://github.com/rafaelmardojai/firefox-gnome-theme/archive/v143.tar.gz"; sha256 = "1gkfi77n8cn5xzl3wi9mggh7adirjrsnbqygg1mcvjy0ynmd6kfh"; }; }; stateVersion = "25.11"; }; programs.home-manager.enable = true; programs.taskwarrior = { enable = true; dataLocation = "${config.home.homeDirectory}/.local/share/task"; colorTheme = "light-256"; config.editor = "hx"; }; # Helix configuration programs.helix = { enable = true; defaultEditor = true; settings = { theme = "adwaita-light"; editor = { lsp.display-messages = true; inline-diagnostics.cursor-line = "hint"; rulers = [ 81 ]; gutters.layout = [ "diagnostics" ]; }; keys.insert.j.k = "normal_mode"; }; languages = { language-server.tinymist = { config = { exportPdf = "onSave"; outputPath = "$root/$dir/out/$name"; }; }; }; }; programs.jujutsu = { enable = true; settings.user.name = "Henri Saudubray"; settings.user.email = "henri.saudubray@proton.me"; settings.ui.default-command = "log"; settings.ui.diff-editor = ":builtin"; }; programs.firefox.enable = true; programs.librewolf = { enable = true; profiles.default = { name = "Default"; settings = { "toolkit.legacyUserProfileCustomizations.stylesheets" = true; "svg.context-properties.content.enabled" = true; "gnomeTheme.hideSingleTab" = true; }; userChrome = '' @import "librewolf-gnome-theme/userChrome.css"; @import "librewolf-gnome-theme/theme/colors/dark.css"; ''; }; }; programs.bat.enable = true; programs.git = { enable = true; settings = { user = { email = "henri.saudubray@proton.me"; name = "Henri Saudubray"; }; init.defaultBranch = "main"; }; signing = { format = "openpgp"; signByDefault = true; key = "0x7065F57ED8856128"; }; }; programs.bash = { enable = true; bashrcExtra = '' export PS1=" \W \[\e[33m\]λ\[\e[0m\] " task ls if [ "$(ls -A ~/dwn)" ]; then echo "TODO: organize downloads."; fi ''; }; programs.gpg.enable = true; programs.zoxide = { enable = true; enableBashIntegration = true; options = [ "--cmd cd" ]; }; programs.direnv = { enable = true; enableBashIntegration = true; nix-direnv.enable = true; }; xdg.userDirs = { enable = true; # createDirectories = true; desktop = "${config.home.homeDirectory}/dsk"; documents = "${config.home.homeDirectory}/doc"; download = "${config.home.homeDirectory}/dwn"; music = "${config.home.homeDirectory}/aud"; pictures = "${config.home.homeDirectory}/img"; publicShare = "${config.home.homeDirectory}/pub"; templates = "${config.home.homeDirectory}/tpl"; videos = "${config.home.homeDirectory}/vid"; }; ## FIXME: Find an alternative. # systemd.user.services.helix-theme = { # Unit = { # Description = "Helix System Colour Scheme Synchronisation Service"; # Documentation = "https://github.com/helix-editor/helix/issues/2158"; # After = "gnome-session.target"; # }; # Install.WantedBy = [ "gnome-session.target" ]; # Service = { # Type = "simple"; # RestartSec = 5; # Restart = "always"; # ExecStart = # let # update-script = pkgs.writeShellScript "helix-theme-update" '' # set -eu -o pipefail # if [ "$1" = "default" ]; then # sed -i 's/theme = ".*"/theme = "adwaita-light"/' \ # $HOME/.config/helix/config.toml # else # sed -i 's/theme = ".*"/theme = "adwaita-dark"/' \ # $HOME/.config/helix/config.toml # fi # killall -s SIGUSR1 hx # ''; # in # "${pkgs.writeShellScript "helix-theme-monitor" '' # gsettings monitor org.gnome.desktop.interface color-scheme \ # | xargs -L1 bash -c "source ${update-script}" # ''}"; # }; # }; dconf.settings = { "org/gnome/TextEditor".keybindings = "vim"; "org/gnome/shell" = { disable-user-extensions = false; enabled-extensions = [ "clipboard-indicator@tudmotu.com" "rounded-window-corners@fxgn" "runcat@kolesnikov.se" "caffeine@patapon.info" "launch-new-instance@gnome-shell-extensions.gcampax.github.com" ]; }; "org/gnome/desktop/interface" = { gtk-theme = "adw-gtk3"; show-battery-percentage = true; }; "org/gnome/desktop/wm/preferences".button-layout = "appmenu:minimize,maximize,close"; "org/gnome/desktop/wm/keybindings" = { switch-applications = [ "grave" ]; switch-applications-backwards = [ "grave" ]; switch-windows = [ "Tab" ]; switch-windows-backwards = [ "Tab" ]; }; "org/gnome/settings-daemon/plugins/media-keys".custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" ]; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { name = "Terminal"; command = "blackbox"; binding = "Return"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { name = "Dark mode switcher"; command = "${pkgs.writeShellScript "gnome-dark-mode-switcher" '' SCHEMA=org.gnome.desktop.interface KEY=color-scheme if [ "$(gsettings get "$SCHEMA" "$KEY")" = "'prefer-dark'" ]; then gsettings set "$SCHEMA" "$KEY" "prefer-light"; else gsettings set "$SCHEMA" "$KEY" "prefer-dark"; fi ''}"; binding = "d"; }; }; }