Browse Source

Initial commit

master
jcmdln 2 years ago
commit
60f6c2e111

+ 1
- 0
CNAME View File

@@ -0,0 +1 @@
os.azryn.org

+ 42
- 0
License.md View File

@@ -0,0 +1,42 @@
Azryn Software Labs Public License
Version 1.1.0, 2017-10-26

Copyright (C) 2017 Azryn Software Labs, Inc. <http://www.aswl.org/apl/>

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Permission is hereby granted, without cost, to any person obtaining a
copy of this software and it's associated files (the "Software"), the
right without limitation or restriction to use, copy, modify, merge,
publish, and distribute copies of this software provided the following
conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

Should any persons wish to sell copies of the Software or the contents
of the Software, in part or in full, said permission is hereby granted
provided one the following two conditions are met:

* You have explicit, written, unanimous permission to do so by the
copyright holders and contributors.

* You forego using this license in favor of using the GNU GENERAL
PUBLIC LICENSE of version 3 or later (the "GPLv3").

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 44
- 0
Readme.md View File

@@ -0,0 +1,44 @@
AzrynOS is a Linux distribution that uses Gentoo to provide an i3wm desktop.
You may install a basic Gentoo system and proceed to installing the complete
version of AzrynOS if desired:

```
# Run the following from a Gentoo LiveCD
$ wget -q http://os.aswl.org -O /mnt/gentoo/azryn
$ sh azryn
AzrynOS - i3wm powered Gentoo derivative
help Shows help output

Run in the order listed:
bootstrap Bootstrap the stage3 tarball
minimal Very basic Gentoo install
complete Full AzrynOS installation
cleanup Remove junk created during install
```


## Warnings
- AzrynOS is not production-ready, proceed with caution.
- This installation relies on the Gentoo Live CD
- In the future, there will be a custom Live CD and/or USB image.
- There is no automatic partitioning process, you will need to manually
partition your disks and mounting them before proceeding.
- Later this will be slightly improved by using partition labels.
- Read the entire script and thumb through the configuration files.
- Some environment variables at the top of the script will need to be
modified. Read the Gentoo Handbook for your intended architecture if
anything is unclear.


## FAQ
- How much about Gentoo will I need to know to use AzrynOS?
- If you have a little bit of Linux experience and can read shell scripts
along with documentation it should be fairly straightforward.
- How long does this take to install?
- About 1-4 hours for the minimal install depending on the hardware it's
being installed to, and expect to spend 4-24 hours for the complete
installation.
- I keep getting boot failures after installing in a VirtualBox VM?
- Yea... You have to remove the virtual optical drive from the boot order
manually in the settings of your VM. Afterwards it should work without
issue.

+ 271
- 0
azryn View File

@@ -0,0 +1,271 @@
#!/usr/bin/env sh
#
# Copyright (C) 2017 Azryn Software Labs contact@azryn.org
# This software is licensed under the Azryn Software Labs Public License
# of version 1.1.0 or later. You should have received a copy of the Azryn
# Software Labs Public License along with this program. If not, please
# see https://apl.azryn.org/ for a copy.
#

## Azryn
BaseUrl="https://raw.githubusercontent.com/Azryn/AzrynOS/master"
CPUCores="$(grep -c ^processor /proc/cpuinfo)"
GrubTarget="/dev/sda"
Hostname="azryn"
Locale="en_US.UTF-8 UTF-8"
RootPwd="azryn"
SwapSize="4G"
TimeZone="America/New_York"
VideoCards="intel"

## Kernel
#KernelVersion=``
#KernelConfig="$Base_Url/usr/src/linux/$KernelVersion.config"

## Portage
MakeConf="$BaseUrl/etc/portage/make.conf"
PackageAcceptKeywords="$BaseUrl/etc/portage/package.accept_keywords"
PackageEnv="$BaseUrl/etc/portage/package.env"
PackageLicense="$BaseUrl/etc/portage/package.license"
PackageUse="$BaseUrl/etc/portage/package.use"

## Stage3
S3Arch="amd64"
S3Url="http://distfiles.gentoo.org/releases/$S3Arch/autobuilds"
[ ! -x $(command -v curl) ] && \
Stage3="$S3Url/$(curl -s $S3Url/latest-stage3-$S3Arch.txt|tail -1|awk '{print $1}')"


### Passes #######################################

Bootstrap() {
echo "Please ensure that you have performed the following: "
echo " - Edited the environment variables at the top of this script."
echo " - Partitioned and mounted your disk(s)."
read -ep "Proceed with installation? [Y/N]: " Proceed
if echo $Proceed | grep -iq "^n"; then exit; fi

## If this script isn't in /mnt/gentoo/azryn, cp it now
[ ! -e /mnt/gentoo/azryn ] && \
cp $0 /mnt/gentoo/azryn

echo "azryn: Ensure we are in /mnt/gentoo"
cd /mnt/gentoo

echo "azryn: Setting system time via ntpd"
ntpd -q -g

echo "azryn: Downloading and extracting Stage3 tarball"
wget -q $Stage3
tar -xjpf stage3-*.tar.bz2 --xattrs --numeric-owner

echo "azryn: Mounting hardware devices"
mount -t proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev

echo "azryn: Setting up swapfile"
SwapFile="/mnt/gentoo/swapfile"
if [ ! -e $SwapFile ]; then
fallocate -l $SwapSize $SwapFile && chmod 0600 $SwapFile
mkswap $SwapFile && swapon $SwapFile
echo "/swapfile none swap sw 0 0" >> /mnt/gentoo/etc/fstab
fi

echo "azryn: Downloading portage configuration files"
[ ! -z $MakeConf ] && \
wget -q $MakeConf -O /mnt/gentoo/etc/portage/make.conf
[ ! -z $PackageAcceptKeywords ] && \
wget -q $PackageAcceptKeywords \
-O /mnt/gentoo/etc/portage/package.accept_keywords
[ ! -z $PackageEnv ] && \
wget -q $PackageEnv -O /mnt/gentoo/etc/portage/package.env
[ ! -z $PackageLicense ] && \
wget -q $PackageLicense -O /mnt/gentoo/etc/portage/package.license
[ ! -z $PackageUse ] && \
rm -rf /mnt/gentoo/etc/portage/package.use && \
wget -q $PackageUse -O /mnt/gentoo/etc/portage/package.use

echo "azryn: Setting up Portage mirrors"
mkdir -vp /mnt/gentoo/etc/portage/repos.conf
wget -q $BaseUrl/etc/portage/repos.conf/gentoo.conf \
-O /etc/portage/repos.conf/gentoo.conf
cp -vL /etc/resolv.conf /mnt/gentoo/etc/

printf "#\n# chroot'ing into /mnt/gentoo...\n#\n"
cd /mnt/gentoo
chroot /mnt/gentoo /bin/bash
}

Minimal() {
## Reload profile and update PS1
source /etc/profile && export PS1="(chroot) $PS1"

echo "azryn: Setting CPU cores and GPU type"
sed -i "s/Video_Cards/$VideoCards/g; s/Make_Opts/-j$CPUCores/g" \
/etc/portage/make.conf

echo "azryn: Syncing Portage and selecting profile"
emerge -q --sync
eselect profile list
read -ep "Which profile? [Default is 1]: " TargetProfile
[ -z $TargetProfile ] && TargetProfile="1"
eselect profile set $TargetProfile
emerge -quDN @world

echo "azryn: Setting timezone"
echo $TimeZone > /etc/timezone
emerge -q --config sys-libs/timezone-data

echo "azryn: Setting locale"
echo $Locale > /etc/locale.gen
locale-gen && locale -a && eselect locale list
read -ep "Target locale: " TargetLocale
eselect locale set $TargetLocale

## Update environment
env-update && source /etc/profile && export PS1="(chroot) $PS1"

echo "azryn: Emerge/install Linux kernel and modules"
emerge -q \
sys-kernel/gentoo-sources \
sys-kernel/linux-firmware \
sys-apps/pciutils \
sys-kernel/genkernel \
net-misc/connman \
sys-boot/grub:2

if grep -Rqi 'intel' /proc/cpuinfo; then
echo "azryn: emerging intel-microcode"
emerge -q intel-microcode
fi

echo "azryn: Configuring Linux kernel"
cd /usr/src/linux
if [ -z $KernelConfig ]; then
make defconfig && make menuconfig
else
wget $KernelConfig -O /usr/src/linux/.config
fi

echo "azryn: Compiling Linux kernel, modules, and initramfs"
make -j$CPUCores && make modules_install && make install
genkernel --install initramfs
cd /

echo "azryn: Install netifrc"
emerge -q --noreplace net-misc/netifrc

echo "azryn: Add connman to OpenRC"
rc-update add connman default

echo "azryn: Setting hostname"
echo "hostname=$Hostname" > /etc/conf.d/hostname

echo "azryn: Installing Grub"
grub-install $GrubTarget
grub-mkconfig -o /boot/grub/grub.cfg

echo "azryn: Adding bash configuration"
wget -q $BaseUrl/etc/bash/bashrc -O /etc/bash/bashrc

echo "azryn: Adding profile configuration"
wget -q $BaseUrl/etc/profile -O /etc/profile
wget -q $BaseUrl/etc/profile.d/alias.sh -O /etc/profile.d/alias.sh
wget -q $BaseUrl/etc/profile.d/azryn.sh -O /etc/profile.d/azryn.sh
wget -q $BaseUrl/etc/profile.d/environment.sh -O /etc/profile.d/environment.sh

echo "azryn: Setting root password"
echo $RootPwd | chpasswd
}

Complete() {
emerge -q \
x11-base/xorg-drivers \
x11-misc/wmctrl \
x11-misc/xdotool

## Update environment
env-update && source /etc/profile && export PS1="(chroot) $PS1"

emerge -q \
app-portage/gentoolkit \
app-admin/eclean-kernel \
app-admin/sudo \
app-editors/emacs \
app-laptop/laptop-mode-tools \
app-text/aspell \
media-fonts/noto \
media-libs/alsa-lib \
media-sound/alsa-utils \
media-video/mpv \
net-misc/youtube-dl \
www-client/chromium \
x11-apps/xbacklight \
x11-apps/xrandr \
x11-apps/xset \
x11-misc/dmenu \
x11-misc/i3lock \
x11-misc/i3status \
x11-misc/xclip \
x11-terms/gnome-terminal \
x11-wm/i3

echo "azryn: Add laptop_mode to OpenRC"
rc-update add laptop_mode default

echo "azryn: Adding userland configuration files"
wget -q $BaseUrl/etc/Xresources -O /etc/Xresources
wget -q $BaseUrl/etc/emacs/default.el -O /etc/emacs/default.el
wget -q $BaseUrl/etc/i3/config -O /etc/i3/config
wget -q $BaseUrl/etc/sudoers -O /etc/sudoers
wget -q $BaseUrl/etc/tmux.conf -O /etc/tmux.conf
wget -q $BaseUrl/etc/vimrc -O /etc/vimrc
wget -q $BaseUrl/etc/xinitrc -O /etc/xinitrc
}

Cleanup() {
echo "azryn: Updating @world and removing unused packages"
emerge -quDN @world
emerge -q --depclean
emerge -quD --changed-use @world
eclean packages
eclean-dist --deep --fetch-restricted

echo "azryn: Removing stage3 tarball"
rm -rf /stage3*.tar.bz2
}


### Execution ####################################

shopt -s nocasematch
case $1 in
bootstrap)
Bootstrap
;;

minimal)
Minimal
;;

complete)
Complete
;;

cleanup)
Cleanup
;;

*) echo "AzrynOS - i3wm powered Gentoo derivative"
echo " help Shows help output"
echo
echo "Run in the order listed:"
echo " bootstrap Bootstrap the stage3 tarball"
echo " minimal Very basic Gentoo install"
echo " complete Full AzrynOS installation"
echo " cleanup Remove junk created during install"
esac
shopt -u nocasematch

+ 4
- 0
etc/Xresources View File

@@ -0,0 +1,4 @@
# /etc/Xresources

Xcursor.theme: breeze
Xcursor.size: 16

+ 33
- 0
etc/bash/bashrc View File

@@ -0,0 +1,33 @@
# /etc/bash/bashrc

# Test for an interactive shell.
if [[ $- != *i* ]] ; then
# Shell is non-interactive. Be done now!
return
fi

shopt -s checkwinsize
shopt -s no_empty_cmd_completion
shopt -s histappend
#PROMPT_COMMAND='history -a'

# Change the window title of X terminals
case ${TERM} in
[aEkx]term*|rxvt*|gnome*|konsole*|interix)
PS1='\[\033]0;\u@\h:\w\007\]'
;;
screen*)
PS1='\[\033k\u@\h:\w\033\\\]'
;;
*)
unset PS1
;;
esac

for sh in /etc/bash/bashrc.d/* ; do
[[ -r ${sh} ]] && source "${sh}"
done

source /etc/profile

unset use_color sh

+ 412
- 0
etc/emacs/default.el View File

@@ -0,0 +1,412 @@
;; /etc/emacs/default.el

;; Encoding
(setq prefer-coding-system 'utf-8
set-default-coding-systems 'utf-8
set-language-environment "UTF-8"
set-locale-environment "en_US.UTF-8")

;; Disable menubar, scrollbar, and toolbar before they initialize
(when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))

;; Startup Hooks
(add-hook 'lisp-mode-hook 'linum-mode)
(add-hook 'prog-mode-hook 'linum-mode)
(add-hook 'text-mode-hook 'linum-mode)
(add-hook 'before-save-hook 'delete-trailing-whitespace)

;; Startup
(setq initial-scratch-message nil
inhibit-splash-screen t
inhibit-startup-buffer-menu t
column-number-mode t
visible-bell t)

;; Get environment variables
(setenv "EDITOR" "emacsclient")
(setenv "GIT_EDITOR" "emacsclient")
(setenv "GOPATH" (getenv "GOPATH"))
(setenv "MANPATH" (getenv "MANPATH"))
(setenv "PATH" (getenv "PATH"))
(setenv "PROMPT_COMMAND" "")
(setenv "SHELL" (getenv "SHELL"))
(setenv "TERM" (getenv "TERM"))

;; Set font as 9pt normal monospace
(set-face-attribute
'default nil
:family "Monospace" :weight 'normal
:width 'normal :height 96)

;; Set theme to 'tango-dark'
(load-theme 'tango-dark)

;; Autosave/Backups
(setq auto-save-default nil
auto-save-file-name-transforms `((".*" "~/.emacs.d/backup/" t))
backup-directory-alist `((".*" . "~/.emacs.d/backup/"))
create-lockfiles nil
delete-by-moving-to-trash t
delete-old-versions t
delete-selection-mode t
kept-new-versions 2
vc-follow-symlinks t
vc-make-backup-files t
version-control t)

;; Cut/Paste
(setq require-final-newline t
save-interprogram-paste-before-kill t
select-enable-primary nil)

;; Indentation
(setq c-basic-offset 2
cperl-indent-level 2
js-indent-level 2
indent-tabs-mode nil
tab-width 2)

;; Mouse
(setq mouse-wheel-follow-mouse 't
mouse-wheel-progressive-speed nil
mouse-wheel-scroll-amount '(3 ((shift) . 3))
mouse-yank-at-point t)

;; Scrolling
(setq auto-window-vscroll nil
scroll-conservatively 101
scroll-down-aggressively 0.0
scroll-margin 0
scroll-preserve-screen-position 1
scroll-step 1
scroll-up-aggressively 0.0)

;; Shorter y/n prompts
(fset 'yes-or-no-p 'y-or-n-p)

;; Globally enable word-wrap
(global-visual-line-mode t)

;; Highlight matching parenthesis
(show-paren-mode t)

;; Enable Emacs mouse commands
(xterm-mouse-mode t)

;; Autoload custom file on start
(setq custom-file "~/.emacs.d/custom.el")
(if (file-exists-p custom-file)
(load custom-file)
(write-region "" nil custom-file))


;;; Helper Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun append-to-list (list-var elements)
"Append ELEMENTS to the end of LIST-VAR."
(set list-var (append (symbol-value list-var) elements)))


;;; Input ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Buffers
(global-set-key (kbd "C-x C-b") 'ibuffer)
(global-set-key (kbd "C-x x") 'kill-buffer-and-window)
(global-set-key (kbd "<C-tab>") 'next-buffer)
(global-set-key (kbd "<C-iso-lefttab>") 'previous-buffer)
(global-set-key (kbd "M--") (lambda() (interactive)
(split-window-vertically)
(other-window 1 nil)
(switch-to-next-buffer)))
(global-set-key (kbd "M-=") (lambda() (interactive)
(split-window-horizontally)
(other-window 1 nil)
(switch-to-next-buffer)))

;; Comments
(global-set-key (kbd "C-c c") 'comment-or-uncomment-region)

;; Mouse
(global-set-key (kbd "<mouse-4>") (lambda() (interactive)
(scroll-down 4)))
(global-set-key (kbd "<mouse-5>") (lambda() (interactive)
(scroll-up 4)))

;; Movement
(global-set-key (kbd "<M-down>") 'windmove-down)
(global-set-key (kbd "<M-left>") 'windmove-left)
(global-set-key (kbd "<M-right>") 'windmove-right)
(global-set-key (kbd "<M-up>") 'windmove-up)
(global-set-key (kbd "C-c <down>") 'windmove-down)
(global-set-key (kbd "C-c <left>") 'windmove-left)
(global-set-key (kbd "C-c <right>") 'windmove-right)
(global-set-key (kbd "C-c <up>") 'windmove-up)


;;; Package Manager ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(require 'package)
(setq package-user-dir "~/.emacs.d/pkg/"
package-archives
'(("GNU ELPA" . "http://elpa.gnu.org/packages/")
("MELPA Stable" . "https://stable.melpa.org/packages/")
("MELPA" . "https://melpa.org/packages/"))
package-archive-priorities
'(("MELPA Stable" . 3)
("GNU ELPA" . 2)
("MELPA" . 1)))
(package-initialize)

;; Install 'use-package' if not present
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)


;;; Built-in Packages ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(use-package async
:config (async-bytecomp-package-mode '(all)))

(use-package auto-compile
:config
(auto-compile-on-load-mode)
(auto-compile-on-save-mode))

(use-package auto-dictionary)

(use-package elfeed
:bind ("C-x w" . elfeed)
:config
(setq elfeed-search-filter "@1-week-ago +unread "
url-queue-timeout 30)
(if (file-exists-p "~/.emacs.d/elfeed.el")
(load-file "~/.emacs.d/elfeed.el")))

(use-package eshell
:config
(setq eshell-cmpl-cycle-completions nil
eshell-error-if-no-glob t
eshell-hist-ignoredups t
eshell-history-size 4096
eshell-prefer-lisp-functions t
eshell-save-history-on-exit t
eshell-scroll-to-bottom-on-input 'all)

(setq eshell-prompt-function
(lambda nil
(concat
"[" (user-login-name) "@" (system-name) " "
(if (= (length (eshell/pwd)) (length (getenv "HOME")))
"~" (eshell/basename (eshell/pwd))) "]"
(if (= (user-uid) 0) "# " "$ ")))
eshell-prompt-regexp "^[^#$\n]*[#$] ")

(add-hook
'eshell-mode-hook
(lambda()
(append-to-list 'eshell-visual-commands
'("alsamixer" "htop" "top" "nano" "vi" "vim" "less" "ssh"
"tail" "watch"))))

(defun eshell-clear()
"Clear the eshell buffer"
(let ((inhibit-read-only t))
(erase-buffer)
(eshell-send-input)))

(defun eshell-new()
"Open a new instance of eshell."
(interactive)
(eshell 'N)))

(use-package eww
:config
(setq browse-url-browser-function 'eww-browse-url
shr-blocked-images "")

(defun eww-toggle-images()
"Toggle blocking images in eww."
(interactive)
(if (bound-and-true-p shr-blocked-images)
(setq shr-blocked-images nil)
(setq shr-blocked-images ""))
(eww-reload))

(defun eww-new()
"Open a new instance of eww."
(interactive)
(let ((url (read-from-minibuffer "Enter URL or keywords: ")))
(switch-to-buffer (generate-new-buffer "*eww*"))
(eww-mode)
(eww url)))

(defun eww-open-url-in-new()
"Open link under cursor in new instance of eww"
(interactive)
(let ((url (get-text-property (point) 'shr-url)))
(print url)
(switch-to-buffer (generate-new-buffer "*eww*"))
(eww-mode)
(eww url))))

(use-package ibuffer
:config
(add-hook 'ibuffer-hook
(lambda()
(ibuffer-do-sort-by-alphabetic)
(ibuffer-do-sort-by-major-mode))))

(use-package scratch
:config
(defun scratch-new()
"Open a new scratch buffer."
(interactive)
(switch-to-buffer (generate-new-buffer "*scratch*"))
(lisp-mode)))

(use-package server
:bind ("C-x C-c" . server-stop)
:config (unless (server-running-p)(server-start))

(defun server-kill()
"Delete current Emacs server, then kill Emacs"
(interactive)
(server-force-delete)
(kill-emacs))

(defun server-stop()
"Prompt to save buffers, then kill Emacs."
(interactive)
(if (y-or-n-p "Quit Emacs? ")
(save-buffers-kill-emacs)))

(defun server-update()
"Refresh package contents, then update all packages."
(interactive)
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(package-utils-upgrade-all)))

(use-package xclip
:config (xclip-mode 1))


;;; Extras ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(use-package cmake-ide
:config (cmake-ide-setup))

(use-package company
:config
(add-hook 'prog-mode-hook 'company-mode)
(add-hook 'text-mode-hook 'company-mode))

(use-package company-irony
:config (add-to-list 'company-backends 'company-irony))

(use-package company-irony-c-headers
:config
(add-to-list 'company-backends '(company-irony-c-headers company-irony)))

(use-package counsel
:bind
(("<f1> f" . counsel-describe-function)
("<f1> l" . counsel-find-library)
("<f1> v" . counsel-describe-variable)
("<f2> i" . counsel-info-lookup-symbol)
("<f2> u" . counsel-unicode-char)
("C-S-o" . counsel-rhythmbox)
("C-c g" . counsel-git)
("C-c j" . counsel-git-grep)
("C-c l" . counsel-ag)
("C-r" . counsel-expression-history)
("C-x C-f" . counsel-find-file)
("C-x l" . counsel-locate)
("M-x" . counsel-M-x)))

(use-package diff-hl
:config
(add-hook 'prog-mode-hook 'diff-hl-mode)
(add-hook 'text-mode-hook 'diff-hl-mode))

(use-package eww-lnum
:config
(define-key eww-mode-map "f" 'eww-lnum-follow)
(define-key eww-mode-map "F" 'eww-lnum-universal))

(use-package flycheck
:config (add-hook 'prog-mode-hook 'flycheck-mode))

(use-package flymake)

(use-package flyspell
:config
(add-hook 'flyspell-mode-hook (auto-dictionary-mode 1))
(add-hook 'markdown-mode-hook 'flyspell-mode)
(add-hook 'prog-mode-hook 'flyspell-prog-mode)
(add-hook 'text-mode-hook 'flyspell-mode))

(use-package go-mode
:config
(add-hook 'before-save-hook 'gofmt-before-save)
(add-hook 'go-mode-hook
(lambda()
(setq tab-width 4
indent-tabs-mode 1))))

(use-package highlight-indent-guides
:config
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode)
(setq highlight-indent-guides-method 'character))

(use-package irony
:config
(add-hook 'c++-mode-hook 'irony-mode)
(add-hook 'c-mode-hook 'irony-mode)
(add-hook 'objc-mode-hook 'irony-mode)
(add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
(define-key irony-mode-map [remap completion-at-point] 'counsel-irony)
(define-key irony-mode-map [remap complete-symbol] 'counsel-irony)
(setq irony-additional-clang-options '("-std=c++14")))

(use-package ivy
:bind (("C-c C-r" . ivy-resume)
("<f6>" . ivy-resume))
:config
(ivy-mode 1)
(setq ivy-use-virtual-buffers t
enable-recursive-minibuffers t))

(use-package magit)

(use-package nov
:config (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)))

(use-package rainbow-delimiters
:config
(add-hook 'markdown-mode-hook 'rainbow-delimiters-mode)
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
(add-hook 'text-mode-hook 'rainbow-delimiters-mode))

(use-package ranger)

(use-package smartparens
:config
(add-hook 'markdown-mode-hook 'smartparens-mode)
(add-hook 'prog-mode-hook 'smartparens-mode)
(add-hook 'text-mode-hook 'smartparens-mode)
(setq sp-highlight-pair-overlay nil
sp-highlight-wrap-overlay nil
sp-highlight-wrap-tag-overlay nil))

(use-package swiper
:bind ("C-s" . swiper))

(use-package undo-tree
:config (global-undo-tree-mode))

+ 190
- 0
etc/i3/config View File

@@ -0,0 +1,190 @@
# /etc/i3/config

### Startup ######################################

## disable dpms
exec xset s off -dpms

## Set font
font pango:Dejavu Sans Mono 9

bar {
position top
status_command i3status
}


### Applications #################################

## Modifier Key
set $mod Mod4

## Application Menu
bindsym $mod+d exec dmenu_run

## Terminal Emulator
bindsym $mod+Return exec dbus-launch gnome-terminal


### Multimedia Keys ##############################

## Audio (Alsa)
bindsym XF86AudioRaiseVolume exec --no-startup-id amixer set Master 5+
bindsym XF86AudioLowerVolume exec --no-startup-id amixer set Master 5-
bindsym XF86AudioMute exec --no-startup-id amixer set Master toggle

## Audio (PulseAudio)
# bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
# bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
# bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
# bindsym XF86AudioPlay exec --no-startup-id pactl play-pause
# bindsym XF86AudioPause exec --no-startup-id pactl pause
# bindsym XF86AudioNext exec --no-startup-id pactl next
# bindsym XF86AudioPrev exec --no-startup-id pactl previous

## Brightness (xbacklight)
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 15
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 15

## Brightness (brightnessctl)
# bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set 5%+
# bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-


### Menus ########################################

## Display
# This section should serve as an example of how to configure your
# display settings for use with multiple setups/devices.
set $mode_display Home (h), Laptop (l)
bindsym $mod+Shift+d mode "$mode_display"
mode "$mode_display" {
bindsym h exec xrandr \
--output LVDS1 --primary --mode 1366x768 --pos 554x1080 --rotate normal \
--output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal \
--output DP-1 --off \
--output VGA-1 --off, mode "default"
bindsym l exec xrandr \
--output LVDS1 --primary --mode 1366x768 --pos 0x0 --rotate normal \
--output HDMI1 --off \
--output DP1 --off \
--output VGA1 --off, mode "default"

bindsym Return mode "default"
bindsym Escape mode "default"
}

## Reload
set $mode_reload Reload i3 config (r), Live restart of i3 (Shift+r)
bindsym $mod+Shift+r mode "$mode_reload"
mode "$mode_reload" {
bindsym r reload
bindsym Shift+r restart

bindsym Return mode "default"
bindsym Escape mode "default"
}

## State
set $Locker xset s 10 dpms 10 && i3lock -c 3f3f3f -n && xset s off -dpms
set $mode_system Lock (l), Logout (e), Reboot (r), Shutdown (s)
bindsym $mod+Home mode "$mode_system"
mode "$mode_system" {
bindsym l exec --no-startup-id $Locker, mode "default"
bindsym e exec --no-startup-id i3-msg exit, mode "default"
bindsym r exec --no-startup-id reboot, mode "default"
bindsym s exec --no-startup-id poweroff -i, mode "default"

bindsym Return mode "default"
bindsym Escape mode "default"
}

## Resize
bindsym $mod+r mode "resize"
mode "resize" {
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
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

bindsym Return mode "default"
bindsym Escape mode "default"
}


### Keybinds #####################################

## Change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right
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+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

## Window splitting
bindsym $mod+h split h
bindsym $mod+v split v

## Fullscreen focused container
bindsym $mod+f fullscreen toggle

## Cycle frame layout
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split

## Toggle floating on focused frame
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

## Switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10

## Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10

## Kill focused window
bindsym $mod+Shift+q kill

## Drag floating windows with Mouse+$mod
floating_modifier $mod

+ 24
- 0
etc/portage/make.conf View File

@@ -0,0 +1,24 @@
# /etc/portage/make.conf

# System
CHOST="x86_64-pc-linux-gnu"
GENTOO_MIRRORS="https://mirrors.kernel.org/gentoo/"

# Portage
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"

# Hardware
INPUT_DEVICES="libinput"
CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3"
VIDEO_CARDS="Video_Cards"

# Language
LINGUAS="en_US"
L10N="en-US"

# Compilation
MAKEOPTS="Make_Opts"
CFLAGS="-march=native -O3"
CXXFLAGS="${CFLAGS}"

+ 6
- 0
etc/portage/package.accept_keywords View File

@@ -0,0 +1,6 @@
# /etc/portage/package.accept_keywords

lxqt-base/*
media-gfx/lximage-qt
x11-misc/obconf-qt
x11-misc/pcmanfm-qt

+ 1
- 0
etc/portage/package.env View File

@@ -0,0 +1 @@
# /etc/portage/package.env

+ 1
- 0
etc/portage/package.license View File

@@ -0,0 +1 @@
# /etc/portage/package.license

+ 157
- 0
etc/portage/package.use View File

@@ -0,0 +1,157 @@
# /etc/portage/package.use

*/* -aqua -avahi -bindist -doc -gnome-keyring -llvm -offensive -multilib -pulseaudio -sslv3 -static -static-libs -systemd -tls-heartbeat alsa deblob ipv6 minimal threads unicode

app-admin/sudo -gcrypt -openssl sendmail
app-arch/bzip2 abi_x86_32
app-arch/file-roller
app-editors/emacs X acl alsa gof gtk3 gzip-el imagemagick inotify jpeg libxml2 png sound ssl svg threads tiff xft xpm xwidgets zlib -athena -games -gtk
app-editors/vim X -perl -python -racket -tcl
app-emacs/emacs-common-gentoo X -games
app-emulation/qemu sdl2 usb
app-laptop/laptop-mode-tools acpi bluetooth
app-misc/screenfetch -X
app-office/libreoffice branding collada cups gltf gstreamer gtk mysql pdfimport postgres
app-shells/zsh unicode
app-text/ghostscript-gpl cups
app-text/poppler cairo
app-text/xmlto text
dev-cpp/cairomm X
dev-cpp/gtkmm X
dev-db/sqlite abi_x86_32
dev-games/ogre threads examples ois
dev-games/openscenegraph qt5 jpeg ffmpeg svg sdl truetype png
dev-lang/python:2.7 sqlite
dev-libs/atk abi_x86_32
dev-libs/expat abi_x86_32
dev-libs/glib dbus abi_x86_32
dev-libs/icu abi_x86_32
dev-libs/libcroco abi_x86_32
dev-libs/libffi abi_x86_32
dev-libs/libpcre abi_x86_32 pcre16
dev-libs/libpthread-stubs abi_x86_32
dev-libs/libxml2 abi_x86_32 icu python
dev-libs/lzo abi_x86_32
dev-libs/nspr abi_x86_32
dev-libs/nss abi_x86_32
dev-libs/openssl abi_x86_32 zlib
dev-qt/qtnetwork connman
dev-util/geany gtk3 vte
dev-util/pkgconfig abi_x86_32
dev-vcs/git -gpg
gnome-base/librsvg abi_x86_32
kde-plasma/breeze X wayland
lxqt-base/lxqt-meta about admin filemanager icons lximage minimal powermanagement sddm
mail-client/thunderbird lightning system-cairo system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-sqlite
media-fonts/noto X cjk
media-gfx/feh curl exif cinerma
media-gfx/gimp smp
media-gfx/graphite2 abi_x86_32
media-gfx/inkscape imagemagick jpeg latex
media-gfx/pstoedit plotutils
media-libs/alsa-lib abi_x86_32
media-libs/fontconfig abi_x86_32
media-libs/freetype abi_x86_32
media-libs/harfbuzz abi_x86_32 icu
media-libs/imlib2 X
media-libs/libpng abi_x86_32 apng
media-libs/libsdl2 X opengl
media-libs/libsndfile abi_x86_32
media-libs/libtxc_dxtn abi_x86_32
media-libs/mesa abi_x86_32 dri3 vaapi vdpau
media-libs/openal abi_x86_32
media-plugins/alsa-plugins abi_x86_32
media-sound/cmus aac alsa ffmpeg flac libsamplerate mad mp4 opus oss unicode vorbis wavpack
media-sound/pulseaudio abi_x86_32
media-video/ffmpeg X aac blueray chromium gme hevc libass mp3 network ogg openh264 openssl opus rtmp sdl theora vorbis vpx x264 x265 xvid wavpack zlib
media-video/mpv jpeg libass libmpv opengl
net-libs/libasyncns abi_x86_32
net-misc/connman bluetooth ethernet openvpn wifi
net-misc/curl abi_x86_32
net-wireless/wpa_supplicant dbus
sys-apps/attr abi_x86_32
sys-apps/tcp-wrappers abi_x86_32
sys-apps/util-linux abi_x86_32
sys-devel/gcc cxx nls nplt
sys-devel/gettext abi_x86_32
sys-devel/llvm abi_x86_32 clang
sys-fs/eudev abi_x86_32
sys-fs/udev abi_x86_32
sys-libs/binutils-libs abi_x86_32
sys-libs/gpm abi_x86_32
sys-libs/libcap abi_x86_32
sys-libs/libcxx libcxxabi
sys-libs/ncurses abi_x86_32
sys-libs/readline abi_x86_32
sys-libs/zlib abi_x86_32 minizip
virtual/libffi abi_x86_32
virtual/libiconv abi_x86_32
virtual/libintl abi_x86_32
virtual/libudev abi_x86_32 x32
virtual/opengl abi_x86_32
virtual/pkgconfig abi_x86_32
www-client/chromium -proprietary-codecs cups hangouts system-ffmpeg system-icu system-libvpx
www-plugins/adobe-flash ppapi
x11-base/xorg-drivers libinput
x11-base/xorg-server -minimal
x11-drivers/nvidia-drivers x86_video_abi multilib
x11-drivers/xf86-video-amdgpu glamor
x11-drivers/xf86-video-ati glamor
x11-drivers/xf86-video-intel dri3 sna
x11-drivers/xf86-video-virtualbox dri
x11-libs/cairo X xcb abi_x86_32
x11-libs/gdk-pixbuf X abi_x86_32
x11-libs/gtk+:2 abi_x86_32
x11-libs/libICE abi_x86_32
x11-libs/libSM abi_x86_32
x11-libs/libX11 abi_x86_32
x11-libs/libXScrnSaver abi_x86_32
x11-libs/libXau abi_x86_32
x11-libs/libXcomposite abi_x86_32
x11-libs/libXcursor abi_x86_32
x11-libs/libXdamage abi_x86_32
x11-libs/libXdmcp abi_x86_32
x11-libs/libXext abi_x86_32
x11-libs/libXfixes abi_x86_32
x11-libs/libXft abi_x86_32
x11-libs/libXi abi_x86_32
x11-libs/libXinerama abi_x86_32
x11-libs/libXrandr abi_x86_32
x11-libs/libXrender abi_x86_32
x11-libs/libXtst abi_x86_32
x11-libs/libXxf86vm abi_x86_32
x11-libs/libdrm abi_x86_32
x11-libs/libpciaccess abi_x86_32
x11-libs/libva abi_x86_32 X
x11-libs/libva-intel-driver abi_x86_32
x11-libs/libva-vdpau-driver abi_x86_32
x11-libs/libvdpau abi_x86_32
x11-libs/libxcb xkb abi_x86_32
x11-libs/libxkbcommon X
x11-libs/libxshmfence abi_x86_32
x11-libs/pango X abi_x86_32
x11-libs/pixman abi_x86_32
x11-misc/dmenu xinerama
x11-misc/i3status filecaps
x11-proto/compositeproto abi_x86_32
x11-proto/damageproto abi_x86_32
x11-proto/dri2proto abi_x86_32
x11-proto/dri3proto abi_x86_32
x11-proto/fixesproto abi_x86_32
x11-proto/glproto abi_x86_32
x11-proto/inputproto abi_x86_32
x11-proto/kbproto abi_x86_32
x11-proto/presentproto abi_x86_32
x11-proto/randrproto abi_x86_32
x11-proto/recordproto abi_x86_32
x11-proto/renderproto abi_x86_32
x11-proto/scrnsaverproto abi_x86_32
x11-proto/xcb-proto abi_x86_32
x11-proto/xextproto abi_x86_32
x11-proto/xf86bigfontproto abi_x86_32
x11-proto/xf86driproto abi_x86_32
x11-proto/xf86vidmodeproto abi_x86_32
x11-proto/xineramaproto abi_x86_32
x11-proto/xproto abi_x86_32
x11-terms/gnome-terminal -gnome-shell -nautilus
x11-terms/rxvt-unicode 256-color blink fading-colors font-styles mousewheel perl pixbuf unicode3 xft

+ 10
- 0
etc/portage/repos.conf/gentoo.conf View File

@@ -0,0 +1,10 @@
# /etc/portage/repos.conf/gentoo.conf

[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/portage
sync-type = git
sync-uri = https://github.com/gentoo/gentoo.git
auto-sync = yes

+ 12
- 0
etc/profile View File

@@ -0,0 +1,12 @@
# /etc/profile

if [ -e /etc/profile.env ] ; then
. /etc/profile.env
fi

umask 022

for sh in /etc/profile.d/*.sh; do
[ -r "$sh" ] && . "$sh"
done
unset sh

+ 76
- 0
etc/profile.d/alias.sh View File

@@ -0,0 +1,76 @@
# /etc/profile.d/alias.sh

## cd
mkcd() {
mkdir -vp $1; cd $1
}

## cp
alias cp="cp -ip"
alias cr="cp -ir"

## curl
alias hurl="curl -f#LO"

## df
alias df="df -h"
alias di="df -hi"

## dig
alias dit="dig +noall +nocmd +answer +multiline"

## du
alias du="du -hs ./*"

## free
alias free="free -h"

## ls
ls="-hSF --group-directories-first --color=auto"
alias l="ls -C $ls"
alias la="ls -aC $ls"
alias ll="ls -al $ls"
alias ls="ls -C $ls"

## mkdir
alias mkdir="mkdir -vp $@"

## more
alias more="less"

## mv
alias mv="mv -i"

## nano
alias nano="nano -EOSWcimx"

## ps
alias pss="ps -af | head -1; ps -af | grep -v grep"
alias psw="watch 'ps -af | sort -hrk4'"

## rm
alias rf="rm -rf"
alias rm="rm -i"
alias rr="rm -ir"

## screen
alias screen="screen"

## scrot
alias screenshot="scrot -s ~/Pictures/'Screenshot-%Y%m%d'.png"

## tar
mktgz() {
tar -vcfz $1.tar.gz $@
}
mktxz() {
tar -vcfJ $1.tar.xz $@
}
alias untar="tar -vxf"


### Extras #######################################

weather() {
curl http://wttr.in/$1
}

+ 36
- 0
etc/profile.d/azryn.sh View File

@@ -0,0 +1,36 @@
# /etc/profile.d/azryn.sh

azryn() {
case $1 in
cleanup)
sudo emerge -avc --quiet-build && \
sudo emerge -avuUD --quiet-build @world && \
sudo eclean packages && \
sudo eclean-dist --deep --fetch-restricted
;;

install)
sudo emerge -av --quiet-build ${@:2}
;;

update)
sudo emerge -v --sync
;;

upgrade)
sudo emerge -avuDN --quiet-build @system && \
sudo emerge -avuDN --quiet-build @world && \
sudo emerge -avc --quiet-build && \
sudo revdep-rebuild
;;

*)
echo "azryn: Invalid option: $@"
echo "Available options:"
echo " cleanup Sync portage and remove junk"
echo " install Install a package"
echo " update Sync portage and update"
echo " upgrade Upgrade @system and @world"
;;
esac
}

+ 46
- 0
etc/profile.d/environment.sh View File

@@ -0,0 +1,46 @@
# /etc/profile.d/env.sh

## Environment variables
export ARCHFLAGS="-arch x86_64"
export EDITOR="emacs -Q -nw"
export HISTTIMEFORMAT="(%m/%d/%y) %T "
export LANG="en_US.UTF-8"
export PAGER="${PAGER:-/usr/bin/less}"
export PROMPT_COMMAND="history -a"
export PS1="[\u@\h \w]\$ "
export SSH_KEY_PATH="${HOME}/.ssh/rsa_id"
export TERM="xterm"

## Golang
GOPATH="$HOME/.go"
GOBIN="$GOPATH/bin"
GODOC="$GOPATH/doc"
export GOBIN GODOC GOPATH

## Racket
RKTPATH="/usr/racket:/usr/local/racket:$HOME/racket:$HOME/.racket"
RKTBIN="$RKTROOT/bin"
RKTMAN="$RKTROOT/man"

## Path
CODEPATH="$GOBIN:$RKTPATH"
GLOBALPATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
LOCALPATH="$HOME/.local/bin:$HOME/.bin:$HOME/bin"
export PATH="$GLOBALPATH:$LOCALPATH:$CODEPATH"

## Man
PROGMAN="$RKTMAN"
GLOBALMAN="/usr/man:/usr/share/man:/usr/local/man:/usr/local/share/man"
LOCALMAN="$HOME/.local/man:$HOME/.local/share/man"
export MANPATH="$GLOBALMAN:$LOCALMAN:$PROGMAN"

## Create missing user directories
[ ! -e $HOME/Documents ] && mkdir $HOME/Documents
[ ! -e $HOME/Downloads ] && mkdir $HOME/Downloads
[ ! -e $HOME/Images ] && mkdir $HOME/Images
[ ! -e $HOME/Projects ] && mkdir $HOME/Projects
[ ! -e $HOME/Templates ] && mkdir $HOME/Templates
[ ! -e $HOME/Videos ] && mkdir $HOME/Videos

## Add missing user configuration
[ ! -e $HOME/.xinitrc ] && cp /etc/xinitrc $HOME/.xinitrc

+ 97
- 0
etc/sudoers View File

@@ -0,0 +1,97 @@
## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##

##
## Host alias specification
##
## Groups of machines. These may include host names (optionally with wildcards),
## IP addresses, network numbers or netgroups.
# Host_Alias WEBSERVERS = www1, www2, www3

##
## User alias specification
##
## Groups of users. These may consist of user names, uids, Unix groups,
## or netgroups.
# User_Alias ADMINS = millert, dowdy, mikef

##
## Cmnd alias specification
##
## Groups of commands. Often used to group related commands together.
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
# /usr/bin/pkill, /usr/bin/top
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff

##
## Defaults specification
##
## You may wish to keep some of the following environment variables
## when running commands via sudo.
##
## Locale settings
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
##
## Run X applications through sudo; HOME is used to find the
## .Xauthority file. Note that other programs use HOME to find
## configuration files and this may lead to privilege escalation!
# Defaults env_keep += "HOME"
##
## X11 resource path settings
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
##
## Desktop path settings
# Defaults env_keep += "QTDIR KDEDIR"
##
## Allow sudo-run commands to inherit the callers' ConsoleKit session
# Defaults env_keep += "XDG_SESSION_COOKIE"
##
## Uncomment to enable special input methods. Care should be taken as
## this may allow users to subvert the command being run via sudo.
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
##
## Uncomment to use a hard-coded PATH instead of the user's to find commands
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
##
## Uncomment to send mail if the user does not enter the correct password.
# Defaults mail_badpass
##
## Uncomment to enable logging of a command's output, except for
## sudoreplay and reboot. Use sudoreplay to play back logged sessions.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!/usr/local/bin/sudoreplay !log_output
# Defaults!REBOOT !log_output

##
## Runas alias specification
##

##
## User privilege specification
##
root ALL=(ALL) ALL

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

## Uncomment to allow members of group sudo to execute any command
# %sudo ALL=(ALL) ALL

## Uncomment to allow any user to run sudo if they know the password
## of the user they are running the command as (root by default).
# Defaults targetpw # Ask for the password of the target user
# ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw'

## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

+ 61
- 0
etc/tmux.conf View File

@@ -0,0 +1,61 @@
# /etc/tmux.conf

### General ######################################

## Force reload of config file
unbind r
bind r source-file ~/.tmux.conf

## Terminal
set-option -g xterm-keys on
set -g default-terminal "tmux-256color"

## Keybind preference
setw -g mode-keys vi
set-option -g status-keys vi
set -g mouse on

## Display
set -s escape-time 0
set-option -g repeat-time 0
set -g base-index 1
setw -g pane-base-index 1

## Activate inner-most session (when nesting tmux) to send commands
bind a send-prefix

## History
set -g history-limit 8192


### Keybinds #####################################

## Return to previous window when prefix is pressed twice
bind C-a last-window
bind C-b last-window

## Window cycle/swap
bind e previous-window
bind f next-window
bind E swap-window -t -1
bind F swap-window -t +1
bind -n M-[ previous-window
bind -n M-] next-window

## Moving between panes
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -n M-h select-pane -L
bind -n M-l select-pane -R
bind -n M-k select-pane -U
bind -n M-j select-pane -D

## Easy split pane commands
unbind '"'
unbind %
bind = split-window -h
bind - split-window -v
bind -n M-= split-window -h
bind -n M-- split-window -v

+ 171
- 0
etc/vimrc View File

@@ -0,0 +1,171 @@
" /etc/vimrc

""" Vim-Plug ====================================

if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

call plug#begin('~/.vim/plugged') " Minimalist Vim Plugin Manager


""" Settings ====================================

Plug 'tpope/vim-sensible' " Sensible Defaults

set t_BE= " Disable bracketed paste
set nocompatible " be iMproved, required
set nobackup "
set noswapfile "
set termencoding=utf-8 " UTF8 as default encoding
set encoding=utf-8 " ...
set scrolloff=100


""" Input =======================================

set mouse=a " Enable mouse support
set clipboard=unnamedplus " Share X11 clipboard
let mapleader = ','

"
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

" Fold Mappings
inoremap <leader>z <C-O>za
nnoremap <leader>z za
onoremap <leader>z <C-C>za
vnoremap <leader>z zf

" Use <leader>/ to clear search highlight
nmap <silent> <leader>/ :nohlsearch<CR>

"
set pastetoggle=<F2>
set listchars=tab:\|.,trail:.,extends:#,nbsp:.

" Write target file as sudo using 'tee' buffer
function SudoWrite()
w !sudo tee %
endfunction


""" Display =====================================

Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
let g:airline#extensions#tabline#enabled = 1

Plug 'edkolev/tmuxline.vim'
let g:tmuxline_powerline_separators = 0

if has('gui_running')
colorscheme slate
set guifont=Noto\ Mono\ Regular\ 10
set background=dark
set guioptions-=m "remove menu bar
set guioptions-=T "remove toolbar
set guioptions-=r "remove right-hand scroll bar
set guioptions-=L "remove left-hand scroll bar
endif


""" Utilities ===================================

Plug 'spolu/dwm.vim' " Tiled Window Management
Plug 'Shougo/vimfiler.vim' " Powerful file explorer
Plug 'tpope/vim-eunuch' " Helpers for UNIX
Plug 'tpope/vim-dispatch' " Async Build/Test
Plug 'benmills/vimux' " tmux Integration

Plug 'mileszs/ack.vim' " Enhanced Grepping within Vim
if executable('ag')
let g:ackprg = 'ag --vimgrep'
endif

Plug 'ctrlpvim/ctrlp.vim' " Fuzzy file/buffer/mru/tag/etc finder
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn)$',
\ 'file': '\v\.(exe|so|dll)$',
\ 'link': 'some_bad_symbolic_links',
\ }
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard']

Plug 'universal-ctags/ctags' " ctags implementation
Plug 'majutsushi/tagbar' " Displays tags in a window
nmap <F8> :TagbarToggle<CR>

Plug 'francoiscabrol/ranger.vim'


""" Languages ===================================

Plug 'sheerun/vim-polyglot' " Language Support

Plug 'scrooloose/syntastic' " Syntax checking hacks for vim
nmap <leader>c :SyntasticCheck<CR>
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_error_symbol="S>"
let g:syntastic_style_error_symbol="E>"
let g:syntastic_warning_symbol="W>"
let g:syntastic_style_warning_symbol="W>"

Plug 'fatih/vim-go' " Go development plugin for Vim
let g:go_auto_type_info = 1
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_highlight_interfaces = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_highlight_extra_types = 1


""" Editor ======================================

set tabstop=4 " Tabs are 4 columns
set shiftwidth=4 " ...
set softtabstop=4 " ...
set expandtab " Change tabs to spaces

set list " Show whitespace
set number " Show line numbers
set wrap linebreak nolist
autocmd BufWritePre * %s/\s\+$//e " Delete trailing whitespace on save

Plug 'tpope/vim-sleuth' " Heuristically set buffer options
Plug 'nathanaelkane/vim-indent-guides' " Visaully display indent level

Plug 'junegunn/vim-easy-align' " Easier text alignment
xmap ga <Plug>(EasyAlign)
nmap ga <Plug>(EasyAlign)

Plug 'ervandew/supertab' " Vim insert mode completions with Tab
Plug 'tpope/vim-surround' " Quoting/Parenthesizing made simple
Plug 'junegunn/limelight.vim' " Hyperfocus-writing in Vim


""" Version Control System ======================

Plug 'airblade/vim-gitgutter' " Show git diff in the gutter
nmap <Leader>ha <Plug>GitGutterStageHunk
nmap <Leader>hr <Plug>GitGutterUndoHunk

Plug 'tpope/vim-fugitive' " Git wrapper
Plug 'tpope/vim-git' " Git integration
Plug 'mattn/gist-vim' " Gist upload (GitHub)

call plug#end()

+ 3
- 0
etc/xinitrc View File

@@ -0,0 +1,3 @@
# /etc/xinitrc

exec i3

+ 4532
- 0
usr/src/linux/4.12.config
File diff suppressed because it is too large
View File


+ 4385
- 0
usr/src/linux/4.14.config
File diff suppressed because it is too large
View File


+ 4343
- 0
usr/src/linux/4.9.config
File diff suppressed because it is too large
View File


+ 2
- 0
usr/src/linux/Readme.md View File

@@ -0,0 +1,2 @@
The idea is to maintain a kernel `.config` for each supported branch as they are
released with some general settings that should work in a majority of use-cases.

Loading…
Cancel
Save