1
0

Compare commits

..

18 Commits

Author SHA1 Message Date
blueplum 9580f18b53 awdawdawd 2026-03-10 17:36:37 +01:00
blueplum 2c8cf957ee feat: bump to nixos-unstable 2026-03-01 15:58:42 +01:00
blueplum 1f342308de feat: element 2026-03-01 15:38:40 +01:00
blueplum b6386b6094 feat: wacom tablet integration
This is.. filled with hacks. But it works, and is in the `blueplum.nix`
file, which is specialized for my machine anyways.
2026-02-02 20:25:59 +01:00
blueplum 134fe16393 feat: TETR.IO (+ TETR.IO PLUS integration)
This commit does feature a _few_ changes to my general NixOS config
(namely the ideology switch from importing things everywhere to having
my own custom "`mpkgs`").

However most of this effort was all thanks to TETR.IO. The former
maintainer of `pkgs.tetrio-desktop` and `pkgs.tetrio-plus` seems to not
have been playing recently enough to update the packages to v10. Making
them unusuable.

`mpkgs.tetrio.desktop` is a patched `pkgs.tetrio-desktop` that updates
to v10. Alongside this, and a quick discovery that you could make custom
home-manager modules, I took it upon myself to make TETR.IO
configurations (including those of TETR.IO PLUS) fully generated from
Nix.

This effort took way too long, and feels slightly hacky (the way
injecting configurations works is by generating a LevelDB (Chromium
IndexedDB) for the electron instance's Local Storage) and it involves
some custom stuff. (LevelDB deriviation, plus home-manager module for
copying files rather than linking them `home.initialFile`.)

I'm proud of the result, and Tetris is now fully deterministic,
reproducible, and Nix-y.
2026-01-14 21:49:20 +01:00
blueplum af86c0c1e5 patch(nvim): unnest.nvim
Makes using git within a terminal nicer. `vim-fugitive` was my former go
to, but I prefer that, with the `<leader>t` shortcut.
2025-12-30 23:48:22 +01:00
blueplum 15662647d7 chore(nvim): reintroduce typescript 2025-12-30 23:47:59 +01:00
blueplum 9f8ed18d72 chore: install additional user programs 2025-12-19 16:15:58 +01:00
blueplum 7acae9b431 patch: properly configure screen configuration
(post `greetd` introduction)
2025-12-19 16:15:27 +01:00
blueplum 049c916f46 chore: make neovim gd actually go to definition
For some reason, the default mapping on `gd` does not go to definition
by lsp, but rather by symbol within file.
2025-12-19 16:13:39 +01:00
blueplum 7ca50dd7fe patch(vesktop): actually apply the configuration 2025-12-19 16:12:55 +01:00
blueplum 1eb41ac84e chore: add ripgrep to system config 2025-12-19 16:11:32 +01:00
blueplum 0009b7c33c chore(neovim): switch to fzf-lua for fuzzy finding 2025-12-19 16:10:27 +01:00
blueplum 056888e635 patch: fallback to stable rust toolchain
Rust-analyzer doesn't play nicely with proc macros on the latest
(default) fenix toolchain.
2025-12-19 16:07:50 +01:00
blueplum f1b828c7fe chore: standardize fish config (+ sync into) 2025-12-19 16:06:43 +01:00
blueplum 5439235834 feat: configure git correctly 2025-12-19 16:05:43 +01:00
blueplum 747db1cc8c feat: git changes
Like usual, this never works out first try. It might not be obvious, but
I'm also trying to set up signing at the same time as this commit is
pushed. Expect dummy commits if I mess it up.
2025-11-21 17:17:11 +01:00
blueplum 8d0bddf680 feat: initial commit; NixOS Era 2025-11-21 17:11:38 +01:00
88 changed files with 3069 additions and 6731 deletions
-1
View File
@@ -1 +0,0 @@
Xcursor.theme: posy-black
-27
View File
@@ -1,27 +0,0 @@
# Utilities
alias cls 'clear; echo "( .-.)"'
alias vencord 'sh -c "$(curl -sS https://raw.githubusercontent.com/Vendicated/VencordInstaller/main/install.sh)"'
# Places
alias applications 'cd ~/.local/share/applications/'
alias dot 'cd ~/dotfiles'
# Layout
alias smap layout # Switch map
alias us 'layout -t us'
alias sv 'layout -t se'
# SSH
alias louis 'vpn --enable && ssh anton@192.168.178.48'
alias wgon 'echo "$(set_color red)You changed this dimwit, use \'vpn\' instead"'
alias wgoff 'echo "$(set_color red)You changed this dimwit, use \'vpn\' instead"'
# Git
#alias glog 'git log --graph --abbrev-commit --decorate --format=format:\'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)\''
#alias gref 'git show -s --pretty=reference '
alias glog 'git lg'
alias gref 'git ref'
alias disable_webkit 'set -gx WEBKIT_DISABLE_DMABUF_RENDERER 1; set -gx WEBKIT_DISABLE_COMPOSITING_MODE 1'
-19
View File
@@ -1,19 +0,0 @@
set fish_greeting '( .-.)'
set PI 3.141592653589
set E 2.718281828459
fish_vi_key_bindings
set _TEMP /tmp/anton/
if not test -d $_TEMP
mkdir -p $_TEMP
end
set -x GPG_TTY $(tty)
source ~/.config/fish/alias.fish
source ~/.config/fish/prompt.fish
plug --init --silent
-31
View File
@@ -1,31 +0,0 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3800
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:normal
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_key_bindings:fish_vi_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
-20
View File
@@ -1,20 +0,0 @@
function clip
set -g stdin
if not tty -s >/dev/null
read stdin
end
set stdin $(string trim -- $stdin)
set -l argv $(string trim -- $argv)
if test -n "$argv"
echo "$argv" | xclip -selection clipboard
return 0
end
if test -n "$stdin"
echo "$stdin" | xclip -selection clipboard
return 0
end
xclip -selection clipboard -o
end
-3
View File
@@ -1,3 +0,0 @@
function into
mkdir -p "$argv" && cd "$argv"
end
-61
View File
@@ -1,61 +0,0 @@
function layout
argparse -n "layout" "v/verbose" "t/target=" -- $argv
or return 1
set _target
if set -q _flag_target
set _target "$_flag_target"
end
if test -f "$_TEMP/curr-layout"
if not set -q _flag_target
switch (cat "$_TEMP/curr-layout")
case us
set _target "sv"
case se
set _target "us"
case sv
set _target "us"
case '*'
if set -q _flag_verbose
echo "Unregognized layout set in /curr-layout file; stopping..."
end
return 1
end
end
else
if set -q _flag_verbose; and not set -q _flag_target
echo "Could not determine current layout; defaulting to US"
end
echo "us" > "$_TEMP/curr-layout"
if not set -q _flag_target
set _target "sv"
end
end
if not set -q _target
return 2
end
if set -q _flag_verbose
switch (echo $_target)
case sv
echo "Switching to Swedish layout..."
case us
echo "Switching to U.S. layout..."
end
end
switch (echo $_target)
case sv
set _target se
case '*'
end
if setxkbmap -layout $_target
echo $_target > "$_TEMP/curr-layout"
end
return $status
end
-333
View File
@@ -1,333 +0,0 @@
# Simple custom made manager, because clearly we can't have nice things.
# (fisher uses config folder, and plug.fish has went through a rework)
function plug
set -lx plug_path "$__fish_user_data_dir/plug"
set -lx plug_completions "$plug_path/completions"
set -lx plug_functions "$plug_path/functions"
set -lx plug_meta "$plug_path/meta"
set -lx plug_confd "$plug_path/conf.d" # startup
set -lx plug_temp "$plug_path/tmp"
function _plug_ensure_dir
if not test -e $argv
mkdir -p $argv
end
end
_plug_ensure_dir $plug_path
_plug_ensure_dir $plug_completions
_plug_ensure_dir $plug_functions
_plug_ensure_dir $plug_meta
_plug_ensure_dir $plug_confd
argparse -n plug -x i,r,u,I,l,q -x l,s 'i/install=' 'r/remove=' 'q/query=' 'u/update=' l/list I/init s/silent -- $argv
or return 1
set -lx verbose true
if set -q _flag_silent
set verbose false
end
if $verbose
echo $(string join '' -- (set_color --bold white) "Plug v0.0.1" (set_color normal))
end
if not set -q _plug_initalized
set -g _plug_initalized
set fish_complete_path $fish_complete_path[1] \
$plug_completions \
$fish_complete_path[2..]
set fish_function_path $fish_function_path[1] \
$plug_functions \
$fish_function_path[2..]
for script in $plug_confd/*
source $script
end
end
if set -q _flag_init
return 0
end
if $verbose
echo $(string join '' -- (set_color green) " Plug ready")
end
set -l cmd
set -l target
if set -q _flag_install
set target $_flag_install
set cmd install
else if set -q _flag_remove
set target $_flag_remove
set cmd remove
else if set -q _flag_update
set target $_flag_update
set cmd update
else if set -q _flag_query
set target $_flag_query
set cmd query
end
if set -q _flag_list
set cmd list
end
if test -z $cmd
if $verbose
echo $(string join '' -- (set_color --bold red) " No command provided")
end
return 1
end
function _plug_parse_url
set -l url $argv
# long url
if string match -q -r 'http(s)?:\/\/.*\..*\/.*\/.*' -- $url
echo $url
return 0
end
# short url
if string match -q -r '.*\/.*' -- $url
if $verbose
echo $(string join '' -- (set_color yellow) " Using GitHub as git provider") 1>&2
end
set url "https://github.com/$url"
echo $url
return 0
end
if $verbose
echo $(string join '' -- (set_color --bold red) " Not yet implemented")
end
return 1
end
function _plug_get_pack_name
set -l url $argv
set -l matches $(string match -r '(^.*\/|^)(.+?\/.*?)(.git)?$' -- $url)
echo $matches[3]
return 0
end
function _plug_install
if $verbose
echo $(string join '' -- (set_color yellow) " Installing $display")
end
set -l url $(_plug_parse_url $argv)
if test -e $out
if $verbose
echo $(string join '' -- (set_color red) " Temporary directory for $name already exists ($out)")
echo $(string join '' -- (set_color --bold red) " Failed to prepare installation, is there another plug process open?")
end
return 1
end
mkdir -p $out
if test -e $journal
if $verbose
echo $(string join '' -- (set_color red) " Journal file $journal already exists")
echo $(string join '' -- (set_color --bold red) "$name seems to already be installed, '--remove' it first, or use '--update' to reinstall it")
end
return 1
end
touch $journal
if not set -l hash $(git ls-remote $url HEAD)
echo $(string join '' -- (set_color --bold red) " Could not retrieve latest hash from $url, did you make a typo?")
return 0
end
echo $(string match -r '(.*?)\s.*' -- $hash) >$journal
set_color normal
if not git clone $url $out
if $verbose
echo $(string join '' -- (set_color --bold red) " Failed to clone into $url")
end
return 1
end
echo $(string join '' -- (set_color green) " Cloned $url")
set -l deps "$out/deps.plug"
if test -e $deps
echo $(string join '' -- (set_color --bold red) " Dependency resolution is not yet implemented")
return 1
else
echo $(string join '' -- (set_color green) " No dependencies found")
end
function _plug_clone
set -l from $argv[1]
set -l to $argv[2]
set -l label $argv[3]
if not test -e $from
if $verbose
echo $(string join '' -- (set_color yellow) " No $label scripts found") 1>&2
end
echo 0
return 0
end
set -l counter 0
for script in $from/*.fish
set counter $(math $counter + 1)
set -l basename $(basename $script)
if not cp $script $to
if $verbose
echo $(string join '' -- (set_color --bold red) " Failed to copy $script")
end
return 1
end
echo "$to/$basename" >>$journal
end
if $verbose
echo $(string join '' -- (set_color green) " Copied $counter $label script(s)") 1>&2
end
echo $counter
return 0
end
set -l functions $(_plug_clone "$out/functions" "$plug_functions" "function"; or return 1)
set -l completions $(_plug_clone "$out/completions" "$plug_completions" "completion"; or return 1)
set -l confd $(_plug_clone "$out/conf.d" "$plug_confd" "conf.d"; or return 1)
if not set -q _plug_trust_all
echo $(string join '' -- (set_color yellow) " Prompting for permission")
echo ""
set_color --bold red
echo "-- Disclaimer --"
set_color normal
echo "Plugins are external scripts at the end of the day. It's a good"
echo "practice to always ensure that you get your plugins from reputable"
echo "sources; remember that not all scripts are always safe."
echo ""
echo "If you're confident you've understood the security"
echo "implications of external plugins you can disable this prompt"
echo "and trust all future plugins, knowing that this serves as a"
echo "warning against malicious code. \"conf.d\" scripts run every"
echo "time your shell starts"
echo ""
set_color --bold white
echo "Setup and allow $display to run?"
set_color normal
echo "(Y)es, [N]o, (T)rust all; don't ask again."
if not read -l -P "> " answer
echo $(string join '' -- (set_color yellow) " Cleaning up")
for file in $(cat $journal)[2..]
rm $file
end
return 1
end
switch $answer
case t T trust Trust TRUST
set -U _plug_trust_all true
case y Y yes Yes YES
case '*'
echo $(string join '' -- (set_color red) " Did not acquire permission")
echo $(string join '' -- (set_color yellow) " Cleaning up")
for file in $(cat $journal)[2..]
rm $file
end
echo $(string join '' -- (set_color --bold red) " Installation canceled")
return 1
end
end
if test $confd -ne 0
set -l scripts $(cat $journal)[2..]
set scripts $(string match -r '.*/conf.d/.*\.fish$' -- $scripts)
for script in $scripts
source $script
end
echo $(string join '' -- (set_color green) " Ran conf.d scripts")
end
rm -rf $out
echo $(string join '' -- (set_color green) " Successfully installed $display")
end
function _plug_is_up_to_date # Takes in a journal file as argument
set -l hash $(cat "$plug_meta/$argv")[1]
set -l name $(string replace '.' '/' -- $(basename $argv))
set -l latest
if not set latest $(git ls-remote $(_plug_parse_url $name))
return false
end
if test $hash = $latest
return true
else
return false
end
end
switch $cmd
case install
set -lx display $(_plug_get_pack_name $target)
set -lx name $(string replace -a '/' '.' -- $display)
set -lx out "$plug_temp/$name"
set -lx journal "$plug_meta/$name"
if not _plug_install $target
rm -rf $out >/dev/null 2>/dev/null
rm $journal >/dev/null 2>/dev/null
return 1
end
return 0
case list
set -l files $(ls "$plug_meta")
echo $(string join '' -- (set_color green) " Found " (count $files) " journal(s)")
for meta in $files
set -l hash $(cat "$plug_meta/$meta")[1]
echo $(string join '' -- \
(set_color normal) " - " \
(set_color --bold white) (string replace '.' '/' -- $(basename $meta)) (set_color normal) \
(set_color --dim white) " (" \
(string shorten -c '' -m 6 -- $hash) ")")
end
case '*'
if not set -q _flag_silent
echo $(string join '' -- (set_color --bold red) " Not yet implemented")
end
return 1
end
return 2
end
-22
View File
@@ -1,22 +0,0 @@
function round
argparse -n "round" -i "p/precision=!_validate_int" -- $argv
or return 1
set -l value $argv
set -l precision 0
if set -q _flag_precision
set precision $_flag_precision
end
set precision $(math 10 ^ $precision)
set value $(math $value x $precision)
set -l right $(math $value % 1)
set value $(math $value - $right)
set value $(math $value / $precision)
echo $value
end
-84
View File
@@ -1,84 +0,0 @@
function vpn
argparse -n "vpn" -x e,d -x q,s 'e/enable' 'd/disable' 's/status' 'q/quiet' 'f/force' -- $argv
or return 1
set _silent false
if set -q _flag_quiet
set _silent true
end
set _path ~/wg0.conf
set _status false
if test -f "$_TEMP/vpn-status"
switch (cat "$_TEMP/vpn-status")
case true
set _status true
case false
set _status false
case '*'
if not $_quiet
echo "Unregognized /vpn-status contents, exiting!"
end
return 1
end
else
if not $_silent
echo "Did not find status file; creating..."
echo "false" >> "$_TEMP/vpn-status"
end
end
if set -q _flag_status
if $_status
echo "VPN is active."
else
echo "VPN is inactive."
end
return 0
end
if not set -q _flag_enable; and not set -q _flag_disable
if $_status
set _flag_disable
else
set _flag_enable
end
end
if set -q _flag_enable
if $_status; and not set -q _flag_force
if not $_silent
echo "Already enabled."
end
return 0
end
if sudo wg-quick up $_path
echo "true" > "$_TEMP/vpn-status"
if not $_silent
echo "Successfully enabled."
end
end
return $status
end
if set -q _flag_disable
if not $_status; and not set -q _flag_force
if not $_silent
echo "Already disabled."
end
return 0
end
if sudo wg-quick down $_path
echo "false" > "$_TEMP/vpn-status"
if not $_silent
echo "Successfully disabled."
end
end
return $status
end
return 2
end
-54
View File
@@ -1,54 +0,0 @@
function fish_mode_prompt
end
function fish_prompt
set -l last_status $status
set -l duration $CMD_DURATION
if test $CMD_DURATION -gt 700
set -l seconds $(round -p 2 $(math $duration / 1000 % 60))
set seconds $seconds s
set -l minutes
if test $duration -gt 60000
set minutes $(round (math $duration / 60000))
set minutes $minutes "m "
end
string join '' -- (set_color white) "took " (set_color yellow) $minutes $seconds
end
set -l mode
switch (echo $fish_bind_mode)
case default
set mode $(string join '' -- (set_color --bold red) '[N] ' (set_color normal))
case insert
set mode $(string join '' -- (set_color --bold cyan) '[I] ' (set_color normal))
case replace_one
set mode $(string join '' -- (set_color --bold green) '[R] ' (set_color normal))
case visual
set mode $(string join '' -- (set_color --bold brmagenta) '[V] ' (set_color normal))
case '*'
set mode $(string join '' -- (set_color --bold red) '[?] ' (set_color normal))
end
set -l cursor_color $(set_color green)
if test $last_status -ne 0
set last_status $(string join '' -- (set_color red) " [$last_status]")
set cursor_color $(set_color red)
else
set last_status ""
end
set -l git $(string trim -- (fish_vcs_prompt))
if test -n "$git"
set git $(string join '' -- (set_color yellow) " 󰘬 " (string sub -s 2 $git -e -1) " ")
end
set -l pwd $(string join '' -- (set_color green) (prompt_pwd -D 2 -d 1) (set_color normal))
string join '' -- $mode $pwd $last_status $git $cursor_color '|> '
end
-3
View File
@@ -1,3 +0,0 @@
[Settings]
gtk-cursor-theme-name=posy-black
gtk-theme-name=Adwaita-dark
-230
View File
@@ -1,230 +0,0 @@
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
#
# This config file uses keycodes (bindsym) and was written for the QWERTY
# layout.
#
# To get a config file with the same key positions, but for your current
# layout, use the i3-config-wizard
#
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Monaco 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment i3
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# Use pactl to adjust volume in PulseAudio.
# set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# use these keys for focus, movement, and resize directions when reaching for
# the arrows is not convenient
set $up Up
set $down Down
set $left Left
set $right Right
# Use caps
exec setxkbmap -option caps:super
set $mod Mod4
# use Mouse+Mod1 to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
# start an app
bindsym $mod+n exec "rofi -show combi -modes combi -combi-modes drun,run -combi-display-format {text}"
# kill focused window
bindsym $mod+q kill
# Enable compose key with caps lock
# exec setxkbmap -option compose:caps
# start dmenu (a program launcher)
# bindsym $mod+d exec --no-startup-id dmenu_run
# A more modern dmenu replacement is rofi:
# bindsym $mod+d exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# move focused window
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# move workspace
bindsym $mod+Ctrl+$right move workspace to output right
bindsym $mod+Ctrl+$left move workspace to output left
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#Screenshot
bindsym Print exec flameshot gui
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym $left resize shrink width 10 px or 10 ppt
bindsym $down resize grow height 10 px or 10 ppt
bindsym $up resize shrink height 10 px or 10 ppt
bindsym $right resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
}
# Wallpaper
# exec --no-startup-id feh --bg-scale /home/anton/bg.png
# exec --no-startup-id mpv wallpaper.mp4 --loop --no-audio --no-media-controls
# exec --no-startup-id xinwrap -g 1920x1080 -ni -s -nf -b -fs -- mpv -wid WID wallpaper.mp4 --loop --no-audio --no-media-controls
# exec --no-startup-id xwinwrap -g 1920x1080 -s -b -fdt -ni -sp -ov -- mpv wallpaper.mp4 -wid WID --loop --no-audio --gpu-api=vulkan
# exec --no-startup-id xwinwrap -g 1920x1080+1920 -s -b -fdt -ni -sp -ov -- mpv wallpaper.mp4 -wid WID --loop --no-audio --gpu-api=vulkan
exec --no-startup-id xwinwrap -g 1920x1080 -s -b -fdt -ni -sp -ov -nf -un -- mpv ~/wallpaper.mp4 -wid WID --loop --no-audio --gpu-api=vulkan --vo=gpu-next --framedrop=vo --profile=low-latency --hwdec=auto --no-osc --no-input-default-bindings --no-input-cursor
exec --no-startup-id xwinwrap -g 1920x1080+1920 -s -b -fdt -ni -sp -ov -nf -un -- mpv ~/wallpaper.mp4 -wid WID --loop --no-audio --gpu-api=vulkan --vo=gpu-next --framedrop=vo --profile=low-latency --hwdec=auto --no-osc --no-input-default-bindings --no-input-cursor
exec --no-startup-id ~/.config/i3/startup.sh
#######################################################################
# automatically start i3-config-wizard to offer the user to create a
# keysym-based config which used their favorite modifier (alt or windows)
#
# i3-config-wizard will not launch if there already is a config file
# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or
# ~/.i3/config.
#
# Please remove the following exec line:
#######################################################################
# exec i3-config-wizard
-25
View File
@@ -1,25 +0,0 @@
background #161718
foreground #b7bcb9
cursor #b7bcb9
selection_background #1e1f22
color0 #2a2e33
color8 #1d1e21
color1 #b74d50
color9 #8c2d32
color2 #b3be5a
color10 #788331
color3 #e3b55e
color11 #e5894f
color4 #6d90b0
color12 #4b6b88
color5 #a07eab
color13 #6e4f79
color6 #7fbeb3
color14 #4d7b73
color7 #b5b8b6
color15 #5a6169
selection_foreground #b7bcb9
selection_background #2a2e33
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-7
View File
@@ -1,7 +0,0 @@
{
"runtime.version": "LuaJIT",
"runtime.path": ["lua/?.lua", "lua/?/init.lua"],
"diagnostics.globals": ["vim"],
"workspace.checkThirdParty": false,
"workspace.library": ["$VIMRUNTIME"]
}
-8
View File
@@ -1,8 +0,0 @@
configuration {
font: "JetBrains Mono 12";
entry {
max-history: 30;
}
}
@theme "/usr/share/rofi/themes/gruvbox-dark-hard.rasi"
-48
View File
@@ -1,48 +0,0 @@
[safe]
directory = /yay
[credential]
credentialStore = gpg
guiPrompt = false
[color]
status = always
branch = always
diff = always
interactive = always
[user]
email = aligator.h0spital.e@gmail.com
name = Anton
signingkey = 0AD27113ADEB3016
[core]
editor = nvim
[push]
autoSetupRemote = true
[init]
defaultBranch = main
[commit]
gpgsign = true
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[url "https://github.com/"]
insteadOf = gh:
[url "https://github.com/antonw51/"]
insteadOf = my:
[url "https://github.com/zync-chat/"]
insteadOf = zync:
[url "ssh://git@ip.louiscreates.com:2222/"]
insteadOf = l:
[credential "https://github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[credential "https://gist.github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[alias]
ref = show -s --pretty=reference
lg = !max_length_dr=$(git log --format='%ar ' | wc -L) \
&& max_length=$(git log --format='%s ' | wc -L) \
&& git log --graph --abbrev-commit --decorate \
--format='%C(bold blue)%h%C(reset) - %C(bold green)%-%<('\"$max_length_dr\"')%ar:%C(reset)'\" \
\"'%C(white)%<('\"$max_length\"')%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
+1
View File
@@ -0,0 +1 @@
.env.nix
-1
View File
@@ -1 +0,0 @@
pinentry-program /usr/bin/pinentry-curses
-2
View File
@@ -1,2 +0,0 @@
gtk-cursor-theme-name="posy-black"
gtk-theme-name = "Adwaita-dark"
-3
View File
@@ -1,3 +0,0 @@
README.md
.git
~+.*
-5
View File
@@ -1,5 +0,0 @@
xcompmgr -C &
xrdb ~/.Xresources
exec i3
+109 -30
View File
@@ -1,47 +1,126 @@
# antonw51's dotfiles
# BluePlum's dotfiles
These are my personal configuration files as I use for Arch, i3, Neovim, Fish
shell, and more. There are various prerequsites required for this but those
won't be listed.
Sup. This repository is representative of my personal configuration files
(available [here at https://github.com/antonw51/dotfiles](https://github.com/antonw51/dotfiles)).
## Stow
Feel free to look at, pick and choose, fork, or do whatever you want with
these. That's kind of the point.
To make it as easy as possible to install these configuration files, it is
recommended that you use GNU Stow, which is a simple utility that links your files
upwards. To use it, install `stow` from your package manager (like `pacman`):
See what I consider my dotfiles to be at [the Preferences section](#Preferences)
## Installation
### NixOS
This entire repository is representative of a `/etc/nixos` directory for use
with NixOS. Installing these dotfiles is hence easiest on NixOS.
To do so, you'll need `git`, your favorite editor and the root priviliges for
your system. (For a bare NixOS system `nix-shell` suffices:)
```bash
$ sudo pacman -S stow
$ nix-shell -p git
```
Clone this repository to a convenient spot:
Clone this repository into a folder that's ideally owned by your user account
rather than root (or just use `sudo` for the following steps). Then copy its
contents into the `/etc/nixos` directory.
```bash
$ git clone --depth=1 https://github.com/antonw51/dotfiles ~/.dotfiles
$ cd ~/.dotfiles
# Remove existing configuration
$ [ -f /etc/nixos/configuration.nix ]
&& sudo rm /etc/nixos/configuration.nix
$ git clone https://github.com/antonw51/dotfiles ~/dotfiles
$ sudo cp -r ~/dotfiles/* /etc/nixos
```
> [!IMPORTANT]
> Before stowing, it is recommended to run the `prestow.fish` script so that
> `stow` doesn't link directories such as your entire `.config` folder to
> this directory, instead only files.
You will also need to make a `.env.nix` file for device specific configuration.
`nixos-rebuild build` will tell you which keys need to be filled out, but the
current minimal config looks like (`/etc/nixos/.env.nix`):
```nix
{ ... }:
{
hostname = "pinklilac"
}
```
> [!INFO]
>
> This simple script will create empty (unlinked) directories where stow
> expects to force it into linking files only. Remember that any changes made
> even to your home configratuion will be reflected in this repo after linking:
> This `.env.nix` file configures some keys shared across the configuration.
> Namely this `hostname` property which declares `system.networking.hostname`
> _and_ adds a nix file at `/etc/nixos/{hostname}.nix` (where `{hostname}` is
> your hostname) to `configuration.nix` module `imports`.
>
> ```bash
> $ ./prestow.fish
> ```
Then finally to link all of the necessary configs, run `stow` as such:
> With this you can configure per-device specifics, such as displays, or
> additional configuration. See `blueplum.nix` for an example.
Thereafter you can run `sudo nixos-rebuild boot` to build the configuration and
`reboot` to apply it appropriately.
If you forked or own the repository and want to cleanly keep the git repository
seperated from write-protected `/etc/` files to commit to the repository, you
can move the `git` file and `.git` directories contents to another more
permanent directory:
```bash
$ stow .
# In this example, the persistent directory will be ~/dev/nixos
$ mkdir -p ~/dev/nixos
$ mv -r ~/dotfiles/.git/* ~/dev/nixos
$ mv ~/dotfiles/git ~/dev/nixos && chmod +x ~/dev/nixos/git
# Optionally remove the originally cloned directory:
$ rm -r ~/dotfiles # git metadata is preserved.
```
> [!NOTE]
> Stow will have problems if you already have any conflicting configuration
> files as found here. Currently the easiest solution to this is to remove your
> pre-existing files. Alternatively you can use the `--adopt` option with stow,
> and then reset this repository to its previous state using `git`.
Then use the `git` executable (with `fish`) in the new directory to interact with the repository held in `/etc/nixos`:
```bash
$ cd ~/dev/nixos
$ ./git add .
$ ./git commit
$ ./git push
# ...
```
### Other
NixOS allows for reproducible and easily configurable configuration files both
system- and user-wide. It makes the installation process a lot easier.
Without NixOS to manage your system, you'll have to configure and "generate"
configs yourself. For most things, `git`, `i3`, and packages alike this
consists of essentially translating the contents of files such as `home.nix` or
`home/i3.nix` into equivilant configuration.
However, program configurations within the `pkgs` directory don't have this
constraint, as they're defined as traditional configs and then simply copied.
These you can copy or symlink to quickly set up the appropriate software. (For
instance, to set up Fish, you can link `pkgs/fish` to your local
`$__fish_config_dir`.)
If you choose this approach, set up symlinks, and want to commit/contribute to
the git repository contained within the dotfiles, you may do so within the
cloned repository; no need to move anything or use any special git scripts.
## Preferences
While I don't _necessarily_ follow any specific ideologies when
making/modifying my dotfiles, I do typically:
- Try and keep things to essentials (not minimalistic, but nothing overkill)
- Personally familiar (keyboard shortcuts might not be to your liking)
- With _some_ expansion in mind (`.env.nix` for example)
- Somewhat consistent (The IBM Carbon colors are currently a personal favorite
of mine)
- Formatted and linted consistently (Lua, Nix, and Fish files are all
formatted, and I try to keep them up to high, consistent standard)
- Ephermeral (I won't live forever, duh, and this ain't a group project)
- Somewhat informational? (You're reading this `README`, afterall)
- Redacted (You won't find sensitive things here, perhaps outside of my name,
which is rather obvious already)
- Fine-tuned (Irks, even minor I do my best to iron out while trying to keep
away from hacky patches)

Some files were not shown because too many files have changed in this diff Show More