This commit is contained in:
James Patrick 2020-03-09 18:06:17 +00:00
commit 74455e3453
36 changed files with 446 additions and 661 deletions

19
dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM alpine:latest
RUN apk add vim \
zsh \
make \
git \
openssh-client \
perl
ARG USER=test
ENV HOME /home/$USER
RUN adduser -D -s /bin/zsh $USER
USER $USER
WORKDIR $HOME
CMD git clone https://git.jpatrick.io/james/dotfiles.git \
&& cd dotfile \
&& make install

View File

@ -1,21 +1,23 @@
;;; ~/.doom.d/config.el -*- lexical-binding: t; -*-
;; Set font
(setq doom-font (font-spec :family "FuraCode NF" :size 15))
(setq doom-font (font-spec :family "FuraCode NF" :size 12))
(pcase (system-name)
("zuk"
(font-put doom-font :size 15)) ;; Wayland support for high HDPI scaling has some issues. Increasing the font size works
)
;; Orgmode
;; Set orgmode dir
(custom-set-variables '(org-directory "~/org"))
;; Default location for image location.
(setq-default org-download-image-dir "~/org/resources/")
;; Enable word wrap
(add-hook 'org-mode-hook #'visual-line-mode)
;; Orgmode: Enable md export
(eval-after-load "org" '(require 'ox-md nil t))
;; Deft: Set path to Org-mope Directory
(add-hook 'org-mode-hook #'visual-line-mode) ;; Enable word wrap
(eval-after-load "org" '(require 'ox-md nil t)) ;; allow md export
(setq deft-directory "~/org/")
;; org-journal-file-format
(customize-set-variable 'org-journal-date-format "%A, %d %B %Y")
;; Have projectile automatically check code.
(setq projectile-project-search-path '("~/code/"))
(setq projectile-project-search-path '("~/code/" "~/Code/"))
(setq doom-localleader-key ",")

View File

@ -1,12 +1,18 @@
;;; init.el -*- lexical-binding: t; -*-
;; Copy this file to ~/.doom.d/init.el or ~/.config/doom/init.el ('doom install'
;; will do this for you). The `doom!' block below controls what modules are
;; enabled and in what order they will be loaded. Remember to run 'doom refresh'
;; after modifying it.
;; This file controls what Doom modules are enabled and what order they load in.
;; Remember to run 'doom sync' after modifying it!
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
;; documentation. There you'll find information about all of Doom's modules
;; and what flags they support.
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
;; 'C-c g k' for non-vim users) to view its documentation. This works on
;; flags as well (those symbols that start with a plus).
;;
;; More information about these modules (and what flags they support) can be
;; found in modules/README.org.
;; Alternatively, press 'gd' (or 'C-c g d') on a module to browse its
;; directory (for easy access to its source code).
(doom! :input
;;chinese
@ -15,19 +21,19 @@
:completion
(company ; the ultimate code completion backend.
+childframe) ; Use company-box.
(helm ; because sometimes I prefer what I know.
+fuzzy) ; woh typse aynthing write teh first time.
;;(helm ; because sometimes I prefer what I know.
;; +fuzzy) ; woh typse aynthing write teh first time.
;;ido ; the other *other* search engine...
;;(ivy ; a search engine for love and life
;; +fuzzy)
(ivy +fuzzy) ; a search engine for love and life
:ui
deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-dashboard ; a nifty splash screen for Emaclints
doom-quit ; DOOM quit-message prompts when you quit Emacs
fill-column ; a `fill-column' indicator
hl-todo ; highlight TODO/FIXME/NOTE tags
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra
;;indent-guides ; highlighted indent columns
modeline ; snazzy, Atom-inspired modeline, plus API
nav-flash ; blink the current line after jumping
@ -37,32 +43,36 @@
+all ; catch all popups that start with an asterix
+defaults) ; default popup rules
(pretty-code ; replace bits of code with pretty symbols
+fira) ; I use firaCode or FiraCode derivatives everywhere, all the time.
;;tabbar ; FIXME an (incomplete) tab bar for Emacs
+fira)
;;tabs ; an tab bar for Emacs
treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages
unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
;;zen ; distraction-free coding or writing
:editor
(evil +everywhere) ; come to the dark side, we have cookies
(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
(format +onsave) ; automated prettiness
;;lispy ; vim for lisp, for people who dont like vim
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
word-wrap ; soft wrapping with language-aware indent
:emacs
(dired ; making dired pretty [functional]
+ranger ; bringing the goodness of ranger to dired
+icons) ; colorful icons for dired-mode
electric ; smarter, keyword-based electric-indent
ibuffer ; interactive buffer management
vc ; version-control and Emacs, sitting in a tree
:term
@ -71,16 +81,19 @@
;;term ; terminals in Emacs
vterm ; another terminals in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
spell ; tasing you for misspelling mispelling
grammar ; tasing grammar mistake every you make
:tools
;;ansible
;;debugger ; FIXME stepping through code, to help you add bugs
;;direnv
;;docker
(docker +lsp)
editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
eval ; run code, run (also, repls)
flycheck ; tasing you for every semicolon you forget
flyspell ; tasing you for misspelling mispelling
(eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists
(lookup ; helps you navigate your code and documentation
+docsets) ; ...or in Dash docsets locally
@ -91,11 +104,10 @@
;;pass ; password manager for nerds
;;pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
;rgb ; creating color strings
;;rgb ; creating color strings
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
;;upload ; map local to remote projects via ssh/ftp
;;wakatime
:lang
;;agda ; types of types of types of types...
@ -107,21 +119,24 @@
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
data ; config/data formats
;;erlang ; an elegant language for a more civilized age
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
;;ess ; emacs speaks statistics
;;faust ; dsp, but you get to keep your soul
;;fsharp ; ML stands for Microsoft's Language
go ; the hipster dialect
;;(haskell +intero) ; a language that's lazier than I am
;;(haskell +dante) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ;
(java +lsp) ; the poster child for carpal tunnel syndrome
javascript ; all(hope(abandon(ye(who(enter(here))))))
(javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun
;;lean
;;factor
;;ledger ; an accounting system in Emacs
;;lua ; one-based indices? one-based indices
(markdown +grip) ; writing docs for people to ignore
@ -129,11 +144,13 @@
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
(org ; organize your plain life in plain text
+dragndrop ; file drag & drop support
+ipython ; ipython support for babel
+gnuplot ; plot suff
+pandoc ; pandoc integration into org's exporter
+pomodoro) ; Because timers are helpful.
+journal
+dragndrop ; drag & drop files/images into org buffers
;;+hugo ; use Emacs for hugo blogging
;;+jupyter ; ipython/jupyter support for babel
+pandoc ; export-with-pandoc support
+pomodoro ; be fruitful with the tomato technique
+present) ; using org-mode for presentations
;;perl ; write code no one else can comprehend
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
@ -141,34 +158,29 @@
;;python ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
rest ; Emacs as a REST client
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
ruby ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
(sh ; she sells {ba,z,fi}sh shells on the C xor
+lsp) ; this is somehow a thing?
;;scheme ; a fully conniving family of lisps
(sh +lsp) ; she sells {ba,z,fi}sh shells on the C xor
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
(web +lsp) ; the tubes
;;vala ; GObjective-C
:email
;;(mu4e +gmail)
;;notmuch
;;(wanderlust +gmail)
;; Applications are complex and opinionated modules that transform Emacs
;; toward a specific purpose. They may have additional dependencies and
;; should be loaded late.
:app
calendar
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
;;twitter ; twitter client https ://twitter.com/vnought
(write ; emacs as a word processor (latex + org + markdown)
+wordnut ; wordnet (wn) search
+langtool) ; a proofreader (grammar/style check) for Emacs
;;twitter ; twitter client https://twitter.com/vnought
:collab
;;floobits ; peer programming for a price
@ -177,7 +189,7 @@
:config
;; For literate config users. This will tangle+compile a config.org
;; literate config in your `doom-private-dir' whenever it changes.
;;literate
;; literate
;; The default module sets reasonable defaults for Emacs. It also
;; provides a Spacemacs-inspired keybinding scheme and a smartparens

View File

@ -11,37 +11,39 @@ include ../lib/shared.mk
install: | init update
init:
if (( ! $$+commands[emacs] )) ; then
$(report) debug "Emacs not installed. Skipping install."
elif [[ -v $$SSH_TTY ]] ; then
$(report) debug "This is a SSH connection. Skipping."
else
$(report) header "emacs init"
ifneq "$(call cmd_exist,emacs)" "true"
$(report) quite "emacs not installed. Skipping install."
else ifeq "$(IS_SSH)" "true"
$(report) quite "This is a ssh connection. Skipping install."
else
$(mk_link) $(SRC_DIR)/doom.d $(DOOMD)
$(MAKE) -C $(SRC_DIR) doom_init
endif
fi
doom_init:
if [ ! -e $(EMACSD) ] ; then \
git clone $(DOOM_URL) $(EMACSD) ;\
~/.emacs.d/bin/doom --yes install ;\
$(report) "doom install" ;\
~/.emacs.d/bin/doom --yes compile ':core' ;\
$(report) "doom core compile" ;\
else ;\
$(report) debug "emacsd already exists" ;\
$(report) info hi
if [ ! -e $(EMACSD) ] ; then
git clone $(DOOM_URL) $(EMACSD)
~/.emacs.d/bin/doom --yes install \
; $(report) "doom install"
~/.emacs.d/bin/doom --yes compile ':core' \
; $(report) "doom core compile"
else
$(report) debug "emacsd already exists. Skipping"
fi
update:
if [ -e $(EMACSD)/bin/doom ] ; then \
~/.emacs.d/bin/doom --yes purge ;\
$(report) info "doom purge" ;\
~/.emacs.d/bin/doom --yes refresh ;\
$(report) info "doom refresh" ;\
else \
$(report) debug "doom not setup, so not updating." ;\
if [ -e $(EMACSD)/bin/doom ] ; then
~/.emacs.d/bin/doom --yes purge \
; $(report) "doom purge"
~/.emacs.d/bin/doom --yes refresh \
; $(report) "doom refresh"
else
$(report) debug "doom not setup, so not updating."
fi
remove:
$(info => Removing Emacs config)
$(rm_link) $(EMACSD)
$(report) header "Removing Emacs configuration"
rm -rf $(EMACSD) ; $(report) "deleted $(EMACSD)"
$(rm_link) $(DOOMD)

View File

@ -7,11 +7,11 @@ include ../lib/shared.mk
install: | init update
init:
$(info => Setting up gitconfig)
$(report) header "Setting up gitconfig"
$(mk_link) $(SOURCE) $(TARGET)
update:
remove:
$(info => Remvoing gitconfig)
$(report) header "Removing gitconfig"
$(rm_link) $(TARGET)

View File

@ -1 +0,0 @@
exec_always polybar example

View File

@ -1,6 +0,0 @@
### Start Nextcloud.
exec nextcloud
### Make things a little easier easier on the eyes.
exec redshift

View File

@ -1,2 +0,0 @@
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)

View File

@ -1,180 +0,0 @@
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term kitty
################################################################################
# Your preferred application launcher
# Note: it's recommended that you pass the final command to sway
set $menu bash ~/.config/sway/scripts/menu
set $gopass_menu bash ~/.config/sway/scripts/menu_gopass
set $clipman_menu bash ~/.config/sway/scripts/menu_clipman
set $printscreen bash ~/.config/sway/scripts/printscreen
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
# 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
# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesnt scale on retina/hidpi displays.
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec $term
# kill focused window
bindsym $mod+q kill
# start your launcher
bindsym $mod+space exec $menu
# gopass prompt
bindsym $mod+backslash exec $gopass_menu
# There also is the (new) 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
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
bindsym $mod+semicolon focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# _move_ the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
bindsym $mod+Shift+semicolon move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+b 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+- floating toggle
# change focus between tiling / floating windows
bindsym $mod+d focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# 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 $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10
# reload the configuration file
bindsym $mod+Shift+c exec "make -C ~/.config/i3/ update"
# 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 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# 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"

View File

@ -1,3 +0,0 @@
# Map ctrl to caps.
exec setxkbmap -option ctrl:swapcaps

View File

@ -1,13 +0,0 @@
### Font
font pango:Fira Code 9
gaps inner 10
gaps outer 0
### Colors
# class border backgr text indicator child_border
client.focused #12e689 #12e689 #1f212e #12e689 #12e689
client.focused_inactive #1f212e #1f212e #aab5c6 #1f212e #1f212e
client.unfocused #161720 #161720 #aab5c6 #161720 #161720
client.urgent #ff4551 #ff4551 #1f212e #ff4551 #ff4551

View File

@ -1,30 +0,0 @@
SRC := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
include ../lib/shared.mk
TARGET := $(XDG_DIR)/i3
install: | init update
init:
ifeq ($(call cmd_exist,i3), true)
$(info => Setting up i3)
$(mk_link) $(SRC) $(TARGET)
else
$(report) warn "i3 not installed."
endif
update:
ifeq ($(call cmd_exist,i3-msg), true)
$(info => Reloading i3-msg)
$(MAKE) -C $(SRC) build_i3
i3-msg reload ; $(report) "i3 reload"
else
$(report) warn "i3 not installed."
endif
remove:
$(info => Remvoing sway)
$(rm_link) $(TARGET)
build_i3:
cat $(SRC)/config.d/* > $(SRC)/config

21
jrnl/makefile Normal file
View File

@ -0,0 +1,21 @@
SRC := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
include ../lib/shared.mk
CONFIG_DIR := $(XDG_DIR)/jrnl
install: | init update
init:
if (( $$+commands[jrnl] )) ; then
$(report) header "Setting up jrnl"
mkdir $(CONFIG_DIR)
$(mk_link) $(SRC)/jrnl.yml $(CONFIG_DIR)/jrnl.yml
else
$(report) debug "jrnl not installed. Skipping."
fi
endif
remove:
rm -rf $(CONFIG_DIR)

View File

@ -11,10 +11,10 @@ fi
if [[ -h $2 ]] ; then
link_location=$(readlink $2)
if [[ "$1" == "$link_location" ]] ; then
"$REPORT" info "symlink already installed $1"
"$REPORT" pass "Symlink already installed $1"
exit 0
else
"$REPORT" warn "symlink already exist, buut doesn't point to the src"
"$REPORT" warn "Symlink already exist, buut doesn't point to the src"
exit 1
fi
fi
@ -30,5 +30,4 @@ if [[ ! -e $parent ]] ; then
mkdir -p $parent
fi
"$REPORT" info "Symlinked `ln -svf $1 $2`"
"$REPORT" pass "Symlinked `ln -svf $1 $2`"

View File

@ -10,9 +10,9 @@ format(){
case $1 in
"error") echo -e "$R ✘ $2$NC";;
"warn") echo -e "$Y ⚠ $2$NC";;
"info") echo -e "$G ✔ $2$NC";;
"quite") echo -e "$MUTED כֿ $2$NC";;
"debug") [ -v verbose ] && echo -e "$MUTED כֿ $2$NC" || true ;;
"pass") echo -e "$G ✔ $2$NC";;
"info") echo -e "$MUTED כֿ $2$NC";;
"debug") [ -v debug ] && $0 info $2 ; true ;;
"header") echo -e "=> $2";;
*) echo -e "$1: $2";;
esac
@ -20,7 +20,7 @@ format(){
if [[ -z $2 ]] ; then
case "$LAST_RETURN" in
0) format info $1;;
0) format pass $1;;
*) format error "FAILURE DURING: \"$1\"";;
esac
else

View File

@ -17,6 +17,6 @@ if [[ ! -L $1 ]] ; then
exit
fi
$REPORT info "Deleting $1"
$REPORT pass "Deleting $1"
rm $1

View File

@ -8,11 +8,11 @@ include ../lib/shared.mk
install: | init update
init:
$(info => Setting up githook)
$(report) info "Symlinked `ln -svf $(GIT_HOOK_SRC) $(GIT_HOOK_TARGET)`"
$(report) header "Setting up githook"
$(report) pass "Symlinked `ln -svf $(GIT_HOOK_SRC) $(GIT_HOOK_TARGET)`"
update:
remove:
$(info => Removing Githook)
$(report) header "Removing githook"
$(rm_link) $(GIT_HOOK_TARGET)

View File

@ -1,10 +1,10 @@
# This will make heavy use of the "$+commands[cmd]" function in bash. Make sure its installed.
_SHELL := $(shell which zsh )
ifndef _SHELL
$(error ZSH is not installed on this machine. This makefile requires ZSH features)
endif
SHELL := $(_SHELL)
.ONESHELL:
# Helper scripts for setting up and taking down links.
LIB_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
@ -12,23 +12,9 @@ mk_link := $(LIB_DIR)/helper/mk_link
rm_link := $(LIB_DIR)/helper/rm_link
report := LAST_RETURN=$$? $(LIB_DIR)/helper/report
return_val_truthy := && echo true || echo false
cmd_exist = $(shell (($$+commands[$1])) $(return_val_truthy) )
# Shortcut for the XDG dir if it exist. default to ~/.confg
XDG_DIR := $${XDG_CONFIG_HOME:-~/.config}
# Some things will OS specific.
# With this you can use `$(IS_MAC) && echo "I'm a Mac" || echo "I'm not a Mac"`
ifeq ($(shell uname), Darwin)
IS_MAC=true
else
IS_LINUX=true
endif
IS_MAC?=false
IS_LINUX?=false
IS_SSH=$(shell [ ! -z $$SSH_TTY ] $(return_val_truthy) )
# TURN THIS OFF FOR DEBUGGING
MAKEFLAGS += --silent

View File

@ -3,10 +3,10 @@ SRC_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
include lib/shared.mk
define recursive_make
for i in */makefile; do; \
echo "`dirname $$i` " ; \
$(MAKE) -C $(SRC_DIR)/`dirname $$i` $1 ; \
echo "" ; \
for i in */makefile; do
echo "`dirname $$i` "
$(MAKE) -C $(SRC_DIR)/`dirname $$i` $1
echo ""
done
endef

View File

@ -6,20 +6,24 @@ TARGET := $(XDG_DIR)/mako
install: | init update
init:
ifeq ($(call cmd_exist,mako), true)
$(info => Setting up mako)
if (( $$+commands[mako] )) ; then
$(report) header "Setting up mako"
$(mk_link) $(SRC) $(TARGET)
else
else
$(report) warn "mako not installed. Skipping."
endif
fi
update:
ifeq ($(call cmd_exist,makoctl), true)
$(info => Reloading mako)
[[ -n `pgrep mako` ]] \
&& ( makoctl reload ; $(report) "mako reload") ; true
endif
if (( $$+commands[makoctl] )) ; then
$(report) header "Updating mako"
if [[ -n `pgrep mako` ]] ; then
makoctl reload ; $(report) "mako reload"
fi
else
$(report) debug "mako not installed"
fi
remove:
$(info => Remvoing sway)
$(report) header "Removing mako"
$(rm_link) $(TARGET)

View File

@ -9,37 +9,39 @@ DESKTOP_TARGET := ~/.local/share/applications
install: | init update
init:
ifeq ($(call cmd_exist,rofi), true)
$(info => Setting up rofi)
if (( $$+commands[rofi] )) ; then
$(report) header "Setting up rofi"
$(mk_link) $(SRC) $(TARGET)
$(MAKE) -C $(SRC) desktop_init
else
$(report) warn "rofi not installed. Skipping."
endif
else
$(report) debug "rofi not installed. Skipping."
fi
update:
remove:
$(info => Remvoing rofi)
$(report) header "Removing rofi"
$(rm_link) $(TARGET)
$(MAKE) -C $(SRC) desktop_remove
desktop_init:
ifeq ($(shell [ -e $(DESKTOP_TARGET) ] $(return_val_truthy) ), true)
$(info ==> Setting up desktop shortcuts.)
cd $(DESKTOP_SRC) ; \
for i in *.desktop; do ; \
$(mk_link) $(DESKTOP_SRC)/$$i $(DESKTOP_TARGET)/$$i ; \
done
else
if [[ ! -e $(DESKTOP_TARGET) ]] ; then
$(report) warn "$(DESKTOP_TARGET) does not exist. Skipping."
endif
else
$(report) header "Adding .desktop files"
cd $(DESKTOP_SRC)
for i in *.desktop ; do
$(mk_link) $(DESKTOP_SRC)/$$i $(DESKTOP_TARGET)/$$i
done
fi
desktop_remove:
ifeq ($(shell [ -e $(DESKTOP_TARGET) ] $(return_val_truthy) ), true)
$(info ==> removing rofi desktop entries.)
cd $(DESKTOP_SRC) ; \
for i in *.desktop; do ; \
$(rm_link) $(DESKTOP_TARGET)/$$i ; \
if [[ ! -e $(DESKTOP_TARGET) ]] ; then
$(report) warn "$(DESKTOP_TARGET) does not exist. Skipping."
else
$(report) header "Removing .desktop files"
cd $(DESKTOP_SRC)
for i in *.desktop ; do
$(rm_link) $(DESKTOP_TARGET)/$$i
done
endif
fi

View File

@ -1,35 +1,37 @@
SRC_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
CONFIG_SRC := $(SRC_DIR)/config
CONFIG_TRGT := ~/.ssh/config
JPATRICK_KEY := ~/.ssh/git.jpatrick.io
GIT_KEY := ~/.ssh/git.jpatrick.io
include ../lib/shared.mk
install: | init update
init:
$(info => Setting up ssh)
$(report) header "Setting up ssh"
$(mk_link) $(CONFIG_SRC) $(CONFIG_TRGT)
$(mk_link) $(SRC_DIR)/public_keys ~/.ssh/public_keys
$(MAKE) -C $(SRC_DIR) init_jpatrick_key
$(MAKE) -C $(SRC_DIR) init_git_key
update:
cd ~/.ssh \
&& mkdir -p public_keys/`hostname` \
&& for i in *.pub ; do ; \
cp $$i public_keys/`hostname`/$$i ; \
mkdir -p public_keys/`hostname`
cd ~/.ssh
$(report) header "Copying public keys"
for i in *.pub ; do
cp $$i public_keys/`hostname`/$$i
$(report) pass "Copied $$i"
done
remove:
$(info => Remvoing ssh)
$(rm_link) $(TARGET)
$(report) warn "NOTE: All prior keys still remain."
$(report) header "Removing ssh sym-links"
$(rm_link) $(CONFIG_TRGT)
$(report) warn "NOTE: All keys still remain."
init_jpatrick_key:
ifeq ($(shell [ ! -e $(JPATRICK_KEY) ] $(return_val_truthy) ), true)
$(report) info "Setting up key for jpatrick.io"
ssh-keygen -t ed25519 -C "`hostname`: `date`" -f $(JPATRICK_KEY) -N "" \
; $(report) info "jpatrick.io key created"
else
$(report) warn "Key for jpatrick.io already created"
endif
init_git_key:
if [[ -e $(GIT_KEY) ]] ; then
$(report) debug "$(GIT_KEY) already installed."
else
$(report) info "Setting up key for git.jpatrick.io"
ssh-keygen -t ed25519 -C "`hostname`: `date`" -f $(GIT_KEY) -N "" \
; $(report) info "git.jpatrick.io key created"
fi

View File

@ -6,21 +6,21 @@ TARGET := $(XDG_DIR)/sway
install: | init update
init:
ifeq ($(call cmd_exist,sway), true)
$(info => Setting up sway)
if (( ! $$+commands[sway] )) ; then
$(report) debug "Sway not installed. Skipping."
else
$(report) header "Setting up sway"
$(mk_link) $(SRC) $(TARGET)
else
$(report) warn "Sway not installed. Skipping."
endif
fi
update:
ifeq ($(call cmd_exist,swaymsg), true)
$(info => Reloading sway)
if (( ! $$+commands[swaymsg] )) ; then
$(report) debug "swaymsg not installed. Skipping."
else
$(report) header "Reloading sway"
swaymsg reload ; $(report) "sway reload"
else
$(report) warn "swaymsg not installed. Skipping."
endif
fi
remove:
$(info => Remvoing sway)
$(report) header "Removing sway"
$(rm_link) $(TARGET)

View File

@ -1,7 +1,7 @@
#! /bin/sh
# -*- sh -*-
file=~/Pictures/Screenshots/Screenshot-$(date '+%Y%m%d%H%M%S').png
file=~/media/pictures/Screenshots/Screenshot-$(date '+%Y%m%d%H%M%S').png
grim -g "$(slurp)" $file \
&& wl-copy $file \
&& notify-send -i $file "File copied to clipboard"

View File

@ -7,16 +7,15 @@ include ../lib/shared.mk
install: | init update
init:
$(info => tmux init)
ifeq ($(call cmd_exist,tmux), true)
$(info => Setting up tmux)
if (( ! $$+commands[tmux] )) ; then
$(report) header "tmux not installed"
else
$(report) header "tmux init"
$(mk_link) $(SOURCE) $(TARGET)
else
$(report) warn "tmux not installed."
endif
fi
update:
remove:
$(info => Remvoing tmux config)
$(report) header "Removing tmux config"
$(rm_link) $(TARGET)

View File

@ -7,22 +7,22 @@ SCRIPTS_TARGET := ~/.local/share/tridactyl/scripts
install: | init update
init:
$(info => setting up Tridaycl)
ifeq "$(IS_MAC)" "true"
if [[ $OSTYPE = darwin* ]] ; then
$(MAKE) -C $(SRC_DIR) setup
else ifeq "$(call cmd_exist,firefox)" "true"
elif (( $$+commands[firefox] )) ; then
$(MAKE) -C $(SRC_DIR) setup
else
$(report) warn "This doesn't seem to be an env for Tridactyl. Skipping."
endif
else
$(report) debug "This doesn't seem to be an env for Tridactyl. Skipping."
fi
setup:
$(report) header "Setting up Tridaycl"
$(mk_link) $(SRC_DIR) $(RC_TARGET)
$(mk_link) $(SRC_DIR)/scripts $(SCRIPTS_TARGET)
update:
remove:
$(info => Remvoing tridactyl )
$(report) header "Removing Tridaycl"
$(rm_link) $(RC_TARGET)
$(rm_link) $(SCRIPTS_TARGET)

View File

@ -89,6 +89,10 @@
width: 100%;
}
#completions .optionContainer .option {
overflow: auto;
}
#completions .optionContainer .option {
line-height: 1.4;
}

View File

@ -8,22 +8,27 @@ include ../lib/shared.mk
install: | init update
init:
ifneq ($(call cmd_exist,vim), true)
$(error Vim not installed)
endif
$(info => Setting up vim)
if (( $$+commands[vim] )) ; then
$(report) header "Setting up vim"
$(mk_link) $(SRC_DIR) $(TARGET_DIR)
$(mk_link) $(SRC_DIR)/vimrc ~/.vimrc
else
$(report) warn "cannot find vim?"
fi
update:
ifneq ($(call cmd_exist,vim), true)
$(error Vim not installed)
endif
$(info => Updating vim)
curl -fsLo $(PLUG_PATH) $(PLUG_URL) ; $(report) "vim plug setup"
vim +PlugInstall +PlugUpdate +qall ; $(report) "downloading/updating plugins"
if (( $$+commands[vim] )) ; then
$(report) header "Upgrading vim"
curl -fsLo $(PLUG_PATH) $(PLUG_URL) \
; $(report) "vim plug setup"
vim +PlugInstall +PlugUpdate +qall \
; $(report) "downloading/updating plugins"
else
$(report) warn "cannot find vim?"
fi
remove:
$(info => Removing vim config)
$(report) header "Removing vim config"
$(rm_link) ~/.vimrc
$(rm_link) $(TARGET_DIR)

View File

@ -28,12 +28,9 @@ Plug 'Shougo/deoplete.nvim' , Cond(g:has_async, { 'on': [] })
Plug 'Shougo/neco-vim' , {'for' : 'vim'}
Plug 'Shougo/neocomplete.vim' , Cond(!g:has_async, { 'on': [] })
Plug 'Shougo/vimproc.vim' , {'do' : 'make'}
Plug 'SirVer/ultisnips' , { 'on': [] }
Plug 'Yggdroot/indentLine'
Plug 'airblade/vim-gitgutter'
Plug 'bronson/vim-trailing-whitespace'
Plug 'danchoi/ri.vim' , {'for' : 'ruby'}
Plug 'fatih/vim-go' , {'for' : 'go'}
Plug 'godlygeek/tabular'
Plug 'haya14busa/incsearch.vim'
Plug 'honza/vim-snippets'
@ -45,25 +42,17 @@ Plug 'kien/rainbow_parentheses.vim'
Plug 'majutsushi/tagbar'
Plug 'osyo-manga/vim-over'
Plug 'qpkorr/vim-bufkill' , {'on': 'BD'}
Plug 'racer-rust/vim-racer' , {'for' : 'rust'}
Plug 'rizzatti/dash.vim'
Plug 'roxma/nvim-yarp' , Cond(g:has_async)
Plug 'roxma/vim-hug-neovim-rpc' , Cond(g:has_async)
Plug 'rust-lang/rust.vim' , {'for' : 'rust'}
Plug 'scrooloose/nerdcommenter'
Plug 'scrooloose/nerdtree' , { 'on': 'NERDTreeToggle' }
Plug 'scrooloose/syntastic' , Cond(!g:has_async)
Plug 'tpope/vim-bundler' , {'for' : 'ruby' }
Plug 'tpope/vim-eunuch'
Plug 'tpope/vim-markdown' , {'for' : 'markdown'}
Plug 'tpope/vim-projectionist'
Plug 'tpope/vim-rails' , {'for' : 'ruby' }
Plug 'tpope/vim-rake' , {'for' : 'ruby'}
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'vim-ruby/vim-ruby' , {'for' : 'ruby' }
Plug 'w0rp/ale' , Cond(g:has_async)
Plug 'wincent/terminus'
for fpath in split(globpath('~/.vim/plug.d/', '*.vim'), '\n')
exe 'source' fpath
@ -81,13 +70,6 @@ endfor
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_left_sep = '⮀'
let g:airline_right_sep = '⮂'
let g:airline_right_alt_sep = '⮃'
let g:airline_left_alt_sep = '⮁'
let g:airline_symbols.branch = '⭠'
let g:airline_symbols.linenr= '⭡'
let g:airline_symbols.readonly= '⭤'
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'

View File

@ -6,23 +6,21 @@ TARGET := $(XDG_DIR)/waybar
install: | init update
init:
ifeq ($(call cmd_exist,waybar), true)
$(info => Setting up waybar)
if (( $$+commands[waybar] )) ; then
$(report) header "Setting up waybar"
$(mk_link) $(SRC) $(TARGET)
else
$(report) warn "waybar not installed. Skipping."
endif
else
$(report) debug "waybar not installed. Skipping."
fi
update:
ifeq ($(call cmd_exist,swaymsg), true)
$(info => Reloading sway)
if (( $$+commands[swaymsg] )) ; then
$(report) header "Reloading waybar"
swaymsg reload ; $(report) "sway reload"
else
$(report) warn "swaymsg not installed. Skipping."
endif
else
$(report) debug "swaymsg not installed. Skipping."
fi
remove:
$(info => Removing waybar)
$(report) header "Removing waybar"
$(rm_link) $(TARGET)
.PHONY: install update init remove

View File

@ -0,0 +1,9 @@
GF_BASE="/Users/james/Code/GreenFiling/workspace/GreenFiling"
GF_JOURNAL="/Users/james/Code/GreenFiling/workspace/JournalClient"
GF_ONELEGAL="/Users/james/Code/GreenFiling/workspace/OneLegalClient"
GF_TYLER="/Users/james/Code/GreenFiling/workspace/TexFileClient"
GF_TYBERA="/Users/james/Code/GreenFiling/workspace/TyberaClient"
GF_LOG="/Users/james/Code/GreenFiling/data/logs"
alias switch="cd /Users/james/Code/GreenFiling/buildtools/switch && bundle exec ruby switch.rb "
eval "$(rbenv init -)"

View File

@ -0,0 +1 @@
source /usr/share/chruby/chruby.sh

View File

@ -8,35 +8,47 @@ install: | init update
init:
$(info => Setting up zsh)
ifeq ($(shell [ ! -e $(ZPLUG_DIR) ] $(return_val_truthy) ), true)
export ZPLUG_HOME=$(ZPLUG_DIR) \
; git clone https://github.com/zplug/zplug $(ZPLUG_DIR) \
; source ~/.zplug/init.zsh && zplug update --self \
; $(report) "zplug installed"
endif
$(MAKE) -C $(SRC) init_zplug
$(mk_link) $(SRC) ~/.zsh
$(mk_link) $(ZSH_DIR)/zshrc ~/.zshrc
$(mk_link) $(ZSH_DIR)/zlogin ~/.zlogin
$(mk_link) $(ZSH_DIR)/zprofile ~/.zprofile
$(mk_link) $(ZSH_DIR)/zshenv ~/.zshenv
$(mk_link) $(ZSH_DIR)/zlogout ~/.zlogout
chmod 700 $(ZSH_DIR)/transient
chmod 700 $(ZSH_DIR)/transient \
; $(report) "updating transient permissions"
init_zplug:
if [ ! -e $(ZPLUG_DIR) ] ; then
export ZPLUG_HOME=$(ZPLUG_DIR)
git clone https://github.com/zplug/zplug $(ZPLUG_DIR) \
; $(report) "zplug installed"
else
$(report) debug "zplug already installed. Skipping"
fi
update:
[ -e $(ZPLUG_DIR) ] \
&& ( echo "=> Updating zplug" \
source $(ZPLUG_DIR)/init.zsh ; source $(ZSH_DIR)/zplug ; zplug install ; zplug update ) \
|| $(report) warn "No zplug install detected. Skipping."
if [ -e $(ZPLUG_DIR) ] ; then
$(report) header "Updating zplug"
source $(ZPLUG_DIR)/init.zsh
source $(ZSH_DIR)/zplug
export zplugs
zplug install \
; $(report) "zplug install"
zplug update \
; $(report) "zplug upate"
zplug clean \
; $(report) "zplug cleaned"
else
$(report) error "$(ZPLUG_DIR) doesn't exist... maybe run init first?"
fi
remove:
ifeq ($(shell [ -e $(ZPLUG_DIR) ] $(return_val_truthy) ), true)
$(report) warn "Leaving $(ZPLUG_DIR) directory."
endif
$(info => Removing zsh)
rm -rf $(ZPLUG_DIR) ; $(report) "deleting zplug dir"
$(rm_link) ~/.zprofile
$(rm_link) ~/.zlogin
$(rm_link) ~/.zshrc
$(rm_link) ~/.zsh
$(rm_link) ~/.zshenv
$(mk_link) $(ZSH_DIR)/zlogout ~/.zlogout
$(rm_link) ~/.zlogout

View File

@ -8,7 +8,11 @@ alias ls="ls $color_flag"
alias l="ls -lh $color_flag"
alias la="ls -lha $color_flag"
<<<<<<< HEAD
alias lf='ls -1tr | tail -1'
=======
alias lf="ls -1tr | tail -n 1"
>>>>>>> fdc2d49c6e53000b36e793ba7fdd9e1c8e8ec9bb
alias docker="sudo docker"
alias dc="sudo docker-compose"

View File

@ -2,77 +2,30 @@
source ${ZPLUG_HOME}/init.zsh
zplug "junegunn/fzf-bin", \
from:gh-r, \
as:command, \
rename-to:fzf
zplug "${ZDIR}/modules/bin/", from:local, as:command, use:"*"
zplug "junegunn/fzf-bin", from:gh-r, as:command, rename-to:fzf
zplug "zdharma/zsh-diff-so-fancy", as:command, use:"bin/{git-dsf,diff-so-fancy}"
zplug "zdharma/zsh-diff-so-fancy", \
as:command, \
use:"bin/{git-dsf,diff-so-fancy}"
zplug "${ZDIR}/modules/bin/", \
from:local, \
as:command, \
use:"*"
zplug "zdharma/fast-syntax-highlighting", \
as:plugin, \
defer:2
zplug "hlissner/zsh-autopair", \
as:plugin, \
defer:2
zplug "zsh-users/zsh-history-substring-search", \
as:plugin, \
defer:2
zplug "zpm-zsh/autoenv", \
as:plugin, \
defer:2
zplug "zsh-users/zsh-autosuggestions", \
as:plugin, \
defer:2
zplug "junegunn/fzf", \
use:"shell/*.zsh", \
defer:2
zplug "${ZDIR}/modules/history/", \
from:local, \
as:plugin
zplug "${ZDIR}/modules/directory/", \
from:local, \
as:plugin
zplug "${ZDIR}/modules/complete/", \
from:local, \
as:plugin
zplug "${ZDIR}/modules/keybinds/", \
from:local, \
as:plugin
zplug "${ZDIR}/modules/alias/", \
from:local, \
as:plugin
zplug "${ZDIR}/modules/alias/", from:local, as:plugin
zplug "${ZDIR}/modules/complete/", from:local, as:plugin
zplug "${ZDIR}/modules/directory/", from:local, as:plugin
zplug "${ZDIR}/modules/history/", from:local, as:plugin
zplug "${ZDIR}/modules/keybinds/", from:local, as:plugin
zplug "hlissner/zsh-autopair", as:plugin, defer:2
zplug "junegunn/fzf", use:"shell/*.zsh", defer:2
zplug "mafredri/zsh-async", as:plugin, defer:2
zplug "wfxr/forgit", as:plugin, defer:2
zplug "zdharma/fast-syntax-highlighting", as:plugin, defer:2
zplug "zsh-users/zsh-autosuggestions", as:plugin, defer:2
zplug "zsh-users/zsh-completions", as:plugin, defer:2
zplug "zsh-users/zsh-history-substring-search", as:plugin, defer:2
if [ -n "$SSH_CONNECTION" ] ; then
zplug "${ZDIR}/modules/prompt/",\
from:local,\
use:uncommon.zsh, \
as:theme
zplug "${ZDIR}/modules/prompt/",\ from:local,\ use:uncommon.zsh, as:theme
else
zplug "denysdovhan/spaceship-prompt", \
use:spaceship.zsh, \
from:github, \
as:theme
zplug "denysdovhan/spaceship-prompt", use:spaceship.zsh, from:github, as:theme
fi
env_loader zplug
zplug load

View File

@ -33,10 +33,10 @@ if [ -z "$SPACESHIP_PROMPT_ORDER" ]; then
golang # Go section
rust # Rust section
haskell # Haskell Stack section
docker # Docker section
#docker # Docker section
venv # virtualenv section
pyenv # Pyenv section
kubecontext # Kubectl context section
#kubecontext # Kubectl context section
terraform # Terraform workspace section
exec_time # Execution time
line_sep # Line break
@ -72,6 +72,10 @@ env_loader(){
[ -e ${ZDIR}/environment/host/$HOST/$1 ] && source ${ZDIR}/environment/host/$HOST/$1
}
if (( $+commands[yarn] )) ; then
export PATH="$(yarn global bin):$PATH"
fi
user_script_dir=~/.scripts
if [ -d $user_script_dir ] ; then
export PATH="$user_script_dir:$PATH"