Want to contribute? Fork me on Codeberg.org!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
4.2 KiB

{ 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}";
sessionVariables = {
CARGO_TARGET_DIR = "$HOME/.target/";
};
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 --pdf-engine=xelatex -V mainfont="mplus-1c-medium" -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
'';
};
}