wip
This commit is contained in:
parent
19a1d70af1
commit
93e963cd65
29
.bashrc
29
.bashrc
@ -7,11 +7,15 @@ HISTFILESIZE=2000 # Adjusted to match both histfile and size criteria
|
|||||||
alias docker-compose='docker compose'
|
alias docker-compose='docker compose'
|
||||||
alias gg='git pull'
|
alias gg='git pull'
|
||||||
alias gl='git log --stat'
|
alias gl='git log --stat'
|
||||||
|
|
||||||
|
# Modern tools aliases
|
||||||
alias l="eza --header --long --git --group-directories-first --group --icons --color=always --sort=name --hyperlink -o --no-permissions"
|
alias l="eza --header --long --git --group-directories-first --group --icons --color=always --sort=name --hyperlink -o --no-permissions"
|
||||||
alias ll='l'
|
alias ll='l'
|
||||||
alias la='l -a'
|
alias la='l -a'
|
||||||
alias ddpul='docker compose down && docker compose pull && docker compose up -d && docker compose logs -f'
|
|
||||||
alias cat='bat'
|
alias cat='bat'
|
||||||
|
alias du='dust'
|
||||||
|
alias df='duf'
|
||||||
|
alias rm="echo Use 'rip' instead of rm."
|
||||||
|
|
||||||
# Docker Aliases
|
# Docker Aliases
|
||||||
alias d='docker'
|
alias d='docker'
|
||||||
@ -23,9 +27,12 @@ alias dcu='docker compose up'
|
|||||||
alias dcp='docker compose ps'
|
alias dcp='docker compose ps'
|
||||||
alias dcps='docker compose ps'
|
alias dcps='docker compose ps'
|
||||||
alias dcr='docker compose run'
|
alias dcr='docker compose run'
|
||||||
|
alias ddpul='docker compose down && docker compose pull && docker compose up -d && docker compose logs -f'
|
||||||
|
|
||||||
# Git aliases
|
# Git aliases
|
||||||
alias g='git'
|
alias g='git'
|
||||||
|
alias gg='git pull'
|
||||||
|
alias gp='git push'
|
||||||
alias gs='git status -s'
|
alias gs='git status -s'
|
||||||
alias gst='git status'
|
alias gst='git status'
|
||||||
alias ga='git add'
|
alias ga='git add'
|
||||||
@ -37,9 +44,6 @@ alias gcb='git checkout -b'
|
|||||||
# netstat port in use check
|
# netstat port in use check
|
||||||
alias port='netstat -atupn | grep LISTEN'
|
alias port='netstat -atupn | grep LISTEN'
|
||||||
|
|
||||||
# Hotkeys daemon
|
|
||||||
alias hk='dotf hotkey-daemon'
|
|
||||||
|
|
||||||
# Alias for ls to l but only if it's an interactive shell because we don't want to override ls in scripts which could blow up in our face
|
# Alias for ls to l but only if it's an interactive shell because we don't want to override ls in scripts which could blow up in our face
|
||||||
if [ -t 1 ]; then
|
if [ -t 1 ]; then
|
||||||
alias ls='l'
|
alias ls='l'
|
||||||
@ -55,11 +59,6 @@ export PATH=$PATH:$HOME/.local/bin
|
|||||||
export PATH=$PATH:$HOME/.cargo/bin
|
export PATH=$PATH:$HOME/.cargo/bin
|
||||||
export PATH=$PATH:$HOME/dotfiles/bin
|
export PATH=$PATH:$HOME/dotfiles/bin
|
||||||
|
|
||||||
# Go Configuration
|
|
||||||
export GOPATH=$HOME/.go
|
|
||||||
export GOROOT=$HOME/.go-root
|
|
||||||
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
|
||||||
|
|
||||||
# Tradaware / DiscountOffice Configuration
|
# Tradaware / DiscountOffice Configuration
|
||||||
if [ -d "/home/menno/Projects/Work" ]; then
|
if [ -d "/home/menno/Projects/Work" ]; then
|
||||||
export TRADAWARE_FROM_SOURCE=true
|
export TRADAWARE_FROM_SOURCE=true
|
||||||
@ -86,10 +85,16 @@ fi
|
|||||||
# Starship Prompt Initialization (Adapted for Bash)
|
# Starship Prompt Initialization (Adapted for Bash)
|
||||||
eval "$(starship init bash)"
|
eval "$(starship init bash)"
|
||||||
|
|
||||||
|
# Source nix home-manager
|
||||||
|
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
|
||||||
|
|
||||||
|
# Source agent-bridge script for 1password
|
||||||
|
source $HOME/dotfiles/bin/1password-agent-bridge.sh
|
||||||
|
|
||||||
|
# zoxide
|
||||||
|
eval "$(zoxide init bash)"
|
||||||
|
|
||||||
# Display a welcome message for interactive shells
|
# Display a welcome message for interactive shells
|
||||||
if [ -t 1 ]; then
|
if [ -t 1 ]; then
|
||||||
dotf term
|
dotf term
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Source optional agent-bridge script for WSL (This returns early if it's not on WSL)
|
|
||||||
source $HOME/dotfiles/bin/1password-agent-bridge.sh
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
source $HOME/dotfiles/bin/helpers/functions.sh
|
||||||
|
export SSH_AUTH_SOCK=$HOME/.1password/agent.sock
|
||||||
|
|
||||||
# Check if is_wsl function returns true, don't continue if we are not on WSL
|
# Check if is_wsl function returns true, don't continue if we are not on WSL
|
||||||
if ! is_wsl; then
|
if ! is_wsl; then
|
||||||
@ -6,8 +7,6 @@ if ! is_wsl; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
printfe "%s" "cyan" "Running in WSL, ensuring 1Password SSH-Agent relay is running..."
|
printfe "%s" "cyan" "Running in WSL, ensuring 1Password SSH-Agent relay is running..."
|
||||||
|
|
||||||
export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
|
|
||||||
ALREADY_RUNNING=$(ps -auxww | grep -q "[n]piperelay.exe -ei -s //./pipe/openssh-ssh-agent"; echo $?)
|
ALREADY_RUNNING=$(ps -auxww | grep -q "[n]piperelay.exe -ei -s //./pipe/openssh-ssh-agent"; echo $?)
|
||||||
if [[ $ALREADY_RUNNING != "0" ]]; then
|
if [[ $ALREADY_RUNNING != "0" ]]; then
|
||||||
if [[ -S $SSH_AUTH_SOCK ]]; then
|
if [[ -S $SSH_AUTH_SOCK ]]; then
|
||||||
|
@ -6,9 +6,6 @@ printfe "%s\n" "cyan" "Exporting GNOME extensions"
|
|||||||
source $HOME/dotfiles/bin/helpers/gnome_extensions.sh
|
source $HOME/dotfiles/bin/helpers/gnome_extensions.sh
|
||||||
export_gnome_extensions
|
export_gnome_extensions
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Exporting VSCode extensions"
|
|
||||||
code --list-extensions | jq -R -s -c 'split("\n")[:-1]' > ~/dotfiles/vscode/extensions.json
|
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Exporting gnome-terminal settings"
|
printfe "%s\n" "cyan" "Exporting gnome-terminal settings"
|
||||||
dconf dump /org/gnome/terminal/ > ~/dotfiles/config/gnome-terminal.dconf
|
dconf dump /org/gnome/terminal/ > ~/dotfiles/config/gnome-terminal.dconf
|
||||||
|
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
x-terminal-emulator -e $HOME/dotfiles/bin/actions/startup.sh $@
|
|
@ -1,116 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
|
||||||
|
|
||||||
countdown() {
|
|
||||||
for i in $(seq $1 -1 1); do
|
|
||||||
printfe "%s" "green" " - Waiting for $i seconds... "
|
|
||||||
echo -en "\r"
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
run_startup_scripts() {
|
|
||||||
if is_wsl; then
|
|
||||||
echo "Running in WSL, skipping startup scripts."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
logo continue
|
|
||||||
echo ""
|
|
||||||
local time_of_day
|
|
||||||
# Time of day (morning, afternoon, evening, night)
|
|
||||||
case $(date +%H) in
|
|
||||||
0[0-9]|1[0-1])
|
|
||||||
time_of_day="morning"
|
|
||||||
emoji="🌅"
|
|
||||||
;;
|
|
||||||
1[2-7])
|
|
||||||
time_of_day="afternoon"
|
|
||||||
emoji="🌞"
|
|
||||||
;;
|
|
||||||
1[8-9]|2[0-3])
|
|
||||||
time_of_day="evening"
|
|
||||||
emoji="🌆"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Run the welcome.py from $HOME/dotfiles/bin/helpers/welcome.py
|
|
||||||
python3 $HOME/dotfiles/bin/helpers/welcome.py
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Initialize array to hold commands
|
|
||||||
local startup_commands=()
|
|
||||||
|
|
||||||
# Read each command key and add it to the array
|
|
||||||
while IFS= read -r command; do
|
|
||||||
startup_commands+=("$command")
|
|
||||||
done < <(cat $HOME/dotfiles/config/config.yaml | shyaml keys config.startup.commands)
|
|
||||||
|
|
||||||
# Read delay and delay_between_ms values from YAML
|
|
||||||
local delay=$(cat $HOME/dotfiles/config/config.yaml | shyaml get-value config.startup.delay)
|
|
||||||
local delay_between_ms=$(cat $HOME/dotfiles/config/config.yaml | shyaml get-value config.startup.delay_between_ms)
|
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Running startup commands... (delay: $delay s, delay_between: $delay_between_ms ms)"
|
|
||||||
|
|
||||||
# Wait for the initial delay
|
|
||||||
countdown $delay
|
|
||||||
|
|
||||||
# Ensure the log folder exists
|
|
||||||
mkdir -p $HOME/dotfiles/logs/startup
|
|
||||||
|
|
||||||
# Execute each command in a new screen window
|
|
||||||
for command_key in "${startup_commands[@]}"; do
|
|
||||||
local command=$(cat $HOME/dotfiles/config/config.yaml | shyaml get-value config.startup.commands.$command_key)
|
|
||||||
|
|
||||||
printfe "%s" "green" " - Running '"
|
|
||||||
printfe "%s" "blue" "$command_key"
|
|
||||||
printfe "%s" "green" "'... ("
|
|
||||||
printfe "%s" "blue" "$command"
|
|
||||||
printfe "%s\n" "green" ")"
|
|
||||||
|
|
||||||
# Check if a screen with the same name already exists, if so log it and don't run the command
|
|
||||||
if screen -list | grep -q $command_key; then
|
|
||||||
printfe "%s" "red" " - Screen session already exists: "
|
|
||||||
printfe "%s" "blue" "$command_key"
|
|
||||||
printfe "%s\n" "red" ""
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ensure the log file exists, if it exists, clear it
|
|
||||||
touch $HOME/dotfiles/logs/startup/$command_key.log
|
|
||||||
|
|
||||||
# Run the command in a new screen session named after the command_key
|
|
||||||
screen -dmS $command_key bash -c "eval $command > $HOME/dotfiles/logs/startup/$command_key.log 2>&1"
|
|
||||||
sleep $(echo "scale=2; $delay_between_ms / 1000" | bc)
|
|
||||||
|
|
||||||
if ! screen -list | grep -q $command_key; then
|
|
||||||
printfe "%s" "red" " - Screen session died immediately: "
|
|
||||||
printfe "%s" "blue" "$command_key"
|
|
||||||
printfe "%s\n" "red" " (Within $delay_between_ms ms, check the logs for more information in $HOME/dotfiles/logs/startup/$command_key.log)"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if command is ok, if not log that it failed
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s" "red" " - Command failed: "
|
|
||||||
printfe "%s" "blue" "$command"
|
|
||||||
printfe "%s\n" "red" ""
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if we're in a graphical session
|
|
||||||
if [[ -z "$DISPLAY" && "$XDG_SESSION_TYPE" != "x11" && "$XDG_SESSION_TYPE" != "wayland" ]]; then
|
|
||||||
echo "Not in a graphical session. Exiting."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
run_startup_scripts
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Show message to press any key to close the terminal window
|
|
||||||
printfe "%s\n" "green" "Press any key to close this window..."
|
|
||||||
read -s -n 1
|
|
||||||
exit 0
|
|
@ -1,12 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
source $HOME/dotfiles/bin/helpers/functions.sh
|
||||||
source $HOME/dotfiles/bin/helpers/keyboard_shortcuts.sh
|
|
||||||
source $HOME/dotfiles/bin/helpers/apt_packages.sh
|
|
||||||
source $HOME/dotfiles/bin/helpers/pipx_packages.sh
|
source $HOME/dotfiles/bin/helpers/pipx_packages.sh
|
||||||
source $HOME/dotfiles/bin/helpers/cargo_packages.sh
|
source $HOME/dotfiles/bin/helpers/cargo_packages.sh
|
||||||
source $HOME/dotfiles/bin/helpers/flatpak_packages.sh
|
source $HOME/dotfiles/bin/helpers/flatpak_packages.sh
|
||||||
source $HOME/dotfiles/bin/helpers/vscode-extensions.sh
|
|
||||||
source $HOME/dotfiles/bin/helpers/fonts.sh
|
source $HOME/dotfiles/bin/helpers/fonts.sh
|
||||||
|
|
||||||
# Check if parameter --verbose was passed
|
# Check if parameter --verbose was passed
|
||||||
@ -18,10 +15,7 @@ fi
|
|||||||
|
|
||||||
echo -e "\n"
|
echo -e "\n"
|
||||||
|
|
||||||
print_keyboard_shortcuts_status
|
|
||||||
print_fonts_status
|
print_fonts_status
|
||||||
print_apt_status
|
|
||||||
print_pipx_status
|
print_pipx_status
|
||||||
print_cargo_status
|
print_cargo_status
|
||||||
print_flatpak_status
|
print_flatpak_status
|
||||||
print_vsc_status
|
|
||||||
|
@ -16,43 +16,33 @@ if [ ! -x "$(command -v shyaml)" ]; then
|
|||||||
pipx install shyaml
|
pipx install shyaml
|
||||||
fi
|
fi
|
||||||
|
|
||||||
groups() {
|
|
||||||
####################################################################################################
|
|
||||||
# Ensure user groups
|
|
||||||
####################################################################################################
|
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Ensuring user groups..."
|
|
||||||
source $HOME/dotfiles/bin/helpers/user_groups.sh
|
|
||||||
ensure_user_groups
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_symlink() {
|
ensure_symlink() {
|
||||||
local source
|
local source
|
||||||
local target
|
local target
|
||||||
|
|
||||||
# Fetch target from YAML
|
# Fetch target from YAML
|
||||||
target=$(shyaml get-value "config.symlinks.$1.target" < "$HOME/dotfiles/config/config.yaml") 2>/dev/null
|
target=$(shyaml get-value "config.symlinks.$1.target" < "$HOME/dotfiles/config/config.yaml" 2>/dev/null)
|
||||||
|
|
||||||
# Fetch source from YAML based on OS
|
# Fetch source from YAML based on OS
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||||
# Check for WSL2
|
# Check for WSL2
|
||||||
if [[ $(uname -a) == *"microsoft-standard-WSL2"* ]]; then
|
if [[ $(uname -a) == *"microsoft-standard-WSL2"* ]]; then
|
||||||
source=$(shyaml get-value "config.symlinks.$1.sources.wsl" < "$HOME/dotfiles/config/config.yaml") 2>/dev/null
|
source=$(shyaml get-value "config.symlinks.$1.sources.wsl" < "$HOME/dotfiles/config/config.yaml" 2>/dev/null)
|
||||||
else
|
else
|
||||||
source=$(shyaml get-value "config.symlinks.$1.sources.linux" < "$HOME/dotfiles/config/config.yaml") 2>/dev/null
|
source=$(shyaml get-value "config.symlinks.$1.sources.linux" < "$HOME/dotfiles/config/config.yaml" 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
source=$(shyaml get-value "config.symlinks.$1.sources.macos" < "$HOME/dotfiles/config/config.yaml") 2>/dev/null
|
source=$(shyaml get-value "config.symlinks.$1.sources.macos" < "$HOME/dotfiles/config/config.yaml" 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Fall back to generic source if OS-specific source is empty
|
# Fall back to generic source if OS-specific source is empty
|
||||||
if [ -z "$source" ]; then
|
if [ -z "$source" ]; then
|
||||||
source=$(shyaml get-value "config.symlinks.$1.source" < "$HOME/dotfiles/config/config.yaml") 2>/dev/null
|
source=$(shyaml get-value "config.symlinks.$1.source" < "$HOME/dotfiles/config/config.yaml" 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Attempt to use the hostname of the machine if source is still empty
|
# Attempt to use the hostname of the machine if source is still empty
|
||||||
if [ -z "$source" ]; then
|
if [ -z "$source" ]; then
|
||||||
source=$(shyaml get-value "config.symlinks.$1.sources.$(hostname)" < "$HOME/dotfiles/config/config.yaml") 2>/dev/null
|
source=$(shyaml get-value "config.symlinks.$1.sources.$(hostname)" < "$HOME/dotfiles/config/config.yaml" 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Error out if source is still empty
|
# Error out if source is still empty
|
||||||
@ -80,7 +70,7 @@ ensure_symlink() {
|
|||||||
resolved_target="$target"
|
resolved_target="$target"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
current_chmod=$(stat -c %a "$resolved_target")
|
current_chmod=$(stat -c %a "$resolved_target" 2>/dev/null)
|
||||||
if [ "$current_chmod" != "$desired_chmod" ]; then
|
if [ "$current_chmod" != "$desired_chmod" ]; then
|
||||||
printfe "%s\n" "yellow" " - Changing chmod of $resolved_target to $desired_chmod"
|
printfe "%s\n" "yellow" " - Changing chmod of $resolved_target to $desired_chmod"
|
||||||
chmod "$desired_chmod" "$resolved_target"
|
chmod "$desired_chmod" "$resolved_target"
|
||||||
@ -113,6 +103,11 @@ sys_packages() {
|
|||||||
brew upgrade
|
brew upgrade
|
||||||
brew cleanup
|
brew cleanup
|
||||||
else
|
else
|
||||||
|
if [ -x "$(command -v nixos-version)" ]; then
|
||||||
|
sudo nixos-rebuild switch
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
sudo nala upgrade -y
|
sudo nala upgrade -y
|
||||||
sudo nala autoremove -y --purge
|
sudo nala autoremove -y --purge
|
||||||
fi
|
fi
|
||||||
@ -123,25 +118,17 @@ sys_packages() {
|
|||||||
####################################################################################################
|
####################################################################################################
|
||||||
|
|
||||||
cargopkgs() {
|
cargopkgs() {
|
||||||
printfe "%s\n" "cyan" "Rust update..."
|
|
||||||
source $HOME/dotfiles/bin/helpers/rust.sh
|
|
||||||
ensure_rust_installed
|
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Ensuring Cargo packages are installed..."
|
printfe "%s\n" "cyan" "Ensuring Cargo packages are installed..."
|
||||||
source $HOME/dotfiles/bin/helpers/cargo_packages.sh
|
source $HOME/dotfiles/bin/helpers/cargo_packages.sh
|
||||||
ensure_cargo_packages_installed
|
ensure_cargo_packages_installed
|
||||||
}
|
}
|
||||||
|
|
||||||
aptpkgs() {
|
|
||||||
printfe "%s\n" "cyan" "Ensuring APT repositories are added..."
|
|
||||||
source $HOME/dotfiles/bin/helpers/apt_packages.sh
|
|
||||||
ensure_repositories
|
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Ensuring APT packages are installed..."
|
|
||||||
ensure_apt_packages_installed
|
|
||||||
}
|
|
||||||
|
|
||||||
pipxpkgs() {
|
pipxpkgs() {
|
||||||
|
if [ ! -x "$(command -v pipx)" ]; then
|
||||||
|
printfe "%s\n" "yellow" "pipx is not available, skipping pipx packages."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Ensuring pyenv is installed..."
|
printfe "%s\n" "cyan" "Ensuring pyenv is installed..."
|
||||||
if [ ! -d "$HOME/.pyenv" ]; then
|
if [ ! -d "$HOME/.pyenv" ]; then
|
||||||
curl https://pyenv.run | bash
|
curl https://pyenv.run | bash
|
||||||
@ -155,6 +142,11 @@ pipxpkgs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
flatpakpkgs() {
|
flatpakpkgs() {
|
||||||
|
if [ ! -x "$(command -v flatpak)" ]; then
|
||||||
|
printfe "%s\n" "yellow" "Flatpak is not available, skipping Flatpak."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
if is_wsl; then
|
if is_wsl; then
|
||||||
printfe "%s\n" "yellow" "Running in WSL, skipping Flatpak."
|
printfe "%s\n" "yellow" "Running in WSL, skipping Flatpak."
|
||||||
return
|
return
|
||||||
@ -166,6 +158,12 @@ flatpakpkgs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dockercmd() {
|
dockercmd() {
|
||||||
|
# On NixOS this is managed by the docker.nix module
|
||||||
|
if [ -x "$(command -v nixos-version)" ]; then
|
||||||
|
printfe "%s\n" "yellow" "Detected NixOS, skipping Docker."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Ensuring Docker is installed..."
|
printfe "%s\n" "cyan" "Ensuring Docker is installed..."
|
||||||
source $HOME/dotfiles/bin/helpers/docker.sh
|
source $HOME/dotfiles/bin/helpers/docker.sh
|
||||||
ensure_docker_installed
|
ensure_docker_installed
|
||||||
@ -191,34 +189,12 @@ extensions() {
|
|||||||
printfe "%s\n" "cyan" "Ensuring GNOME Extensions are installed..."
|
printfe "%s\n" "cyan" "Ensuring GNOME Extensions are installed..."
|
||||||
source $HOME/dotfiles/bin/helpers/gnome_extensions.sh
|
source $HOME/dotfiles/bin/helpers/gnome_extensions.sh
|
||||||
ensure_gnome_extensions_installed
|
ensure_gnome_extensions_installed
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Ensuring VSCode extensions are installed..."
|
|
||||||
source $HOME/dotfiles/bin/helpers/vscode-extensions.sh
|
|
||||||
ensure_vscode_extensions_installed
|
|
||||||
|
|
||||||
if [ ! -f "$HOME/.local/share/nemo/actions/vscode.nemo_action" ]; then
|
|
||||||
printfe "%s\n" "cyan" "Ensuring nemo open with VSCode extension is installed..."
|
|
||||||
wget https://raw.githubusercontent.com/mhsattarian/nemo-open-in-vscode/master/vscode.nemo_action -O $HOME/.local/share/nemo/actions/vscode.nemo_action
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - nemo open with VSCode extension is already installed"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
# Update system settings
|
# Update system settings
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
|
|
||||||
keyboard() {
|
|
||||||
if is_wsl; then
|
|
||||||
printfe "%s\n" "yellow" "Running in WSL, skipping keyboard shortcuts."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
printfe "%s\n" "cyan" "Setting up keyboard shortcuts..."
|
|
||||||
source $HOME/dotfiles/bin/helpers/keyboard_shortcuts.sh
|
|
||||||
ensure_keyboard_shortcuts
|
|
||||||
}
|
|
||||||
|
|
||||||
fonts() {
|
fonts() {
|
||||||
if is_wsl; then
|
if is_wsl; then
|
||||||
printfe "%s\n" "yellow" "Running in WSL, skipping fonts."
|
printfe "%s\n" "yellow" "Running in WSL, skipping fonts."
|
||||||
@ -279,12 +255,16 @@ git_repos() {
|
|||||||
ensure_git_repos
|
ensure_git_repos
|
||||||
}
|
}
|
||||||
|
|
||||||
|
homemanager() {
|
||||||
|
home-manager switch
|
||||||
|
}
|
||||||
|
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
|
|
||||||
# Multiple options can be passed to the script, for example:
|
# Multiple options can be passed to the script, for example:
|
||||||
# ./update.sh --verbose --groups --symlinks --packages --keyboard --fonts --default-terminal --default-shell
|
# ./update.sh --git --symlinks --packages
|
||||||
# If no options are passed, the script will run all functions
|
# If no options are passed, the script will run all functions
|
||||||
|
|
||||||
# Shift the first argument since this is the script name
|
# Shift the first argument since this is the script name
|
||||||
@ -293,45 +273,39 @@ shift
|
|||||||
if [ "$#" -eq 0 ]; then
|
if [ "$#" -eq 0 ]; then
|
||||||
printfe "%s\n" "yellow" "No options passed, running full update..."
|
printfe "%s\n" "yellow" "No options passed, running full update..."
|
||||||
|
|
||||||
git_repos
|
|
||||||
groups
|
|
||||||
symlinks
|
symlinks
|
||||||
sys_packages
|
sys_packages
|
||||||
aptpkgs
|
homemanager
|
||||||
cargopkgs
|
cargopkgs
|
||||||
pipxpkgs
|
pipxpkgs
|
||||||
dockercmd
|
dockercmd
|
||||||
|
git_repos
|
||||||
flatpakpkgs
|
flatpakpkgs
|
||||||
tailscalecmd
|
tailscalecmd
|
||||||
extensions
|
extensions
|
||||||
keyboard
|
|
||||||
fonts
|
fonts
|
||||||
terminal
|
terminal
|
||||||
default_shell
|
default_shell
|
||||||
else
|
else
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
case $arg in
|
case $arg in
|
||||||
|
--homemanager)
|
||||||
|
homemanager
|
||||||
|
;;
|
||||||
--git)
|
--git)
|
||||||
git_repos
|
git_repos
|
||||||
;;
|
;;
|
||||||
--groups)
|
|
||||||
groups
|
|
||||||
;;
|
|
||||||
--symlinks)
|
--symlinks)
|
||||||
symlinks
|
symlinks
|
||||||
;;
|
;;
|
||||||
--packages)
|
--packages)
|
||||||
sys_packages
|
sys_packages
|
||||||
cargopkgs
|
cargopkgs
|
||||||
aptpkgs
|
|
||||||
pipxpkgs
|
pipxpkgs
|
||||||
flatpakpkgs
|
flatpakpkgs
|
||||||
dockercmd
|
dockercmd
|
||||||
tailscalecmd
|
tailscalecmd
|
||||||
;;
|
;;
|
||||||
--apt)
|
|
||||||
aptpkgs
|
|
||||||
;;
|
|
||||||
--pipx)
|
--pipx)
|
||||||
pipxpkgs
|
pipxpkgs
|
||||||
;;
|
;;
|
||||||
@ -350,9 +324,6 @@ else
|
|||||||
--extensions)
|
--extensions)
|
||||||
extensions
|
extensions
|
||||||
;;
|
;;
|
||||||
--keyboard)
|
|
||||||
keyboard
|
|
||||||
;;
|
|
||||||
--fonts)
|
--fonts)
|
||||||
fonts
|
fonts
|
||||||
;;
|
;;
|
||||||
|
3
bin/dotf
3
bin/dotf
@ -72,9 +72,6 @@ case $1 in
|
|||||||
"secrets")
|
"secrets")
|
||||||
secrets $@
|
secrets $@
|
||||||
;;
|
;;
|
||||||
"startup")
|
|
||||||
$HOME/dotfiles/bin/actions/startup-runner.sh $@
|
|
||||||
;;
|
|
||||||
"term")
|
"term")
|
||||||
$HOME/dotfiles/bin/actions/term.sh $@
|
$HOME/dotfiles/bin/actions/term.sh $@
|
||||||
;;
|
;;
|
||||||
|
@ -1,163 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
|
||||||
|
|
||||||
add_brave_repo() {
|
|
||||||
# Check if we have a brave-browser-release.list file already, if not then create one
|
|
||||||
if [ ! -f /etc/apt/sources.list.d/brave-browser-release.list ]; then
|
|
||||||
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
|
|
||||||
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list
|
|
||||||
result=$(sudo apt update 2>&1)
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" " - Failed to add Brave repository"
|
|
||||||
printfe "%s\n" "yellow" "$result"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printfe "%s\n" "yellow" " - Added Brave repository"
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - Brave repository already added"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
add_1password_repo() {
|
|
||||||
# Check if we have a 1password.list file already, if not then create one
|
|
||||||
if [ ! -f /etc/apt/sources.list.d/1password.list ]; then
|
|
||||||
curl -sS https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --output /usr/share/keyrings/1password-archive-keyring.gpg
|
|
||||||
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/1password-archive-keyring.gpg] https://downloads.1password.com/linux/debian/amd64 stable main' | sudo tee /etc/apt/sources.list.d/1password.list
|
|
||||||
sudo mkdir -p /etc/debsig/policies/AC2D62742012EA22/
|
|
||||||
curl -sS https://downloads.1password.com/linux/debian/debsig/1password.pol | sudo tee /etc/debsig/policies/AC2D62742012EA22/1password.pol
|
|
||||||
sudo mkdir -p /usr/share/debsig/keyrings/AC2D62742012EA22
|
|
||||||
curl -sS https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --output /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg
|
|
||||||
result=$(sudo apt update 2>&1)
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" " - Failed to add 1Password repository"
|
|
||||||
printfe "%s\n" "yellow" "$result"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printfe "%s\n" "yellow" " - Added 1Password repository"
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - 1Password repository already added"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
add_vscode_repo() {
|
|
||||||
# Check if we have a vscode.list file already, if not then create one
|
|
||||||
if [ ! -f /etc/apt/sources.list.d/vscode.list ]; then
|
|
||||||
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
|
|
||||||
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
|
|
||||||
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" |sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null
|
|
||||||
rm -f packages.microsoft.gpg
|
|
||||||
result=$(sudo apt update 2>&1)
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" " - Failed to add VSCode repository"
|
|
||||||
printfe "%s\n" "yellow" "$result"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printfe "%s\n" "yellow" " - Added VSCode repository"
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - VSCode repository already added"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_repositories() {
|
|
||||||
add_brave_repo
|
|
||||||
add_1password_repo
|
|
||||||
add_vscode_repo
|
|
||||||
|
|
||||||
repos=($(cat $DOTFILES_CONFIG | shyaml get-values config.packages.apt.repos))
|
|
||||||
for repo in "${repos[@]}"; do
|
|
||||||
repo_name=$(echo $repo | cut -d ":" -f 2)
|
|
||||||
|
|
||||||
# Go through sources.list.d and check if there's a file containing part of URIs: https://ppa.launchpad.net/$repo_name
|
|
||||||
# We have to check the files not the file names since the file names are not always the same as the repo_name
|
|
||||||
result=$(grep -r "$repo_name" /etc/apt/sources.list.d/*)
|
|
||||||
if [ -z "$result" ]; then
|
|
||||||
printfe "%s\n" "yellow" " - Adding $repo_name repository..."
|
|
||||||
clear_line
|
|
||||||
|
|
||||||
sudo add-apt-repository -y $repo
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" " - Failed to add $repo_name repository"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - $repo_name repository added successfully"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - $repo_name repository already added"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_apt_packages_installed() {
|
|
||||||
apt_packages=($(cat $DOTFILES_CONFIG | shyaml get-values config.packages.apt.apps | tr '\n' ' '))
|
|
||||||
|
|
||||||
# Check if apt_packages array contains duplicates
|
|
||||||
if [ $(echo $apt_packages | tr ' ' '\n' | sort | uniq -d | wc -l) -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" "The apt_packages array contains duplicates"
|
|
||||||
printfe "%s\n" "yellow" "Duplicates:"
|
|
||||||
printfe "%s\n" "blue" $(echo $apt_packages | tr ' ' '\n' | sort | uniq -d)
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
for package in "${apt_packages[@]}"; do
|
|
||||||
pkg_status=$(dpkg -s $package 2> /dev/null | grep "Status" | cut -d " " -f 4)
|
|
||||||
|
|
||||||
# If pkg_status is `installed` then we don't need to install the package, otherwise if it's empty then the package is not installed
|
|
||||||
if [ -z $pkg_status ]; then
|
|
||||||
ensure_sudo_privileges "In order to install $package, please provide your password:"
|
|
||||||
|
|
||||||
printfe "%s" "yellow" " - Installing $package..."
|
|
||||||
clear_line
|
|
||||||
|
|
||||||
result=$(sudo apt install -y $package 2>&1)
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" " - Failed to install $package"
|
|
||||||
printfe "%s\n" "yellow" "$result"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - $package installed successfully"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - $package is already installed"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
print_apt_status() {
|
|
||||||
printfe "%s" "cyan" "Checking APT packages..."
|
|
||||||
clear_line
|
|
||||||
|
|
||||||
apt_packages=($(cat $DOTFILES_CONFIG | shyaml get-values config.packages.apt.apps))
|
|
||||||
|
|
||||||
# count entries in packages
|
|
||||||
count=$(echo $apt_packages | wc -w)
|
|
||||||
installed=0
|
|
||||||
|
|
||||||
for package in "${apt_packages[@]}"; do
|
|
||||||
pkg_status=$(dpkg -s $package 2> /dev/null | grep "Status" | cut -d " " -f 4)
|
|
||||||
|
|
||||||
if [ "$pkg_status" = "installed" ]; then
|
|
||||||
installed=$((installed + 1))
|
|
||||||
else
|
|
||||||
if [ "$verbose" = true ]; then
|
|
||||||
printfe "%s\n" "red" "$package is not installed"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
printfe "%s" "cyan" "APT"
|
|
||||||
if [ $installed -eq $count ]; then
|
|
||||||
printfe "%s" "green" " $installed/$count "
|
|
||||||
else
|
|
||||||
printfe "%s" "red" " $installed/$count "
|
|
||||||
fi
|
|
||||||
printfe "%s\n" "cyan" "packages installed"
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
ensure_docker_installed() {
|
|
||||||
# if docker is already installed, skip the installation
|
|
||||||
if [ -x "$(command -v docker)" ]; then
|
|
||||||
printfe "%s\n" "green" " - Docker is already installed"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add Docker's official GPG key
|
|
||||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
|
||||||
|
|
||||||
# Add Docker's repository
|
|
||||||
sudo add-apt-repository \
|
|
||||||
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
|
|
||||||
$(lsb_release -cs) \
|
|
||||||
stable"
|
|
||||||
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install -y docker-ce docker-ce-cli containerd.io
|
|
||||||
|
|
||||||
# Check if it successfully installed
|
|
||||||
if [ -x "$(command -v docker)" ]; then
|
|
||||||
printfe "%s\n" "green" " - Docker is installed"
|
|
||||||
else
|
|
||||||
printfe "%s\n" "red" " - Docker is not installed"
|
|
||||||
printfe "%s\n" "red" " Something went wrong while installing Docker, investigate the issue"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo usermod -aG docker $USER
|
|
||||||
sudo systemctl start docker
|
|
||||||
sudo systemctl enable docker
|
|
||||||
}
|
|
@ -7,8 +7,7 @@ println() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
is_wsl() {
|
is_wsl() {
|
||||||
unameres=$(uname -a | grep -i "microsoft" | wc -l)
|
if [ -f "/proc/sys/fs/binfmt_misc/WSLInterop" ]; then
|
||||||
if [ -n "$unameres" ]; then
|
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
@ -142,11 +141,87 @@ add_to_hosts() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function exesudo ()
|
||||||
|
{
|
||||||
|
### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##
|
||||||
|
#
|
||||||
|
# LOCAL VARIABLES:
|
||||||
|
#
|
||||||
|
### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##
|
||||||
|
|
||||||
|
#
|
||||||
|
# I use underscores to remember it's been passed
|
||||||
|
local _funcname_="$1"
|
||||||
|
|
||||||
|
local params=( "$@" ) ## array containing all params passed here
|
||||||
|
local tmpfile="/dev/shm/$RANDOM" ## temporary file
|
||||||
|
local content ## content of the temporary file
|
||||||
|
local regex ## regular expression
|
||||||
|
|
||||||
|
|
||||||
|
### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##
|
||||||
|
#
|
||||||
|
# MAIN CODE:
|
||||||
|
#
|
||||||
|
### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##
|
||||||
|
|
||||||
|
#
|
||||||
|
# WORKING ON PARAMS:
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
||||||
|
# Shift the first param (which is the name of the function)
|
||||||
|
unset params[0] ## remove first element
|
||||||
|
# params=( "${params[@]}" ) ## repack array
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# WORKING ON THE TEMPORARY FILE:
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
content="#!/bin/bash\n\n"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Write the params array
|
||||||
|
content="${content}params=(\n"
|
||||||
|
|
||||||
|
regex="\s+"
|
||||||
|
for param in "${params[@]}"
|
||||||
|
do
|
||||||
|
if [[ "$param" =~ $regex ]]
|
||||||
|
then
|
||||||
|
content="${content}\t\"${param}\"\n"
|
||||||
|
else
|
||||||
|
content="${content}\t${param}\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
content="$content)\n"
|
||||||
|
echo -e "$content" > "$tmpfile"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Append the function source
|
||||||
|
echo "#$( type "$_funcname_" )" >> "$tmpfile"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Append the call to the function
|
||||||
|
echo -e "\n$_funcname_ \"\${params[@]}\"\n" >> "$tmpfile"
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# DONE: EXECUTE THE TEMPORARY FILE WITH SUDO
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
sudo bash "$tmpfile"
|
||||||
|
rm "$tmpfile"
|
||||||
|
}
|
||||||
|
|
||||||
resolve_path() {
|
resolve_path() {
|
||||||
echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")"
|
echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")"
|
||||||
}
|
}
|
||||||
|
|
||||||
check_or_make_symlink() {
|
check_or_make_symlink() {
|
||||||
|
source /home/menno/dotfiles/bin/helpers/functions.sh
|
||||||
|
|
||||||
SOURCE="$1"
|
SOURCE="$1"
|
||||||
TARGET="$2"
|
TARGET="$2"
|
||||||
|
|
||||||
@ -157,6 +232,22 @@ check_or_make_symlink() {
|
|||||||
SOURCE=$(resolve_path "$SOURCE")
|
SOURCE=$(resolve_path "$SOURCE")
|
||||||
TARGET=$(resolve_path "$TARGET")
|
TARGET=$(resolve_path "$TARGET")
|
||||||
|
|
||||||
|
# Check if we have permissions to create the symlink
|
||||||
|
if [ ! -w "$(dirname "$TARGET")" ]; then
|
||||||
|
# Check if link exists
|
||||||
|
if [ -L "$TARGET" ]; then
|
||||||
|
# Check if it points to the correct location
|
||||||
|
if [ "$(readlink "$TARGET")" != "$SOURCE" ]; then
|
||||||
|
exesudo check_or_make_symlink "$SOURCE" "$TARGET"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Link doesn't exist but we don't have permissions to create it, so we should try to create it with sudosudo
|
||||||
|
exesudo check_or_make_symlink "$SOURCE" "$TARGET"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
# If target is already a symlink, we should check if it points to the correct location
|
# If target is already a symlink, we should check if it points to the correct location
|
||||||
if [ -L "$TARGET" ]; then
|
if [ -L "$TARGET" ]; then
|
||||||
if [ "$(readlink "$TARGET")" != "$SOURCE" ]; then
|
if [ "$(readlink "$TARGET")" != "$SOURCE" ]; then
|
||||||
|
@ -1,119 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
|
||||||
|
|
||||||
# Ensure jq is installed
|
|
||||||
if ! command -v jq &> /dev/null; then
|
|
||||||
echo "jq could not be found, please install it."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Parse JSON file
|
|
||||||
shortcuts_file=~/dotfiles/gnome/keyboard-shortcuts.json
|
|
||||||
if [ ! -f "${shortcuts_file}" ]; then
|
|
||||||
echo "Shortcuts file not found: ${shortcuts_file}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
shortcuts=$(jq -r '.shortcuts' "${shortcuts_file}")
|
|
||||||
|
|
||||||
ensure_swhkd() {
|
|
||||||
shortcuts_keys=($(cat "$DOTFILES_CONFIG" | shyaml keys config.keybinds))
|
|
||||||
file_contents=""
|
|
||||||
for key in "${shortcuts_keys[@]}"; do
|
|
||||||
shortcut=$(cat "$DOTFILES_CONFIG" | shyaml get-value config.keybinds.$key.shortcut)
|
|
||||||
command=$(cat "$DOTFILES_CONFIG" | shyaml get-value config.keybinds.$key.command)
|
|
||||||
file_contents="${file_contents}\n${shortcut}\n ${command}\n\n"
|
|
||||||
printfe "%s\n" "green" " - Ensuring swhkd shortcut ${shortcut} command ${command}"
|
|
||||||
done
|
|
||||||
echo -e "${file_contents}" > $HOME/.config/swhkdrc
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_keyboard_shortcuts() {
|
|
||||||
if is_wsl; then
|
|
||||||
printfe "%s\n" "yellow" "Running in WSL, skipping keyboard shortcuts."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
printfe "%s\n" "green" " - Setting up swhkd configuration..."
|
|
||||||
ensure_swhkd
|
|
||||||
|
|
||||||
# If swhkd is running, kill it
|
|
||||||
if pgrep -x "swhkd" > /dev/null; then
|
|
||||||
printfe "%s\n" "yellow" " - swhkd is running, killing it..."
|
|
||||||
sudo pkill swhkd
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Same for swhks
|
|
||||||
if pgrep -x "swhks" > /dev/null; then
|
|
||||||
printfe "%s\n" "yellow" " - swhks is running, killing it..."
|
|
||||||
sudo pkill swhks
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start swhkd
|
|
||||||
printfe "%s\n" "green" " - starting swhkd..."
|
|
||||||
printfe "%s\n" "yellow" " Note: this will likely show a password prompt, please enter your password"
|
|
||||||
screen -dmS swhkd bash -c "$HOME/dotfiles/bin/actions/hotkey-daemon.sh"
|
|
||||||
|
|
||||||
# Check if this is gnome DESKTOP_SESSION is gnome, if not we can stop here
|
|
||||||
# The next part is just for setting up custom shortcuts in GNOME
|
|
||||||
if [ "$XDG_CURRENT_DESKTOP" != "GNOME" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Retrieve current custom keybindings
|
|
||||||
existing_bindings=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | tr -d "[]'")
|
|
||||||
new_bindings=()
|
|
||||||
index=0
|
|
||||||
|
|
||||||
# Iterate over parsed JSON shortcuts
|
|
||||||
for key_combination in $(echo "$shortcuts" | jq -r 'keys[]'); do
|
|
||||||
command=$(echo "$shortcuts" | jq -r ".[\"$key_combination\"]")
|
|
||||||
|
|
||||||
printfe '%s\n' "green" " - Ensuring GNOME shortcut ${key_combination} command ${command}"
|
|
||||||
|
|
||||||
custom_binding="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${index}/"
|
|
||||||
new_bindings+=("$custom_binding")
|
|
||||||
|
|
||||||
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:"${custom_binding}" name "${key_combination} to run ${command}"
|
|
||||||
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:"${custom_binding}" command "${command}"
|
|
||||||
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:"${custom_binding}" binding "${key_combination}"
|
|
||||||
dconf write "${custom_binding}enabled" true
|
|
||||||
|
|
||||||
((index++))
|
|
||||||
done
|
|
||||||
|
|
||||||
new_bindings_string=$(printf "'%s', " "${new_bindings[@]}")
|
|
||||||
new_bindings_string="[${new_bindings_string%, }]"
|
|
||||||
|
|
||||||
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "${new_bindings_string}"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_keyboard_shortcuts_status() {
|
|
||||||
printfe "%s" "cyan" "Checking keyboard shortcuts..."
|
|
||||||
clear_line
|
|
||||||
|
|
||||||
# Retrieve current custom keybindings
|
|
||||||
existing_bindings=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | tr -d "[]'")
|
|
||||||
existing_count=$(echo $existing_bindings | tr -cd , | wc -c)
|
|
||||||
|
|
||||||
# Iterate over parsed JSON shortcuts
|
|
||||||
for key_combination in $(echo "$shortcuts" | jq -r 'keys[]'); do
|
|
||||||
command=$(echo "$shortcuts" | jq -r ".[\"$key_combination\"]")
|
|
||||||
|
|
||||||
if [[ ! $existing_bindings =~ "custom${index}" ]]; then
|
|
||||||
printfe "%s\n" "red" " - Custom shortcut ${key_combination} is missing"
|
|
||||||
fi
|
|
||||||
|
|
||||||
((index++))
|
|
||||||
done
|
|
||||||
|
|
||||||
json_count=$(echo $shortcuts | jq 'keys | length')
|
|
||||||
printfe "%s" "cyan" "Keyboard shortcuts"
|
|
||||||
if [ $index -eq $json_count ]; then
|
|
||||||
printfe "%s" "green" " $index/$json_count "
|
|
||||||
else
|
|
||||||
printfe "%s" "red" " $index/$json_count "
|
|
||||||
fi
|
|
||||||
printfe "%s\n" "cyan" "shortcuts installed"
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
|
||||||
|
|
||||||
ensure_rust_installed() {
|
|
||||||
if [ -x "$(command -v rustc)" ]; then
|
|
||||||
printfe "%s\n" "green" " - Rust is already installed"
|
|
||||||
|
|
||||||
# Update Rust
|
|
||||||
printfe "%s" "yellow" " - Updating Rust..."
|
|
||||||
echo -en "\r"
|
|
||||||
|
|
||||||
rustup update
|
|
||||||
else
|
|
||||||
printfe "%s\n" "yellow" " - Installing Rust..."
|
|
||||||
echo -en "\r"
|
|
||||||
|
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" "Failed to install Rust"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rustup default stable
|
|
||||||
|
|
||||||
printfe "%s\n" "green" " - Rust installed successfully"
|
|
||||||
fi
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
|
||||||
|
|
||||||
ensure_user_groups() {
|
|
||||||
# Load yaml file
|
|
||||||
users=($(cat $DOTFILES_CONFIG | shyaml keys config.user_groups))
|
|
||||||
|
|
||||||
# For each user, ensure they are in the correct groups
|
|
||||||
for user in "${users[@]}"; do
|
|
||||||
# Ensure this user exists
|
|
||||||
if [[ ! $(id -u $user) ]]; then
|
|
||||||
printfe "%s\n" "red" " - User $user does not exist"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
ensure_user_in_groups $user
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_user_in_groups() {
|
|
||||||
user=$1
|
|
||||||
groups=($(cat $DOTFILES_CONFIG | shyaml get-values config.user_groups.$user))
|
|
||||||
|
|
||||||
printfe "%s\n" "cyan" " - For user $user..."
|
|
||||||
|
|
||||||
# For each group, ensure the user is in it
|
|
||||||
for group in "${groups[@]}"; do
|
|
||||||
# Check if the group exists at all, otherwise skip
|
|
||||||
if [[ ! $(getent group $group) ]]; then
|
|
||||||
printfe "%s\n" "red" " Group $group does not exist"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! $groups == *$group* ]]; then
|
|
||||||
printfe "%s\n" "green" " Adding $user to group $group"
|
|
||||||
sudo usermod -aG $group $user
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " $user is already in group $group"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
@ -1,81 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
|
||||||
|
|
||||||
load_vscode_extensions() {
|
|
||||||
# Clear the array before populating it
|
|
||||||
arr=()
|
|
||||||
while IFS= read -r line; do
|
|
||||||
arr+=("$line")
|
|
||||||
done < <(jq -r '.[]' ~/dotfiles/vscode/extensions.json)
|
|
||||||
# Export the array
|
|
||||||
export extensionList=("${arr[@]}")
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_vscode_extensions_installed() {
|
|
||||||
if is_wsl; then
|
|
||||||
printfe "%s\n" "yellow" "Running in WSL, skipping VSCode extensions."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Load extensions list from jq in ~/dotfiles/vscode/extensions.json
|
|
||||||
load_vscode_extensions
|
|
||||||
|
|
||||||
for extension in "${extensionList[@]}"; do
|
|
||||||
result=$(code --list-extensions | grep -E "^${extension}$")
|
|
||||||
if [ -z "$result" ]; then
|
|
||||||
printfe "%s" "yellow" " - Installing $extension..."
|
|
||||||
code --install-extension $extension
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
printfe "%s\n" "red" " - Failed to install $extension"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
printfe "%s\n" "green" " - Installed $extension"
|
|
||||||
else
|
|
||||||
printfe "%s\n" "green" " - $extension is already installed"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
print_vsc_status() {
|
|
||||||
printfe "%s" "cyan" "Checking VSCode extensions..."
|
|
||||||
clear_line
|
|
||||||
|
|
||||||
load_vscode_extensions
|
|
||||||
count_installed_extensions=0
|
|
||||||
|
|
||||||
# Loop through each extension and check if it's installed
|
|
||||||
for extension in "${extensionList[@]}"; do
|
|
||||||
result=$(code --list-extensions | grep -E "^${extension}$")
|
|
||||||
if [ -z "$result" ]; then
|
|
||||||
if [ "$verbose" = true ]; then
|
|
||||||
printfe "%s" "yellow" "Extension $extension is not installed\n"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
count_installed_extensions=$((count_installed_extensions + 1))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$verbose" = true ]; then
|
|
||||||
printfe "%s\n" "yellow" "Expected extensions:"
|
|
||||||
for ext in "${extensionList[@]}"; do
|
|
||||||
printfe "%s\n" "blue" "$ext"
|
|
||||||
done
|
|
||||||
|
|
||||||
printfe "%s\n" "yellow" "Installed extensions:"
|
|
||||||
while IFS= read -r installed_ext; do
|
|
||||||
printfe "%s\n" "blue" "$installed_ext"
|
|
||||||
done < <(code --list-extensions)
|
|
||||||
fi
|
|
||||||
|
|
||||||
count=${#extensionList[@]}
|
|
||||||
|
|
||||||
printfe "%s" "cyan" "VSCode"
|
|
||||||
if [ $count_installed_extensions -eq $count ]; then
|
|
||||||
printfe "%s" "green" " $count_installed_extensions/$count "
|
|
||||||
else
|
|
||||||
printfe "%s" "red" " $count_installed_extensions/$count "
|
|
||||||
fi
|
|
||||||
printfe "%s\n" "cyan" "extensions installed"
|
|
||||||
}
|
|
@ -1,72 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import requests
|
|
||||||
import os
|
|
||||||
import json
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
def get_weather():
|
|
||||||
response = requests.get("https://wttr.in/beverwijk?n")
|
|
||||||
return response.text.strip()
|
|
||||||
|
|
||||||
def get_moon_phase():
|
|
||||||
response = requests.get("https://wttr.in/moon?format=F")
|
|
||||||
return response.text.strip()
|
|
||||||
|
|
||||||
def read_prompt(file_path):
|
|
||||||
with open(file_path, 'r') as file:
|
|
||||||
return file.read()
|
|
||||||
|
|
||||||
def get_hostname():
|
|
||||||
with open("/etc/hostname", 'r') as file:
|
|
||||||
return file.read().strip()
|
|
||||||
|
|
||||||
def replace_wildcards(prompt, weather, moon_phase, time, date, hostname):
|
|
||||||
prompt = prompt.replace("$TIME", time)
|
|
||||||
prompt = prompt.replace("$DATE", date)
|
|
||||||
prompt = prompt.replace("$HOSTNAME", hostname)
|
|
||||||
prompt = prompt.replace("$WEATHER", weather)
|
|
||||||
prompt = prompt.replace("$MOON_PHASE", moon_phase)
|
|
||||||
return prompt
|
|
||||||
|
|
||||||
def main():
|
|
||||||
home_directory = os.path.expanduser('~')
|
|
||||||
AI_ENDPOINT = "https://api.openai.com/v1/chat/completions"
|
|
||||||
OPENAI_API_KEY = ""
|
|
||||||
PROMPT_FILE_PATH = home_directory + "/dotfiles/bin/resources/welcome_prompt.txt"
|
|
||||||
|
|
||||||
# Load api key from disk
|
|
||||||
with open(home_directory + "/dotfiles/secrets/openai_api_key.secret", 'r') as file:
|
|
||||||
OPENAI_API_KEY = file.read().strip()
|
|
||||||
|
|
||||||
weather = get_weather()
|
|
||||||
moon_phase = get_moon_phase()
|
|
||||||
hostname = get_hostname()
|
|
||||||
time = datetime.now().strftime("%H:%M")
|
|
||||||
date = datetime.now().strftime("%A, %d %B %Y")
|
|
||||||
|
|
||||||
openai_prompt = read_prompt(PROMPT_FILE_PATH)
|
|
||||||
prompt = replace_wildcards(openai_prompt, weather, moon_phase, time, date, hostname)
|
|
||||||
|
|
||||||
data = {
|
|
||||||
"max_tokens": 200,
|
|
||||||
"messages": [
|
|
||||||
{"role": "system", "content": prompt},
|
|
||||||
],
|
|
||||||
"model": "gpt-4o-mini",
|
|
||||||
}
|
|
||||||
|
|
||||||
headers = {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
"Authorization": f"Bearer {OPENAI_API_KEY}"
|
|
||||||
}
|
|
||||||
|
|
||||||
response = requests.post(AI_ENDPOINT, headers=headers, data=json.dumps(data))
|
|
||||||
response_data = response.json()
|
|
||||||
|
|
||||||
completion = response_data['choices'][0]['message']['content']
|
|
||||||
|
|
||||||
print(completion)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
@ -1,6 +1,15 @@
|
|||||||
config:
|
config:
|
||||||
# Symbolic links to create
|
# Symbolic links to create
|
||||||
symlinks:
|
symlinks:
|
||||||
|
nix-home-manager:
|
||||||
|
source: ~/dotfiles/config/home-manager
|
||||||
|
target: ~/.config/home-manager
|
||||||
|
|
||||||
|
# NixOS Configuration
|
||||||
|
nixos:
|
||||||
|
source: ~/dotfiles/config/nixos/configuration.nix
|
||||||
|
target: /etc/nixos/configuration.nix
|
||||||
|
|
||||||
# Gitconfig
|
# Gitconfig
|
||||||
gitconfig:
|
gitconfig:
|
||||||
sources:
|
sources:
|
||||||
@ -9,6 +18,11 @@ config:
|
|||||||
wsl: ~/dotfiles/config/gitconfig.wsl
|
wsl: ~/dotfiles/config/gitconfig.wsl
|
||||||
target: ~/.gitconfig
|
target: ~/.gitconfig
|
||||||
|
|
||||||
|
# VSCode settings
|
||||||
|
vscode:
|
||||||
|
source: ~/dotfiles/vscode/settings.json
|
||||||
|
target: ~/.config/Code/User/settings.json
|
||||||
|
|
||||||
# SSH config
|
# SSH config
|
||||||
ssh:
|
ssh:
|
||||||
source: ~/dotfiles/config/ssh/config
|
source: ~/dotfiles/config/ssh/config
|
||||||
@ -41,68 +55,11 @@ config:
|
|||||||
source: ~/dotfiles/.bashrc
|
source: ~/dotfiles/.bashrc
|
||||||
target: ~/.bashrc
|
target: ~/.bashrc
|
||||||
|
|
||||||
# VSCode settings
|
|
||||||
vscode:
|
|
||||||
source: ~/dotfiles/vscode/settings.json
|
|
||||||
target: ~/.config/Code/User/settings.json
|
|
||||||
|
|
||||||
vscode-argv:
|
|
||||||
source: ~/dotfiles/vscode/argv.json
|
|
||||||
target: ~/.vscode/argv.json
|
|
||||||
|
|
||||||
# Starship config
|
# Starship config
|
||||||
starship:
|
starship:
|
||||||
source: ~/dotfiles/config/starship.toml
|
source: ~/dotfiles/config/starship.toml
|
||||||
target: ~/.config/starship.toml
|
target: ~/.config/starship.toml
|
||||||
|
|
||||||
# Autostart desktop file
|
|
||||||
autostart:
|
|
||||||
source: ~/dotfiles/config/dotf-autostart.desktop
|
|
||||||
target: ~/.config/autostart/dotf-autostart.desktop
|
|
||||||
|
|
||||||
# What groups users should be added
|
|
||||||
user_groups:
|
|
||||||
menno:
|
|
||||||
- docker
|
|
||||||
- libvirt
|
|
||||||
- video
|
|
||||||
- input
|
|
||||||
|
|
||||||
# Keybinds to set into swhkd
|
|
||||||
keybinds:
|
|
||||||
terminal:
|
|
||||||
shortcut: Ctrl + Alt + T
|
|
||||||
command: gnome-terminal
|
|
||||||
screenshot:
|
|
||||||
shortcut: Shift + Alt + 4
|
|
||||||
command: flameshot gui
|
|
||||||
1password-quick-access:
|
|
||||||
shortcut: Shift + Alt + Space
|
|
||||||
command: 1password --quick-access
|
|
||||||
missioncenter:
|
|
||||||
shortcut: Ctrl + Shift + Escape
|
|
||||||
command: flatpak run io.missioncenter.MissionCenter
|
|
||||||
resources:
|
|
||||||
shortcut: Alt + Shift + Escape
|
|
||||||
command: flatpak run net.nokyan.Resources
|
|
||||||
gtile:
|
|
||||||
shortcut: Super + Tab
|
|
||||||
command: xdotool key super+g
|
|
||||||
|
|
||||||
# Commands to run after login
|
|
||||||
startup:
|
|
||||||
delay: 5
|
|
||||||
delay_between_ms: 1000
|
|
||||||
commands:
|
|
||||||
1password: 1password
|
|
||||||
hotkey-deamon: $HOME/dotfiles/bin/actions/hotkey-daemon.sh
|
|
||||||
trayscale: flatpak run dev.deedles.Trayscale --hide-window
|
|
||||||
vesktop: flatpak run dev.vencord.Vesktop
|
|
||||||
telegram: flatpak run org.telegram.desktop
|
|
||||||
spotify: flatpak run com.spotify.Client
|
|
||||||
zapzap: flatpak run com.rtosta.zapzap
|
|
||||||
steam: steam
|
|
||||||
|
|
||||||
# Fonts to install (Mostly tested with Nerd Fonts)
|
# Fonts to install (Mostly tested with Nerd Fonts)
|
||||||
fonts:
|
fonts:
|
||||||
Hack:
|
Hack:
|
||||||
@ -121,16 +78,16 @@ config:
|
|||||||
branch: master
|
branch: master
|
||||||
target: ~/dotfiles
|
target: ~/dotfiles
|
||||||
|
|
||||||
songguru-bot:
|
|
||||||
url: git@github.com:vleeuwenmenno/songguru-bot.git
|
|
||||||
branch: develop
|
|
||||||
target: ~/Projects/Private/songguru-bot
|
|
||||||
|
|
||||||
ssdc_app_v2:
|
ssdc_app_v2:
|
||||||
url: git@github.com:vleeuwenmenno/ssdc_app_v2.git
|
url: git@github.com:vleeuwenmenno/ssdc_app_v2.git
|
||||||
branch: master
|
branch: master
|
||||||
target: ~/Projects/Private/ssdc_app_v2
|
target: ~/Projects/Private/ssdc_app_v2
|
||||||
|
|
||||||
|
infra:
|
||||||
|
url: git@github.com:tradaware/infra.git
|
||||||
|
branch: main
|
||||||
|
target: ~/Projects/Work
|
||||||
|
|
||||||
|
|
||||||
# Packages to install
|
# Packages to install
|
||||||
# Note: Uninstalling packages is not supported, if you remove a package from this list it will not be removed from the system!
|
# Note: Uninstalling packages is not supported, if you remove a package from this list it will not be removed from the system!
|
||||||
@ -138,106 +95,92 @@ config:
|
|||||||
packages:
|
packages:
|
||||||
# Supply a git_url and binary to install from source
|
# Supply a git_url and binary to install from source
|
||||||
cargo:
|
cargo:
|
||||||
eza:
|
rip2:
|
||||||
lsd:
|
|
||||||
bat:
|
|
||||||
starship:
|
|
||||||
ripgrep:
|
|
||||||
fd-find:
|
fd-find:
|
||||||
procs:
|
|
||||||
bottom:
|
|
||||||
Simple-Wayland-HotKey-Daemon:
|
|
||||||
git_url: https://github.com/waycrate/swhkd.git
|
|
||||||
binary: Simple-Wayland-HotKey-Daemon
|
|
||||||
swhks:
|
|
||||||
git_url: https://github.com/waycrate/swhkd.git
|
|
||||||
binary: swhks
|
|
||||||
|
|
||||||
pipx:
|
pipx:
|
||||||
- gnome-extensions-cli
|
- gnome-extensions-cli
|
||||||
- bauh
|
- bauh
|
||||||
- shyaml
|
- shyaml
|
||||||
|
|
||||||
apt:
|
# No longer supported:
|
||||||
repos:
|
# apt:
|
||||||
apps:
|
# repos:
|
||||||
- bash
|
# apps:
|
||||||
- bash-completion
|
# - bash
|
||||||
- cargo
|
# - bash-completion
|
||||||
- solaar
|
# - solaar
|
||||||
- git
|
# - git
|
||||||
- curl
|
# - curl
|
||||||
- wget
|
# - wget
|
||||||
- gpg
|
# - gpg
|
||||||
- nala
|
# - nala
|
||||||
- ca-certificates
|
# - ca-certificates
|
||||||
- gnupg-agent
|
# - gnupg-agent
|
||||||
- software-properties-common
|
# - software-properties-common
|
||||||
- apt-transport-https
|
# - apt-transport-https
|
||||||
- vim
|
# - vim
|
||||||
- sl
|
# - sl
|
||||||
- jq
|
# - jq
|
||||||
- libglvnd-dev
|
# - gh
|
||||||
- libwayland-dev
|
# - libglvnd-dev
|
||||||
- libseat-dev
|
# - libwayland-dev
|
||||||
- libxkbcommon-dev
|
# - libseat-dev
|
||||||
- libinput-dev
|
# - libxkbcommon-dev
|
||||||
- udev
|
# - libinput-dev
|
||||||
- dbus
|
# - udev
|
||||||
- liblzma-dev
|
# - dbus
|
||||||
- libreadline-dev
|
# - liblzma-dev
|
||||||
- libdbus-1-dev
|
# - libreadline-dev
|
||||||
- libsystemd-dev
|
# - libdbus-1-dev
|
||||||
- libpixman-1-dev
|
# - libsystemd-dev
|
||||||
- libssl-dev
|
# - libpixman-1-dev
|
||||||
- libflatpak-dev
|
# - libssl-dev
|
||||||
- libpulse-dev
|
# - libflatpak-dev
|
||||||
- libexpat1-dev
|
# - libpulse-dev
|
||||||
- libfontconfig-dev
|
# - libexpat1-dev
|
||||||
- libfreetype-dev
|
# - libfontconfig-dev
|
||||||
- mold
|
# - libfreetype-dev
|
||||||
- clang
|
# - mold
|
||||||
- libgtk-3-dev
|
# - clang
|
||||||
- gcc
|
# - libgtk-3-dev
|
||||||
- gcc-mingw-w64
|
# - gcc
|
||||||
- btop
|
# - gcc-mingw-w64
|
||||||
- htop
|
# - btop
|
||||||
- libgbm-dev
|
# - htop
|
||||||
- libclang-dev
|
# - libgbm-dev
|
||||||
- libsecret-1-dev
|
# - libclang-dev
|
||||||
- libpipewire-0.3-dev
|
# - libsecret-1-dev
|
||||||
- libpam0g-dev
|
# - libpipewire-0.3-dev
|
||||||
- openssh-server
|
# - libpam0g-dev
|
||||||
- build-essential
|
# - openssh-server
|
||||||
- flatpak
|
# - build-essential
|
||||||
- meson
|
# - flatpak
|
||||||
- pipx
|
# - meson
|
||||||
- python3-nautilus
|
# - pipx
|
||||||
- gettext
|
# - python3-nautilus
|
||||||
- fzf
|
# - gettext
|
||||||
- neofetch
|
# - fzf
|
||||||
- screenfetch
|
# - fastfetch
|
||||||
- screen
|
# - screenfetch
|
||||||
- brave-browser
|
# - screen
|
||||||
- code
|
# - code
|
||||||
- 1password
|
# - 1password
|
||||||
- 1password-cli
|
# - 1password-cli
|
||||||
- flameshot
|
# - flameshot
|
||||||
- cmake
|
# - cmake
|
||||||
- libsqlite3-dev
|
# - libsqlite3-dev
|
||||||
- libudev-dev
|
# - libudev-dev
|
||||||
- libncursesw5-dev
|
# - libncursesw5-dev
|
||||||
- libgdbm-dev
|
# - libgdbm-dev
|
||||||
- libc6-dev
|
# - libc6-dev
|
||||||
- libbz2-dev
|
# - libbz2-dev
|
||||||
- libffi-dev
|
# - libffi-dev
|
||||||
- tk-dev
|
# - tk-dev
|
||||||
- cmatrix
|
# - cmatrix
|
||||||
- toilet
|
# - toilet
|
||||||
- oneko
|
# - oneko
|
||||||
- libaa-bin
|
# - libaa-bin
|
||||||
- libcurses-perl
|
# - libcurses-perl
|
||||||
- xdotool
|
# - xdotool
|
||||||
- xclip
|
# - xclip
|
||||||
- unzip
|
|
||||||
- zip
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Name=Startup Script
|
|
||||||
Exec=/home/menno/dotfiles/bin/actions/startup-runner.sh
|
|
||||||
X-GNOME-Autostart-enabled=true
|
|
||||||
NoDisplay=false
|
|
||||||
Comment=Run startup script when logging into Cinnamon
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=com.github.PintaProject.Pinta
|
|
||||||
Branch=stable
|
|
||||||
Title=com.github.PintaProject.Pinta from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=com.spotify.Client
|
|
||||||
Branch=stable
|
|
||||||
Title=com.spotify.Client from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=in.cinny.Cinny
|
|
||||||
Branch=stable
|
|
||||||
Title=in.cinny.Cinny from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=io.missioncenter.MissionCenter
|
|
||||||
Branch=stable
|
|
||||||
Title=io.missioncenter.MissionCenter from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=org.gnome.Boxes
|
|
||||||
Branch=stable
|
|
||||||
Title=org.gnome.Boxes from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=org.stellarium.Stellarium
|
|
||||||
Branch=stable
|
|
||||||
Title=org.stellarium.Stellarium from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=org.telegram.desktop
|
|
||||||
Branch=stable
|
|
||||||
Title=org.telegram.desktop from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Flatpak Ref]
|
|
||||||
Name=tv.plex.PlexDesktop
|
|
||||||
Branch=stable
|
|
||||||
Title=tv.plex.PlexDesktop from flathub
|
|
||||||
IsRuntime=false
|
|
||||||
Url=https://dl.flathub.org/repo/
|
|
||||||
SuggestRemoteName=flathub
|
|
||||||
GPGKey=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
|
|
||||||
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
79
config/home-manager/auto-start.nix
Normal file
79
config/home-manager/auto-start.nix
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
systemd.user.services = {
|
||||||
|
onepassword-autostart = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Start 1Password on login";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs._1password-gui}/bin/1password";
|
||||||
|
Restart = "no";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
trayscale-autostart = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Start Trayscale on login";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.trayscale}/bin/trayscale";
|
||||||
|
Restart = "no";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vesktop-autostart = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Start Vesktop on login";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.vesktop}/bin/vesktop";
|
||||||
|
Restart = "no";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
telegram-autostart = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Start Telegram Desktop on login";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.telegram-desktop}/bin/telegram-desktop";
|
||||||
|
Restart = "no";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
spotify-autostart = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Start Spotify on login";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.spotify}/bin/spotify";
|
||||||
|
Restart = "no";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
config/home-manager/dconf.nix
Normal file
7
config/home-manager/dconf.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
dconf = {
|
||||||
|
enable = true;
|
||||||
|
settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
||||||
|
};
|
||||||
|
}
|
28
config/home-manager/flake.nix
Normal file
28
config/home-manager/flake.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
description = "Home Manager configuration";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
firefox-addons = {
|
||||||
|
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { nixpkgs, home-manager, firefox-addons, ... }@inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in {
|
||||||
|
homeConfigurations."yourusername" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
|
||||||
|
modules = [ ./home.nix ];
|
||||||
|
extraSpecialArgs = { inherit inputs; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
config/home-manager/fonts.nix
Normal file
7
config/home-manager/fonts.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.nerdfonts.override { fonts = [ "Hack" "FiraCode" "Meslo" "FiraCode" "DroidSansMono" ]; })
|
||||||
|
];
|
||||||
|
}
|
30
config/home-manager/home.nix
Normal file
30
config/home-manager/home.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{ config, pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./vscode.nix
|
||||||
|
./fonts.nix
|
||||||
|
./kitty.nix
|
||||||
|
./dconf.nix
|
||||||
|
./keyboard-shortcuts.nix
|
||||||
|
./virtualization.nix
|
||||||
|
./packages.nix
|
||||||
|
./auto-start.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
allowUnfreePredicate = (_: true);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.username = "menno";
|
||||||
|
home.homeDirectory = "/home/menno";
|
||||||
|
home.stateVersion = "24.05";
|
||||||
|
home.file = { };
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
GOROOT = "${pkgs.go}/share/go";
|
||||||
|
GOPATH = "${config.home.homeDirectory}/go";
|
||||||
|
PATH = "${config.home.homeDirectory}/go/bin:$PATH";
|
||||||
|
};
|
||||||
|
}
|
34
config/home-manager/keyboard-shortcuts.nix
Normal file
34
config/home-manager/keyboard-shortcuts.nix
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
dconf.settings = {
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||||
|
custom-keybindings = [
|
||||||
|
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/"
|
||||||
|
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/1password-quick-access/"
|
||||||
|
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/screenshot/"
|
||||||
|
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/missioncenter/"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
|
||||||
|
binding = "<Primary><Alt>t";
|
||||||
|
command = "kitty";
|
||||||
|
name = "open-terminal";
|
||||||
|
};
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/1password-quick-access" = {
|
||||||
|
binding = "<Ctrl><Alt>space";
|
||||||
|
command = "1password --quick-access";
|
||||||
|
name = "1password-quick-access";
|
||||||
|
};
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/screenshot" = {
|
||||||
|
binding = "<Shift><Alt>4";
|
||||||
|
command = "flameshot gui";
|
||||||
|
name = "screenshot";
|
||||||
|
};
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/missioncenter" = {
|
||||||
|
binding = "<Ctrl><Shift>Escape";
|
||||||
|
command = "missioncenter";
|
||||||
|
name = "missioncenter";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
config/home-manager/kitty.nix
Normal file
22
config/home-manager/kitty.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
font = {
|
||||||
|
name = "Hack Nerd Font";
|
||||||
|
size = 14;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
dynamic_background_opacity = true;
|
||||||
|
background_opacity = "0.85";
|
||||||
|
background_blur = 32;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
shellIntegration.enableFishIntegration = true;
|
||||||
|
theme = "Catppuccin-Macchiato";
|
||||||
|
#Also available: Catppuccin-Frappe Catppuccin-Latte Catppuccin-Macchiato Catppuccin-Mocha
|
||||||
|
# See all available kitty themes at: https://github.com/kovidgoyal/kitty-themes/blob/46d9dfe230f315a6a0c62f4687f6b3da20fd05e4/themes.json
|
||||||
|
};
|
||||||
|
}
|
116
config/home-manager/packages.nix
Normal file
116
config/home-manager/packages.nix
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./packages/firefox.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# General packages
|
||||||
|
git
|
||||||
|
gnupg
|
||||||
|
gh
|
||||||
|
nixfmt-rfc-style
|
||||||
|
wget
|
||||||
|
|
||||||
|
# Package management
|
||||||
|
flatpak
|
||||||
|
pipx
|
||||||
|
|
||||||
|
# Development SDKs/Toolkits
|
||||||
|
gcc
|
||||||
|
pkg-config
|
||||||
|
gnumake
|
||||||
|
stdenv.cc
|
||||||
|
go
|
||||||
|
rustc
|
||||||
|
cargo
|
||||||
|
cargo-edit
|
||||||
|
cargo-watch
|
||||||
|
cargo-audit
|
||||||
|
cargo-expand
|
||||||
|
cargo-tarpaulin
|
||||||
|
pyenv
|
||||||
|
act # GitHub Actions CLI
|
||||||
|
|
||||||
|
# File and directory operations
|
||||||
|
eza # Modern ls
|
||||||
|
bat # Modern cat
|
||||||
|
zoxide # Smarter cd command
|
||||||
|
broot # Interactive directory navigator
|
||||||
|
du-dust # Modern du
|
||||||
|
duf # Modern df
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
|
||||||
|
# Search and text processing
|
||||||
|
ripgrep # Modern grep
|
||||||
|
sd # Modern sed
|
||||||
|
choose # Modern cut
|
||||||
|
jq # JSON processor
|
||||||
|
yq # YAML processor
|
||||||
|
xsv # CSV processor
|
||||||
|
|
||||||
|
# System monitoring and process management
|
||||||
|
procs # Modern ps
|
||||||
|
bottom # Modern top/htop
|
||||||
|
hyperfine # Benchmarking tool
|
||||||
|
bandwhich # Network utilization tool
|
||||||
|
doggo # Modern dig
|
||||||
|
gping # Ping with graph
|
||||||
|
|
||||||
|
# Development utilities
|
||||||
|
delta # Better git diff
|
||||||
|
difftastic # Structural diff tool
|
||||||
|
mcfly # Better shell history
|
||||||
|
fzf # Fuzzy finder
|
||||||
|
tokei # Code statistics
|
||||||
|
tealdeer # Modern tldr client
|
||||||
|
lazygit # Terminal UI for git
|
||||||
|
|
||||||
|
# Shell and terminal
|
||||||
|
starship # Cross-shell prompt
|
||||||
|
zellij # Modern terminal multiplexer
|
||||||
|
nushell # Modern shell
|
||||||
|
|
||||||
|
# File viewers and processors
|
||||||
|
hexyl # Modern hexdump
|
||||||
|
chafa # Terminal image viewer
|
||||||
|
glow # Markdown renderer
|
||||||
|
|
||||||
|
# Editors
|
||||||
|
neovim
|
||||||
|
nano
|
||||||
|
micro
|
||||||
|
|
||||||
|
# Lolz
|
||||||
|
fortune
|
||||||
|
cowsay
|
||||||
|
cmatrix
|
||||||
|
figlet
|
||||||
|
|
||||||
|
# GUI Applications
|
||||||
|
## Utilities
|
||||||
|
mission-center
|
||||||
|
flameshot
|
||||||
|
gnome.gnome-tweaks
|
||||||
|
pinta
|
||||||
|
bottles
|
||||||
|
trayscale
|
||||||
|
|
||||||
|
## Chat Apps
|
||||||
|
telegram-desktop
|
||||||
|
betterdiscordctl
|
||||||
|
vesktop
|
||||||
|
whatsapp-for-linux
|
||||||
|
signal-desktop
|
||||||
|
|
||||||
|
## Multimedia
|
||||||
|
spotify
|
||||||
|
plex-media-player
|
||||||
|
|
||||||
|
## Astronomy
|
||||||
|
stellarium
|
||||||
|
|
||||||
|
## Games
|
||||||
|
openra
|
||||||
|
];
|
||||||
|
}
|
132
config/home-manager/packages/firefox.nix
Normal file
132
config/home-manager/packages/firefox.nix
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
{ config, pkgs, inputs, ... }:
|
||||||
|
{
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
profiles.default = {
|
||||||
|
id = 0;
|
||||||
|
name = "default";
|
||||||
|
isDefault = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
"browser.startup.homepage" = "about:home";
|
||||||
|
|
||||||
|
# Disable irritating first-run stuff
|
||||||
|
"browser.disableResetPrompt" = true;
|
||||||
|
"browser.download.panel.shown" = true;
|
||||||
|
"browser.feeds.showFirstRunUI" = false;
|
||||||
|
"browser.messaging-system.whatsNewPanel.enabled" = false;
|
||||||
|
"browser.rights.3.shown" = true;
|
||||||
|
"browser.shell.checkDefaultBrowser" = false;
|
||||||
|
"browser.shell.defaultBrowserCheckCount" = 1;
|
||||||
|
"browser.startup.homepage_override.mstone" = "ignore";
|
||||||
|
"browser.uitour.enabled" = false;
|
||||||
|
"startup.homepage_override_url" = "";
|
||||||
|
"trailhead.firstrun.didSeeAboutWelcome" = true;
|
||||||
|
"browser.bookmarks.restore_default_bookmarks" = false;
|
||||||
|
"browser.bookmarks.addedImportButton" = true;
|
||||||
|
|
||||||
|
# Don't ask for download dir
|
||||||
|
"browser.download.useDownloadDir" = false;
|
||||||
|
|
||||||
|
# Disable crappy home activity stream page
|
||||||
|
"browser.newtabpage.activity-stream.feeds.topsites" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
|
||||||
|
|
||||||
|
# Disable some telemetry
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"browser.discovery.enabled" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
||||||
|
"browser.newtabpage.activity-stream.telemetry" = false;
|
||||||
|
"browser.ping-centre.telemetry" = false;
|
||||||
|
"datareporting.healthreport.service.enabled" = false;
|
||||||
|
"datareporting.healthreport.uploadEnabled" = false;
|
||||||
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||||
|
"datareporting.sessions.current.clean" = true;
|
||||||
|
"devtools.onboarding.telemetry.logged" = false;
|
||||||
|
"toolkit.telemetry.archive.enabled" = false;
|
||||||
|
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.enabled" = false;
|
||||||
|
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||||
|
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||||
|
"toolkit.telemetry.prompted" = 2;
|
||||||
|
"toolkit.telemetry.rejected" = true;
|
||||||
|
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||||
|
"toolkit.telemetry.server" = "";
|
||||||
|
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||||
|
"toolkit.telemetry.unified" = false;
|
||||||
|
"toolkit.telemetry.unifiedIsOptIn" = false;
|
||||||
|
"toolkit.telemetry.updatePing.enabled" = false;
|
||||||
|
|
||||||
|
"sidebar.revamp" = true;
|
||||||
|
"sidebar.verticalTabs" = true;
|
||||||
|
|
||||||
|
# Disable "save password" prompt
|
||||||
|
"signon.rememberSignons" = false;
|
||||||
|
# Harden
|
||||||
|
"privacy.trackingprotection.enabled" = true;
|
||||||
|
"dom.security.https_only_mode" = true;
|
||||||
|
# Layout
|
||||||
|
"browser.uiCustomization.state" = builtins.toJSON {
|
||||||
|
currentVersion = 20;
|
||||||
|
newElementCount = 5;
|
||||||
|
dirtyAreaCache = ["nav-bar" "PersonalToolbar" "toolbar-menubar" "TabsToolbar" "widget-overflow-fixed-list"];
|
||||||
|
placements = {
|
||||||
|
PersonalToolbar = ["personal-bookmarks"];
|
||||||
|
TabsToolbar = ["tabbrowser-tabs" "alltabs-button"];
|
||||||
|
nav-bar = ["back-button" "forward-button" "stop-reload-button" "urlbar-container" "downloads-button" "ublock0_raymondhill_net-browser-action" "_testpilot-containers-browser-action" "reset-pbm-toolbar-button" "unified-extensions-button"];
|
||||||
|
toolbar-menubar = ["menubar-items"];
|
||||||
|
unified-extensions-area = [];
|
||||||
|
widget-overflow-fixed-list = [];
|
||||||
|
};
|
||||||
|
seen = ["save-to-pocket-button" "developer-button" "ublock0_raymondhill_net-browser-action" "_testpilot-containers-browser-action"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extensions = with pkgs.inputs.firefox-addons; [
|
||||||
|
ublock-origin
|
||||||
|
browserpass
|
||||||
|
];
|
||||||
|
|
||||||
|
search = {
|
||||||
|
force = true;
|
||||||
|
default = "DuckDuckGo";
|
||||||
|
privateDefault = "DuckDuckGo";
|
||||||
|
|
||||||
|
engines = {
|
||||||
|
"DuckDuckGo".metaData.hidden = false;
|
||||||
|
"Google".metaData.hidden = true;
|
||||||
|
"Amazon.com".metaData.hidden = true;
|
||||||
|
"Bing".metaData.hidden = true;
|
||||||
|
"eBay".metaData.hidden = true;
|
||||||
|
"Qwant".metaData.hidden = true;
|
||||||
|
|
||||||
|
# Add custom golink search engine
|
||||||
|
"golink" = {
|
||||||
|
urls = [ { template = "http://go/%s"; } ];
|
||||||
|
iconUpdateURL = "";
|
||||||
|
updateInterval = 24 * 60 * 60 * 1000;
|
||||||
|
definedAliases = [ "go" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Order of search engines in the search bar
|
||||||
|
order = [
|
||||||
|
"DuckDuckGo"
|
||||||
|
"golink"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optional: Additional Firefox preferences you might want
|
||||||
|
settings = {
|
||||||
|
"browser.startup.page" = 3; # Restore previous session
|
||||||
|
"browser.download.dir" = "${config.home.homeDirectory}/Downloads";
|
||||||
|
"browser.download.folderList" = 2;
|
||||||
|
"browser.toolbars.bookmarks.visibility" = "never";
|
||||||
|
"privacy.donottrackheader.enabled" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
config/home-manager/virtualization.nix
Normal file
9
config/home-manager/virtualization.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
virt-manager
|
||||||
|
virt-viewer
|
||||||
|
qemu
|
||||||
|
OVMF
|
||||||
|
];
|
||||||
|
}
|
53
config/home-manager/vscode.nix
Normal file
53
config/home-manager/vscode.nix
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
home-manager.enable = true;
|
||||||
|
|
||||||
|
vscode = {
|
||||||
|
enable = true;
|
||||||
|
mutableExtensionsDir = true;
|
||||||
|
extensions = with pkgs.vscode-extensions; [
|
||||||
|
ms-azuretools.vscode-docker
|
||||||
|
ms-vscode-remote.remote-containers
|
||||||
|
ms-vscode-remote.remote-ssh
|
||||||
|
ms-vscode-remote.remote-ssh-edit
|
||||||
|
ms-vscode.makefile-tools
|
||||||
|
ms-vsliveshare.vsliveshare
|
||||||
|
bbenoist.nix
|
||||||
|
aaron-bond.better-comments
|
||||||
|
alexisvt.flutter-snippets
|
||||||
|
bmewburn.vscode-intelephense-client
|
||||||
|
christian-kohler.path-intellisense
|
||||||
|
dart-code.dart-code
|
||||||
|
dart-code.flutter
|
||||||
|
esbenp.prettier-vscode
|
||||||
|
foxundermoon.shell-format
|
||||||
|
github.vscode-github-actions
|
||||||
|
github.vscode-pull-request-github
|
||||||
|
usernamehw.errorlens
|
||||||
|
vincaslt.highlight-matching-tag
|
||||||
|
vscode-icons-team.vscode-icons
|
||||||
|
golang.go
|
||||||
|
davidanson.vscode-markdownlint
|
||||||
|
bbenoist.nix
|
||||||
|
brettm12345.nixfmt-vscode
|
||||||
|
yzhang.markdown-all-in-one
|
||||||
|
xdebug.php-debug
|
||||||
|
github.copilot
|
||||||
|
github.copilot-chat
|
||||||
|
];
|
||||||
|
# ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
|
# {
|
||||||
|
# name = "warpnet.salt-lint";
|
||||||
|
# publisher = "warpnet";
|
||||||
|
# version = "latest";
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# name = "mguellsegarra.highlight-on-copy";
|
||||||
|
# publisher = "mguellsegarra";
|
||||||
|
# version = "latest";
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
118
config/nixos/configuration.nix
Normal file
118
config/nixos/configuration.nix
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
/etc/nixos/hardware-configuration.nix
|
||||||
|
./nvidia.nix
|
||||||
|
./virtualization.nix
|
||||||
|
./users.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = "mennos-laptop";
|
||||||
|
# networking.wireless.enable = true;
|
||||||
|
|
||||||
|
# Enable networking
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Amsterdam";
|
||||||
|
|
||||||
|
# Enable experimental nix-command flakes
|
||||||
|
nix = {
|
||||||
|
package = pkgs.nixFlakes;
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "nl_NL.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "nl_NL.UTF-8";
|
||||||
|
LC_MEASUREMENT = "nl_NL.UTF-8";
|
||||||
|
LC_MONETARY = "nl_NL.UTF-8";
|
||||||
|
LC_NAME = "nl_NL.UTF-8";
|
||||||
|
LC_NUMERIC = "nl_NL.UTF-8";
|
||||||
|
LC_PAPER = "nl_NL.UTF-8";
|
||||||
|
LC_TELEPHONE = "nl_NL.UTF-8";
|
||||||
|
LC_TIME = "nl_NL.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
# Enable the GNOME Desktop Environment.
|
||||||
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
|
services.xserver.desktopManager.gnome.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.tailscale ];
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver.xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "euro";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable sound with pipewire.
|
||||||
|
hardware.pulseaudio.enable = false;
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# 1Password
|
||||||
|
programs._1password.enable = true;
|
||||||
|
programs._1password-gui = {
|
||||||
|
enable = true;
|
||||||
|
polkitPolicyOwners = [ "menno" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = {
|
||||||
|
"1password/custom_allowed_browsers" = {
|
||||||
|
text = ''
|
||||||
|
firefox
|
||||||
|
'';
|
||||||
|
mode = "0755";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
}
|
40
config/nixos/nvidia.nix
Normal file
40
config/nixos/nvidia.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
# Enable OpenGL
|
||||||
|
hardware.opengl = { enable = true; };
|
||||||
|
|
||||||
|
# Load nvidia driver for Xorg and Wayland
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
|
||||||
|
# Modesetting is required.
|
||||||
|
modesetting.enable = true;
|
||||||
|
|
||||||
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
|
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||||
|
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||||
|
# of just the bare essentials.
|
||||||
|
powerManagement.enable = false;
|
||||||
|
|
||||||
|
# Fine-grained power management. Turns off GPU when not in use.
|
||||||
|
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||||
|
powerManagement.finegrained = false;
|
||||||
|
|
||||||
|
# Use the NVidia open source kernel module (not to be confused with the
|
||||||
|
# independent third-party "nouveau" open source driver).
|
||||||
|
# Support is limited to the Turing and later architectures. Full list of
|
||||||
|
# supported GPUs is at:
|
||||||
|
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||||
|
# Only available from driver 515.43.04+
|
||||||
|
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||||
|
open = false;
|
||||||
|
|
||||||
|
# Enable the Nvidia settings menu,
|
||||||
|
# accessible via `nvidia-settings`.
|
||||||
|
nvidiaSettings = true;
|
||||||
|
|
||||||
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
};
|
||||||
|
}
|
14
config/nixos/users.nix
Normal file
14
config/nixos/users.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{ config, pkgs, ... }: {
|
||||||
|
users.users.menno = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Menno van Leeuwen";
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"wheel"
|
||||||
|
"kvm"
|
||||||
|
"libvirtd"
|
||||||
|
"qemu-libvirtd"
|
||||||
|
];
|
||||||
|
packages = with pkgs; [ ];
|
||||||
|
};
|
||||||
|
}
|
19
config/nixos/virtualization.nix
Normal file
19
config/nixos/virtualization.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, ... }: {
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
|
||||||
|
virtualisation = {
|
||||||
|
libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
qemu = {
|
||||||
|
package = pkgs.qemu;
|
||||||
|
runAsRoot = true;
|
||||||
|
swtpm.enable = true;
|
||||||
|
ovmf = {
|
||||||
|
enable = true;
|
||||||
|
packages = [ pkgs.OVMF.fd ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
Host *
|
Host *
|
||||||
IdentityAgent ~/.ssh/agent.sock
|
IdentityAgent ~/.1password/agent.sock
|
||||||
|
|
||||||
Include ~/.ssh/config.d/*.conf
|
Include ~/.ssh/config.d/*.conf
|
||||||
|
28
hexyl
Normal file
28
hexyl
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if nixos-version is available
|
||||||
|
if [ -x "$(command -v nixos-version)" ]; then
|
||||||
|
echo "Detected NixOS, skipping Nix setup."
|
||||||
|
return
|
||||||
|
else
|
||||||
|
echo "NixOS not detected, installing Nix..."
|
||||||
|
sh <(curl -L https://nixos.org/nix/install) --daemon
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if sed is available
|
||||||
|
if [ ! -x "$(command -v sed)" ]; then
|
||||||
|
echo "sed is not available, please manually source the following lines in your .bashrc:"
|
||||||
|
echo "export PATH=$PATH:$HOME/.local/bin"
|
||||||
|
echo "export PATH=$PATH:~/dotfiles/bin"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -i -e '$a\'$'\n''export PATH=$PATH:$HOME/.local/bin' ~/.bashrc
|
||||||
|
sed -i -e '$a\'$'\n''export PATH=$PATH:~/dotfiles/bin' ~/.bashrc
|
||||||
|
|
||||||
|
echo "#########################################################"
|
||||||
|
echo "# #"
|
||||||
|
echo "# !!! RESTART YOUR TERMINAL BEFORE YOU CONTINUE !!! #"
|
||||||
|
echo "# !!! Continue with 'dotf update' !!! #"
|
||||||
|
echo "# #"
|
||||||
|
echo "#########################################################"
|
27
setup.sh
27
setup.sh
@ -1,21 +1,20 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Prepare, we need at least these minimal packages to continue ...
|
# Check if nixos-version is available
|
||||||
sudo apt update
|
if [ -x "$(command -v nixos-version)" ]; then
|
||||||
sudo apt install curl nala pipx apt-transport-https ca-certificates gnupg -y
|
echo "Detected NixOS, skipping Nix setup."
|
||||||
|
return
|
||||||
# Ensure shyaml is available
|
else
|
||||||
echo "Ensuring shyaml is installed..."
|
echo "NixOS not detected, installing Nix..."
|
||||||
if [ ! -x "$(command -v shyaml)" ]; then
|
sh <(curl -L https://nixos.org/nix/install) --daemon
|
||||||
echo " - shyaml is not installed, installing it..."
|
|
||||||
pipx install shyaml
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Ensuring pyenv is installed..."
|
# Check if sed is available
|
||||||
if [ ! -d "$HOME/.pyenv" ]; then
|
if [ ! -x "$(command -v sed)" ]; then
|
||||||
curl https://pyenv.run | bash
|
echo "sed is not available, please manually source the following lines in your .bashrc:"
|
||||||
else
|
echo "export PATH=$PATH:$HOME/.local/bin"
|
||||||
echo " - pyenv is already installed"
|
echo "export PATH=$PATH:~/dotfiles/bin"
|
||||||
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed -i -e '$a\'$'\n''export PATH=$PATH:$HOME/.local/bin' ~/.bashrc
|
sed -i -e '$a\'$'\n''export PATH=$PATH:$HOME/.local/bin' ~/.bashrc
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"enable-crash-reporter": false,
|
"enable-crash-reporter": true,
|
||||||
}
|
}
|
||||||
|
@ -1 +0,0 @@
|
|||||||
["aaron-bond.better-comments","alexisvt.flutter-snippets","bmewburn.vscode-intelephense-client","christian-kohler.path-intellisense","dart-code.dart-code","dart-code.flutter","davidanson.vscode-markdownlint","esbenp.prettier-vscode","foxundermoon.shell-format","github.copilot","github.copilot-chat","github.vscode-github-actions","github.vscode-pull-request-github","mguellsegarra.highlight-on-copy","ms-azuretools.vscode-docker","ms-vscode-remote.remote-containers","ms-vscode-remote.remote-ssh","ms-vscode-remote.remote-ssh-edit","ms-vscode.makefile-tools","ms-vscode.remote-explorer","ms-vsliveshare.vsliveshare","nicolasvuillamy.vscode-groovy-lint","usernamehw.errorlens","vincaslt.highlight-matching-tag","vscode-icons-team.vscode-icons","warpnet.salt-lint","xdebug.php-debug","xdebug.php-pack","yinfei.luahelper","zobo.php-intellisense"]
|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"security.workspace.trust.untrustedFiles": "open",
|
"security.workspace.trust.untrustedFiles": "open",
|
||||||
"window.zoomLevel": 0.5,
|
"window.zoomLevel": 1.2,
|
||||||
"editor.fontFamily": "Hack Nerd Font",
|
"editor.fontFamily": "Hack Nerd Font",
|
||||||
"terminal.integrated.fontFamily": "Hack Nerd Font",
|
"terminal.integrated.fontFamily": "Hack Nerd Font",
|
||||||
"github.copilot.enable": {
|
"github.copilot.enable": {
|
||||||
@ -30,4 +30,8 @@
|
|||||||
"editor.tabCompletion": "onlySnippets",
|
"editor.tabCompletion": "onlySnippets",
|
||||||
"editor.wordBasedSuggestions": "off"
|
"editor.wordBasedSuggestions": "off"
|
||||||
},
|
},
|
||||||
|
"editor.tabSize": 2,
|
||||||
|
"editor.insertSpaces": true,
|
||||||
|
"editor.detectIndentation": true,
|
||||||
|
"editor.autoIndent": "full",
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user