{ config, pkgs, user, ... }: let theme = import ../modules/theme; in { imports = [ ./apps.nix ../modules/emacs ../modules/fcitx5 ../modules/firefox ../modules/git ../modules/i3 ../modules/neovim ../modules/picom ../modules/polybar ../modules/ranger ../modules/rofi ../modules/startpage ../modules/terminal ../modules/todo-txt ../modules/fantasia-archive ]; home.file."./.background-image".source = theme.wallpaper; programs.home-manager.enable = true; xdg = { userDirs = rec { enable = true; desktop = "${config.home.homeDirectory}"; # weird hack for disabling desktop in nautilus documents = null; music = null; pictures = "${publicShare}/Pictures"; templates = null; publicShare = "${config.home.homeDirectory}/Nextcloud"; }; mimeApps = { enable = true; defaultApplications = { # Make sure directories are opened in nautilus # .desktop files can be found in /etc/profiles/per-user/elnu/share/applications # mimetypes can be found with the mimetype command: # nix-shell -p perl536Packages.FileMimeInfo "inode/directory" = "org.gnome.Nautilus.desktop"; "application/zip" = "org.gnome.FileRoller.desktop"; "application/octet-stream" = "org.gnome.GHex.desktop"; }; }; }; programs.direnv.enable = true; gtk = { enable = true; iconTheme = theme.gtkIconTheme pkgs; theme = theme.gtkTheme pkgs; gtk3 = { bookmarks = let home = "file://${config.home.homeDirectory}/"; in [ "${home}Nextcloud" "${home}Projects" "${home}nix-config Config" "sftp://elnu@elnuhub elnuhub" ]; # Remove minimize, maximize, and close buttons extraConfig.gtk-decoration-layout = "appmenu:none"; }; gtk4.extraConfig.gtk-decoration-layout = "appmenu:none"; }; qt = { enable = true; platformTheme = "gtk"; }; home = { username = "${user}"; homeDirectory = "/home/${user}"; stateVersion = "22.05"; }; programs.bash = { enable = true; shellAliases = { g = "git"; ga = "g add"; gc = "g commit -m "; gu = "ga . && gc"; gs = "g status"; gi = "g init"; gp = "g push"; gf = "g pull"; gC = "g clone"; goops = "g reset --soft HEAD^"; r = "ranger"; rm = "trash-put"; emacs = "emacsclient -nw"; # Make clear command clear scrollback # https://github.com/kovidgoyal/kitty/issues/268#issuecomment-355765686 clear = "printf '\\E[H\\E[3J'"; }; bashrcExtra = '' function v { if [[ $# -eq 0 ]]; then nvim ~/UNTITLED.md else nvim $1 fi } # Modify killall for wrapped applications, e.g. firefox # killall firefox -> killall firefox || killall .firefox-wrapped function killall { `which killall` $1 || `which killall` .''${1}-wrapped } # pandoc macro # pandoc document.md -> pandoc document.md -o document.pdf ... function pdf { pandoc $1 -o ''${1%.*}.pdf -V colorlinks=true -V linkcolor=blue } # Change to directory when exiting ranger with Q # https://github.com/ranger/ranger/issues/1554#issuecomment-491650123 function ranger { local IFS=$'\t\n' local tempfile="$(mktemp -t tmp.XXXXXX)" local ranger_cmd=( command ranger --cmd="map Q chain shell echo %d > "$tempfile"; quitall" ) ''${ranger_cmd[@]} "$@" if [[ -f "$tempfile" ]] && [[ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]]; then cd -- "$(cat "$tempfile")" || return fi command rm -f -- "$tempfile" 2>/dev/null } if [ -z $TERMINAL_STARTED ] && [ -z $IN_NIX_SHELL ]; then pfetch while true; do f=`fortune` if [ ''${#f} -lt 128 ]; then echo "''${f}" break fi done TERMINAL_STARTED=1 fi ''; }; }