Switch to home-manager instead of managing dotfiles manually
This commit is contained in:
211
home.nix
Normal file
211
home.nix
Normal file
@@ -0,0 +1,211 @@
|
||||
# man home-configuration.nix
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.username = "trude";
|
||||
home.homeDirectory = "/Users/trude"; #macOS
|
||||
# home.homeDirectory = "/home/trude"; #Linux
|
||||
home.stateVersion = "23.11"; # Do NOT change. This value stays the same when updating.
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# Packages to install:
|
||||
vscode
|
||||
obsidian
|
||||
#signal-desktop
|
||||
|
||||
gnomeExtensions.vitals
|
||||
|
||||
# Override nerdfont to install JetBrains only.
|
||||
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
|
||||
|
||||
# Shel scripts:
|
||||
(writeShellScriptBin "extract" ''
|
||||
if [ -f $1 ]; then
|
||||
case $1 in
|
||||
*.tar.bz2) tar xjf $1 ;;
|
||||
*.tar.gz) tar xzf $1 ;;
|
||||
*.bz2) bunzip2 $1 ;;
|
||||
*.rar) unrar e $1 ;;
|
||||
*.gz) gunzip $1 ;;
|
||||
*.tar) tar xf $1 ;;
|
||||
*.tbz2) tar xjf $1 ;;
|
||||
*.tgz) tar xzf $1 ;;
|
||||
*.zip) unzip $1 ;;
|
||||
*.Z) uncompress $1 ;;
|
||||
*.7z) 7z x $1 ;;
|
||||
*) echo "'$1' cannot be extracted via extract()" ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
'')
|
||||
|
||||
(writeShellScriptBin "update" ''
|
||||
if [ "$(uname -s)" = "Darwin" ]; then
|
||||
echo "Updating macOS..."
|
||||
echo "THE DEVICE WILL RESTART IF NECESSARY."
|
||||
sudo softwareupdate -iaR
|
||||
else
|
||||
if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
|
||||
echo "Updating Debian..."
|
||||
sudo apt update
|
||||
sudo apt upgrade
|
||||
sudo apt dist-upgrade
|
||||
sudo apt autoremove
|
||||
sudo apt autoclean
|
||||
sudo journalctl --vacuum-time=7d
|
||||
elif [ "$(grep -Ei 'arch|manjaro|artix' /etc/*release)" ]; then
|
||||
echo "Updating Arch..."
|
||||
sudo pacman -Syu
|
||||
sudo pacman -Rsn $(paru -Qdtq)
|
||||
if p c pacman-contrib &>/dev/null; then
|
||||
paccache -rk1
|
||||
else
|
||||
sudo pacman -S pacman-contrib
|
||||
paccache -rk1
|
||||
fi
|
||||
sudo journalctl --vacuum-time=7d
|
||||
else
|
||||
echo "Unknown distro, skipping system update."
|
||||
fi
|
||||
fi
|
||||
|
||||
nix-channel --update
|
||||
home-manager switch -b backup
|
||||
'')
|
||||
];
|
||||
|
||||
home.file = {
|
||||
# ".screenrc".source = dotfiles/screenrc;
|
||||
|
||||
".config/nixpkgs/config.nix".text = ''
|
||||
{ allowUnfree = true; }
|
||||
'';
|
||||
|
||||
# ".gradle/gradle.properties".text = ''
|
||||
# org.gradle.console=verbose
|
||||
# org.gradle.daemon.idletimeout=3600000
|
||||
# '';
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "code";
|
||||
PS1 = ''\n[\[\e[37m\]\u\[\e[0m\]@\[\e[37;2m\]\h\[\e[0m\]] \[\e[1m\]\w \[\e[0;2m\]J:\[\e[0m\]\j\n\$ '';
|
||||
};
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
gtk3.extraConfig = {
|
||||
Settings = ''
|
||||
gtk-application-prefer-dark-theme=1
|
||||
'';
|
||||
};
|
||||
|
||||
gtk4.extraConfig = {
|
||||
Settings = ''
|
||||
gtk-application-prefer-dark-theme=1
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
# GNOME Settings
|
||||
# Help: https://hoverbear.org/blog/declarative-gnome-configuration-in-nixos/
|
||||
dconf.settings = {
|
||||
# Use `dconf watch /` to track stateful changes you are doing, then set them here.
|
||||
"org/gnome/shell" = {
|
||||
disable-user-extensions = false;
|
||||
|
||||
# `gnome-extensions list` for a list
|
||||
enabled-extensions = [
|
||||
"Vitals@CoreCoding.com"
|
||||
];
|
||||
|
||||
favorite-apps = [
|
||||
"firefox.desktop"
|
||||
"code.desktop"
|
||||
"org.gnome.Terminal.desktop"
|
||||
"org.gnome.Nautilus.desktop"
|
||||
];
|
||||
};
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
enable-hot-corners = false;
|
||||
};
|
||||
};
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "TrudeEH";
|
||||
userEmail = "ehtrude@gmail.com";
|
||||
};
|
||||
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
shellAliases = {
|
||||
ls="ls --color=auto";
|
||||
grep="grep --color=auto";
|
||||
};
|
||||
shellOptions = [
|
||||
"completion-ignore-case on"
|
||||
];
|
||||
};
|
||||
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
mutableExtensionsDir = false;
|
||||
|
||||
# Extensions
|
||||
extensions = (with pkgs.vscode-extensions; [
|
||||
ms-vscode-remote.remote-ssh
|
||||
mhutchie.git-graph
|
||||
pkief.material-icon-theme
|
||||
oderwat.indent-rainbow
|
||||
bierner.emojisense
|
||||
jnoortheen.nix-ide
|
||||
ritwickdey.liveserver
|
||||
github.vscode-pull-request-github
|
||||
]);
|
||||
|
||||
# Settings
|
||||
userSettings = {
|
||||
# General
|
||||
"editor.fontSize" = 12;
|
||||
"editor.fontFamily" = "'JetBrainsMono Nerd Font', 'monospace', monospace";
|
||||
"terminal.integrated.fontSize" = 10;
|
||||
"terminal.integrated.fontFamily" = "'JetBrainsMono Nerd Font', 'monospace', monospace";
|
||||
"window.zoomLevel" = 1;
|
||||
"editor.multiCursorModifier" = "ctrlCmd";
|
||||
"workbench.startupEditor" = "none";
|
||||
"explorer.compactFolders" = false;
|
||||
# Whitespace
|
||||
"files.trimTrailingWhitespace" = true;
|
||||
"files.trimFinalNewlines" = true;
|
||||
"files.insertFinalNewline" = true;
|
||||
"diffEditor.ignoreTrimWhitespace" = false;
|
||||
# Git
|
||||
"git.enableCommitSigning" = true;
|
||||
"git-graph.repository.sign.commits" = true;
|
||||
"git-graph.repository.sign.tags" = true;
|
||||
"git-graph.repository.commits.showSignatureStatus" = true;
|
||||
# Styling
|
||||
"window.autoDetectColorScheme" = true;
|
||||
"workbench.preferredDarkColorTheme" = "Default Dark Modern";
|
||||
"workbench.preferredLightColorTheme" = "Default Light Modern";
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
"material-icon-theme.activeIconPack" = "none";
|
||||
"material-icon-theme.folders.theme" = "classic";
|
||||
"editor.fontLigatures" = true;
|
||||
# Other
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"update.showReleaseNotes" = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user