Files
dotfiles/home.nix
2018-10-30 13:58:31 +01:00

246 lines
6.3 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{ pkgs, ... }:
let
latest = import <nixpkgs>{};
in
{
home.packages = with pkgs; [
latest.wget
latest.curl
latest.httpie
latest.fasd
latest.ripgrep
latest.tree
latest.ncdu
latest.pv
latest.jq
latest.whois
latest.gnumake
latest.file
latest.atool
latest.unzip
latest.zip
latest.p7zip
latest.pass
latest.pcmanfm
latest.udiskie
latest.gitAndTools.gitflow
latest.gitAndTools.tig
firefox
google-chrome-beta
latest.thunderbird
latest.rambox
latest.libreoffice
latest.freemind
latest.filezilla
latest.shutter
latest.gimp
latest.skypeforlinux
latest.zoom-us
latest.google-play-music-desktop-player
latest.vlc
latest.vscode
latest.jetbrains.phpstorm
latest.zeal
latest.apache-directory-studio
unclutter-xfixes
latest.playerctl latest.numlockx
python
latest.docker
latest.docker_compose
# 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
# urxvt. See https://github.com/rycee/home-manager/blob/master/modules/programs/urxvt.nix
latest.rxvt_unicode-with-plugins
];
# Doc: https://rycee.gitlab.io/home-manager/options.html
services.unclutter.enable = true;
services.parcellite.enable = true;
services.gpg-agent.enable = true;
programs.home-manager = {
enable = true;
path = https://github.com/rycee/home-manager/archive/release-18.03.tar.gz;
};
## TODO Enable when available in this current branch of
## Home manager, or switch to master
# programs.urxvt = {
# enable = true;
# package = latest.rxvt_unicode-with-plugins;
# };
# TODO polybar
xsession.windowManager.i3 = let
modifier = "Mod4";
in {
enable = true;
config = {
assigns = {
# https://rycee.gitlab.io/home-manager/options.html#opt-xsession.windowManager.i3.config.assigns
};
focus = {
mouseWarping = false; # Whether mouse cursor should be warped to the center of the window when switching focus to a window on a different output.
};
modifier = modifier;
# see https://rycee.gitlab.io/home-manager/options.html#opt-xsession.windowManager.i3.config.keybindings
keybindings = pkgs.lib.mkOptionDefault {
"${modifier}+Return" = "exec urxvtc";
# See https://faq.i3wm.org/question/3747/enabling-multimedia-keys.1.html
# Pulse Audio controls
# bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
# bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
# bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound
# Sreen brightness controls
# bindsym XF86MonBrightnessUp exec light -A 2 # increase screen brightness
# bindsym XF86MonBrightnessDown exec light -U 2 # decrease screen brightness
# Touchpad controls
# bindsym XF86TouchpadToggle exec /some/path/toggletouchpad.sh # toggle touchpad
# Media player controls
# bindsym XF86AudioPlay exec playerctl play
# bindsym XF86AudioPause exec playerctl pause
# bindsym XF86AudioNext exec playerctl next
# bindsym XF86AudioPrev exec playerctl previous
};
startup = [
# { command = "dropbox start"; notification = false; }
{ command = "setxkbmap -layout fr -variant bepo"; notification = false; }
{ command = "urxvtd -q -o -f"; notification = false; }
{ command = "udiskie"; notification = false; }
{ command = "parcellite -d"; notification = false; }
{ command = "numlockx on"; notification = false; } # turn verr num on
#{ command = "docker start nginx-proxy "; notification = false; }# docker run -d -p 8080:8080 -p 81:80 -v /dev/null:/etc/traefik/traefik.toml -v /var/run/docker.sock:/var/run/docker.sock --name traefik traefik --web --docker --docker.domain=test --logLevel=INFO
];
};
};
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" ];
};
initExtra = "
bindkey ' ' forward-word
";
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";
tgs = "tig status";
};
};
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"
];
};
programs.htop = {
enable = true;
};
programs.browserpass = {
enable = true;
browsers = [ "firefox" ];
};
programs.vim = {
enable = true;
};
programs.autorandr = {
enable = true;
hooks = {
postswitch = {
"notify-i3" = "${pkgs.i3}/bin/i3-msg restart";
};
};
#TODO profiles
};
}
# TODO
#
# - setup GPG for Git, mails etc...
# - try fzf?