18
ansible.cfg
Normal file
18
ansible.cfg
Normal file
@@ -0,0 +1,18 @@
|
||||
[defaults]
|
||||
inventory = inventory.ini
|
||||
interpreter_python = auto_silent
|
||||
callbacks_enabled = timer, profile_tasks, default
|
||||
display_skipped_hosts = no
|
||||
deprecation_warnings = False
|
||||
host_key_checking = False
|
||||
gathering = smart
|
||||
retry_files_enabled = False
|
||||
|
||||
[privilege_escalation]
|
||||
become = True
|
||||
become_method = sudo
|
||||
become_user = root
|
||||
become_ask_pass = False
|
||||
|
||||
[connection]
|
||||
pipelining = True
|
||||
45
bootstrap.sh
Executable file
45
bootstrap.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "=== Arch Linux Hyprland Setup Bootstrap ==="
|
||||
echo ""
|
||||
|
||||
# Check if running as root
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
echo "Error: Do not run as root. Run as a normal user."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Step 1: Setup sudo access for package installation
|
||||
echo "[1/4] Setting up sudo access..."
|
||||
if ! sudo -n true 2>/dev/null; then
|
||||
echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/local > /dev/null
|
||||
echo "NOPASSWD sudo configured."
|
||||
else
|
||||
echo "Sudo access available."
|
||||
fi
|
||||
|
||||
# Step 2: Install base requirements (git, ansible)
|
||||
echo "[2/4] Installing base requirements (git, ansible)..."
|
||||
sudo pacman -Sy --noconfirm git ansible
|
||||
|
||||
# Step 3: Clone or update the repo
|
||||
echo "[3/4] Setting up archsetup..."
|
||||
if [ -d "$HOME/archsetup/.git" ]; then
|
||||
echo "Updating archsetup..."
|
||||
cd "$HOME/archsetup"
|
||||
git pull
|
||||
else
|
||||
echo "Cloning archsetup..."
|
||||
git clone https://github.com/YOUR_USERNAME/archsetup.git "$HOME/archsetup"
|
||||
fi
|
||||
|
||||
# Step 4: Run the playbook
|
||||
echo "[4/4] Running Ansible playbook..."
|
||||
cd "$HOME/archsetup"
|
||||
ansible-playbook site.yml
|
||||
|
||||
echo ""
|
||||
echo "=== Setup complete! ==="
|
||||
echo "Logout and login again for shell changes to take effect."
|
||||
echo "Restart Hyprland (Super + Shift + Q) to apply new configuration."
|
||||
364
dotfiles/hypr/.config/hypr/hyprland.conf
Normal file
364
dotfiles/hypr/.config/hypr/hyprland.conf
Normal file
@@ -0,0 +1,364 @@
|
||||
|
||||
# #######################################################################################
|
||||
# AUTOGENERATED HYPRLAND CONFIG.
|
||||
# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||
# #######################################################################################
|
||||
|
||||
autogenerated = 0 # remove this line to remove the warning
|
||||
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hypr.land/Configuring/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||
monitor=,preferred,auto,auto
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = dolphin
|
||||
$menu = wofi -S drun
|
||||
$browser = firefox
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
exec-once = $terminal
|
||||
exec-once = nm-applet &
|
||||
exec-once = waybar & hyprpaper & firefox
|
||||
exec-once = kanshi
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
###################
|
||||
### PERMISSIONS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||
# for security reasons
|
||||
|
||||
# ecosystem {
|
||||
# enforce_permissions = 1
|
||||
# }
|
||||
|
||||
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 20
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = yes, please :)
|
||||
|
||||
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
|
||||
# NAME, X0, Y0, X1, Y1
|
||||
bezier = easeOutQuint, 0.23, 1, 0.32, 1
|
||||
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
|
||||
bezier = linear, 0, 0, 1, 1
|
||||
bezier = almostLinear, 0.5, 0.5, 0.75, 1
|
||||
bezier = quick, 0.15, 0, 0.1, 1
|
||||
|
||||
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
|
||||
# NAME, ONOFF, SPEED, CURVE, [STYLE]
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
animation = zoomFactor, 1, 7, quick
|
||||
}
|
||||
|
||||
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule {
|
||||
# name = no-gaps-wtv1
|
||||
# match:float = false
|
||||
# match:workspace = w[tv1]
|
||||
#
|
||||
# border_size = 0
|
||||
# rounding = 0
|
||||
# }
|
||||
#
|
||||
# windowrule {
|
||||
# name = no-gaps-f1
|
||||
# match:float = false
|
||||
# match:workspace = f[1]
|
||||
#
|
||||
# border_size = 0
|
||||
# rounding = 0
|
||||
# }
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options = caps:ctrl_modifier
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Gestures
|
||||
gesture = 3, horizontal, workspace
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||
bind = $mainMod, Return, exec, $terminal
|
||||
bind = $mainMod SHIFT, Q, killactive,
|
||||
# bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, B, exec, $browser
|
||||
bind = $mainMod, Space, togglefloating,
|
||||
bind = $mainMod, F, fullscreen,
|
||||
bind = $mainMod, d, exec, $menu
|
||||
bind = $mainMod Shift, R, exec, reload
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
# bind = $mainMod, J, layoutmsg, togglesplit # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys / hjlk
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
bind = $mainMod, H, movefocus, l
|
||||
bind = $mainMod, L, movefocus, r
|
||||
bind = $mainMod, K, movefocus, u
|
||||
bind = $mainMod, J, movefocus, d
|
||||
|
||||
# Move window with mainMod + arrow keys / hjlk
|
||||
bind = $mainMod Shift, H, movewindow, l
|
||||
bind = $mainMod Shift, L, movewindow, r
|
||||
bind = $mainMod Shift, K, movewindow, u
|
||||
bind = $mainMod Shift, J, movewindow, d
|
||||
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrules that are useful
|
||||
|
||||
windowrule {
|
||||
# Ignore maximize requests from all apps. You'll probably like this.
|
||||
name = suppress-maximize-events
|
||||
match:class = .*
|
||||
|
||||
suppress_event = maximize
|
||||
}
|
||||
|
||||
windowrule {
|
||||
# Fix some dragging issues with XWayland
|
||||
name = fix-xwayland-drags
|
||||
match:class = ^$
|
||||
match:title = ^$
|
||||
match:xwayland = true
|
||||
match:float = true
|
||||
match:fullscreen = false
|
||||
match:pin = false
|
||||
|
||||
no_focus = true
|
||||
}
|
||||
|
||||
# Hyprland-run windowrule
|
||||
windowrule {
|
||||
name = move-hyprland-run
|
||||
|
||||
match:class = hyprland-run
|
||||
|
||||
move = 20 monitor_h-120
|
||||
float = yes
|
||||
}
|
||||
24
dotfiles/starship/.config/starship/config.toml
Normal file
24
dotfiles/starship/.config/starship/config.toml
Normal file
@@ -0,0 +1,24 @@
|
||||
$formatters
|
||||
format = """
|
||||
[─](bold green)
|
||||
[❯](bold green) """
|
||||
add_newline = true
|
||||
|
||||
[character]
|
||||
success_symbol = "[❯](bold green)"
|
||||
error_symbol = "[❯](bold red)"
|
||||
|
||||
[directory]
|
||||
home_symbol = "~"
|
||||
truncation_length = 3
|
||||
truncate_to_repo = true
|
||||
|
||||
[git]
|
||||
branch_symbol = " "
|
||||
stash_count_symbol = " "
|
||||
format = "on [$symbol$branch]($style)$completions"
|
||||
style = "bold purple"
|
||||
|
||||
[docker_context]
|
||||
format = "via [$symbol$context]($style) "
|
||||
style = "blue bold"
|
||||
318
dotfiles/zellij/.config/zellij/config.kdl
Normal file
318
dotfiles/zellij/.config/zellij/config.kdl
Normal file
@@ -0,0 +1,318 @@
|
||||
// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true"
|
||||
keybinds {
|
||||
normal clear-defaults=true {
|
||||
bind "F1" {SwitchToMode "Tab"; }
|
||||
bind "F2" {SwitchToMode "Pane"; }
|
||||
bind "F5" {SwitchToMode "Session"; }
|
||||
bind "F6" {SwitchToMode "Search"; }
|
||||
bind "F7" {SwitchToMode "Scroll"; }
|
||||
bind "F8" {SwitchToMode "Resize"; }
|
||||
bind "F9" {SwitchToMode "Move"; }
|
||||
bind "F12" {SwitchToMode "Locked"; }
|
||||
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
|
||||
bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; }
|
||||
bind "Alt j" "Alt Down" { MoveFocus "Down"; }
|
||||
bind "Alt k" "Alt Up" { MoveFocus "Up"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
bind "Alt t" { NewTab; }
|
||||
bind "Alt w" { ToggleFloatingPanes; }
|
||||
bind "Alt =" "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl t" { SwitchToMode "Normal"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "h" "Left" "Up" "k" { GoToPreviousTab; }
|
||||
bind "l" "Right" "Down" "j" { GoToNextTab; }
|
||||
bind "n" { NewTab; SwitchToMode "Normal"; }
|
||||
bind "x" { CloseTab; SwitchToMode "Normal"; }
|
||||
bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; }
|
||||
bind "1" { GoToTab 1; SwitchToMode "Normal"; }
|
||||
bind "2" { GoToTab 2; SwitchToMode "Normal"; }
|
||||
bind "3" { GoToTab 3; SwitchToMode "Normal"; }
|
||||
bind "4" { GoToTab 4; SwitchToMode "Normal"; }
|
||||
bind "5" { GoToTab 5; SwitchToMode "Normal"; }
|
||||
bind "6" { GoToTab 6; SwitchToMode "Normal"; }
|
||||
bind "7" { GoToTab 7; SwitchToMode "Normal"; }
|
||||
bind "8" { GoToTab 8; SwitchToMode "Normal"; }
|
||||
bind "9" { GoToTab 9; SwitchToMode "Normal"; }
|
||||
bind "Tab" { ToggleTab; }
|
||||
}
|
||||
locked {
|
||||
bind "F12" { SwitchToMode "Normal"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl n" { SwitchToMode "Normal"; }
|
||||
bind "h" "Left" { Resize "Increase Left"; }
|
||||
bind "j" "Down" { Resize "Increase Down"; }
|
||||
bind "k" "Up" { Resize "Increase Up"; }
|
||||
bind "l" "Right" { Resize "Increase Right"; }
|
||||
bind "H" { Resize "Decrease Left"; }
|
||||
bind "J" { Resize "Decrease Down"; }
|
||||
bind "K" { Resize "Decrease Up"; }
|
||||
bind "L" { Resize "Decrease Right"; }
|
||||
bind "=" "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl p" { SwitchToMode "Normal"; }
|
||||
bind "h" "Left" { MoveFocus "Left"; }
|
||||
bind "l" "Right" { MoveFocus "Right"; }
|
||||
bind "j" "Down" { MoveFocus "Down"; }
|
||||
bind "k" "Up" { MoveFocus "Up"; }
|
||||
bind "p" { SwitchFocus; }
|
||||
bind "n" { NewPane; SwitchToMode "Normal"; }
|
||||
bind "d" { NewPane "Down"; SwitchToMode "Normal"; }
|
||||
bind "r" { NewPane "Right"; SwitchToMode "Normal"; }
|
||||
bind "x" { CloseFocus; SwitchToMode "Normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "Normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;}
|
||||
}
|
||||
move {
|
||||
bind "Ctrl h" { SwitchToMode "Normal"; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "shift h" { MoveTab "Left"; }
|
||||
bind "shift l" { MoveTab "Right"; }
|
||||
}
|
||||
scroll {
|
||||
bind "Ctrl s" { SwitchToMode "Normal"; }
|
||||
bind "e" { EditScrollback; SwitchToMode "Normal"; }
|
||||
bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
|
||||
bind "j" "Down" { ScrollDown; }
|
||||
bind "k" "Up" { ScrollUp; }
|
||||
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
||||
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
||||
bind "d" { HalfPageScrollDown; }
|
||||
bind "u" { HalfPageScrollUp; }
|
||||
// uncomment this and adjust key if using copy_on_select=false
|
||||
// bind "Alt c" { Copy; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" { SwitchToMode "Normal"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
|
||||
bind "j" "Down" { ScrollDown; }
|
||||
bind "k" "Up" { ScrollUp; }
|
||||
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
||||
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
||||
bind "d" { HalfPageScrollDown; }
|
||||
bind "u" { HalfPageScrollUp; }
|
||||
bind "n" { Search "down"; }
|
||||
bind "p" { Search "up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
|
||||
bind "Enter" { SwitchToMode "Search"; }
|
||||
}
|
||||
renametab {
|
||||
bind "Ctrl c" { SwitchToMode "Normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; }
|
||||
}
|
||||
renamepane {
|
||||
bind "Ctrl c" { SwitchToMode "Normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl o" { SwitchToMode "Normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "Scroll"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
tmux {
|
||||
bind "[" { SwitchToMode "Scroll"; }
|
||||
bind "Ctrl b" { Write 2; SwitchToMode "Normal"; }
|
||||
bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
|
||||
bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
|
||||
bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
|
||||
bind "c" { NewTab; SwitchToMode "Normal"; }
|
||||
bind "," { SwitchToMode "RenameTab"; }
|
||||
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
|
||||
bind "n" { GoToNextTab; SwitchToMode "Normal"; }
|
||||
bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; }
|
||||
bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; }
|
||||
bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; }
|
||||
bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; }
|
||||
bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
|
||||
bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
|
||||
bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
|
||||
bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
|
||||
bind "o" { FocusNextPane; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
shared_except "locked" {
|
||||
bind "Ctrl g" { SwitchToMode "Locked"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
|
||||
bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; }
|
||||
bind "Alt j" "Alt Down" { MoveFocus "Down"; }
|
||||
bind "Alt k" "Alt Up" { MoveFocus "Up"; }
|
||||
bind "Alt =" "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
shared_except "normal" "locked" {
|
||||
bind "Enter" "Esc" { SwitchToMode "Normal"; }
|
||||
}
|
||||
shared_except "pane" "locked" {
|
||||
bind "Ctrl p" { SwitchToMode "Pane"; }
|
||||
}
|
||||
shared_except "resize" "locked" {
|
||||
bind "Ctrl n" { SwitchToMode "Resize"; }
|
||||
}
|
||||
shared_except "scroll" "locked" {
|
||||
bind "Ctrl s" { SwitchToMode "Scroll"; }
|
||||
}
|
||||
shared_except "session" "locked" {
|
||||
bind "Ctrl o" { SwitchToMode "Session"; }
|
||||
}
|
||||
shared_except "tab" "locked" {
|
||||
bind "Ctrl t" { SwitchToMode "Tab"; }
|
||||
}
|
||||
shared_except "move" "locked" {
|
||||
bind "Ctrl h" { SwitchToMode "Move"; }
|
||||
}
|
||||
shared_except "tmux" "locked" {
|
||||
bind "Ctrl b" { SwitchToMode "Tmux"; }
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// Send a request for a simplified ui (without arrow fonts) to plugins
|
||||
// Options:
|
||||
// - true
|
||||
// - false (Default)
|
||||
//
|
||||
// simplified_ui true
|
||||
|
||||
// Choose the path to the default shell that zellij will use for opening new panes
|
||||
// Default: $SHELL
|
||||
//
|
||||
// default_shell "fish"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Define color themes for Zellij
|
||||
// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
// Once these themes are defined, one of them should to be selected in the "theme" section of this file
|
||||
//
|
||||
//
|
||||
themes {
|
||||
tokyo-night-dark {
|
||||
fg 169 177 214
|
||||
bg 26 27 38
|
||||
black 56 62 90
|
||||
red 249 51 87
|
||||
green 158 206 106
|
||||
yellow 224 175 104
|
||||
blue 122 162 247
|
||||
magenta 187 154 247
|
||||
cyan 42 195 222
|
||||
white 192 202 245
|
||||
orange 255 158 100
|
||||
}
|
||||
}
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
theme "tokyo-night-dark"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// mouse_mode false
|
||||
|
||||
// Configure the scroll back buffer size
|
||||
// This is the number of lines zellij stores for each pane in the scroll back
|
||||
// buffer. Excess number of lines are discarded in a FIFO fashion.
|
||||
// Valid values: positive integers
|
||||
// Default value: 10000
|
||||
//
|
||||
// scroll_buffer_size 10000
|
||||
|
||||
// Provide a command to execute when copying text. The text will be piped to
|
||||
// the stdin of the program to perform the copy. This can be used with
|
||||
// terminal emulators which do not support the OSC 52 ANSI control sequence
|
||||
// that will be used by default if this option is not set.
|
||||
// Examples:
|
||||
//
|
||||
// copy_command "xclip -selection clipboard" // x11
|
||||
// copy_command "wl-copy" // wayland
|
||||
// copy_command "pbcopy" // osx
|
||||
|
||||
// Choose the destination for copied text
|
||||
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
|
||||
// Does not apply when using copy_command.
|
||||
// Options:
|
||||
// - system (default)
|
||||
// - primary
|
||||
//
|
||||
// copy_clipboard "primary"
|
||||
|
||||
// Enable or disable automatic copy (and clear) of selection when releasing mouse
|
||||
// Default: true
|
||||
//
|
||||
// copy_on_select false
|
||||
|
||||
// Path to the default editor to use to edit pane scrollbuffer
|
||||
// Default: $EDITOR or $VISUAL
|
||||
//
|
||||
// scrollback_editor "/usr/bin/nvim"
|
||||
|
||||
// When attaching to an existing session with other users,
|
||||
// should the session be mirrored (true)
|
||||
// or should each user have their own cursor (false)
|
||||
// Default: false
|
||||
//
|
||||
// mirror_session true
|
||||
|
||||
// The folder in which Zellij will look for layouts
|
||||
//
|
||||
// layout_dir "/path/to/my/layout_dir"
|
||||
|
||||
// The folder in which Zellij will look for themes
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
25
dotfiles/zsh/.zshrc
Normal file
25
dotfiles/zsh/.zshrc
Normal file
@@ -0,0 +1,25 @@
|
||||
# ~/.zshrc - Zsh configuration
|
||||
|
||||
# Source .zprofile for login shell environment
|
||||
[[ -f ~/.zprofile ]] && emulate sh -c 'source ~/.zprofile'
|
||||
|
||||
# Enable powerlevel10k instant prompt
|
||||
#if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
# source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
#fi
|
||||
|
||||
# Basic options
|
||||
setopt HIST_IGNORE_DUPS
|
||||
setopt HIST_IGNORE_SPACE
|
||||
setopt AUTO_CD
|
||||
setopt CORRECT
|
||||
|
||||
# Key bindings
|
||||
bindkey -v
|
||||
|
||||
# Completion
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
|
||||
# Plugins (loaded via oh-my-zsh)
|
||||
# plugins=(git docker python node npm)
|
||||
2
inventory.ini
Normal file
2
inventory.ini
Normal file
@@ -0,0 +1,2 @@
|
||||
[localhost]
|
||||
ansible_connection=local
|
||||
4
requirements.yml
Normal file
4
requirements.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
collections:
|
||||
- name: kewlfft.aur
|
||||
version: 0.13.0
|
||||
6
roles/ai/tasks/main.yaml
Normal file
6
roles/ai/tasks/main.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
# tasks file for ai
|
||||
- name: Install AI development tools
|
||||
pacman:
|
||||
name:
|
||||
- opencode
|
||||
state: present
|
||||
3
roles/common/handlers/main.yaml
Normal file
3
roles/common/handlers/main.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
- name: Update font cache
|
||||
ansible.builtin.command: fc-cache -fv
|
||||
changed_when: false
|
||||
138
roles/common/tasks/main.yml
Normal file
138
roles/common/tasks/main.yml
Normal file
@@ -0,0 +1,138 @@
|
||||
# tasks file for common
|
||||
- name: Install base development tools
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- base-devel
|
||||
- git
|
||||
- curl
|
||||
- wget
|
||||
- rsync
|
||||
- unzip
|
||||
- zip
|
||||
- less
|
||||
- man
|
||||
- texinfo
|
||||
- which
|
||||
- zsh
|
||||
- stow
|
||||
- ansible
|
||||
- zoxide
|
||||
- atuin
|
||||
- broot
|
||||
- bottom
|
||||
- hyperfine
|
||||
- tokei
|
||||
- git-delta
|
||||
- yazi
|
||||
- tealdeer
|
||||
state: present
|
||||
|
||||
- name: Install Rust toolchain and Python uv
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- rust
|
||||
- eza
|
||||
- bat
|
||||
- ripgrep
|
||||
- fd
|
||||
- starship
|
||||
- cargo
|
||||
- cargo-binstall
|
||||
- uv
|
||||
state: present
|
||||
|
||||
- name: Install Fonts
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- ttf-dejavu
|
||||
- ttf-liberation
|
||||
- ttf-jetbrains-mono-nerd
|
||||
- adobe-source-han-sans-jp-fonts
|
||||
state: present
|
||||
notify: Update font cache
|
||||
|
||||
- name: Ensure ttf-joypixels is installed from AUR
|
||||
kewlfft.aur.aur:
|
||||
name: ttf-joypixels
|
||||
use: paru
|
||||
state: present
|
||||
notify: Update font cache
|
||||
|
||||
- name: Install AUR helper (paru)
|
||||
shell: |
|
||||
command -v paru >/dev/null 2>&1 && exit 0 || (
|
||||
cd /tmp
|
||||
rm -rf paru
|
||||
git clone https://aur.archlinux.org/paru.git
|
||||
cd paru
|
||||
makepkg -si --noconfirm
|
||||
cd ~
|
||||
rm -rf /tmp/paru
|
||||
)
|
||||
register: paru_install
|
||||
changed_when: "'Installing' in paru_install.stdout or 'Compiling' in paru_install.stdout"
|
||||
|
||||
- name: Install oh-my-zsh
|
||||
shell: |
|
||||
[ -d ~/.oh-my-zsh ] && exit 0 || sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
||||
args:
|
||||
creates: ~/.oh-my-zsh
|
||||
|
||||
- name: Check current shell
|
||||
become: true
|
||||
getent:
|
||||
database: passwd
|
||||
key: "{{ user }}"
|
||||
register: user_info
|
||||
changed_when: false
|
||||
|
||||
- name: Set zsh as default shell
|
||||
become: true
|
||||
shell: chsh -s /bin/zsh {{ user }}
|
||||
when: user_info.ansible_facts.getent_passwd[user][-1] != '/bin/zsh'
|
||||
|
||||
- name: Setup shell profile configuration
|
||||
blockinfile:
|
||||
path: "{{ lookup('env', 'HOME') }}/.profile"
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
create: yes
|
||||
mode: '0644'
|
||||
content: |
|
||||
# ~/.profile - POSIX compatible environment
|
||||
|
||||
# Rust and cargo binaries
|
||||
export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH"
|
||||
|
||||
# XDG Base Directory
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
|
||||
export EDITOR="emacs -nw"
|
||||
|
||||
- name: Setup zprofile for Zsh compatibility
|
||||
copy:
|
||||
dest: "{{ lookup('env', 'HOME') }}/.zprofile"
|
||||
content: |
|
||||
# ~/.zprofile - Sourced by Zsh for login shells
|
||||
# Source .profile for POSIX-compatible environment
|
||||
emulate sh -c 'source ~/.profile'
|
||||
|
||||
# Initialize zoxide for smart cd
|
||||
eval "$(zoxide init zsh)"
|
||||
|
||||
# Initialize atuin for shell history
|
||||
eval "$(atuin init zsh)"
|
||||
owner: "{{ lookup('env', 'USER') }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: Setup shell plugins in zshrc
|
||||
blockinfile:
|
||||
path: "{{ lookup('env', 'HOME') }}/.zshrc"
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
content: |
|
||||
# Source .zprofile for login shell environment
|
||||
[[ -f ~/.zprofile ]] && emulate sh -c 'source ~/.zprofile'
|
||||
53
roles/cs_student/tasks/main.yml
Normal file
53
roles/cs_student/tasks/main.yml
Normal file
@@ -0,0 +1,53 @@
|
||||
# tasks file for cs_student
|
||||
- name: Install CS student tools
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- neovim
|
||||
- emacs
|
||||
- python
|
||||
- nodejs
|
||||
- npm
|
||||
- texlive-bin
|
||||
- texlive-basic
|
||||
- jupyter-nbconvert
|
||||
- docker
|
||||
- code
|
||||
- github-cli
|
||||
state: present
|
||||
|
||||
- name: Install LazyVim
|
||||
shell: |
|
||||
[ -d ~/.config/lazyvim ] && rm -rf ~/.config/lazyvim
|
||||
git clone https://github.com/LazyVim/starter ~/.config/lazyvim
|
||||
rm -rf ~/.config/lazyvim/.git
|
||||
args:
|
||||
creates: ~/.config/lazyvim
|
||||
|
||||
- name: Configure neovim to use LazyVim
|
||||
shell: |
|
||||
ln -sf ~/.config/lazyvim ~/.config/nvim
|
||||
args:
|
||||
creates: ~/.config/nvim
|
||||
|
||||
- name: Install Spacemacs
|
||||
shell: |
|
||||
[ -d ~/.emacs.d ] && rm -rf ~/.emacs.d
|
||||
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d -b develop
|
||||
args:
|
||||
creates: ~/.emacs.d
|
||||
|
||||
- name: Setup shell aliases
|
||||
lineinfile:
|
||||
path: "{{ lookup('env', 'HOME') }}/.zshrc"
|
||||
line: "{{ item }}"
|
||||
create: yes
|
||||
loop:
|
||||
- alias ls='eza --icons --group-directories-first'
|
||||
- alias ll='eza -la --icons --group-directories-first'
|
||||
- alias cat='bat --style=auto'
|
||||
- alias find='fd'
|
||||
- alias top='btm'
|
||||
- alias tre='broot --sizes'
|
||||
- alias e='emacs -nw'
|
||||
- alias vim='nvim'
|
||||
11
roles/ctf/tasks/main.yml
Normal file
11
roles/ctf/tasks/main.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
# tasks file for ctf
|
||||
- name: Install CTF tools (official repos)
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- wireshark-qt
|
||||
- nmap
|
||||
- openbsd-netcat
|
||||
- binwalk
|
||||
- gobuster
|
||||
state: present
|
||||
24
roles/devops/tasks/main.yml
Normal file
24
roles/devops/tasks/main.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
# tasks file for devops
|
||||
- name: Install DevOps tools
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- docker
|
||||
- kubectl
|
||||
- terraform
|
||||
- ansible
|
||||
- helm
|
||||
- k9s
|
||||
- pulumi
|
||||
- kubectx
|
||||
state: present
|
||||
|
||||
- name: Setup shell aliases
|
||||
lineinfile:
|
||||
path: "{{ lookup('env', 'HOME') }}/.zshrc"
|
||||
line: "{{ item }}"
|
||||
create: yes
|
||||
loop:
|
||||
- alias kc='kubectl'
|
||||
- alias kctx='kubectx'
|
||||
- alias kns='kubens'
|
||||
23
roles/dotfiles/tasks/main.yml
Normal file
23
roles/dotfiles/tasks/main.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
# tasks file for dotfiles
|
||||
- name: Ensure stow is installed
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- stow
|
||||
state: present
|
||||
|
||||
- name: Remove existing config files before stowing
|
||||
shell: |
|
||||
[ -L ~/.config/hypr/hyprland.conf ] || rm -f ~/.config/hypr/hyprland.conf
|
||||
[ -L ~/.config/starship ] || rm -rf ~/.config/starship
|
||||
[ -L ~/.config/zellij ] || rm -rf ~/.config/zellij
|
||||
changed_when: false
|
||||
|
||||
- name: Create symlinks with stow
|
||||
shell: |
|
||||
cd {{ lookup('env', 'HOME') }}/archsetup/dotfiles
|
||||
stow -t ~ hypr starship zellij
|
||||
args:
|
||||
executable: /bin/bash
|
||||
creates: "{{ lookup('env', 'HOME') }}/.config/starship"
|
||||
chdir: "{{ lookup('env', 'HOME') }}/archsetup/dotfiles"
|
||||
81
roles/hyprland/tasks/main.yml
Normal file
81
roles/hyprland/tasks/main.yml
Normal file
@@ -0,0 +1,81 @@
|
||||
# tasks file for hyprland
|
||||
- name: Install Hyprland and desktop components (official repos)
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- waybar
|
||||
- wofi
|
||||
- kitty
|
||||
- swaync
|
||||
- fastfetch
|
||||
- hyprpaper
|
||||
- hyprlock
|
||||
- pavucontrol
|
||||
- brightnessctl
|
||||
- playerctl
|
||||
- grim
|
||||
- wl-clipboard
|
||||
- xdg-desktop-portal-hyprland
|
||||
- zellij
|
||||
- veracrypt
|
||||
state: present
|
||||
|
||||
- name: Install basic Linux tools
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- fzf
|
||||
- jq
|
||||
- yq
|
||||
- shellcheck
|
||||
- dust
|
||||
- ffmpeg
|
||||
- sxiv
|
||||
- pandoc
|
||||
- p7zip
|
||||
- entr
|
||||
- less
|
||||
- man
|
||||
- texinfo
|
||||
- which
|
||||
- iw
|
||||
- network-manager-applet
|
||||
- udiskie
|
||||
- ntfs-3g
|
||||
state: present
|
||||
|
||||
- name: Install Bluetooth support
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- bluez
|
||||
- bluez-utils
|
||||
- bluedevil
|
||||
state: present
|
||||
|
||||
- name: Install printing support
|
||||
become: true
|
||||
pacman:
|
||||
name:
|
||||
- cups
|
||||
- cups-pdf
|
||||
- system-config-printer
|
||||
state: present
|
||||
|
||||
- name: Enable services
|
||||
become: true
|
||||
systemd:
|
||||
name: "{{ item }}"
|
||||
enabled: yes
|
||||
loop:
|
||||
- bluetooth
|
||||
- cups
|
||||
- docker
|
||||
- udisks2
|
||||
|
||||
- name: Add user to docker group
|
||||
become: true
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
groups: docker
|
||||
append: yes
|
||||
15
site.yml
Normal file
15
site.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
vars:
|
||||
aur_helper: paru
|
||||
user: "{{ ansible_user_id }}"
|
||||
|
||||
roles:
|
||||
- { role: common, tags: ['common'] }
|
||||
- { role: dotfiles, tags: ['dotfiles'] }
|
||||
- { role: cs_student, tags: ['cs_student'] }
|
||||
- { role: devops, tags: ['devops'] }
|
||||
- { role: ctf, tags: ['ctf'] }
|
||||
- { role: hyprland, tags: ['hyprland'] }
|
||||
- { role: ai, tags: ['ai'] }
|
||||
Reference in New Issue
Block a user