From 43b96c6b109d44169d443408dc2a3de703664669 Mon Sep 17 00:00:00 2001 From: Pierre Martin Date: Fri, 26 Oct 2018 15:08:46 +0200 Subject: [PATCH] Now with NixOS --- .zshrc | 83 ------------ README.md | 3 +- bin/byzanz-record-window | 53 -------- bin/check_sitemap.sh | 5 - bin/composer | 2 - bin/docker-cleanup-volumes.sh | 75 ----------- bin/docker-cleanup.sh | 59 -------- bin/handle-volume-change | 15 --- bin/node | 2 - bin/npm | 2 - bin/php | 2 - bin/tldr | 246 ---------------------------------- bin/yarn | 2 - config.nix | 1 + dotfiles.yml | 244 --------------------------------- home.nix | 108 +++++++++++++++ hosts | 2 - i3.base | 167 ----------------------- i3status.desktop | 70 ---------- install.sh | 6 - my_nginx_proxy.conf | 5 - requirements.txt | 12 -- templates/gitconfig.j2 | 23 ---- templates/gitignore.j2 | 9 -- update.sh | 9 -- 25 files changed, 111 insertions(+), 1094 deletions(-) delete mode 100644 .zshrc delete mode 100644 bin/byzanz-record-window delete mode 100644 bin/check_sitemap.sh delete mode 100644 bin/composer delete mode 100755 bin/docker-cleanup-volumes.sh delete mode 100755 bin/docker-cleanup.sh delete mode 100644 bin/handle-volume-change delete mode 100644 bin/node delete mode 100644 bin/npm delete mode 100644 bin/php delete mode 100644 bin/tldr delete mode 100644 bin/yarn create mode 100644 config.nix delete mode 100644 dotfiles.yml create mode 100644 home.nix delete mode 100644 hosts delete mode 100644 i3.base delete mode 100644 i3status.desktop delete mode 100755 install.sh delete mode 100644 my_nginx_proxy.conf delete mode 100644 requirements.txt delete mode 100644 templates/gitconfig.j2 delete mode 100644 templates/gitignore.j2 delete mode 100755 update.sh diff --git a/.zshrc b/.zshrc deleted file mode 100644 index 75a7e9e..0000000 --- a/.zshrc +++ /dev/null @@ -1,83 +0,0 @@ -# Path to your oh-my-zsh installation. -export ZSH=~/.oh-my-zsh - -# Set name of the theme to load. -# Look in ~/.oh-my-zsh/themes/ -ZSH_THEME="robbyrussell" - -# Uncomment the following line to display red dots whilst waiting for completion. -COMPLETION_WAITING_DOTS="true" - -# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) -# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ -# Example format: plugins=(rails git textmate ruby lighthouse) -# Add wisely, as too many plugins slow down shell startup. -plugins=(git git-flow capistrano docker fasd ssh-agent) - -# User configuration - -export PATH=$HOME/bin:/usr/local/bin:$PATH -# export MANPATH="/usr/local/man:$MANPATH" - -source $ZSH/oh-my-zsh.sh - -# You may need to manually set your language environment -# export LANG=en_US.UTF-8 - -# Preferred editor for local and remote sessions -export EDITOR='vim' - -export WHALEBREW_INSTALL_PATH=$HOME/bin - -# Convenient aliases -alias dc=docker-compose -alias dcr='docker-compose run --rm' -alias copy="xclip -selection c" -alias y=yarn -alias deploy='docker run -it --rm -v ~/.ssh:/root/.ssh -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent -v $(pwd):/source neolao/capistrano:3.4.0 bash' - -alias bepo='setxkbmap -layout fr -variant bepo' -alias fr='setxkbmap -layout fr -variant oss' - -alias m='make' -alias t='task' - -drm() { docker rm $(docker ps -qa); } -drme() { docker rm $(docker ps -qa --filter 'status=exited'); } -dri() { docker rmi $(docker images -q --filter "dangling=true"); } -dgo() { docker exec -ti $@ bash } -dip() { docker inspect --format '{{ .NetworkSettings.IPAddress }}' "$@"; } -dcrefresh() { - dc stop -t0 $1 && dc rm -vf $1 && dc up -d $1 -} - -bundle() { - BUNDLE_CMD=$@ - docker run -ti --rm --name bundle-${PWD##*/} \ - -v $HOME/.ssh:/root/.ssh \ - -v $(pwd):/app -w /app \ - -e BUNDLE_APP_CONFIG=/app/.bundle \ - ruby:2.2 bash -c "eval \`ssh-agent\` && ssh-add && bundle $BUNDLE_CMD"; -} - -mysql() { docker run -ti --user 1000:1000 --rm mysql:5.6 mysql $@; } - -caddy() { - docker run -d --user 1000:1000 -v $(pwd):/srv --name caddy-${PWD##*/} -e VIRTUAL_PORT=2015 -e VIRTUAL_HOST=${PWD##*/}.test -P abiosoft/caddy -} - -ngrok() { - docker run --rm -it --link "$1":http wernight/ngrok ngrok http http:"$2" -} - -ctop() { - docker run -ti -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest -} - -jq() { - docker run -i pinterb/jq:latest $@ -} - -function genpass() { - < /dev/urandom tr -dc A-Za-z0-9 | head -c "${1:-32}" -} diff --git a/README.md b/README.md index d235832..bd6d2d2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # dotfiles -My dotfiles, powered by Ansible + +My dotfiles for NixOs, using home-manager. diff --git a/bin/byzanz-record-window b/bin/byzanz-record-window deleted file mode 100644 index 40812e9..0000000 --- a/bin/byzanz-record-window +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -# AUTHOR: (c) Rob W 2012, modified by MHC (http://askubuntu.com/users/81372/mhc) -# NAME: GIFRecord 0.1 -# DESCRIPTION: A script to record GIF screencasts. -# LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html) -# DEPENDENCIES: byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd) - -# Time and date -TIME=$(date +"%Y-%m-%d_%H%M%S") - -# Delay before starting -DELAY=5 - -# Standard screencast folder -FOLDER="$HOME/Pictures" - -# Default recording duration -DEFDUR=10 - -# Sound notification to let one know when recording is about to start (and ends) -beep() { - paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga & -} - -# Custom recording duration as set by user -USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1) - -# Duration and output file -if [ $USERDUR -gt 0 ]; then - D=$USERDUR -else - D=$DEFDUR -fi - -# Window geometry -XWININFO=$(xwininfo) -read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO") -read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO") -read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO") -read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO") - -# Notify the user of recording time and delay -notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds." - -#Actual recording -sleep $DELAY -beep -byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif" -beep - -# Notify the user of end of recording. -notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif" diff --git a/bin/check_sitemap.sh b/bin/check_sitemap.sh deleted file mode 100644 index fa6ee34..0000000 --- a/bin/check_sitemap.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -while read LINE; do - curl -o /dev/null --silent --head --write-out '%{http_code}' "$LINE" - echo " $LINE" -done diff --git a/bin/composer b/bin/composer deleted file mode 100644 index 659537a..0000000 --- a/bin/composer +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker run -ti --rm --name composer-${PWD##*/} -v $(pwd):$(pwd) -w $(pwd) -v ~/.composer:/composer composer/composer "$@" diff --git a/bin/docker-cleanup-volumes.sh b/bin/docker-cleanup-volumes.sh deleted file mode 100755 index 2027a11..0000000 --- a/bin/docker-cleanup-volumes.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -#usage: sudo ./docker-cleanup-volumes.sh [--dry-run] - -dockerdir=/var/lib/docker -volumesdir=${dockerdir}/volumes -vfsdir=${dockerdir}/vfs/dir -allvolumes=() -dryrun=false - -function delete_volumes() { - targetdir=$1 - echo - if [[ ! -d ${targetdir} ]]; then - echo "Directory ${targetdir} does not exist, skipping." - return - fi - echo "Delete unused volume directories from $targetdir" - for dir in $(ls -d ${targetdir}/* 2>/dev/null) - do - dir=$(basename $dir) - if [[ "${dir}" =~ [0-9a-f]{64} ]]; then - if [[ ${allvolumes[@]} =~ "${dir}" ]]; then - echo In use ${dir} - else - if [ "${dryrun}" = false ]; then - echo Deleting ${dir} - rm -rf ${targetdir}/${dir} - else - echo Would have deleted ${dir} - fi - fi - else - echo Not a volume ${dir} - fi - done -} - -if [ $UID != 0 ]; then - echo "You need to be root to use this script." - exit 1 -fi - -docker_bin=$(which docker.io || which docker) -if [ -z "$docker_bin" ] ; then - echo "Please install docker. You can install docker by running \"wget -qO- https://get.docker.io/ | sh\"." - exit 1 -fi - -if [ "$1" = "--dry-run" ]; then - dryrun=true -else if [ -n "$1" ]; then - echo "Cleanup docker volumes: remove unused volumes." - echo "Usage: ${0##*/} [--dry-run]" - echo " --dry-run: dry run: display what would get removed." - exit 1 -fi -fi - - -#All volumes from all containers -for container in `${docker_bin} ps -a -q --no-trunc`; do - #add container id to list of volumes, don't think these - #ever exists in the volumesdir but just to be safe - allvolumes+=${container} - #add all volumes from this container to the list of volumes - for vid in `${docker_bin} inspect --format='{{range $vol, $path := .Volumes}}{{$path}}{{"\n"}}{{end}}' ${container}`; do - if [[ "${vid##*/}" =~ [0-9a-f]{64} ]]; then - allvolumes+=("${vid##*/}") - fi - done -done - -delete_volumes ${volumesdir} -delete_volumes ${vfsdir} diff --git a/bin/docker-cleanup.sh b/bin/docker-cleanup.sh deleted file mode 100755 index 316eb28..0000000 --- a/bin/docker-cleanup.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -u -# -# Clean Docker containers and images. -# -# This script assumes that the docker images are tagged with a version (like a git sha1) and 'latest'. -# -# WARNING: only 'latest' Docker images for the given repo are kept after a cleanup! -# -# Example of how to tag a Docker image with a version and 'latest': -# $ docker build --rm -t $REPO/$NAME:$VERSION . -# $ docker tag -f $REPO/$NAME:$VERSION $(ORG)/$NAME:latest -# - -# The repo to use to filter images to delete -REPO=$1 - -# Utils functions -countContainers() { docker ps -aq | wc -l; } -listStoppedContainers() { docker ps -a | grep Exit | awk '{print $1}'; } -countmages() { docker images | egrep -c "($REPO|none)"; } -listNotLatestImages() { docker images | grep $REPO | grep -v latest | awk '{printf "%s:%s\n", $1, $2}'; } -listUntaggedImages() { docker images -q -f dangling=true; } -log() { echo "[$(date +"%Y-%m-%dT%H:%M:%SZ")][docker-cleanup] $1"; } - -totalContainers=$(countContainers) -totalImages=$(countmages) -log "Total containers: $totalContainers" -log "Total images: $totalImages" - -# Delete all stopped containers -containerIds=$(listStoppedContainers) -if [[ "$containerIds" != "" ]]; then - log "Remove stopped containers..." - docker rm $containerIds -fi - -# Delete not latest images -oldImages=$(listNotLatestImages) -if [[ "$oldImages" != "" ]]; then - log "Remove not latest images..." - docker rmi -f $oldImages -fi - -# Delete all untagged images -untaggedImages=$(listUntaggedImages) -if [[ "$untaggedImages" != "" ]]; then - log "Remove untagged images..." - docker rmi $untaggedImages -fi - -newTotalContainers=$(countContainers) -newTotalImages=$(countmages) - -log "---" -log "Containers deleted: $(expr $totalContainers - $newTotalContainers)" -log "Images deleted: $(expr $totalImages - $newTotalImages)" -log "---" -log "Total containers: $newTotalContainers" -log "Total images: $newTotalImages" diff --git a/bin/handle-volume-change b/bin/handle-volume-change deleted file mode 100644 index 1e80cf1..0000000 --- a/bin/handle-volume-change +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -SINK=`pactl list short sinks | grep RUNNING | cut -f1` - -case "$1" in -"up") - pactl set-sink-volume $SINK +10% && pactl set-sink-mute $SINK 0 - ;; -"down") - pactl set-sink-volume $SINK -10% && pactl set-sink-mute $SINK 0 - ;; -"mute") - pactl set-sink-mute $SINK toggle - ;; -esac \ No newline at end of file diff --git a/bin/node b/bin/node deleted file mode 100644 index 5f169b0..0000000 --- a/bin/node +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker run -ti --rm --name node-${PWD##*/} -v -v $(pwd):$(pwd) -w $(pwd) -v ~/.npm:/root/.npm node:7.4-alpine node "$@" \ No newline at end of file diff --git a/bin/npm b/bin/npm deleted file mode 100644 index 0c514a0..0000000 --- a/bin/npm +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker run -ti --rm --name npm-${PWD##*/} -e NPM_CONFIG_PROGRESS=false -v $(pwd):$(pwd) -w $(pwd) -v ~/.npm:/root/.npm node:7.4-alpine npm "$@" \ No newline at end of file diff --git a/bin/php b/bin/php deleted file mode 100644 index 3a1f675..0000000 --- a/bin/php +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker run -ti --rm --user 1000:1000 --name php-${PWD##*/} -v $(pwd):$(pwd) -w $(pwd) php:latest php "$@" \ No newline at end of file diff --git a/bin/tldr b/bin/tldr deleted file mode 100644 index 2b294c0..0000000 --- a/bin/tldr +++ /dev/null @@ -1,246 +0,0 @@ -#!/bin/bash -# tldr client by Ray Lee, http://github.com/raylee/tldr -# a Sunday afternoon's project, I'm sure there's room for improvement. PRs welcome! - -set -uf -o pipefail - -# initialize globals, sanity check the environment, etc. -config() { - init_term_cmds - - if [ -z $(which curl) ]; then - echo "${red}tldr requires \`curl\` installed in your path$reset" - exit 1 - fi - - configdir=~/.tldr - [ -d ~/.config ] && configdir=~/.config/tldr - - platform=$(get_platform) - base_url="https://raw.githubusercontent.com/tldr-pages/tldr/master/pages" - index_url="http://tldr-pages.github.io/assets/index.json" - index="$configdir/index.json" - cache_days=14 - force_update='' - - #check if config folder exists, otherwise create it - [ -d "$configdir" ] || mkdir -p "$configdir" - - [ ! -f $index ] && update_index - auto_update_index -} - -update_index() { - curl -sf -o "$index" "$index_url" - res=$? - if [ $res -eq 22 ]; then - echo "Could not download index from $index_url" - exit 1 - fi -} - -# if the file exists and is more recent than $cache_days old -recent() { - exists=$(find "$1" -mtime -$cache_days 2>/dev/null) - [ -n "$exists" -a -z "$force_update" ] -} - -auto_update_index() { - recent "$index" || update_index -} - -# function contents via http://mywiki.wooledge.org/BashFAQ/037 -init_term_cmds() { - # only set if we're on an interactive session - [[ -t 2 ]] && { - reset=$( tput sgr0 || tput me ) # Reset cursor - bold=$( tput bold || tput md ) # Start bold - under=$( tput smul || tput us ) # Start underline - italic=$( tput sitm || tput ZH ) # Start italic - eitalic=$( tput ritm || tput ZH ) # End italic - default=$( tput op ) - back=$'\b' - - [[ $TERM != *-m ]] && { - black=$( tput setaf 0 || tput AF 0 ) - red=$( tput setaf 1 || tput AF 1 ) - green=$( tput setaf 2 || tput AF 2 ) - yellow=$( tput setaf 3 || tput AF 3 ) - blue=$( tput setaf 4 || tput AF 4 ) - magenta=$( tput setaf 5 || tput AF 5 ) - cyan=$( tput setaf 6 || tput AF 6 ) - white=$( tput setaf 7 || tput AF 7 ) - - onblue=$( tput setab 4 || tput AB 4 ) - ongrey=$( tput setab 7 || tput AB 7 ) - } - } 2>/dev/null ||: - - # osx's termcap doesn't have italics. The below adds support for iTerm2 - # and is harmless on Terminal.app - [ "$(get_platform)" = "osx" ] && { - italic=$(echo -e "\033[3m") - eitalic=$(echo -e "\033[23m") - } -} - -heading() { - local line="$*" - echo "$bold$red${line:2}$reset" -} - -quotation() { - local line="$*" - echo "$under${line:2}$reset" -} - -list_item() { - local line="$*" - echo "$line$reset" -} - -code() { - local line="$*" - # I'm sure there's a better way to strip the first and last characters. - line="${line:1}" - line="${line%\`}" - # convert {{variable}} to italics - line=${line//\{\{/$italic} - line=${line//\}\}/$eitalic} - - echo "$bold$line$reset" -} - -text() { - local line="$*" - echo "$line" -} - -# an idiot-level recognition of tldr's markdown. Needs improvement, or -# subcontracting out to a markdown -> ANSI formatting command -display_tldr() { - # read one line at a time, don't strip whitespace ('IFS='), and process - # last line even if it doesn't have a newline at the end - while IFS= read -r line || [[ -n "$line" ]]; do - start=${line:0:1} # get the first character - case "$start" in - '#') heading "$line" - ;; - '>') quotation "$line" - ;; - '-') list_item "$line" - ;; - '`') code "$line" - ;; - *) text "$line" - ;; - esac - done -} - -# convert the local platorm name to tldr's version -get_platform() { - case `uname -s` in - Darwin) echo "osx" ;; - Linux) echo "linux" ;; - SunOS) echo "sunos" ;; - *) echo "common" ;; - esac -} - -# extract the platform key from index.json, return preferred subpath to tldrpage -path_for_cmd() { - local desc=$(tr '{' '\n' < $index | grep "\"name\":\"$1\"") - # results in, eg, "name":"netstat","platform":["linux","osx"]}, - - [ -z "$desc" ] && return - - # use the platform specific version of the tldr first - if [[ $desc =~ \"$platform\" ]]; then - echo "$platform/$1.md" - elif [[ $desc =~ \"common\" ]]; then - echo "common/$1.md" - else - # take the first one so we can show something, but warn the user - local p=$(echo "$desc" | cut -d '"' -f 8) - >&2 echo -e "${red}tldr page $1 not found in $platform or common, using page from platform $p instead$reset\n" - echo "$p/$1.md" - fi -} - -# return the local cached copy of the tldrpage, or retrieve and cache from github -get_tldr() { - local p="$(path_for_cmd $1)" - cached="$configdir/$p" - recent "$cached" || { - mkdir -p $(dirname $cached) - curl -sf -o "$cached" "$base_url/$p" - } - # if the curl failed for some reason, keep cat from whinging - cat "$cached" 2>/dev/null -} - - -config - -usage() { - cmd=$(basename $0) - cat < - -[options] - -l, --list: show all available pages - -p, --platform: show page from specific platform rather than autodetecting - -u, --update: update, force retrieving latest copies of locally cached files - -h, -?, --help: this help overview - - - Show examples for this command - -The client caches a copy of all pages and the index locally under -$configdir. By default, the cached copies will expire in $cache_days days. - -EOF -exit 0 -} - -while [ $# -gt 0 ] -do - case "$1" in - -l|--list) - >&2 echo -e "Known tldr pages: \n" - tr '{' '\n' < "$configdir/index.json" | cut -d '"' -f4 | column - exit 0 - ;; - -u|--update) - force_update=yes - update_index - ;; - -h|-\?|--help) - usage - ;; - -p|--platform) - shift - platform=$1 - ;; - -*) - usage - ;; - *) - page=${1:-''} - ;; - esac - shift -done - -[ -z ${page:-} ] && usage - -tldr="$(get_tldr $page)" - -if [ -z "$tldr" ]; then - echo "tldr page for command $page not found" - exit 1 -fi - -display_tldr <<< "$tldr" -echo diff --git a/bin/yarn b/bin/yarn deleted file mode 100644 index 033fd90..0000000 --- a/bin/yarn +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker run -ti --rm --user 1000:1000 --name yarn-${PWD##*/} -v ~/.yarn:/home/node/.cache/yarn -v $(pwd):$(pwd) -w $(pwd) kkarczmarczyk/node-yarn:latest yarn "$@" \ No newline at end of file diff --git a/config.nix b/config.nix new file mode 100644 index 0000000..69baf10 --- /dev/null +++ b/config.nix @@ -0,0 +1 @@ +{ allowUnfree = true; } diff --git a/dotfiles.yml b/dotfiles.yml deleted file mode 100644 index 2774718..0000000 --- a/dotfiles.yml +++ /dev/null @@ -1,244 +0,0 @@ ---- -- name: Setup the machine as a root user - hosts: localhost - become: yes - roles: - - { - role: flyinggecko.i3, - tags: windowmanager, - i3_state: "present", - i3_user: [ - { name: pierre, i3config: [ i3.base ], i3status: i3status.desktop } - ] - } - - { - role: franklinkim.vim, - tags: vim, - vim_config: [ 'set expandtab' ] - } - - { - role: geerlingguy.git, - tags: git, - git_packages: [ - "git-gui", - "gitk", - "git-flow", - "tig" - ] - } - - { - role: kosssi.phpstorm, - tags: phpstorm, - phpstorm_version: "2017.2.4" - } - - { - role: ansiblebit.oracle-java, - tags: phpstorm, - oracle_java_set_as_default: yes - } - - { - role: franklinkim.docker, - tags: docker, - docker_containers: [ - { - image: jwilder/nginx-proxy, - name: nginx-proxy, - ports: ["80:80", "443:443"], - volumes: [ - "/var/run/docker.sock:/tmp/docker.sock:ro", - "/home/pierre/dotfiles/my_nginx_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro" - ] - } - ] - } - - { - role: franklinkim.docker-compose, - tags: docker, - docker_compose_version: 1.7.0 - } - - { - role: glennr.oh-my-zsh, - tags: shell, - user: pierre - } - - { - role: nickjj.dnsmasq, - tags: dnsmasq, - dnsmasq_tld: test - } - - { - role: jdauphant.sublimetext, - sublimetext_build: 3126, - tags: sublimetext - } - - { - role: mglaman.atom, - atom_ver : '1.8.0', - atom_packages_packages: [ - 'docker', - 'editorconfig', - 'git-time-machine', - 'minimap', - ], - tags: atom - } - tasks: - - name: Ensure package definition is up-to-date, aka "apt-get update" - apt: update_cache=yes cache_valid_time=3600 - - name: Window manager related packages are installed - apt: name={{ item }} state=present - tags: windowmanager - with_items: - - suckless-tools - - pcmanfm - - dunst - - numlockx - - xbacklight - - name: Required PPAs are available - apt_repository: repo={{ item }} state=present - tags: tools - with_items: - - 'ppa:zeal-developers/ppa' - - 'ppa:nathan-renniewaldock/flux' - # Distro too old! Need to upgrade kid - # - 'ppa:peek-developers/stable' - - name: Other convenient tools are installed - apt: name={{ item }} state=present - tags: tools - with_items: - - asciidoctor - - silversearcher-ag - - byzanz - - curl - - filezilla - - fluxgui - - freemind - - kazam - - gimp - - htop - - libreoffice - - lftp - - meld - - mysql-workbench - - pandoc - # - peek - - pv - - pwgen - - openssh-server - - owncloud-client - - shutter - - exfat-utils - - exfat-fuse - - ncdu - - p7zip - - python-pip - - tree - - unison - - whois - - xclip - - zeal - - name: Other convenient Python tools are installed - pip: name={{ item }} - tags: tools - with_items: - - http-prompt - - httpie-oauth - - name: Thinkpad related packages are installed - apt: name={{ item }} state=present - tags: thinkpad - with_items: - - alsa-tools-gui # See how to configure dock audio output at http://askubuntu.com/questions/670334/thinkpad-w540-docking-station-no-sound-on-external-speakers - -- name: Setup user settings - hosts: localhost - become: no - vars: - BIN_DIR: "{{ansible_env.HOME}}/bin" - roles: - - { - role: igor_mukhin.sublimetext3_packagecontrol, - tags: sublimetext, - packagecontrol_packages: [ - "AutoFileName", - "Dockerfile Syntax Highlighting", - "EditorConfig", - "Git", - "GitGutter", - "SideBarEnhancements", - "SCSS", - "Terminal" - ] - } - tasks: - - name: ensure Git is properly configured - tags: git - template: src=templates/{{ item.src }} dest={{ansible_env.HOME}}/{{ item.dest }} - with_items: - - { src: gitconfig.j2, dest: .gitconfig } - - { src: gitignore.j2, dest: .gitignore } - - name: ensure a writable "bin" directory exists - tags: shell - file: path={{BIN_DIR}} state=directory mode=0755 - - name: ensure fasd is installed and configured - tags: shell - get_url: url=https://raw.githubusercontent.com/clvv/fasd/master/fasd dest={{BIN_DIR}}/fasd mode=0755 - - name: ensure binaries are available in path - tags: shell - copy: src=bin/ dest={{BIN_DIR}}/ mode=0755 - - name: ensure dotfiles are available - tags: shell - copy: src=.zshrc dest={{ansible_env.HOME}}/.zshrc - -# TODO -# Docker DNS qui trace : dans dnsmasq.conf -# listen-address=127.0.0.1 -# listen-address=172.17.0.1 -# -# https://github.com/sindresorhus/pure#getting-started instead of oh-my-zsh -# -# Thunderbird addon when upgraded - https://addons.mozilla.org/fr/thunderbird/addon/grammalecte-fr-thunderbird/ -# -# i3 bugfixes/improvements: -# ++ http://www.draconianoverlord.com/2014/05/26/from-xmonad-to-i3.html -# -# echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p -# -# Disable iBus (for IDEA at least: https://youtrack.jetbrains.com/issue/IDEA-78860) -# Config with "localectl --no-convert set-x11-keymap fr pc104" -# https://github.com/sgentle/caniuse-cmd -# -# Tigrc : https://github.com/chadrien/dotfiles/blob/master/roles/shell/files/tigrc#L10 -# -# Capistrano : docker run --rm -it -v `pwd`:/home -v $HOME/.ssh:/root/.ssh --workdir="/home" ruby bash -c "bundle install && bundle exec cap deploy" -# Composer : docker run -v $(pwd):/app composer/composer install -# Auth.json -> home/qsdqs -# Mysql -# -# Corriger l'hibernation : http://doc.ubuntu-fr.org/veille_et_hibernation -# -# sudo usermod -aG docker pierre ? -# Dropbox -# Vault for passwords and sensitive data: http://docs.ansible.com/ansible/playbooks_vault.html -# -# Skype : https://hub.docker.com/r/sameersbn/skype/ -# docker run -it --rm --volume /usr/local/bin:/target quay.io/sameersbn/skype:latest install -# -# Aliases++ https://github.com/thbkrkr/dotfiles/blob/master/dotfiles/.zshrc#L45 -# -# Zeal pour doc offline -# -# http://askubuntu.com/questions/292696/ubuntu-crashes-when-on-battery-power -# ou http://askubuntu.com/questions/598224/cpu-frequency-control ou truc du genre -# -# Chrome : -# - { role: devbox.chrome, tags: browser } -# Brave: https://github.com/brave/browser-laptop/blob/master/docs/linuxInstall.md -# -# https://github.com/donnemartin/gitsome/blob/master/README.md -# -# https://github.com/sharkdp/fd -# -# Stow: http://sametmax.com/regrouper-ses-fichiers-de-settings-avec-stow/ -# -# Refactoring: -# Nginx-proxy: move the config file by copying it where it belongs diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..7bb00d4 --- /dev/null +++ b/home.nix @@ -0,0 +1,108 @@ +{ pkgs, ... }: + +let + latest = import {}; +in +{ + home.packages = with pkgs; [ + fasd + + latest.gitAndTools.gitflow latest.gitAndTools.tig + + google-chrome-beta + + latest.vscode + latest.jetbrains.phpstorm + + unclutter-xfixes + + # Peek. See https://github.com/NixOS/nixpkgs/issues/39832 + peek + ffmpeg + glib + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-ugly + keybinder + ]; + + services.unclutter.enable = true; + + programs.home-manager = { + enable = true; + path = https://github.com/rycee/home-manager/archive/release-18.03.tar.gz; + }; + + programs.zsh = { + enable = true; + enableAutosuggestions = true; + enableCompletion = true; + history = { + ignoreDups = true; + save = 100000000000; + size = 100000000000; + }; + + oh-my-zsh = { + enable = true; + theme = "robbyrussell"; + plugins = [ "git" "git-flow" "docker" "ssh-agent" "last-working-dir" "fasd" ]; + }; + + sessionVariables = { + EDITOR = "vim"; + ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=7"; + }; + + shellAliases = { + a = "fasd -a"; # any + s = "fasd -si"; # show / search / select + d = "fasd -d"; # directory + f = "fasd -f"; # file + sd = "fasd -sid"; # interactive directory selection + sf = "fasd -sif"; # interactive file selection + z = "fasd_cd -d"; # cd, same functionality as j in autojump + j = "fasd_cd -d"; # cd, same functionality as j in autojump + zz = "fasd_cd -d -i"; # cd with interactive selection + + dc = "docker-compose"; + dcr = "docker-compose run --rm"; + copy = "xclip -selection c"; + deploy = "docker run -it --rm -v ~/.ssh:/root/.ssh -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent -v $(pwd):/source neolao/capistrano:3.4.0 bash"; + + bepo = "setxkbmap -layout fr -variant bepo"; + fr = "setxkbmap -layout fr -variant oss"; + + m = "make"; + t = "task"; + p = "pass"; + tg = "tig --all"; + }; + }; + + programs.git = { + enable = true; + package = latest.gitAndTools.gitFull; + + userEmail = "pierre@occitech.fr"; + userName = "Pierre Martin"; + + aliases = { + co = "checkout"; + }; + + ignores = [ + ".DS_Store" + ".svn" + "*~" + "*.swp" + "*.rbc" + ".watsonrc" + ".idea" + ".vscode" + ]; + }; +} + +# TODO +# +# - setup GPG: Git, pass etc... \ No newline at end of file diff --git a/hosts b/hosts deleted file mode 100644 index 01e02fa..0000000 --- a/hosts +++ /dev/null @@ -1,2 +0,0 @@ -[local] -127.0.0.1 ansible_ssh_user=pierre diff --git a/i3.base b/i3.base deleted file mode 100644 index dc2d8fd..0000000 --- a/i3.base +++ /dev/null @@ -1,167 +0,0 @@ -# This file has been auto-generated by i3-config-wizard(1). -# It will not be overwritten, so edit it as you like. -# -# Should you change your keyboard layout some time, delete -# this file and re-run i3-config-wizard(1). -# - -# i3 config file (v4) -# -# Please see http://i3wm.org/docs/userguide.html for a complete reference! - -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 doesn’t 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 i3-sensible-terminal - -# kill focused window -bindsym $mod+Shift+q kill - -# start dmenu (a program launcher) -bindsym $mod+d exec dmenu_run -# 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 - -# 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 windows -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+h split h - -# split in vertical orientation -bindsym $mod+v split v - -# enter fullscreen mode for the focused container -bindsym $mod+f fullscreen - -# 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 - -# switch to workspace -bindsym $mod+1 workspace number 1 -bindsym $mod+2 workspace number 2 -bindsym $mod+3 workspace number 3 -bindsym $mod+4 workspace number 4 -bindsym $mod+5 workspace number 5 -bindsym $mod+6 workspace number 6 -bindsym $mod+7 workspace number 7 -bindsym $mod+8 workspace number 8 -bindsym $mod+9 workspace number 9 -bindsym $mod+0 workspace number 10 - -# See https://faq.i3wm.org/question/2332/flexible-monitor-setup/?answer=3557#post-id-3557 -bindsym $mod+Control+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: ' - -# Back and forth -bindsym $mod+Tab workspace back_and_forth -bindsym $mod+Shift+j workspace prev_on_output -bindsym $mod+Shift+k workspace next_on_output - -# move workspaces between outputs -bindsym $mod+Control+Left move workspace to output left -bindsym $mod+Control+Right move workspace to output right -bindsym $mod+Control+Up move workspace to output up -bindsym $mod+Control+Down move workspace to output down - -# 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 - -# 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 window’s width. - # Pressing right will grow the window’s width. - # Pressing up will shrink the window’s height. - # Pressing down will grow the window’s height. - 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 - - # 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 - bindsym Return mode "default" - bindsym Escape mode "default" -} - -bindsym $mod+r mode "resize" - -# To get keycodes, run: sudo showkey -k -bindsym XF86AudioRaiseVolume exec --no-startup-id handle-volume-change up -bindsym XF86AudioLowerVolume exec --no-startup-id handle-volume-change down -bindsym XF86AudioMute exec --no-startup-id handle-volume-change mute - -bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10 -bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10 - -# Start i3bar to display a workspace bar (plus the system information i3status -# finds out, if available) -bar { - status_command i3status -} - -exec --no-startup-id gnome-session -exec --no-startup-id unity-settings-daemon -exec --no-startup-id numlockx on # turn verr num on diff --git a/i3status.desktop b/i3status.desktop deleted file mode 100644 index f639baa..0000000 --- a/i3status.desktop +++ /dev/null @@ -1,70 +0,0 @@ -# i3status configuration file. -# see "man i3status" for documentation. - -# It is important that this file is edited as UTF-8. -# The following line should contain a sharp s: -# ß -# If the above line is not correctly displayed, fix your editor first! - -general { - colors = true - interval = 5 -} - -order += "cpu_usage" -order += "cpu_temperature 0" -order += "disk /" -order += "run_watch DHCP" -order += "run_watch VPN" -order += "wireless wlan0" -order += "ethernet eth0" -order += "battery 0" -order += "battery 1" -order += "load" -order += "tztime local" - -cpu_usage { - format = "CPU: %usage" -} - -wireless wlan0 { - format_up = "W: (%quality at %essid) %ip" - format_down = "W: down" -} - -ethernet eth0 { - # if you use %speed, i3status requires root privileges - format_up = "E: %ip (%speed)" - format_down = "E: down" -} - -battery 0 { - format = "%status %percentage %remaining" -} -battery 1 { - format = "%status %percentage %remaining" -} - -run_watch DHCP { - pidfile = "/var/run/dhclient*.pid" -} - -run_watch VPN { - pidfile = "/var/run/vpnc/pid" -} - -tztime local { - format = "%d/%m/%Y %H:%M:%S" -} - -load { - format = "%1min" -} - -disk "/" { - format = "%avail" -} - -cpu_temperature 0 { - format = "T: %degrees°C" -} \ No newline at end of file diff --git a/install.sh b/install.sh deleted file mode 100755 index a60d581..0000000 --- a/install.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -sudo apt-add-repository ppa:ansible/ansible -sudo apt-get update -sudo apt-get install -y software-properties-common ansible - diff --git a/my_nginx_proxy.conf b/my_nginx_proxy.conf deleted file mode 100644 index 53c190c..0000000 --- a/my_nginx_proxy.conf +++ /dev/null @@ -1,5 +0,0 @@ -client_max_body_size 600m; -proxy_connect_timeout 600; -proxy_send_timeout 600; -proxy_read_timeout 600; -send_timeout 600; \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 6e532f8..0000000 --- a/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -franklinkim.vim -jdauphant.sublimetext -igor_mukhin.sublimetext3_packagecontrol -geerlingguy.git -ansiblebit.oracle-java -kosssi.phpstorm -franklinkim.docker -franklinkim.docker-compose -glennr.oh-my-zsh -flyinggecko.i3 -nickjj.dnsmasq -mglaman.atom diff --git a/templates/gitconfig.j2 b/templates/gitconfig.j2 deleted file mode 100644 index f3d1b65..0000000 --- a/templates/gitconfig.j2 +++ /dev/null @@ -1,23 +0,0 @@ -# {{ansible_managed}} - -[user] - email=pierre@occitech.fr - name=Pierre Martin -[alias] - co = checkout -[color] - diff = auto - status = auto - branch = auto - interactive = auto - ui = true -[core] - excludesfile = ~/.gitignore - editor = vim - filemode = false -[rerere] - enabled = true -[push] - default = simple -[credential] - helper = cache \ No newline at end of file diff --git a/templates/gitignore.j2 b/templates/gitignore.j2 deleted file mode 100644 index 4d32373..0000000 --- a/templates/gitignore.j2 +++ /dev/null @@ -1,9 +0,0 @@ -# {{ansible_managed}} -.DS_Store -.svn -*~ -*.swp -*.rbc -.watsonrc -.idea -.vscode diff --git a/update.sh b/update.sh deleted file mode 100755 index 18c3f01..0000000 --- a/update.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -TAGS='' -if [ ! -z $1 ]; then - TAGS="--tags=$1" -fi - -ansible-playbook --ask-become-pass dotfiles.yml -i hosts $TAGS \ - || sudo ansible-galaxy install -r requirements.txt --ignore-errors